/* ==========================================================================
   选款通 · 皮肤引擎 theme.css
   10 套店铺皮肤，通过 <html data-theme="xxx"> 切换
   兼容旧变量名（--navy/--orange/--link/--green/--amber/--price），老页面自动换色
   ========================================================================== */

/* ---------- 1. 皮肤变量 ---------- */

/* 派对节庆（默认 · 原「派对节庆选款」工具色系：粉 / 琥珀 / 薄荷） */
:root,
[data-theme="party"]{
  --brand:#FF4D8D;       --brand-dark:#E63B7A;   --brand-2:#FFB020;
  --brand-soft:#FFF0F6;  --on-brand:#FFFFFF;
  --accent:#1EC9A6;      --accent-soft:#E6FBF6;  --accent-ink:#0E8A72;
  --deep:#7A1F45;        --deep-2:#A82B60;
  --bg:#FFF8F3;          --card:#FFFFFF;
  --ink:#2A2A33;         --muted:#9A9AA5;        --line:#F1E7E0;
  --price:#D6336C;       --ok:#1EC9A6;           --warn:#FFB020;   --danger:#E03131;
  --danger-soft:#FDECEC; --warn-soft:#FFF6E6;    --ok-soft:#E6FBF6;
  --stripes:repeating-linear-gradient(-45deg,#FF4D8D 0 18px,#FFB020 18px 36px,#1EC9A6 36px 54px,#7FA8F0 54px 72px,#C08BEE 72px 90px);
  --hero-glow:rgba(255,255,255,.14);
}

/* 节日喜庆（春节 / 圣诞 · 中国红 + 金） */
[data-theme="festive"]{
  --brand:#D62828;       --brand-dark:#B01F1F;   --brand-2:#F4A100;
  --brand-soft:#FFF1EF;  --on-brand:#FFFFFF;
  --accent:#F4A100;      --accent-soft:#FFF6E6;  --accent-ink:#A86A00;
  --deep:#7A1418;        --deep-2:#A81F24;
  --bg:#FFF7F5;          --card:#FFFFFF;
  --ink:#2C2422;         --muted:#9C8F8A;        --line:#F3E4DE;
  --price:#C1121F;       --ok:#2E8B57;           --warn:#F4A100;   --danger:#D62828;
  --danger-soft:#FDEDEC; --warn-soft:#FFF6E6;    --ok-soft:#EAF6EE;
  --stripes:repeating-linear-gradient(-45deg,#D62828 0 18px,#F4A100 18px 36px,#D62828 36px 54px,#FFD98A 54px 72px);
  --hero-glow:rgba(255,214,138,.20);
}

/* 糖果童趣（玩具 / 儿童 / 文具 · 粉紫 + 天蓝） */
[data-theme="candy"]{
  --brand:#F4659C;       --brand-dark:#DC4A85;   --brand-2:#8B7BF7;
  --brand-soft:#FFF3F9;  --on-brand:#FFFFFF;
  --accent:#5BBEF5;      --accent-soft:#EAF6FF;  --accent-ink:#1D6EA8;
  --deep:#5B3E8E;        --deep-2:#7A5AB8;
  --bg:#FFFAFC;          --card:#FFFFFF;
  --ink:#322B3A;         --muted:#A79FB0;        --line:#F2E8F2;
  --price:#E04E8A;       --ok:#35C7A8;           --warn:#FFB020;   --danger:#E5484D;
  --danger-soft:#FDEDF0; --warn-soft:#FFF6E6;    --ok-soft:#E8FAF6;
  --stripes:repeating-linear-gradient(-45deg,#F4659C 0 18px,#8B7BF7 18px 36px,#5BBEF5 36px 54px,#FFD166 54px 72px);
  --hero-glow:rgba(255,255,255,.20);
}

/* 自然森系（家居 / 园艺 / 藤编 · 草木绿 + 原木） */
[data-theme="nature"]{
  --brand:#3F9E6E;       --brand-dark:#2F8259;   --brand-2:#A8CC55;
  --brand-soft:#EEF8F1;  --on-brand:#FFFFFF;
  --accent:#C98A3E;      --accent-soft:#FBF3E6;  --accent-ink:#8A5A21;
  --deep:#1E4D3A;        --deep-2:#2E6B50;
  --bg:#F7FBF8;          --card:#FFFFFF;
  --ink:#2A332E;         --muted:#93A29A;        --line:#E4EFE8;
  --price:#2F8259;       --ok:#3F9E6E;           --warn:#D9A43B;   --danger:#D2554A;
  --danger-soft:#FBECEA; --warn-soft:#FBF3E6;    --ok-soft:#EEF8F1;
  --stripes:repeating-linear-gradient(-45deg,#3F9E6E 0 18px,#A8CC55 18px 36px,#C98A3E 36px 54px,#8FCBB0 54px 72px);
  --hero-glow:rgba(214,241,222,.22);
}

/* 轻奢高级（饰品 / 礼盒 / 丝绸 · 墨绿 + 香槟金） */
[data-theme="luxe"]{
  --brand:#1F3B34;       --brand-dark:#142A25;   --brand-2:#C9A227;
  --brand-soft:#F4F1EA;  --on-brand:#F8F4E9;
  --accent:#C9A227;      --accent-soft:#FBF5E2;  --accent-ink:#8C6D10;
  --deep:#12211D;        --deep-2:#22423A;
  --bg:#F8F6F1;          --card:#FFFFFF;
  --ink:#23282A;         --muted:#8E8B80;        --line:#E8E3D8;
  --price:#A9831A;       --ok:#3F7F63;           --warn:#C9A227;   --danger:#B4443C;
  --danger-soft:#F8ECEA; --warn-soft:#FBF5E2;    --ok-soft:#EEF3EF;
  --stripes:repeating-linear-gradient(-45deg,#1F3B34 0 18px,#C9A227 18px 36px,#3F7F63 36px 54px,#E4D5A0 54px 72px);
  --hero-glow:rgba(201,162,39,.20);
}

/* 清新海洋（夏日 / 泳装 / 沙滩 · 海蓝 + 青） */
[data-theme="ocean"]{
  --brand:#1E88E5;       --brand-dark:#1567B8;   --brand-2:#29C7D6;
  --brand-soft:#EEF6FE;  --on-brand:#FFFFFF;
  --accent:#29C7D6;      --accent-soft:#E6FAFC;  --accent-ink:#1B7F8C;
  --deep:#10456E;        --deep-2:#1A6AA8;
  --bg:#F4FAFF;          --card:#FFFFFF;
  --ink:#26313C;         --muted:#8FA0AF;        --line:#DFEBF5;
  --price:#1567B8;       --ok:#1FB58C;           --warn:#F0A93B;   --danger:#E05252;
  --danger-soft:#FCEDED; --warn-soft:#FDF4E7;    --ok-soft:#E6FAF4;
  --stripes:repeating-linear-gradient(-45deg,#1E88E5 0 18px,#29C7D6 18px 36px,#7FD8E8 36px 54px,#1A6AA8 54px 72px);
  --hero-glow:rgba(255,255,255,.20);
}

/* 万圣橙紫（万圣 / 搞怪 / 派对道具） */
[data-theme="halloween"]{
  --brand:#F97316;       --brand-dark:#D9600E;   --brand-2:#7C3AED;
  --brand-soft:#FFF4EC;  --on-brand:#FFFFFF;
  --accent:#7C3AED;      --accent-soft:#F1ECFE;  --accent-ink:#6234C4;
  --deep:#3B1E63;        --deep-2:#5B2E8F;
  --bg:#FFF8F2;          --card:#FFFFFF;
  --ink:#2E2A33;         --muted:#9C93A3;        --line:#F2E6DC;
  --price:#D9600E;       --ok:#22A06B;           --warn:#F59E0B;   --danger:#DC2626;
  --danger-soft:#FDECEC; --warn-soft:#FFF6E6;    --ok-soft:#E8F7F0;
  --stripes:repeating-linear-gradient(-45deg,#F97316 0 18px,#7C3AED 18px 36px,#2E2A33 36px 54px,#FBC77A 54px 72px);
  --hero-glow:rgba(251,199,122,.22);
}

/* 浪漫玫瑰（情人节 / 婚庆 / 花艺 · 玫瑰 + 香槟） */
[data-theme="valentine"]{
  --brand:#D64570;       --brand-dark:#B93561;   --brand-2:#F0A8BE;
  --brand-soft:#FFF2F6;  --on-brand:#FFFFFF;
  --accent:#E8B04B;      --accent-soft:#FBF4E6;  --accent-ink:#9A7420;
  --deep:#6E1F37;        --deep-2:#96304F;
  --bg:#FFF7F9;          --card:#FFFFFF;
  --ink:#33272C;         --muted:#A29299;        --line:#F3E3E8;
  --price:#C42F5D;       --ok:#3FA98A;           --warn:#E8B04B;   --danger:#D64570;
  --danger-soft:#FCEDF1; --warn-soft:#FBF4E6;    --ok-soft:#E9F7F3;
  --stripes:repeating-linear-gradient(-45deg,#D64570 0 18px,#F0A8BE 18px 36px,#E8B04B 36px 54px,#F7D3DE 54px 72px);
  --hero-glow:rgba(247,211,222,.26);
}

/* 摩卡大地（家居 / 箱包 / 皮革 · 摩卡棕 + 奶油焦糖 · Pantone 2025 Mocha Mousse） */
[data-theme="mocha"]{
  --brand:#A47764;       --brand-dark:#8A5F4C;   --brand-2:#D9A97C;
  --brand-soft:#F6EEE7;  --on-brand:#FFFFFF;
  --accent:#C89B72;      --accent-soft:#F7EDE2;  --accent-ink:#7A5638;
  --deep:#5C4238;        --deep-2:#7A5B4D;
  --bg:#FAF5EF;          --card:#FFFFFF;
  --ink:#3B302A;         --muted:#A99A8F;        --line:#EFE5DB;
  --price:#C05234;       --ok:#6FA287;           --warn:#D9A43B;   --danger:#C05234;
  --danger-soft:#F8EBE7; --warn-soft:#FBF3E4;    --ok-soft:#EBF4EF;
  --stripes:repeating-linear-gradient(-45deg,#A47764 0 18px,#D9A97C 18px 36px,#C89B72 36px 54px,#F3E9DE 54px 72px);
  --hero-glow:rgba(255,235,214,.22);
}

/* 蜜桃奶油（母婴 / 家居 / 服饰 · 蜜桃 + 杏橙 · Pantone 2024 Peach Fuzz） */
[data-theme="peach"]{
  --brand:#F4816B;       --brand-dark:#DE6A52;   --brand-2:#FFBE98;
  --brand-soft:#FFF1EA;  --on-brand:#FFFFFF;
  --accent:#F2A65A;      --accent-soft:#FDF2E4;  --accent-ink:#B06A1F;
  --deep:#B85A3F;        --deep-2:#D1714F;
  --bg:#FFF6F0;          --card:#FFFFFF;
  --ink:#43322C;         --muted:#AF9A90;        --line:#F5E3D9;
  --price:#D95A3F;       --ok:#4FA98A;           --warn:#E9A23B;   --danger:#D64545;
  --danger-soft:#FCEDE9; --warn-soft:#FDF2E4;    --ok-soft:#E9F6F0;
  --stripes:repeating-linear-gradient(-45deg,#F4816B 0 18px,#FFBE98 18px 36px,#F2A65A 36px 54px,#FFE3CF 54px 72px);
  --hero-glow:rgba(255,224,205,.24);
}

/* ---------- 2. 兼容层：旧变量名 → 皮肤变量 ---------- */
:root{
  --navy:var(--deep);            --navy2:var(--deep-2);
  --orange:var(--brand);         --orange-dark:var(--brand-dark);
  --link:var(--accent-ink);
  --green:var(--ok);             --amber:var(--warn);
  --radius:14px;                 --radius-sm:10px;
  --shadow:0 2px 10px rgba(30,25,22,.06);
  --shadow-lg:0 10px 30px rgba(30,25,22,.10);
}

/* ---------- 3. 基础 ---------- */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%;color-scheme:light;background:var(--bg)}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  font-size:14px;line-height:1.6;color:var(--ink);background:var(--bg);min-height:100vh;
  -webkit-font-smoothing:antialiased;touch-action:manipulation;
}
.hidden{display:none!important}
button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font-family:inherit;font-size:14px;color:var(--ink)}
a{color:var(--accent-ink);text-decoration:none;cursor:pointer}
img{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}

/* 顶部彩带条 */
.banner-stripes{height:8px;background:var(--stripes)}

/* ---------- 4. 通用组件 ---------- */
.btn{
  display:inline-block;width:100%;padding:11px;border-radius:var(--radius-sm);
  font-size:14px;font-weight:600;color:var(--on-brand);background:var(--brand);
  transition:.15s;text-align:center;border:1px solid transparent;
  white-space:normal;overflow-wrap:break-word;word-break:break-word;
}
.btn:hover{background:var(--brand-dark)}
.btn.primary{background:var(--brand);color:var(--on-brand);box-shadow:0 3px 10px -2px var(--brand)}
.btn.primary:hover{background:var(--brand-dark)}
.btn.green{background:var(--brand);color:var(--on-brand)}
.btn.amber{background:var(--brand-2);color:#fff}
.btn.gray,.btn.ghost{background:var(--card);color:var(--ink);border:1px solid var(--line)}
.btn.gray:hover,.btn.ghost:hover{border-color:var(--brand);color:var(--brand)}
.btn.red{background:#d64545;color:#fff;border:none}
.btn.red:hover{background:#c03a3a}
/* 应用内确认弹窗（替代浏览器原生 confirm：原生弹窗固定在视口顶部且无法定制样式） */
.uic-modal{max-width:360px;margin:auto}
.uic-msg{padding:22px 22px 8px;font-size:14px;line-height:1.8;color:var(--ink);word-break:break-word}
.uic-btns{display:flex;gap:10px;justify-content:flex-end;padding:10px 18px 18px}
.btn.sm{width:auto;padding:7px 14px;font-size:13px}
.btn-xs{width:auto;padding:4px 10px;font-size:12px;border-radius:8px}

.form-row{margin-bottom:14px}
.form-row label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.form-row label .logo-tip{font-size:12px;color:var(--muted);opacity:.85;font-weight:400;margin-left:2px}
.form-row input,.form-row textarea,.form-row select{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);
  outline:none;background-color:var(--card);color:var(--ink);transition:.15s;
}
.form-row input:focus,.form-row textarea:focus,.form-row select:focus{
  border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 16%,transparent);
}
.form-row input::placeholder,.form-row textarea::placeholder{color:var(--muted);opacity:.75}
/* 统一下拉框：去掉浏览器默认黑箭头，换成跟随主题色的箭头 */
select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--brand) 50%),linear-gradient(135deg,var(--brand) 50%,transparent 50%);
  background-position:calc(100% - 18px) center,calc(100% - 12px) center;
  background-size:6px 6px,6px 6px;
  background-repeat:no-repeat;
  cursor:pointer;
}
select::-ms-expand{display:none}
.form-row select{padding-right:38px}
/* 选项底色兜底（部分浏览器原生弹层可吃到，避免暗色系统下黑底突兀） */
option{background:var(--card);color:var(--ink)}
/* 筛选控件（下拉/日期）统一外观：边框/圆角/聚焦光晕跟随皮肤；
   日期框的原生日历弹层浏览器不开放样式，由各页面的自定义日历面板（.dp-panel）替代 */
.flt-ctl{
  padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);
  outline:none;background-color:var(--card);color:var(--ink);
  font-family:inherit;font-size:13px;cursor:pointer;transition:.15s;
}
.flt-ctl:hover{border-color:color-mix(in srgb,var(--brand) 45%,var(--line))}
.flt-ctl:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 16%,transparent)}
select.flt-ctl{padding-right:32px}
.flt-ctl::-webkit-calendar-picker-indicator{
  pointer-events:none; /* 点击落回 input，统一由自定义面板接住 */
  -webkit-appearance:none;appearance:none;
  background-image:none;width:15px;height:15px;
  background-color:var(--muted);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2h2v2h6V2h2v2h3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3V2zm-2 8v10h14V10H5zm0-2h14V6H5v2z'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2h2v2h6V2h2v2h3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h3V2zm-2 8v10h14V10H5zm0-2h14V6H5v2z'/%3E%3C/svg%3E") center/contain no-repeat;
}
/* 通用文本输入框（弹窗等不在 .form-row/.toolbar 里的裸 input 主题化用，边框/圆角/聚焦光晕跟随皮肤） */
.inp{
  padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);
  outline:none;background-color:var(--card);color:var(--ink);
  font-family:inherit;font-size:14px;transition:.15s;
}
.inp:hover{border-color:color-mix(in srgb,var(--brand) 45%,var(--line))}
.inp:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 16%,transparent)}
.inp::placeholder{color:var(--muted);opacity:.75}
/* 自定义日历面板（替代原生日历弹层，颜色跟随皮肤） */
.dp-panel{
  position:fixed;z-index:1200;display:none;width:252px;padding:10px;
  background:var(--card);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 14px 36px rgba(60,30,45,.18);user-select:none;
}
.dp-panel.show{display:block}
.dp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.dp-title{font-weight:700;font-size:13px;color:var(--ink)}
.dp-nav{width:26px;height:26px;border:none;border-radius:8px;background:transparent;color:var(--muted);font-size:15px;cursor:pointer;line-height:1}
.dp-nav:hover{background:var(--brand-soft);color:var(--brand-dark)}
.dp-week{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px}
.dp-week span{text-align:center;font-size:11px;color:var(--muted);padding:3px 0}
.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.dp-cell{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:none;border-radius:9px;background:transparent;color:var(--ink);font-size:12px;cursor:pointer;font-family:inherit;padding:0}
.dp-cell:hover{background:var(--brand-soft);color:var(--brand-dark)}
.dp-cell.out{color:var(--muted);opacity:.45}
.dp-cell.sel{background:var(--brand);color:var(--on-brand);font-weight:700}
.dp-cell.today:not(.sel){box-shadow:inset 0 0 0 1.5px var(--brand);color:var(--brand-dark)}
.dp-foot{display:flex;justify-content:space-between;margin-top:6px}
.dp-foot button{border:none;background:transparent;color:var(--brand);font-size:12px;cursor:pointer;padding:4px 8px;border-radius:8px;font-family:inherit}
.dp-foot button:hover{background:var(--brand-soft)}
/* Chrome 135+：下拉弹层渲染到页面内，选项/悬停/选中色可完全跟随皮肤；
   不支持的浏览器自动忽略此块，保持上面的原生弹层，无副作用 */
@supports (appearance:base-select){
  select{appearance:base-select}
  select::picker-icon{display:none} /* 继续用上面的主题色箭头 */
  ::picker(select){
    appearance:base-select; /* 必须显式开启，否则弹层仍是原生渲染 */
    background:var(--card);border:1px solid var(--line);border-radius:14px;
    box-shadow:0 14px 36px rgba(60,30,45,.16);padding:6px;margin-top:6px;
  }
  option{padding:9px 12px;border-radius:9px;font-size:14px}
  option:hover,option:focus{background:var(--brand-soft);color:var(--brand-dark)}
  option:checked{background:var(--brand);color:var(--on-brand);font-weight:600}
}
/* 验证码行（注册/找回密码） */
.code-row{display:flex;gap:8px}
.code-row input{flex:1}
.code-row .btn{flex:none;white-space:nowrap}
.captcha-row{display:flex;gap:8px;align-items:center;margin-top:8px}
.captcha-row input{flex:1}
.captcha-row img{height:38px;min-width:100px;border-radius:6px;cursor:pointer;border:1px solid var(--line);background:var(--bg)}
.forgot-link{text-align:right;margin-top:10px;font-size:13px}
.forgot-link a{color:var(--brand-dark)}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}
.card h3{font-size:16px;margin-bottom:14px;color:var(--ink)}

.tabs{display:flex;gap:6px}
.tab{
  flex:0 0 auto;padding:6px 14px;border-radius:16px;background:var(--card);
  color:var(--muted);font-size:13px;white-space:nowrap;border:1px solid var(--line);transition:.15s;
}
.tab.active{background:var(--brand);color:var(--on-brand);border-color:var(--brand);font-weight:600}

table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:11px 8px;text-align:center;border-bottom:1px solid var(--line)}
th{color:var(--muted);font-weight:500;font-size:12px}
tbody tr:hover{background:var(--brand-soft)}
td img{width:40px;height:40px;border-radius:8px;object-fit:contain;background:var(--card)}

.tag{display:inline-block;padding:3px 9px;border-radius:8px;font-size:11px;font-weight:600}
.tag.on,.tag.active,.tag.processed{background:var(--ok-soft);color:var(--ok)}
.tag.off{background:var(--line);color:var(--muted)}
.tag.top{background:var(--warn-soft);color:var(--accent-ink)}
.tag.pending,.tag.trial{background:var(--warn-soft);color:var(--accent-ink)}
.tag.suspended{background:var(--danger-soft);color:var(--danger)}
.tag.pro{background:var(--accent-soft);color:var(--accent-ink)}
.tag.paid{background:var(--ok-soft);color:var(--ok)}
.tag.closed{background:var(--line);color:var(--muted)}
.tag.out{background:var(--danger-soft);color:var(--danger)}
.tag-quoted{background:#E8F1FF;color:#2B6CB0}
.tag-key{background:linear-gradient(135deg,#FFB020,#FF7A45);color:#fff}
.tag-coop{background:#E6F7ED;color:#1E7A46}
.tag-notcoop{background:var(--bg);color:var(--muted)}
.tag-pick{display:flex;flex-wrap:wrap;gap:8px}
.tag-opt{padding:8px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);cursor:pointer;font-size:13px;transition:.15s}
.tag-opt.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-dark);font-weight:700}
/* 从选款单导入弹窗：选款单列表项 */
.oi-flt{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.oi-flt #oiQ{flex:1;min-width:160px;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);outline:none}
.oi-flt #oiQ:focus{border-color:var(--brand)}
.oi-flt .dp-wrap{width:128px}
.oi-list{display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow-y:auto}
.oi-item{border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.15s;background:var(--card)}
.oi-item:hover{border-color:var(--brand);background:var(--brand-soft)}
.oi-row1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.oi-row1 b{font-size:14px;color:var(--ink)}
.oi-time{font-size:12px;color:var(--muted);margin-left:auto}
.oi-row2{font-size:12px;color:var(--muted);margin-top:4px;overflow-wrap:break-word;word-break:break-word}

.link-btn{color:var(--accent-ink);font-size:13px;margin-right:10px;cursor:pointer}
.link-btn:hover{text-decoration:underline;color:var(--brand)}
.link-btn.danger{color:var(--danger)}

.mask{position:fixed;inset:0;background:rgba(40,28,34,.45);backdrop-filter:blur(2px);z-index:40;display:none;align-items:flex-end;justify-content:center}
.mask.show{display:flex}
.mask.center{align-items:center}
/* 弹窗打开时锁定背景滚动（防移动端滚动穿透） */
body:has(.mask.show){overflow:hidden}
.panel{background:var(--card);width:100%;max-width:560px;border-radius:18px;max-height:88vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}
/* 移动端弹窗也居中浮起：左右留白、四角圆角、不贴底 */
@media(max-width:640px){.panel{width:calc(100% - 24px);margin:0 12px;border-radius:18px}}
.panel .hd{padding:15px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}
.panel .hd .t{font-size:16px;font-weight:700;color:var(--ink);flex:1;min-width:0;overflow-wrap:break-word;word-break:break-word}
.panel .bd{padding:16px;overflow-y:auto;flex:1}
.panel .ft{padding:16px 16px 20px;border-top:1px solid var(--line);display:flex;gap:10px}
.panel .ft button{flex:1;padding:11px;border-radius:var(--radius-sm);font-size:14px;font-weight:600}
.modal{background:var(--card);border-radius:var(--radius);width:92%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);margin:auto}
.modal .hd{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:600;color:var(--ink)}
.modal .bd{padding:18px;overflow-y:auto;flex:1}
.modal .ft{padding:14px 18px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
.modal .ft button{padding:9px 20px;border-radius:var(--radius-sm);font-size:14px;width:auto;white-space:nowrap}
.btn-primary{background:var(--brand);color:var(--on-brand)}
.btn-accent{background:var(--brand);color:var(--on-brand)}
.btn-accent:hover{background:var(--brand-dark)}
.btn-ghost{background:var(--card);color:var(--ink);border:1px solid var(--line)}

.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:color-mix(in srgb,var(--deep) 94%,transparent);color:#fff;padding:12px 22px;border-radius:12px;z-index:60;display:none;box-shadow:var(--shadow-lg);font-size:14px;max-width:80vw;text-align:center}
.toast.show{display:block}
.empty{padding:40px;text-align:center;color:var(--muted);font-size:13px}
/* 前台店铺「会员已到期」提示卡（主题化：暖色卡片 + 圆角 + 柔和阴影，占满商品网格整行） */
.expired-card{grid-column:1/-1;padding:52px 24px;text-align:center;margin:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.expired-card svg{display:inline-block;margin-bottom:14px}
.expired-card .ex-title{font-size:18px;font-weight:700;color:var(--ink);margin-bottom:8px}
.expired-card .ex-desc{font-size:14px;color:var(--muted);line-height:1.7}
/* 前台店铺「不可用/已停用」全屏提示（平台停用商户或店铺不存在时，隐藏所有业务内容，只显示这一屏） */
.shop-unavailable{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.su-box{text-align:center;padding:52px 24px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);max-width:360px;width:100%}
.su-box svg{display:inline-block;margin-bottom:14px}
.su-title{font-size:18px;font-weight:700;color:var(--ink);margin-bottom:8px}
.su-sub{font-size:14px;color:var(--muted);line-height:1.7}

/* ---------- 5. 后台布局（商户 / 平台） ---------- */
.layout{display:flex;min-height:100vh}
.side{width:212px;flex:0 0 212px;background:linear-gradient(180deg,var(--deep),var(--deep-2));padding:18px 0}
.side .logo{padding:0 18px 16px;font-size:17px;font-weight:700;color:#fff;letter-spacing:.5px;border-bottom:1px solid rgba(255,255,255,.14);margin-bottom:10px}
.side .logo small{display:block;font-size:11px;font-weight:400;color:rgba(255,255,255,.6);letter-spacing:0;margin-top:-2px}
.side .nav{padding:11px 18px;display:flex;align-items:center;width:100%;text-align:left;color:rgba(255,255,255,.72);font-size:14px;border-left:3px solid transparent;transition:.15s}
.side .nav .nav-ico{flex:none;width:17px;height:17px;margin-right:9px}
.side .nav:hover{color:#fff;background:rgba(255,255,255,.08)}
.side .nav.active{color:#fff;font-weight:600;border-left-color:var(--brand-2);background:rgba(255,255,255,.12)}
/* 专业功能（发票/装箱单/分销商）菜单右上角 PRO 角标：金色渐变，深色侧栏上醒目 */
.side .nav .pro-tag{display:inline-block;margin-left:6px;font-size:9px;font-weight:800;padding:2px 6px;border-radius:4px;background:linear-gradient(135deg,#FFB020,#FF7A45);color:#fff;letter-spacing:.5px;line-height:1.2;vertical-align:2px;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.side .side-foot{padding:12px 14px 16px;margin-top:10px;border-top:1px solid rgba(255,255,255,.14);font-size:12px;color:rgba(255,255,255,.55);line-height:1.7}
.side-vip-card{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);border-radius:14px;padding:13px 14px 14px;color:#fff;cursor:pointer;transition:.18s;position:relative;overflow:hidden}
.side-vip-card::after{content:'';position:absolute;right:-26px;top:-26px;width:86px;height:86px;border-radius:50%;background:var(--hero-glow);pointer-events:none}
.side-vip-card:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.28)}
.svc-head{display:flex;align-items:center;justify-content:space-between;gap:8px;position:relative;z-index:1}
.svc-go{font-size:11px;opacity:.6;white-space:nowrap;flex:none}
.svc-days{font-size:26px;font-weight:800;line-height:1.05;margin-top:10px;position:relative;z-index:1}
.svc-days i{font-style:normal;font-size:12px;font-weight:600;opacity:.62;margin-left:3px}
.svc-exp{font-size:11px;opacity:.6;margin-top:3px;position:relative;z-index:1}
.svc-bar{height:4px;border-radius:99px;background:rgba(255,255,255,.18);margin-top:10px;overflow:hidden;position:relative;z-index:1}
.svc-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--brand-2),#fff)}
.svc-quota{font-size:10px;opacity:.55;margin-top:7px;position:relative;z-index:1}
.main{flex:1;padding:22px;min-width:0}
/* 小桌面屏适配：13~14 寸笔记本 / 系统缩放后的窄视口（有效宽度约 1025~1366px）。
   收窄侧栏与主区内边距，给宽表格（选款单明细 16 列 min-width:1020px）留出空间 */
@media(min-width:1025px) and (max-width:1366px){
  .side{width:188px;flex:0 0 188px;padding:14px 0}
  .side .logo{padding:0 14px 12px}
  .side .nav{padding:10px 14px}
  .side .side-foot{padding:10px 12px 14px}
  .main{padding:12px 14px}
}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px;flex-wrap:wrap}
.announce-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;background:var(--brand-soft);border:1px solid var(--brand);border-radius:var(--radius-sm);color:var(--brand-dark);font-size:14px}
.announce-bar .announce-icon{font-size:20px;flex:none}
.announce-bar .announce-body{flex:1;min-width:0;line-height:1.6}
.announce-bar .announce-close{border:none;background:transparent;color:var(--brand-dark);font-size:20px;cursor:pointer;flex:none;padding:0 4px;line-height:1}
.announce-bar.hidden{display:none}
/* 店铺二维码海报 */
.poster-left{flex:none}
.poster-left canvas{display:block;width:220px;max-width:100%;height:auto;border-radius:16px;box-shadow:var(--shadow-lg);background:var(--line)}
.poster-label{font-size:13px;font-weight:600;color:var(--ink)}
.poster-swatches{display:grid;grid-template-columns:repeat(5,30px);gap:8px}
.p-swatch{width:30px;height:30px;border-radius:50%;border:2px solid transparent;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.p-swatch.active{border-color:var(--ink);box-shadow:0 0 0 3px var(--brand-soft)}
.poster-tip{font-size:12px;color:var(--muted);line-height:1.7}
@media(max-width:640px){
  .poster-left{width:auto}
  .poster-left canvas{width:220px;max-width:100%}
}
.topbar h2{font-size:20px;color:var(--ink);font-weight:700}
.quota-chip{background:var(--brand-soft);border:1px solid color-mix(in srgb,var(--brand) 25%,transparent);border-radius:99px;padding:7px 14px;font-size:12px;color:var(--brand-dark);font-weight:600}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);padding:16px;text-align:center;box-shadow:var(--shadow)}
.stat .num{font-size:24px;font-weight:700;color:var(--brand-dark)}
.stat .lbl{font-size:12px;color:var(--muted);margin-top:4px}
.toolbar{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap;align-items:center}
.toolbar input[type=text],.toolbar input:not([type]),.toolbar select{padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;background-color:var(--card);color:var(--ink)}
.toolbar input[type=text],.toolbar input:not([type]){flex:1;max-width:320px;min-width:150px}
.toolbar input:focus,.toolbar select:focus{border-color:var(--brand)}
.toolbar select{padding-right:38px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid5{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
/* 店铺设置顶部 6 字段一行：店铺名/英文店名较宽，手机/邮箱/币种/语言收窄。
   minmax(0,..) 允许列收缩（否则 drp-btn 的 nowrap+箭头留白会把列撑宽、挤占相邻列） */
.set-grid6{grid-template-columns:minmax(0,2fr) minmax(0,2fr) minmax(0,1.2fr) minmax(0,1.5fr) minmax(0,.9fr) minmax(0,.9fr)}
/* 统一 input 与下拉按钮高度，避免按钮比文本框矮（垂直对不齐） */
.set-grid6 .form-row input,.set-grid6 .form-row .drp-btn{height:44px}
/* 窄屏（平板/iPad 641~1024px + 笔记本 1025~1366px）降为 2 列：6 字段 → 3 行（和手机一致），
   否则 6 列/3 列下店铺名称、币种、语言等字段仍会被挤压。
   手机（≤640px）走下方 .grid5 的 2 列规则，不在此覆盖 */
@media(min-width:641px) and (max-width:1366px){
  .set-grid6{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.grid5 .form-row{display:flex;align-items:center;gap:8px;margin-bottom:0}
.grid5 .form-row label{flex:none;white-space:nowrap;margin-bottom:0;font-size:12px}
.grid5 .form-row input,.grid5 .form-row select,.grid5 .form-row .drp-btn{flex:1;min-width:0}
.grid5 .form-row .drp-btn{text-align:left}
.inline-row{display:flex;align-items:center;gap:8px;margin-bottom:0}
.inline-row label{flex:none;white-space:nowrap;margin-bottom:0;font-size:12px}
.inline-row input,.inline-row select{flex:1;min-width:0}
/* 店铺设置：水印颜色点选 + 深浅滑块 */
.wm-row{display:flex;align-items:center;gap:16px}
.wm-row .form-row{margin-bottom:0}
.wm-row .form-row:nth-child(1){flex:0 1 200px;min-width:140px}
.wm-row .form-row:nth-child(2){flex:none}
.wm-row .form-row:nth-child(3){flex:0 1 420px;min-width:200px}
.wm-color-pick{display:flex;align-items:center;gap:7px;flex:1}
.wc-dot{width:24px;height:24px;border-radius:50%;border:1px solid var(--line);cursor:pointer;padding:0;flex:none;transition:box-shadow .15s}
.wc-dot.wc-dark{background:var(--ink)}
.wc-dot.wc-gray{background:var(--muted)}
.wc-dot.wc-light{background:#fff}
.wc-dot.wc-brand{background:var(--brand)}
.wc-dot.wc-brand2{background:var(--brand-2)}
.wc-dot.wc-accent{background:var(--accent)}
.wc-dot.wc-deep{background:var(--deep)}
.wc-dot.on{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--brand)}
.wm-opacity{display:flex;align-items:center;gap:8px;flex:1}
.wm-opacity input[type=range]{flex:1;min-width:0;accent-color:var(--brand);height:24px;padding:0;border:0;background:transparent;cursor:pointer}
.wm-opacity span{flex:none;font-size:12px;color:var(--muted);min-width:36px;text-align:right}
.set-row{margin-bottom:20px}
/* 分页条 */
.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px}
.pager-left{font-size:13px;color:var(--muted)}
.pager-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pager-info{font-size:13px;color:var(--muted)}
.pager .btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}

/* ---------- 商品管理内的「分类管理」内联面板 ---------- */
.cat-panel{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:14px}
.cat-add{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.cat-add input{flex:1;max-width:300px;min-width:150px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;background:var(--card);color:var(--ink)}
.cat-add input:focus{border-color:var(--brand)}
.cat-tip{font-size:12px;color:var(--muted);line-height:1.5}
/* 多级分类树 */
.cat-tree{margin-top:12px;display:flex;flex-direction:column;gap:2px}
.cat-row{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;font-size:13px;color:var(--ink);overflow-wrap:break-word;word-break:break-word}
.cat-row:hover{background:var(--bg)}
.cat-name{max-width:60%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-cnt{font-size:11px;font-weight:700;color:var(--brand-dark);background:var(--brand-soft);border-radius:99px;padding:1px 7px;flex:none}
.cat-x{width:18px;height:18px;line-height:16px;text-align:center;border-radius:99px;color:var(--muted);font-size:14px;text-decoration:none;flex:none;position:relative}
.cat-x:hover{background:var(--danger-soft,var(--brand-soft));color:var(--danger)}
.cat-move{width:18px;height:18px;line-height:16px;text-align:center;border-radius:99px;color:var(--muted);font-size:13px;border:0;background:transparent;cursor:pointer;padding:0;flex:none;position:relative}
.cat-move:hover{background:var(--brand-soft);color:var(--brand-dark)}
.cat-move[data-tip]:hover::after,.cat-x[data-tip]:hover::after{content:attr(data-tip);position:absolute;left:calc(100% + 9px);top:50%;transform:translateY(-50%);white-space:nowrap;background:var(--deep);color:#fff;font-size:12px;font-weight:600;line-height:1.4;padding:7px 12px;border-radius:8px;box-shadow:var(--shadow-lg);z-index:80;pointer-events:none}
.cat-move[data-tip]:hover::before,.cat-x[data-tip]:hover::before{content:"";position:absolute;left:calc(100% + 3px);top:50%;transform:translateY(-50%);border:6px solid transparent;border-right-color:var(--deep);z-index:80;pointer-events:none}
/* 分类管理：手机 wap + 平板 iPad 端字体加大（PC 端保持不变） */
@media(max-width:1024px){
  .cat-row{font-size:15px;padding:8px 10px}
  .cat-cnt{font-size:12px;padding:2px 8px}
  .cat-tip{font-size:13px}
  .cat-add input{font-size:15px}
  .cat-move,.cat-x{width:26px;height:26px;line-height:24px;font-size:16px}
}
/* 手机端 tooltip 向左展开、横向一行（不换行），避免竖向折行被弹出的分类下拉面板遮挡 */
@media(max-width:640px){
  .cat-move[data-tip]:hover::after,.cat-x[data-tip]:hover::after{left:auto;right:0;white-space:nowrap}
  .cat-move[data-tip]:hover::before,.cat-x[data-tip]:hover::before{display:none}
}
.btn.sm.active{border-color:var(--brand);color:var(--brand-dark);background:var(--brand-soft)}
.img-up{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.img-up .box{width:80px;height:80px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--card);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.img-up .box img{width:100%;height:100%;object-fit:contain}
.img-up .box .rm{position:absolute;top:4px;right:4px;width:20px;height:20px;background:var(--danger,#E5484D);color:#fff;font-size:14px;font-weight:700;border-radius:99px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 1px 4px rgba(0,0,0,.3);opacity:0;transition:opacity .15s;z-index:3}
.img-up .box:hover .rm,.img-up .box .rm:focus{opacity:1}
@media(max-width:640px){.img-up .box .rm{opacity:1;width:26px;height:26px;font-size:17px}}
/* 上传按钮组（选择图片 / 拍照上传）+ 隐藏的原生 file 输入 */
.hidden-input{position:absolute;width:1px!important;height:1px!important;padding:0!important;margin:0!important;border:0!important;opacity:0;pointer-events:none;overflow:hidden;clip-path:inset(50%)}
.up-btns{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px}

/* 皮肤选择器（后台） */
.theme-pick{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.theme-item{border:2px solid var(--line);border-radius:var(--radius-sm);padding:10px;background:var(--card);text-align:left;transition:.15s;cursor:pointer}
.theme-item:hover{border-color:color-mix(in srgb,var(--brand) 45%,var(--line))}
.theme-item.active{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}
.theme-item .nm{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:3px}
.theme-item .ds{font-size:11px;color:var(--muted);line-height:1.4;min-height:30px}
.theme-dots{display:flex;gap:4px;margin-bottom:8px}
.theme-dots i{width:20px;height:20px;border-radius:6px;display:block;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.form-foot{display:flex;justify-content:flex-end;margin-top:4px}

/* ---------- 6. 登录页 ---------- */
.login-wrap{max-width:400px;margin:8vh auto;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:var(--shadow-lg)}
.login-wrap h1{font-size:21px;text-align:center;margin-bottom:6px;color:var(--ink)}
.login-wrap .login-sub{text-align:center;font-size:12px;color:var(--muted);margin-bottom:22px}
.login-wrap .tabs{margin-bottom:18px;background:var(--bg);border-radius:12px;padding:4px;gap:4px}
.login-wrap .tab{flex:1;text-align:center;background:transparent;border-color:transparent;font-weight:600;border-radius:9px}
.login-wrap .tab.active{background:var(--card);color:var(--brand);box-shadow:var(--shadow)}

/* ---------- 7. 前台店铺 ---------- */
.page-shop{background:var(--bg)}
header.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px;background:var(--card);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.brand .logo{width:40px;height:40px;border-radius:12px;flex:none;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;font-size:20px;font-weight:700;overflow:hidden}
.brand .logo img{width:100%;height:100%;object-fit:cover}
.brand .twrap{min-width:0}
.brand .title{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brand .sub{font-size:11px;color:var(--muted);margin-top:-2px}
.topbar-actions{display:flex;align-items:center;gap:8px;flex:none}
.icon-btn{font-size:13px;color:var(--ink);padding:9px 10px;border-radius:12px;white-space:nowrap}
.icon-btn:hover{background:var(--bg)}
.lang-btn{height:40px;padding:0 14px;border-radius:12px;background:var(--card);color:var(--brand-dark);font-size:14px;font-weight:700;border:1px solid var(--line);white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:2px}
.lang-btn b{color:var(--brand)}
.lang-btn b.off{color:var(--muted)}
.lang-btn span{color:var(--muted);font-weight:500}
.cart-entry{display:flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 16px;background:var(--brand);color:var(--on-brand);border-radius:99px;font-size:14px;font-weight:600;box-shadow:0 4px 12px -4px var(--brand);white-space:nowrap;transition:.15s}
.cart-entry:hover{background:var(--brand-dark)}
.cart-entry:active{transform:scale(.97)}
.cart-entry .badge{background:#fff;color:var(--brand-dark);border-radius:99px;min-width:20px;height:20px;padding:0 6px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
@media(max-width:560px){
  header.topbar{padding:10px 12px;gap:6px}
  .brand .logo{width:34px;height:34px;border-radius:10px;font-size:17px}
  .brand .title{font-size:15px}
  .lang-btn{height:36px;padding:0 10px}
  .cur-sel{height:36px;font-size:12px;max-width:132px;padding-inline:13px 20px}
  .cur-panel{min-width:140px}
  .cart-entry{height:36px;padding:0 12px;font-size:13px}
}

.shop-hero{position:sticky;top:0;z-index:30;background:linear-gradient(135deg,var(--deep),var(--deep-2));color:#fff;padding:24px 16px}
.shop-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 12% 15%,var(--hero-glow),transparent 58%),radial-gradient(circle at 88% 85%,var(--hero-glow),transparent 55%);pointer-events:none}
.shop-hero-in{position:relative;max-width:1200px;margin:0 auto;display:flex;gap:14px;align-items:flex-start}
.shop-logo{width:64px;height:64px;border-radius:16px;background:#fff;flex:0 0 64px;display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:30px;font-weight:700;color:var(--deep);box-shadow:0 6px 18px -6px rgba(0,0,0,.45)}
.shop-logo img{width:100%;height:100%;object-fit:cover}
.shop-info{flex:1;min-width:0}
.shop-info h1{font-size:21px;font-weight:700;color:#fff;margin-bottom:3px;line-height:1.3}
.shop-intro{font-size:13px;color:rgba(255,255,255,.82);margin-bottom:5px;line-height:1.5}
.shop-contact{font-size:13px;color:var(--brand-2);font-weight:600}
.shop-contact-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}
.shop-tel{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.shop-tel:hover{opacity:.85}
.shop-tel svg{flex:none}
/* 手机端：招牌冻结在顶部，适当压缩高度，避免占屏过多 */
@media(max-width:640px){
  .shop-hero{padding:12px 14px}
  .shop-logo{width:44px;height:44px;flex-basis:44px;font-size:20px;border-radius:12px}
  .shop-info h1{font-size:17px}
  .shop-intro{font-size:12px;margin-bottom:3px}
  .shop-contact{font-size:12px}
  .hero-actions{padding-top:8px}
}

.shop-tabs{display:flex;gap:6px;padding:10px 14px;overflow-x:auto;background:var(--card);border-bottom:1px solid var(--line);scrollbar-width:none}
.shop-tabs::-webkit-scrollbar{display:none}
.shop-search{padding:10px 14px;background:var(--card);border-bottom:1px solid var(--line);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.shop-search input{flex:1;min-width:0;height:41px;padding:0 13px;border:1px solid var(--line);border-radius:99px;background:var(--bg);outline:none;color:var(--ink)}
.shop-search input:focus{border-color:var(--brand);background:var(--card);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}
/* 排序标签栏（淘宝店铺式）：横向一排点击即切换，价格带升降箭头；位于搜索框左侧同行，高度与搜索框对齐 */
.sort-bar{display:flex;align-items:center;gap:2px;flex:none;overflow-x:auto}
.sort-bar .sort-tab{flex:none;border:0;background:transparent;color:var(--muted);font-size:13px;font-weight:600;height:41px;padding:0 15px;border-radius:999px;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center}
.sort-bar .sort-tab:hover{color:var(--brand)}
.sort-bar .sort-tab.on{background:var(--brand-soft);color:var(--brand-dark);font-weight:700}
.sort-bar .sort-tab .arr{font-style:normal;font-size:12px;margin-inline-start:4px}
/* 通用工具类：隐藏自定义浮层/横向标签条的原生滚动条（铁律：下拉与浮层不得出现灰色滚动条） */
.no-sb{scrollbar-width:none;-ms-overflow-style:none}
.no-sb::-webkit-scrollbar{width:0;height:0;display:none}
/* 币种自定义下拉（铁律：前台一律禁用原生 select，全部用主题变量渲染，自动适配皮肤） */
.cur-dd{position:relative;flex:none}
.cur-sel{position:relative;height:40px;max-width:150px;padding-inline:16px 24px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--brand-dark);font-size:13px;font-weight:700;white-space:nowrap;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.cur-sel:hover{border-color:var(--brand)}
.cur-sel:after{content:"";position:absolute;inset-inline-end:9px;top:50%;transform:translateY(-30%);border:4px solid transparent;border-top-color:currentColor;pointer-events:none}
.cur-dd.open .cur-sel{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}
.cur-panel{position:absolute;top:calc(100% + 6px);inset-inline-end:0;min-width:150px;max-height:min(70vh,380px);overflow-y:auto;overflow-x:hidden;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px -8px rgba(0,0,0,.18);padding:6px;display:none;z-index:60;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior:contain}
.cur-panel::-webkit-scrollbar{width:0;height:0;display:none}
.cur-dd.open .cur-panel{display:block}
.cur-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-radius:9px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;white-space:nowrap}
.cur-item:hover{background:var(--brand-soft)}
.cur-item.on{background:var(--brand-soft);color:var(--brand-dark);font-weight:700}
.cur-item .ck{color:var(--brand);font-weight:700;min-width:14px;text-align:center}
.view-toggle{flex:none;height:38px;padding:0 12px;border:1px solid var(--line);border-radius:99px;background:var(--bg);color:var(--ink);font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
/* PC 端商品固定 4 列，隐藏单/双列切换按钮（仅移动端保留切换） */
@media(min-width:1024px){.view-toggle,.view-switch{display:none}}
.view-toggle:hover{border-color:var(--brand);color:var(--brand)}
.view-toggle[aria-pressed="true"]{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-dark)}

.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:14px 14px 28px}
@media(min-width:1024px){.grid{grid-template-columns:repeat(4,1fr)}}
/* 单列大图模式（仅移动端）：手机/iPad 1 列大卡；PC 端固定 4 列、无此模式 */
.grid.big{grid-template-columns:1fr}
@media(min-width:1024px){.grid.big{grid-template-columns:repeat(4,1fr)}}
.grid .card{padding:0;overflow:hidden;display:flex;flex-direction:column;transition:.15s;border-radius:var(--radius)}
.grid .card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.grid .card .img{width:100%;aspect-ratio:1/1;background:var(--card);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}
.grid .card .img .pimg{width:100%;height:100%;background-size:contain;background-position:center;background-repeat:no-repeat}
.grid .card .img .ph{color:var(--muted);font-size:13px}
.grid .card .top-flag{position:absolute;top:0;inset-inline-start:0;z-index:2;background:var(--brand-dark);color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:0 0 10px 0;letter-spacing:.5px}
.grid .card .out-flag{position:absolute;top:0;inset-inline-start:0;z-index:2;background:var(--danger);color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:0 0 10px 0;letter-spacing:.5px}
.grid .card .wm-layer{position:absolute;inset:-18px;display:flex;flex-wrap:wrap;gap:16px 24px;align-content:center;justify-content:center;transform:rotate(-22deg);pointer-events:none;opacity:.16}
.grid .card .wm-layer span{font-size:11px;color:#fff;white-space:nowrap;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.grid .card .body{padding:9px;display:flex;flex-direction:column;gap:5px;flex:1}
.grid .card .name{font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:34px;color:var(--ink);overflow-wrap:break-word;word-break:break-word}
.grid .card .itemno{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.3px}
.grid .card .desc{font-size:11px;color:var(--muted);line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow-wrap:break-word;word-break:break-word}
.grid .card .tags{display:flex;flex-wrap:wrap;gap:4px}
.grid .card .tag{font-size:10px;padding:2px 8px;border-radius:10px;background:var(--brand-soft);color:var(--brand-dark);font-weight:600}
.grid .card .meta{display:flex;flex-wrap:wrap;gap:4px}
.grid .card .row{display:flex;align-items:center;gap:8px;margin-top:auto}

.chip{font-size:10.5px;padding:2px 7px;border-radius:99px;font-weight:600}
.chip.price{background:var(--brand-soft);color:var(--brand-dark);font-size:12px}
.vip-tag{display:inline-block;margin-inline-start:4px;font-size:10px;font-weight:700;padding:2px 6px;border-radius:99px;background:linear-gradient(135deg,#FFB020,#FF7A45);color:#fff;line-height:1.2;vertical-align:middle}
.link-split{display:grid;grid-template-columns:300px 1fr;gap:24px}
.link-col{min-width:0}
.link-col-title{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.link-col .toolbar{margin-bottom:4px}
.vip-input-group{display:inline-flex;align-items:center;gap:5px}
.vip-value-input{width:68px;height:36px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;background-color:var(--card);color:var(--ink);font-size:14px;transition:.15s}
.vip-value-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 16%,transparent)}
.vip-value-input::placeholder{color:var(--muted);opacity:.75}
.vip-unit{font-size:14px;color:var(--muted)}
.vip-poster{margin-top:14px}
/* 大客户（多客户价）列表 */
.vip-client-list{display:flex;flex-direction:column;gap:8px}
.vip-client-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);flex-wrap:wrap}
.vip-client-item.active{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 12%,transparent)}
.vip-client-info{flex:1;min-width:0}
.vip-client-name{font-size:14px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vip-client-name .vip-rule{font-size:12px;font-weight:400;color:var(--brand-dark);background:var(--brand-soft);padding:1px 8px;border-radius:99px}
.vip-client-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
/* 大客户布局：左列(海报上、配色下) | 管理区(右) */
.vip-layout{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start}
.vip-left-col{display:flex;flex-direction:column;gap:16px}
.vip-poster-col canvas{display:block;width:220px;max-width:100%;height:auto;border-radius:16px;box-shadow:var(--shadow-lg);background:var(--line)}
.vip-swatch-col{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.vip-manage-col{min-width:0;display:flex;flex-direction:column;gap:8px}
.vip-filter{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.vip-filter input{flex:1;min-width:110px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;background:var(--card);color:var(--ink);font-size:13px;transition:.15s}
.vip-filter input:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 16%,transparent)}
.vip-filter .drp-btn{flex:none}
.vip-pager{display:flex;align-items:center;gap:6px;justify-content:flex-end;font-size:13px;color:var(--muted)}
.vip-pager button{min-width:30px;height:30px;padding:0 8px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);color:var(--ink);cursor:pointer}
.vip-pager button.on{background:var(--brand);color:var(--on-brand);border-color:var(--brand)}
.vip-pager button:disabled{opacity:.4;cursor:not-allowed}
/* 大客户列表移动端优化：手机/iPad 一行（客户名+按钮）、按钮缩小；PC 端不动 */
@media(max-width:640px){
  .vip-client-item{flex-direction:row;align-items:center;gap:8px;flex-wrap:nowrap}
  .vip-client-info{flex:1;min-width:0;overflow:hidden}
  .vip-client-name{font-size:13px;flex-wrap:nowrap;white-space:nowrap;overflow:hidden}
  .vip-client-actions{flex:none;justify-content:flex-end;gap:4px;flex-wrap:nowrap}
  .vip-client-item .vip-client-actions .btn.sm{min-height:0;height:32px;padding:0 10px;font-size:12px;line-height:32px}
  .vip-client-item .vip-client-actions .bc-del{min-width:32px;min-height:32px;width:32px;height:32px;font-size:16px;padding:0;display:inline-flex;align-items:center;justify-content:center}
  .vip-filter{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .vip-filter input{grid-column:1/-1;flex:none;min-width:0}
}
@media(min-width:641px) and (max-width:1024px){
  .vip-client-item{flex-wrap:nowrap}
  .vip-client-info{min-width:0;overflow:hidden}
  .vip-client-actions{flex:none}
  .vip-client-item .vip-client-actions .btn.sm{padding:5px 10px;font-size:12px}
  .vip-client-item .vip-client-actions .bc-del{min-height:32px;width:32px;height:32px;font-size:15px;display:inline-flex;align-items:center;justify-content:center}
}
/* 预览海报折叠：PC 端海报常显（无预览按钮），移动端(≤1024) 默认收起、点「预览海报」展开为左右布局 */
.link-toggle{display:none;margin-left:auto;flex:none}
@media(max-width:1024px){
  .link-toggle{display:inline-flex}
  .poster-collapsible{display:none !important}
  .poster-collapsible.show{display:flex !important;flex-direction:row;align-items:center;gap:14px}
  .poster-left canvas,.vip-poster-col canvas{width:140px}
  .poster-left,.vip-poster-col{flex:none}
  .poster-swatches{grid-template-columns:repeat(5,24px);gap:6px}
  .p-swatch{width:24px;height:24px}
  /* 大客户客户列表：移动端默认折叠，点「展开列表」才显示（PC 端常显） */
  .vip-list-collapsible{display:none !important}
  .vip-list-collapsible.show{display:flex !important}
}
@media(max-width:1000px){.link-split{grid-template-columns:1fr}.vip-layout{grid-template-columns:1fr}}
.chip.qty{background:var(--accent-soft);color:var(--accent-ink)}
.chip.moq{background:var(--warn-soft);color:var(--accent-ink)}
.chip.cbm{background:var(--ok-soft);color:var(--ok)}
.chip.gw,.chip.nw{background:var(--line);color:var(--muted)}

.stepper{display:flex;align-items:center;flex:1;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--card)}
.stepper button{width:28px;height:30px;background:var(--bg);font-size:16px;color:var(--ink);line-height:1}
.stepper button:active{background:var(--brand-soft)}
.stepper input{flex:1;min-width:0;border:none;text-align:center;height:30px;font-size:12px;font-weight:600;background:transparent;color:var(--ink)}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.btn-add{background:var(--brand);color:var(--on-brand);border-radius:var(--radius-sm);padding:0 12px;height:30px;font-size:12px;font-weight:600;white-space:nowrap}
.btn-add:hover{background:var(--brand-dark)}
.btn-add.in{background:var(--brand-dark);color:var(--on-brand);border:1px solid var(--brand-dark)}
/* 手机端：加购步进/按钮、分类标签触控目标加大（微信里太小难点、易误触） */
@media(max-width:640px){
  .stepper button{width:36px;height:40px;font-size:18px}
  .stepper input{height:40px;font-size:14px}
  .btn-add{height:40px;font-size:13px;padding:0 10px}
  .tab{padding:9px 15px}
  .cart-item .qty button{width:34px;height:34px}
}

.cart-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);align-items:center}
.cart-item:last-child{border-bottom:none}
.cart-item .ci-img{width:52px;height:52px;border-radius:var(--radius-sm);background:var(--card);flex:0 0 52px;overflow:hidden}
.cart-item .ci-img .pimg{width:100%;height:100%;background-size:contain;background-position:center;background-repeat:no-repeat}
.cart-item .ci-info{flex:1;min-width:0}
.cart-item .ci-name{font-size:13px;line-height:1.3;overflow-wrap:break-word;word-break:break-word}
.cart-item .ci-price{font-size:12px;color:var(--price);margin-top:2px;font-weight:600}
.cart-item .qty{display:flex;align-items:center;gap:5px}
.cart-item .qty button{width:26px;height:26px;border-radius:8px;background:var(--bg);font-size:15px;line-height:1;color:var(--ink);border:1px solid var(--line)}
.cart-item .qty input{width:50px;text-align:center;border:1px solid var(--line);border-radius:8px;padding:4px;background:var(--card);color:var(--ink)}
.cart-item .del{color:var(--muted);font-size:12px;padding:4px}
.cart-item .del:hover{color:var(--danger)}

.link-box{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px;font-size:12px;word-break:break-all;color:var(--ink);display:flex;gap:8px;align-items:center}
.link-box .copy{color:var(--accent-ink);white-space:nowrap;font-size:13px;font-weight:600}
.result-actions{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.result-actions button{flex:1;min-width:120px;padding:11px;border-radius:var(--radius-sm);font-size:14px;font-weight:600}
.tip{font-size:12px;color:var(--muted);margin-top:10px;line-height:1.6}
.hint-box{background:var(--brand-soft);border:1px solid color-mix(in srgb,var(--brand) 22%,transparent);border-radius:var(--radius-sm);padding:10px;margin-bottom:12px;font-size:13px;line-height:1.6}

/* ---------- 8. 响应式（后台） ---------- */
/* 侧栏钉住：桌面/平板（>640px）左侧菜单栏固定不动，右侧内容滚动时侧栏始终在左侧。
   align-self:flex-start 防止被 flex 拉伸（否则 sticky 失效）；内部 flex column 让底部贴底 */
@media(min-width:641px){
  .side{position:sticky;top:0;height:100vh;align-self:flex-start;display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto}
  .side .side-foot{margin-top:auto}
}
/* 矮屏（笔记本 768p / 系统高缩放，可视高 ≤700px）：自动隐藏侧栏底部（会员卡/支付模式提示），
   菜单完整显示不滚动（LOGO + 菜单 ≈ 520px，可视高够用） */
@media(min-width:641px) and (max-height:700px){
  .side .side-foot{display:none}
}

@media(max-width:640px){
  .grid2{grid-template-columns:1fr}
  .grid5{grid-template-columns:1fr 1fr}
  .theme-pick{grid-template-columns:repeat(2,1fr)}
  .wm-row{flex-direction:column;align-items:stretch;gap:12px}
  .wm-row .form-row:nth-child(1),.wm-row .form-row:nth-child(3){flex:1 1 auto;min-width:0}
  .layout{flex-direction:column}
  .side{width:100%;flex:none;display:flex;overflow-x:auto;padding:8px;background:var(--deep)}
  .side .logo,.side .side-foot{display:none}
  .side .nav{width:auto;flex:0 0 auto;white-space:nowrap;border-left:none;border-radius:8px;padding:8px 14px}
  .main{padding:14px;overflow-x:hidden}
  /* 表格横向滚动：手机上保持列宽，横向拖动查看，避免 10 列表格挤成一团 */
  .card{overflow-x:auto}
  .card table{min-width:640px;white-space:nowrap}
  .card table td.wrap{white-space:normal}
  /* 手机端触控目标 ≥40px（铁律）：后台小按钮统一加高 */
  .btn.sm{min-height:40px;padding:8px 16px;font-size:14px}
}
/* 平板（641~1024px，如 iPad）：宽表格在卡片内横向滚动，避免撑破页面；
   只对内容超宽的表格生效，短表格（few 列）仍 100% 宽不滚动 */
@media(max-width:1024px) and (min-width:641px){
  .card{overflow-x:auto}
  .card table{white-space:nowrap}
  .card table td.wrap{white-space:normal}
}

/* ================= 会员 / 支付 / 通知 组件 ================= */
.vip-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;color:#fff;background:var(--vb,#94A3B8);line-height:1.5;white-space:nowrap}
.vip-badge.lg{font-size:14px;padding:6px 16px}
.vip-badge .crown{display:inline-flex;align-items:center;opacity:.95}
.vip-badge .crown svg{display:block}
.vip-badge.expired{background:#98A2B3!important}

.vip-hero{position:relative;overflow:hidden;border-radius:var(--radius);padding:22px;color:#fff;background:linear-gradient(135deg,var(--deep),var(--deep-2));box-shadow:var(--shadow)}
.vip-hero:after{content:'';position:absolute;right:-34px;top:-34px;width:170px;height:170px;border-radius:50%;background:var(--hero-glow)}
.vip-hero:before{content:'';position:absolute;left:-40px;bottom:-60px;width:150px;height:150px;border-radius:50%;background:var(--hero-glow);opacity:.4}
.vip-hero .vh-crown{position:absolute;right:18px;top:16px;width:40px;height:40px;color:#fff;opacity:.14;pointer-events:none;z-index:1}
.vip-hero .vh-crown svg{width:100%;height:100%;display:block}
.vip-hero .vh-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;position:relative;z-index:1}
.vip-hero .vh-name{font-size:24px;font-weight:800;letter-spacing:.5px}
.vip-hero .vh-status{font-size:12px;font-weight:600;padding:3px 11px;border-radius:999px;background:rgba(255,255,255,.16);color:rgba(255,255,255,.92)}
.vip-hero .vh-sub{font-size:13px;opacity:.88;margin-top:7px;max-width:640px;line-height:1.6;position:relative;z-index:1}
.vip-hero .vh-bignum{display:flex;align-items:baseline;gap:5px;margin-top:20px;position:relative;z-index:1}
.vip-hero .vh-bignum b{font-size:46px;font-weight:800;line-height:1;letter-spacing:-1px}
.vip-hero .vh-bignum i{font-style:normal;font-size:16px;font-weight:600;opacity:.7}
.vip-hero .vh-bignum span{font-size:13px;opacity:.72;margin-left:10px}
.vip-hero .vh-meta{font-size:12px;opacity:.72;margin-top:12px;position:relative;z-index:1}

.qbar{height:8px;background:var(--bg);border-radius:99px;overflow:hidden;margin:8px 0 4px}
.qbar>i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--brand-2));transition:width .3s}
.vip-hero .qbar{background:rgba(255,255,255,.22);margin-top:16px;position:relative;z-index:1}
.qbar.warn>i{background:var(--warn)}
.qbar.danger>i{background:var(--danger)}

.plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:6px}
.plan-card{position:relative;display:flex;flex-direction:column;border:2px solid var(--line);border-radius:14px;padding:18px 16px;background:var(--card);cursor:pointer;transition:.15s}
.plan-card:hover{border-color:var(--brand-2);transform:translateY(-4px) scale(1.03);box-shadow:0 12px 28px -12px rgba(0,0,0,.18)}
.plan-card.active{border-color:var(--brand);box-shadow:0 8px 24px -10px var(--brand)}
.plan-card .pc-tags{position:absolute;top:-11px;right:12px;display:flex;gap:6px;z-index:1}
.plan-card .pc-tag{background:var(--brand);color:var(--on-brand);font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap}
.plan-card .pc-tag.own{background:var(--accent);color:#fff}
.plan-card .pc-name{font-size:15px;font-weight:800;color:var(--ink)}
.plan-card .pc-price{font-size:26px;font-weight:800;color:var(--price);margin:8px 0 2px;line-height:1.1}
.plan-card .pc-price small{font-size:12px;font-weight:500;color:var(--muted);margin-left:4px}
.plan-card .pc-slogan{font-size:12px;color:var(--muted);min-height:18px}
.plan-card ul{list-style:none;margin:12px 0 0;padding:0;flex:1}
.plan-card li{position:relative;padding:4px 0 4px 18px;font-size:13px;color:var(--ink);line-height:1.5}
.plan-card li:before{content:'✓';position:absolute;left:0;color:var(--brand);font-weight:700}
.plan-card li.no{color:var(--muted)}
.plan-card li.no:before{content:'·';color:var(--muted)}
.plan-card li.hi{color:var(--brand-dark);font-weight:800;background:var(--brand-soft);border-radius:8px;padding:6px 8px 6px 24px;margin:4px 0}
.plan-card li.hi:before{content:'★';color:var(--brand);font-weight:800}
.plan-card .pc-cur{margin-top:12px;font-size:12px;font-weight:700;color:var(--brand);text-align:center}
/* 卡片内「立即开通/续费」按钮 + 差价提示（每个套餐卡片底部，点即可直接付） */
.plan-card .pc-buy-btn{margin-top:12px;align-self:center;width:auto;padding:9px 22px;border-radius:10px;font-size:14px;font-weight:700;white-space:nowrap;background:var(--brand);color:var(--on-brand);cursor:pointer;transition:.15s;border:1px solid transparent}
.plan-card .pc-buy-btn:hover{background:var(--brand-dark)}
.plan-card .pc-buy-tip{margin-top:6px;font-size:11px;color:var(--muted);text-align:center;line-height:1.5}

.bell{position:relative;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--card);cursor:pointer;font-size:17px;display:inline-flex;align-items:center;justify-content:center}
.bell:hover{border-color:var(--brand)}
.bell .dot{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;border-radius:99px;background:var(--danger);color:#fff;font-size:11px;line-height:18px;text-align:center;padding:0 4px;font-weight:700}

.noti-item{display:flex;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}
.noti-item.unread{background:var(--brand-soft)}
.noti-item .ni-b{flex:1;min-width:0}
.noti-item .ni-t{font-size:14px;font-weight:700;color:var(--ink)}
.noti-item .ni-c{font-size:13px;color:var(--muted);margin-top:4px;line-height:1.55;word-break:break-word}
.noti-item .ni-m{font-size:11px;color:var(--muted);margin-top:7px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.noti-item .ni-kind{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:1px 8px}

.qr-box{width:196px;height:196px;border:1px solid var(--line);border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}
.qr-box img{width:100%;height:100%;object-fit:contain}
.qr-box .ph{color:var(--muted);font-size:12px;text-align:center;padding:10px}

.pay-ch{display:flex;gap:10px;flex-wrap:wrap}
.pay-ch .pch{flex:1;min-width:140px;border:2px solid var(--line);border-radius:12px;padding:12px;text-align:center;cursor:pointer;transition:.15s}
.pay-ch .pch:hover{border-color:var(--brand-2)}
.pay-ch .pch.active{border-color:var(--brand);background:var(--brand-soft)}
.pay-ch .pch.dis{opacity:.55;cursor:not-allowed;background:var(--bg)}
.pay-ch .pch .n{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:3px}
.pay-ch .pch .d{font-size:11px;color:var(--muted);line-height:1.4}

.pay-info{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px;font-size:13px;line-height:1.95}
.pay-info .k{color:var(--muted);display:inline-block;min-width:78px}
.pay-info .v{font-weight:600;color:var(--ink);word-break:break-all}

.drawer{position:fixed;top:0;right:0;width:420px;max-width:94vw;height:100%;background:var(--card);box-shadow:-10px 0 34px rgba(0,0,0,.16);transform:translateX(102%);transition:transform .25s;z-index:61;display:flex;flex-direction:column}
.drawer.show{transform:none}
.drawer .dr-hd{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-weight:700;color:var(--ink)}
.drawer .dr-bd{flex:1;overflow-y:auto}
.drawer .dr-ft{padding:12px 18px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}

.switch{display:inline-flex;align-items:center;gap:9px;cursor:pointer;font-size:13px;color:var(--ink);user-select:none}
.switch input{width:auto;margin:0;accent-color:var(--brand);transform:scale(1.15)}

.pay-done{text-align:center;padding:26px 10px}
.pay-done .ic{width:62px;height:62px;border-radius:50%;background:var(--ok-soft);color:var(--ok);font-size:32px;line-height:62px;margin:0 auto 14px}
.pay-done .t{font-size:18px;font-weight:800;color:var(--ink)}
.pay-done .s{font-size:13px;color:var(--muted);margin-top:8px;line-height:1.7}

@media(max-width:640px){
  .plan-grid{grid-template-columns:1fr}
  .drawer{width:100%;max-width:100%}
  .vip-hero{padding:18px}
  .pay-ch .pch{min-width:100%}
  .qr-box{width:168px;height:168px;margin:0 auto}
  /* 手机端：上传按钮做大、占满一行，方便单手点（拍照上传是主要入口） */
  .up-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .up-btns .btn{width:100%;padding:11px 8px;font-size:14px}
  .img-up .box{width:72px;height:72px}
  .pe-body{max-width:100%}
  .pe-head{flex-wrap:wrap}
}

/* ---------- 微信内图片长按保存浮层（长图/海报下载） ---------- */
.img-save-mask{position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:300;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;overflow:auto;padding:46px 16px 28px;-webkit-overflow-scrolling:touch}
.img-save-tip{color:#fff;font-size:15px;margin-bottom:14px;text-align:center;line-height:1.6;flex:none}
.img-save-img{max-width:100%;width:auto;border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.5);flex:none;margin:auto 0}
.img-save-close{position:fixed;top:12px;inset-inline-end:16px;color:#fff;font-size:15px;padding:8px 16px;background:rgba(255,255,255,.18);border-radius:99px;cursor:pointer;z-index:301;flex:none}

/* ---------- 移动端触控目标统一 ≥40px（微信里更好点，避免误触） ---------- */
@media(max-width:1024px){
  .cart-entry{height:40px}
  .lang-btn{height:40px;padding:0 12px}
  .cur-sel{height:40px}
  .icon-btn{min-height:40px;min-width:40px;display:inline-flex;align-items:center;justify-content:center}
  .view-toggle{height:40px}
  .tab{min-height:40px;display:inline-flex;align-items:center;justify-content:center}
  .cart-item .qty button{width:40px;height:40px}
  .cart-item .del{min-height:40px;padding:0 10px}
  .sort-bar .sort-tab{min-height:40px;display:inline-flex;align-items:center}
}

/* ---------- 店铺前台：左侧分类栏 + 右侧商品（淘宝卖家店铺式） ---------- */
.shop-main{display:flex;align-items:flex-start;max-width:1600px;margin:0 auto;padding:14px 14px 0;gap:16px}
.shop-side{width:180px;flex:none;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.side-list{display:flex;flex-direction:column;padding:8px;gap:2px}
.side-item{display:block;width:100%;text-align:left;padding:12px 14px;border-radius:10px;font-size:14px;font-weight:600;color:var(--ink);transition:.12s;overflow-wrap:break-word;word-break:break-word}
.side-item:hover{background:var(--brand-soft);color:var(--brand-dark)}
.side-item.active{background:var(--brand);color:var(--on-brand)}
.shop-content{flex:1;min-width:0}
.cat-sub .shop-tabs{border-bottom:none;padding:6px 14px;background:transparent}
.cat-sub:not(:empty)~.grid{padding-top:6px}
.cat-sub:not(:empty)~.grid.thumb{margin-top:0}
.cat-sub .sub-tabs .tab{padding:5px 11px}
@media(max-width:1024px){
  .shop-main{padding:6px 10px 0;gap:10px}
  .shop-side{width:88px;border-radius:10px}
  .side-list{padding:6px;gap:2px}
  .side-item{font-size:13px;padding:11px 8px;text-align:center;word-break:break-all}
  .cat-sub .shop-tabs{padding:2px 10px 4px}
  .cat-sub:not(:empty)~.grid{padding-top:4px}
  .cat-sub .sub-tabs .tab{min-height:0;padding:5px 11px}
  .shop-content .shop-search{padding:10px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
  .shop-content .shop-search input{grid-column:1;grid-row:1}
  .shop-content .shop-search .view-switch{grid-column:2;grid-row:1}
  .shop-content .shop-search .sort-bar{grid-column:1;grid-row:2;min-width:0}
  .shop-content .shop-search .dist-apply-btn{grid-column:2;grid-row:2;justify-self:end}
  .sort-bar .sort-tab{padding:0 8px}
  .grid{gap:2px;padding:14px 4px 28px}
}

/* ---------- 店铺 WAP 端：淘宝App式「宝贝 / 分类」双标签；分类页=左侧分类栏+右侧商品，宝贝页=全宽商品；PC 端固定左侧分类栏 ---------- */
.wap-cattabs{display:none;background:var(--card);border-bottom:1px solid var(--line)}
.wap-cattabs .wtab{position:relative;flex:1;border:0;background:transparent;color:var(--muted);font-size:15px;font-weight:600;height:44px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.wap-cattabs .wtab.on{color:var(--ink);font-weight:700}
.wap-cattabs .wtab.on:after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:26px;height:3px;border-radius:3px 3px 0 0;background:var(--brand)}
@media(max-width:1024px){
  .wap-cattabs{display:flex}
  .wap-cattabs .wtab + .wtab{border-inline-start:1px solid var(--line)}
}
@media(min-width:1025px){.wap-cattabs{display:none!important}}
/* 移动端/平板（≤1024）：往下滚动收起店招上半部分（LOGO/公司名/地址/手机/邮箱/微信/WhatsApp），
   只留「登录/币种/语言/选款清单」+「全部商品/分类目录」标签行，腾出空间多显示商品；
   滚回顶部恢复完整店招。PC（>1024）不生效。JS 里 initHeroCollapse 切换 .collapsed */
@media(max-width:1024px){
  .shop-hero{overflow-anchor:none}   /* 店招自身不作为滚动锚点候选；⚠️ 真正防「折叠振荡」的根滚动容器禁用在 shop.html <style>（html{overflow-anchor:none}，≤1024）——见 docs 迭代 297 */
  /* logo/info 用高度+透明度平滑收起（替代 display:none 的瞬变），避免临界点视觉跳变 */
  .shop-hero .shop-logo{overflow:hidden;transition:height .26s ease,width .26s ease,flex-basis .26s ease,opacity .2s ease}
  .shop-hero .shop-info{max-height:120px;overflow:hidden;transition:max-height .26s ease,opacity .2s ease}
  .shop-hero.collapsed .shop-logo{height:0;width:0;flex-basis:0;opacity:0}
  .shop-hero.collapsed .shop-info{max-height:0;opacity:0}
  .shop-hero.collapsed .hero-actions{border-top:none;padding-top:0}
  .shop-hero.collapsed .shop-hero-in{gap:0}
  /* 标签行/分类栏的 sticky top 由 JS 每帧跟随店招高度设置（不加 transition，避免和店招高度渐变不同步） */
}

/* ==========================================================================
   阿拉伯语 RTL（迭代 312，2026-10-20）
   - 只在 <html dir="rtl"> 下生效：dir 由 i18n.js 的 applyDir() 按当前语言切换，
     LTR 的 8 种语言与全部后台页面（恒中文 LTR）**零影响**。
   - 布局骨架（.shop-main / .shop-content / grid 搜索条）本来就是 flex + grid，
     RTL 下浏览器自动镜像，不用改；这里只补「物理属性已改逻辑属性后仍需要特判」的部分。
   ========================================================================== */

/* 1) 数字/价格 bidi 隔离：RTL 段落里「¥12.00」不加隔离会被重排成「12.00¥」。
      .num-ltr 由 shop.html 的 moneyHtml() 输出，货号等纯数字也可复用。 */
.num-ltr{unicode-bidi:isolate;direction:ltr;display:inline-block}

/* 2) 阿语字体：中文栈（PingFang / 微软雅黑）无阿语字形，靠系统兜底会因设备而异，
      这里显式优先 Tahoma / Arial / Noto，避免个别安卓机渲染成豆腐块。 */
html:lang(ar) body,
html[dir="rtl"] body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Tahoma","Arial","Noto Naskh Arabic","Noto Sans Arabic","PingFang SC","Microsoft YaHei",sans-serif;
}

/* 3) 阿语是连写文字：letter-spacing 会把字母拆断（前台只有货号用了 0.2~0.3px）。 */
html[dir="rtl"] .itemno,
html[dir="rtl"] .prod-itemno{letter-spacing:0}

/* 4) RTL 下滚动条出现在左侧，侧栏内滚动条宽度统一（避免内容宽度抖动）。 */
html[dir="rtl"] .shop-side.pc-stuck{scrollbar-width:thin}
