/* ============================================================
   咖莱翼 · 外卖利润管家 — 专业版 UI 设计系统
   设计令牌 / 布局 / 组件（index.html 引用；类名与 app.js 强耦合，勿随意改名）
   ============================================================ */
:root{
  /* 【主题化改造 2026-09-18】品牌色不再写死萱味红，改由外观设置（theme.js）驱动：
     --brand 系全部"指向"主题引擎的语义令牌，外观面板换色系时全站同步跟随。
     回退值保留旧萱味红 —— 万一 tokens.css 加载失败也不至于裸奔。 */
  --brand:var(--primary,#bf3a30);          /* 主品牌色 ← 外观方案主色 */
  --brand-deep:var(--primary-dark,#9e2f27);
  --brand-soft:var(--primary-light,#fdf1f0);
  --accent:var(--blue-400,#e67e22);        /* 渐变辅色 ← 主色 400 档 */
  --ink:#182230;
  --ink-2:#3d4a5c;
  --sub:#71809a;
  --line:#e6eaf1;
  --line-strong:#d4dae4;
  --bg:#f3f5f9;
  --card:#ffffff;
  --ok:#0f9960;
  --ok-soft:#e8f7f0;
  --warn:#c77d0a;
  --warn-soft:#fdf6e7;
  --bad:#d43c33;
  --bad-soft:#fdeeec;
  --info:#2f6fed;
  --info-soft:#ecf2fe;
  --radius:12px;
  --radius-sm:8px;
  --shadow:0 1px 2px rgba(23,32,54,.05),0 4px 16px rgba(23,32,54,.06);
  --shadow-lg:0 8px 32px rgba(23,32,54,.14);
  --font:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;font-family:var(--font);font-size:13.5px;color:var(--ink);background:
  radial-gradient(1200px 400px at 85% -180px,#fdeae8 0%,transparent 60%),
  var(--bg);-webkit-font-smoothing:antialiased;}

/* ---------- 顶部导航 ---------- */
.topbar{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);padding:0 28px;display:flex;align-items:center;gap:16px;height:60px;}
.logo{display:flex;align-items:center;gap:11px;}
.logo-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--brand),var(--accent));
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;
  box-shadow:0 4px 12px rgba(var(--primary-rgb),.35);letter-spacing:-.5px;}
.logo h1{margin:0;font-size:15.5px;font-weight:700;letter-spacing:.2px;}
.logo p{margin:1px 0 0;font-size:11px;color:var(--sub);letter-spacing:.3px;}
.topbar .spacer{flex:1;}
.user-chip{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2);
  background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:5px 13px 5px 8px;}
.avatar{width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--accent));
  color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;font-weight:700;}
.role-chip{display:inline-flex;align-items:center;background:var(--brand-soft);color:var(--brand-deep);
  border:1px solid rgba(var(--primary-rgb),.25);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600;white-space:nowrap;}
.plat-sel{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--sub);}
.plat-sel select{width:auto;min-width:110px;}
#adminBtns{display:none;gap:6px;align-items:center;padding-left:12px;border-left:1px solid var(--line);}
#adminBtns button{margin:0;}

/* ---------- 布局 ---------- */
.layout{display:grid;grid-template-columns:430px minmax(0,1fr);gap:20px;padding:20px 28px 40px;align-items:start;max-width:1560px;margin:0 auto;}
.col-report{position:sticky;top:80px;}
@media (max-width:1080px){.layout{grid-template-columns:1fr;}.col-report{position:static;}}

/* ---------- 卡片 / 步骤 ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:18px 20px;margin-bottom:18px;}
.card-head{display:flex;align-items:center;gap:10px;margin-bottom:4px;}
.step-no{flex:0 0 26px;width:26px;height:26px;border-radius:8px;background:var(--brand-soft);color:var(--brand);
  font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;}
.card h2{font-size:14.5px;margin:0;font-weight:700;letter-spacing:.2px;}
.card .sub{font-size:12px;color:var(--sub);margin:6px 0 2px;line-height:1.6;}
.card h3{font-size:12.5px;margin:16px 0 8px;color:var(--ink-2);font-weight:700;}
.divider{border:none;border-top:1px dashed var(--line-strong);margin:16px 0 4px;}

/* ---------- 表单 ---------- */
label{display:block;font-size:12px;color:var(--ink-2);margin:10px 0 5px;font-weight:600;letter-spacing:.2px;}
input,select{width:100%;padding:9px 11px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);
  font-size:13px;font-family:var(--font);color:var(--ink);background:#fff;transition:border .15s,box-shadow .15s;outline:none;}
input:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(191,58,48,.12);}
input::placeholder{color:#a8b3c5;}
input[type="file"]{padding:7px;font-size:12px;color:var(--sub);background:var(--bg);border-style:dashed;cursor:pointer;}
.row{display:flex;gap:10px;} .row>*{flex:1;min-width:0;}

/* ---------- 按钮 ---------- */
button{background:var(--brand);color:#fff;border:0;border-radius:var(--radius-sm);padding:9px 16px;
  font-size:13px;font-weight:600;font-family:var(--font);cursor:pointer;margin-top:10px;
  transition:background .15s,transform .05s,box-shadow .15s,opacity .15s;box-shadow:0 2px 6px rgba(191,58,48,.25);}
button:hover{background:var(--brand-deep);}
button:active{transform:translateY(1px);}
button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;}
button.ghost{background:#fff;color:var(--brand);border:1px solid var(--brand);box-shadow:none;}
button.ghost:hover{background:var(--brand-soft);}
button.danger{background:#fff;color:var(--bad);border:1px solid var(--bad);box-shadow:none;}
button.danger:hover{background:var(--bad-soft);}
button.sm{padding:6px 12px;font-size:12px;margin-top:6px;}
button.block{width:100%;}
button.neutral{background:#fff;color:var(--ink-2);border:1px solid var(--line-strong);box-shadow:none;}
button.neutral:hover{background:var(--bg);}
button.danger-solid{background:var(--bad);color:#fff;border:0;box-shadow:0 2px 6px rgba(191,58,48,.25);}
button.danger-solid:hover{background:#9c2b22;}
.topbar button{margin:0;padding:6px 12px;font-size:12px;}
.topbar button.ghost{color:var(--brand);}
#adminBtns button{background:var(--brand-soft);color:var(--brand);border:1px solid #f2d7d4;box-shadow:none;}
#adminBtns button:hover{background:#fae3e0;}

/* ---------- 表格 ---------- */
table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:10px;}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;}
th{background:#f7f9fc;color:var(--ink-2);font-size:11.5px;font-weight:700;letter-spacing:.3px;
  border-bottom:1px solid var(--line-strong);}
tbody tr:hover{background:#fafbfd;}
td input,td select{padding:5px 7px;font-size:12.5px;}

/* ---------- 提示条 ---------- */
.tip{font-size:12.5px;border-radius:var(--radius-sm);padding:9px 12px;margin-top:10px;line-height:1.6;
  background:var(--warn-soft);border:1px solid #f3e2bb;color:#8a6117;display:none;}
.tip.ok{background:var(--ok-soft);border-color:#bfe8d4;color:#0b7a4b;}
.tip.bad{background:var(--bad-soft);border-color:#f2c7c2;color:#a3271f;}
.muted{color:var(--sub);font-size:12px;line-height:1.7;}
.ok{color:var(--ok);} .bad{color:var(--bad);}

/* ---------- 状态徽标 ---------- */
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.3px;}
.badge.admin{background:var(--bad-soft);color:var(--bad);}
.badge.operator{background:var(--info-soft);color:var(--info);}
.badge.on{background:var(--ok-soft);color:var(--ok);}
.badge.off{background:#eef1f5;color:var(--sub);}
.miss{color:var(--bad);font-weight:600;}
.pill{font-size:11px;color:#fff;background:var(--brand);border-radius:999px;padding:2px 10px;margin-left:6px;font-weight:600;}

/* ---------- 长列表：折叠 + 滚动 ---------- */
/* 汇总条：自动换行的统计胶囊（窄栏下不再把文字压成竖排） */
.list-summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:12.5px;color:var(--sub);
  background:#fbfcfe;border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 10px;margin:8px 0 6px;}
.list-summary b{color:var(--ink);}
.sum-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;padding:2px 9px;
  border-radius:999px;background:#fff;border:1px solid var(--line);line-height:1.7;}
.ok-text{color:#0a7a4d;} .warn-text{color:var(--warn,#c2660a);}
.list-scroll{max-height:460px;overflow-y:auto;overscroll-behavior:contain;padding-right:4px;}
.list-scroll::-webkit-scrollbar{width:6px;}
.list-scroll::-webkit-scrollbar-track{background:transparent;}
.list-scroll::-webkit-scrollbar-thumb{background:#d8dce4;border-radius:3px;}
.list-scroll::-webkit-scrollbar-thumb:hover{background:#c2c8d2;}
.fold-toggle{letter-spacing:.5px;}

/* ---------- 板块 B 单品表：容纳「保存 + 删除」两个行内操作（作用域仅限 #skuList，不影响其他表格） ---------- */
/* 左栏宽 430px、表格 5 列本就贴边，新增删除按钮后必须收紧内边距；徽标改为不换行并略缩，避免竖排单字。 */
#skuList table th,#skuList table td{padding:8px 3px;}
#skuList table td .badge,#skuList table td .miss{white-space:nowrap;font-size:11px;padding:1px 5px;}
#skuList table td:last-child{white-space:nowrap;}
#skuList table select{min-width:60px;}
#skuList table .sku-save,#skuList table .sku-del{font-size:11px;padding:4px 5px;margin-top:0;}

/* ---------- 平台子面板 ---------- */
.plate{background:#fbfcfe;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-top:12px;}
.plate h3{margin-top:0;}
.plate h3,.plate .plate-title{color:var(--ink);}
/* 全局定价法参数条（板块 A 顶部）：标题 + 单选组一行，口径说明独立成行 */
.gmethod-bar{background:var(--brand-soft);border:1px solid #f2d7d4;border-radius:var(--radius-sm);padding:11px 13px;margin-bottom:8px;}
.gmethod-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px 22px;}
.gmethod-head>b{font-size:12.5px;font-weight:700;color:var(--ink);white-space:nowrap;letter-spacing:.3px;}
.gmethod-opt{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:13px;font-weight:500;
  color:var(--ink-2);cursor:pointer;white-space:nowrap;line-height:1.6;}
.gmethod-opt:hover{color:var(--brand);}
.gmethod-opt input[type="radio"]{width:auto;flex:0 0 auto;margin:0;accent-color:var(--brand);cursor:pointer;}
.gmethod-desc{margin:8px 0 0;font-size:12px;color:var(--sub);line-height:1.65;}
.gmethod-warn{margin:5px 0 0;font-size:12px;color:var(--warn);line-height:1.6;}
/* 板块 B 锁定：全局定价法=自定义时，单品成本栏目灰度且不可编辑 */
.sku-edit-sec.locked{opacity:.42;filter:grayscale(1);pointer-events:none;user-select:none;}
/* 勾选「默认成本算法」时：板块B 的「手工决定成本」入口逐元素置灰锁定
   （逐元素而非整块，是为了让复选框与导入/导出按钮保持可操作，否则勾选后无法完成导入） */
.algo-lock{opacity:.42;filter:grayscale(1);pointer-events:none;user-select:none;}
.sku-detail{margin:8px 0 2px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);}
.bom{margin:6px 0;padding:9px 12px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:12.5px;line-height:1.75;}
.bom b{color:var(--brand);}
/* 自定义定价法：菜品行内成本价录入窗口（统一栅格对齐） */
.cust-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:6px;}
.cust-row .cust-cost{width:118px;padding:4px 8px;font-size:12.5px;}
.cust-yuan{color:var(--brand);font-weight:700;}
.cust-row button{margin-top:0;}
.clickable{cursor:pointer;color:var(--brand);text-decoration:underline dotted;text-underline-offset:3px;}
.rowbtn{display:flex;gap:6px;align-items:center;} .rowbtn>*{flex:1;} .rowbtn button{flex:0 0 auto;padding:5px 10px;font-size:12px;margin-top:0;}

/* ---------- BOM 弹窗行 ---------- */
.bom-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--line);font-size:12.5px;}
.bom-row:hover{background:#fafbfd;}
.bom-row label{display:flex;align-items:center;gap:7px;margin:0;flex:1;cursor:pointer;font-weight:500;}
.bom-row input[type="checkbox"]{width:auto;accent-color:var(--brand);}
.bom-row input[type="number"]{width:58px;padding:4px 6px;}
.bom-cost{color:var(--sub);font-size:11.5px;min-width:56px;text-align:right;}

/* ---------- 报表预览 ---------- */
iframe{width:100%;height:1150px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow);}
#reportWrap{min-height:300px;}
.report-empty{border:1.5px dashed var(--line-strong);border-radius:var(--radius);padding:70px 20px;text-align:center;color:#9aa6ba;background:#fbfcfe;}
.report-empty .big{font-size:38px;margin-bottom:12px;opacity:.85;}
.report-empty b{display:block;color:var(--ink-2);font-size:14px;margin-bottom:6px;}

/* ---------- 弹窗 ---------- */
.modal-mask{position:fixed;inset:0;background:rgba(15,23,42,.5);backdrop-filter:blur(3px);display:flex;
  align-items:center;justify-content:center;z-index:60;animation:fadeIn .15s;}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal{background:#fff;border-radius:14px;padding:24px 26px;width:480px;max-width:92vw;max-height:88vh;overflow:auto;
  box-shadow:var(--shadow-lg);animation:popIn .18s;}
@keyframes popIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.modal.wide{width:720px;}
.modal h3{margin:0 0 16px;font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px;}
.modal h3::before{content:'';width:4px;height:16px;border-radius:2px;background:var(--brand);}
.xbtn{background:transparent;color:var(--sub);border:0;font-size:20px;cursor:pointer;margin:0;padding:0 2px;
  float:right;line-height:1;box-shadow:none;}
.xbtn:hover{background:transparent;color:var(--ink);}
.login-msg{font-size:12px;color:var(--bad);margin-top:10px;min-height:16px;}
/* 登录卡/注册弹窗底部辅助链接（没有账号？立即注册 / 已有账号？直接登录） */
.land-form-alt{font-size:12.5px;color:var(--muted);margin-top:10px;text-align:center;}
.land-form-alt a{color:var(--brand);font-weight:600;text-decoration:none;cursor:pointer;}
.land-form-alt a:hover{text-decoration:underline;}
/* 注册弹窗：开启审核时的提示条 */
.reg-hint{font-size:12px;color:var(--brand-deep);background:var(--brand-soft);border:1px solid rgba(var(--primary-rgb),.25);
  border-radius:8px;padding:8px 10px;margin-top:10px;line-height:1.6;}
/* 用户管理：待审核徽章 */
.badge.pending{background:#fff4e0;color:#b66a00;border:1px solid #f0c98a;}
/* 系统设置弹窗：开关行 */
.set-row{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--line,#eee);}
.set-label{flex:1;}
.set-title{font-weight:600;font-size:14px;color:var(--text,#182230);}
.set-desc{font-size:12px;color:var(--muted);line-height:1.7;margin-top:4px;}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;}
/* iOS 风开关 */
.switch{position:relative;display:inline-block;width:46px;height:26px;flex:0 0 auto;}
.switch input{opacity:0;width:0;height:0;}
.switch .slider{position:absolute;cursor:pointer;inset:0;background:#cfd6e0;border-radius:999px;transition:.2s;}
.switch .slider:before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.switch input:checked + .slider{background:var(--brand);}
.switch input:checked + .slider:before{transform:translateX(20px);}

/* ---------- 门店删除「郑重提醒」弹窗 ---------- */
.modal h3.del-title::before{background:var(--bad);}
.del-warn{background:var(--bad-soft);border:1px solid #f2c7c2;border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:16px;}
.del-warn-head{font-size:13px;font-weight:700;color:#a3271f;line-height:1.6;}
.del-warn-list{list-style:none;margin:10px 0 0;padding:0;}
.del-warn-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;
  font-size:12.5px;color:#8a2b23;padding:5px 0;border-bottom:1px dashed #f0cdc9;}
.del-warn-list li:last-child{border-bottom:0;}
.del-warn-list li b{color:#a3271f;white-space:nowrap;}
.del-warn-foot{margin-top:10px;padding-top:9px;border-top:1px solid #f0cdc9;
  font-size:12px;line-height:1.75;color:#a3271f;}
.del-warn-foot b{font-weight:700;}
.del-name{color:var(--bad);}

/* ---------- 回收站（顶栏入口 + 删除快照列表） ---------- */
/* 顶栏入口：与「用户管理/操作日志/系统升级」同组，行内显示未清空条数角标 */
#trashBtn{position:relative;display:inline-flex;align-items:center;}
.nav-dot{position:absolute;top:-6px;right:-6px;box-sizing:border-box;min-width:16px;height:16px;padding:0 4px;
  display:flex;align-items:center;justify-content:center;border-radius:999px;background:var(--bad);color:#fff;
  font-size:10.5px;font-weight:700;letter-spacing:0;line-height:1;box-shadow:0 0 0 2px #fff;}
/* 列表：每份删除快照一张卡片（图标 + 信息 + 剩余保留期与操作） */
.tr-list{display:flex;flex-direction:column;gap:10px;margin-top:12px;}
.tr-item{display:flex;align-items:stretch;gap:14px;background:#fbfcfe;border:1px solid var(--line);
  border-radius:var(--radius);padding:12px 14px;}
.tr-ico{flex:0 0 38px;width:38px;height:38px;border-radius:10px;background:var(--bad-soft);color:var(--bad);
  display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1;}
.tr-body{flex:1;min-width:0;}
.tr-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;font-weight:700;color:var(--ink);}
.tr-kind{font-size:11px;font-weight:600;color:var(--brand);background:var(--brand-soft);
  border:1px solid rgba(var(--primary-rgb),.22);border-radius:999px;padding:1px 8px;white-space:nowrap;}
.tr-meta{font-size:11.5px;color:var(--sub);margin-top:4px;line-height:1.6;}
.tr-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.tr-chip{font-size:11px;color:var(--ink-2);background:#fff;border:1px solid var(--line);border-radius:999px;
  padding:2px 9px;white-space:nowrap;line-height:1.7;}
.tr-chip.sum{background:var(--bad-soft);border-color:#f2c7c2;color:#a3271f;font-weight:700;}
.tr-side{flex:0 0 126px;display:flex;flex-direction:column;gap:6px;
  border-left:1px dashed var(--line-strong);padding-left:14px;}
.tr-days{font-size:11.5px;color:var(--sub);text-align:center;line-height:1.5;}
.tr-days b{font-size:17px;font-weight:800;color:var(--ok);letter-spacing:-.3px;}
.tr-days.soon b{color:var(--bad);}
.tr-due{font-size:11px;color:var(--sub);text-align:center;line-height:1.5;margin-bottom:2px;}
.tr-side button{margin:0;width:100%;font-size:12px;padding:6px 8px;}
.tr-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:14px;padding-top:12px;border-top:1px solid var(--line);}
.tr-foot button{margin:0;}
.tr-empty{text-align:center;padding:32px 10px;}
.tr-empty .em-ico{font-size:30px;opacity:.4;line-height:1;}
.tr-empty .em-t{font-size:13px;font-weight:600;color:var(--ink-2);margin-top:8px;}
.tr-empty .em-d{font-size:12px;color:var(--sub);margin-top:4px;line-height:1.7;}
@media (max-width:640px){
  .tr-item{flex-direction:column;gap:10px;}
  .tr-side{flex:0 0 auto;border-left:0;padding-left:0;padding-top:10px;border-top:1px dashed var(--line-strong);}
}
hr.soft{border:none;border-top:1px solid var(--line);margin:16px 0;}

/* ---------- 操作日志筛选条 ---------- */
.log-filter{display:flex;flex-wrap:wrap;align-items:center;gap:9px 10px;padding:9px 10px;
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);}
.log-filter .lf-f{display:flex;align-items:center;gap:6px;margin:0;font-size:12px;font-weight:600;
  color:var(--ink-2);white-space:nowrap;flex:0 0 auto;}
.log-filter .lf-f>span{white-space:nowrap;}
.log-filter select,.log-filter input[type="date"]{width:auto;height:29px;padding:3px 7px;font-size:12.5px;}
.log-filter select{width:150px;}
.log-filter input[type="date"]{width:114px;}
.log-filter .lf-sep{color:var(--sub);font-size:12px;white-space:nowrap;}
.log-filter .lf-btns{display:flex;align-items:center;gap:7px;margin-left:auto;flex:0 0 auto;}
.log-filter button{margin:0;padding:5px 9px;font-size:11.5px;}

/* ---------- 进度条 ---------- */
.progress{height:14px;background:#eef1f5;border-radius:999px;overflow:hidden;margin-top:12px;}
.progress>div{height:100%;background:linear-gradient(90deg,var(--brand),var(--accent));transition:width .35s;width:0;border-radius:999px;}
.up-step{margin-top:10px;font-size:13px;color:var(--ink-2);}
.up-meta{font-size:12px;color:var(--sub);margin-top:6px;}

/* ---------- 登录首页（calay.cn 官网同款版式，2026-09-18 改版） ----------
   结构：顶部导航 + Hero（左文案 / 右登录卡）+ 核心功能 + 解决方案 + 数据与案例 + FAQ + 页脚。
   全部颜色走主题令牌（--primary / --hero-* / --blue-*），外观面板换色系整页跟随。 */
.login-mask{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;overflow-y:auto;
  background:
    radial-gradient(1200px 800px at 12% -10%,rgba(var(--primary-rgb),.12),transparent 55%),
    radial-gradient(1000px 700px at 92% 8%,rgba(var(--primary-rgb),.08),transparent 55%),
    linear-gradient(180deg,var(--blue-50) 0%,#fff 620px);
  color:var(--ink);}
.land-nav{border-bottom:1px solid rgba(var(--primary-rgb),.10);background:rgba(255,255,255,.86);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);}
.land-nav-inner{max-width:1200px;margin:0 auto;padding:0 28px;height:68px;
  display:flex;align-items:center;gap:28px;}
.land-logo{display:flex;align-items:center;gap:11px;}
.land-logo .logo-mark{width:34px;height:34px;font-size:15px;border-radius:9px;margin:0;}
.land-logo-name{font-size:19px;font-weight:800;letter-spacing:.5px;color:var(--ink);}
.land-links{display:flex;align-items:center;gap:30px;margin-left:auto;}
.land-links a{font-size:13.5px;color:var(--ink-2);text-decoration:none;transition:color .15s;}
.land-links a:hover{color:var(--brand);}
.land-actions{display:flex;align-items:center;gap:10px;}
.land-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;
  padding:8px 20px;font-size:13px;font-weight:600;border-radius:var(--radius-sm);cursor:pointer;
  transition:all .15s;border:1px solid transparent;}
.land-btn.solid{background:var(--brand);color:#fff;box-shadow:0 6px 16px rgba(var(--primary-rgb),.30);}
.land-btn.solid:hover{background:var(--brand-deep);transform:translateY(-1px);}
.land-btn.ghost{background:#fff;color:var(--ink);border-color:var(--line-strong);}
.land-btn.ghost:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft);}
.land-btn.lg{padding:12px 26px;font-size:15px;border-radius:var(--radius);}

.land-hero{max-width:1200px;width:100%;margin:0 auto;padding:64px 28px 72px;
  display:grid;grid-template-columns:1.08fr .92fr;gap:48px;align-items:center;flex:0 0 auto;}
.land-badge{display:inline-flex;align-items:center;gap:8px;width:fit-content;background:#fff;
  border:1px solid var(--line);padding:7px 15px;border-radius:999px;font-size:13px;font-weight:500;
  color:var(--brand-deep);box-shadow:var(--shadow);}
.land-badge .dot{width:8px;height:8px;border-radius:50%;background:var(--brand);
  box-shadow:0 0 10px rgba(var(--primary-rgb),.6);}
.land-hero h1{margin:20px 0 0;font-size:clamp(30px,3.8vw,50px);line-height:1.28;font-weight:800;
  letter-spacing:.5px;color:var(--ink);}
.land-sub{margin:18px 0 0;font-size:15.5px;line-height:1.9;color:var(--ink-2);max-width:560px;}
.land-cta{display:flex;gap:14px;margin-top:26px;flex-wrap:wrap;}
.land-trust{margin:16px 0 0;font-size:12.5px;color:var(--sub);}

/* —— Hero 右侧：登录卡（仿官网仪表盘实卡）—— */
.land-login{display:flex;justify-content:center;}
.land-card{width:100%;max-width:390px;background:#fff;border:1px solid var(--line);
  border-radius:16px;box-shadow:0 24px 48px rgba(15,42,92,.12);overflow:hidden;}
.land-card-top{display:flex;align-items:center;gap:6px;padding:12px 16px;background:var(--bg);
  border-bottom:1px solid var(--line);}
.land-card-top i{width:9px;height:9px;border-radius:50%;background:var(--line-strong);}
.land-card-top span{margin-left:8px;font-size:11.5px;color:var(--sub);letter-spacing:.4px;}
.land-metrics{display:flex;padding:16px 20px 0;gap:12px;}
.land-metric{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 13px;}
.land-metric span{display:block;font-size:11px;color:var(--sub);}
.land-metric b{font-size:19px;font-weight:800;color:var(--brand);font-family:ui-monospace,Consolas,monospace;}
.land-bars{display:flex;align-items:flex-end;gap:7px;height:64px;padding:14px 20px 0;}
.land-bars i{flex:1;border-radius:4px 4px 0 0;background:linear-gradient(180deg,var(--blue-400),var(--brand));opacity:.88;}
.land-card-form{padding:14px 22px 22px;}
.land-card-form .land-form-tip{margin:12px 0 2px;padding-top:12px;border-top:1px dashed var(--line);
  font-size:12px;font-weight:700;color:var(--ink-2);letter-spacing:.4px;}
.land-card-form label{margin-top:10px;}
.land-card-form button{width:100%;padding:11px;font-size:14px;margin-top:16px;}

/* —— 下方板块 —— */
.land-sections{background:#fff;border-top:1px solid var(--line);}
.land-sec{max-width:1200px;margin:0 auto;padding:64px 28px;}
.land-eyebrow{font-size:13px;font-weight:700;color:var(--brand);letter-spacing:1px;}
.land-sec h2{margin:10px 0 8px;font-size:clamp(22px,2.6vw,32px);font-weight:800;color:var(--ink);}
.land-sec .land-sec-sub{margin:0 0 34px;font-size:14px;color:var(--sub);line-height:1.8;max-width:640px;}
.land-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.land-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.land-feat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;
  box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s;}
.land-feat:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);}
.land-feat .ico{width:40px;height:40px;border-radius:10px;background:var(--brand-soft);color:var(--brand);
  display:flex;align-items:center;justify-content:center;font-size:19px;margin-bottom:12px;}
.land-feat h3{margin:0 0 6px;font-size:15px;font-weight:700;color:var(--ink);}
.land-feat p{margin:0;font-size:12.5px;line-height:1.8;color:var(--sub);}
.land-step-no{font-size:30px;font-weight:800;color:rgba(var(--primary-rgb),.30);line-height:1;margin-bottom:10px;}

.land-dark{background:linear-gradient(180deg,var(--hero-bg) 0%,var(--hero-bg-soft) 100%);color:var(--hero-text);}
.land-dark .land-eyebrow{color:var(--hero-text-mute);}
.land-dark h2{color:var(--hero-text);}
.land-dark .land-sec-sub{color:var(--hero-text-sub);}
.land-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.land-stat{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);
  border-radius:var(--radius);padding:22px 20px;text-align:center;}
.land-stat b{display:block;font-size:30px;font-weight:800;color:#fff;letter-spacing:.5px;}
.land-stat span{display:block;margin-top:6px;font-size:12.5px;color:var(--hero-text-sub);}
.land-case{margin-top:16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10);
  border-radius:var(--radius);padding:18px 22px;}
.land-case .pf{display:inline-block;font-size:11.5px;font-weight:700;color:var(--hero-text-mute);
  border:1px solid rgba(255,255,255,.20);border-radius:999px;padding:2px 10px;margin-bottom:8px;}
.land-case h3{margin:0 0 5px;font-size:15px;font-weight:700;color:#fff;}
.land-case p{margin:0;font-size:12.5px;line-height:1.8;color:var(--hero-text-sub);}

.land-faq{max-width:820px;}
.land-faq details{border:1px solid var(--line);border-radius:var(--radius-sm);margin-bottom:10px;background:#fff;}
.land-faq summary{cursor:pointer;padding:14px 18px;font-size:14px;font-weight:600;color:var(--ink);list-style:none;
  display:flex;align-items:center;justify-content:space-between;gap:12px;}
.land-faq summary::after{content:'＋';color:var(--brand);font-weight:700;}
.land-faq details[open] summary::after{content:'－';}
.land-faq details p{margin:0;padding:0 18px 14px;font-size:13px;line-height:1.9;color:var(--sub);}

.land-footer{background:var(--hero-bg-deep);color:var(--hero-text-sub);}
.land-footer-inner{max-width:1200px;margin:0 auto;padding:26px 28px;display:flex;align-items:center;
  gap:18px;flex-wrap:wrap;font-size:12.5px;}
.land-footer .land-logo-name{font-size:15px;color:#fff;}
.land-footer .spacer{flex:1;}

@media (max-width:1080px){
  .land-hero{grid-template-columns:1fr;gap:36px;padding-top:44px;}
  .land-grid,.land-grid-3,.land-stats{grid-template-columns:repeat(2,1fr);}
  .land-links{display:none;}
}
@media (max-width:640px){
  .land-grid,.land-grid-3,.land-stats{grid-template-columns:1fr;}
  .land-nav-inner{padding:0 18px;}
  .land-hero{padding:36px 18px 48px;}
  .land-sec{padding:48px 18px;}
}

/* ---------- 报表区「平台归属」细条（报表与平台绑定的显式凭证） ---------- */
.report-scope{display:none;align-items:center;gap:6px;margin-bottom:9px;padding:7px 11px;font-size:12.5px;
  color:var(--ink-2);background:linear-gradient(90deg,var(--brand-soft),#fff 78%);
  border:1px solid #f2dcd9;border-left:3px solid var(--brand);border-radius:var(--radius-sm);line-height:1.5;}
.report-scope b{color:var(--brand-deep);font-weight:800;}
.report-scope .muted{color:var(--sub);font-weight:400;}
.report-scope.bad{background:var(--bad-soft);border-color:#f3cfcb;border-left-color:var(--bad);color:var(--bad);}
.report-scope.bad b{color:var(--bad);}

/* ---------- 历史核算档案：平台筛选条 ---------- */
.ch-filter{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:8px 10px;margin:2px 0 10px;
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:12px;}
.ch-filter>span{font-weight:600;color:var(--ink-2);white-space:nowrap;flex:0 0 auto;}
.ch-filter>span:last-child{font-weight:400;color:var(--sub);}
.ch-filter select{width:auto;min-width:130px;height:29px;padding:3px 7px;font-size:12.5px;flex:0 0 auto;}

/* 弹窗标题内嵌的作用域标签 */
.scope-tag{display:inline-flex;align-items:center;padding:2px 9px;margin-left:6px;font-size:12px;font-weight:600;
  color:var(--brand-deep);background:var(--brand-soft);border:1px solid rgba(var(--primary-rgb),.22);border-radius:999px;vertical-align:middle;}

/* ---------- 归一重名「处理」弹窗（报表 → 被忽略的档案 → 点击处理） ---------- */
.nf-info{font-size:12.5px;line-height:1.75;color:var(--ink-2);background:var(--bg);
  border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:14px;}
.nf-info .nf-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;padding:3px 0;}
.nf-info .nf-row>span:first-child{flex:0 0 auto;color:var(--sub);}
.nf-info .nf-row>b{font-weight:700;}
.nf-info .nf-bad{color:var(--bad);font-weight:700;}
.nf-info .nf-ok{color:var(--ok,#1a7f37);font-weight:700;}
.login-msg.ok{color:#1a7f37;}

/* ---------- 系统升级：版本卡 / 升级日志标签 / 环境徽章 ---------- */
.ver-card{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;background:var(--info-soft);border:1px solid var(--line);border-radius:12px;padding:14px 18px;}
.ver-pair{display:flex;align-items:center;gap:34px;flex-wrap:wrap;}
.ver-item{display:flex;flex-direction:column;gap:3px;}
.ver-lab{font-size:11px;color:var(--sub);letter-spacing:.5px;}
.ver-num{font-size:21px;color:var(--brand);font-weight:800;}
.ver-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.badge.env-test{background:#fff4e5;color:#b45309;}
.badge.env-prod{background:var(--ok-soft);color:var(--ok);}
.badge.rollback-tag{background:var(--info-soft);color:var(--info);}
.ver-entry{border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:10px;}
.ver-entry.cur{border-color:var(--ok);background:var(--ok-soft);}
.ver-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.ver-num-sm{font-size:15px;color:var(--ink);}
.ver-date{margin-left:auto;font-size:11px;}
.chg-line{display:flex;align-items:center;gap:8px;padding:2px 0;font-size:12.5px;flex-wrap:wrap;}
.chg-tag{flex:0 0 auto;font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:999px;color:#fff;}
.chg-tag.t-new{background:var(--info);}
.chg-tag.t-fix{background:var(--bad);}
.chg-tag.t-opt{background:#d97706;}
.chg-tag.t-biz{background:#7c3aed;}
.chg-tag.t-fe{background:#0d9488;}
.chg-scope{font-size:11px;color:var(--sub);border:1px solid var(--line);border-radius:6px;padding:1px 6px;}
.pub-row{display:grid;grid-template-columns:86px 150px 1fr 30px;gap:8px;align-items:center;margin-bottom:6px;}
.pub-row select,.pub-row input{width:100%;}
.pub-btns{display:flex;gap:10px;margin-top:8px;}
.dev-cell{max-width:220px;font-size:12px;word-break:break-all;}

/* ===== P2 · A.3 数字大屏 / A.4 成本价审计 / A.5 许可管理（前端） ===== */
/* ---------- 弹窗宽度档位（新增 xwide；既有 .modal / .modal.wide 未动） ---------- */
.modal.xwide{width:1080px;}
@media (max-width:1180px){.modal.xwide{width:94vw;}}

/* ---------- 顶栏 P1 合规入口 ---------- */
#p1Btns{display:flex;gap:6px;align-items:center;}
#p1Btns button{margin:0;}
#p1Btns button.on{background:var(--brand-deep);}

/* ================= A.4 成本价审计 ================= */
.au-flow{display:inline-flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums;white-space:nowrap;}
.au-old{color:var(--sub);text-decoration:line-through;}
.au-arrow{color:var(--line-strong);}
.au-new{font-weight:700;}
.au-new.up{color:var(--bad);}      /* 成本上涨：红（涨红跌绿，与账务直觉一致） */
.au-new.down{color:var(--ok);}     /* 成本下降：绿 */
.au-src{display:inline-flex;align-items:center;font-size:11px;font-weight:600;border-radius:999px;padding:1px 8px;white-space:nowrap;}
.au-src.s-manual{background:var(--info-soft);color:var(--info);}
.au-src.s-import{background:var(--warn-soft);color:var(--warn);}
.au-src.s-cross-store{background:#f3e8ff;color:#7c3aed;}
.au-src.s-copy-library{background:var(--ok-soft);color:var(--ok);}
.au-src.s-unknown{background:var(--bg);color:var(--sub);border:1px solid var(--line);}
.au-rowkey{font-family:ui-monospace,Consolas,monospace;font-size:11px;color:var(--sub);}
.au-trail{display:flex;flex-direction:column;gap:0;margin-top:8px;}
.au-trail-row{display:grid;grid-template-columns:150px 1fr 110px;gap:10px;align-items:baseline;
  padding:7px 4px;border-bottom:1px dashed var(--line);font-size:12.5px;}
.au-trail-row:last-child{border-bottom:0;}
.au-trail-at{color:var(--sub);font-variant-numeric:tabular-nums;}
.au-trail-op{color:var(--sub);font-size:11.5px;text-align:right;}

/* ================= A.3 数字大屏 ================= */
.bs-layout{display:grid;grid-template-columns:236px 1fr;gap:18px;align-items:start;}
@media (max-width:900px){.bs-layout{grid-template-columns:1fr;}}
.bs-side{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;}
.bs-side-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;}
.bs-side-head b{font-size:12.5px;}
.bs-list{display:flex;flex-direction:column;gap:7px;max-height:320px;overflow:auto;}
.bs-item{border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:#fff;cursor:pointer;transition:.14s;}
.bs-item:hover{border-color:var(--brand);}
.bs-item.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 2px rgba(var(--primary-rgb),.12);}
.bs-item.lock{opacity:.72;cursor:default;}
.bs-item-n{font-size:12.5px;font-weight:700;display:flex;align-items:center;gap:6px;}
.bs-item-m{font-size:11px;color:var(--sub);margin-top:3px;line-height:1.6;}
.bs-hint{font-size:11.5px;margin:10px 0 0;}
.bs-empty-list{font-size:12px;color:var(--sub);padding:14px 6px;text-align:center;line-height:1.7;}

.bs-main{min-width:0;}
.bs-field{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:11px;}
.bs-field>label{margin:0;white-space:nowrap;}
.bs-field input[type="text"],.bs-field input:not([type]){flex:1;min-width:170px;}
.bs-tpl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px;}
@media (max-width:820px){.bs-tpl-grid{grid-template-columns:1fr;}}
.bs-tpl{border:1px solid var(--line);border-radius:10px;padding:9px 11px;cursor:pointer;background:#fff;transition:.14s;}
.bs-tpl:hover{border-color:var(--brand);}
.bs-tpl.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 2px rgba(var(--primary-rgb),.12);}
.bs-tpl-n{font-size:12.5px;font-weight:700;}
.bs-tpl-d{font-size:11px;color:var(--sub);margin-top:2px;line-height:1.55;}
.bs-tpl-s{font-size:10.5px;color:var(--brand-deep);margin-top:5px;}

/* 固定槽位画布（低保真线框，只读几何） */
.bs-canvas{border:1px solid var(--line);border-radius:10px;padding:11px;background:
  repeating-linear-gradient(45deg,#fbfcfe,#fbfcfe 10px,#f7f9fc 10px,#f7f9fc 20px);}
.bs-canvas-head{font-size:11.5px;color:var(--sub);margin-bottom:9px;display:flex;align-items:center;gap:8px;}
.bs-canvas-head b{color:var(--ink);font-size:12px;}
.bs-canvas-row{display:grid;gap:9px;margin-bottom:9px;}
.bs-canvas-row:last-child{margin-bottom:0;}
.bs-canvas-row.r1{grid-template-columns:1fr;}
.bs-canvas-row.r2{grid-template-columns:1fr 1fr;}
.bs-canvas-row.r3{grid-template-columns:repeat(3,minmax(0,1fr));}
.bs-canvas-slot{border:1px dashed var(--line-strong);border-radius:9px;background:#fff;padding:9px 10px;}
.bs-canvas-slot.bad{border-color:var(--bad);background:var(--bad-soft);}
.bs-cs-top{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.bs-cs-top b{font-size:12px;}
.bs-cs-geo{font-size:10px;color:var(--sub);border:1px solid var(--line);border-radius:5px;padding:0 5px;margin-left:auto;background:var(--bg);}
.bs-cs-sel{width:100%;font-size:12px;}
.bs-cs-opt{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:11.5px;color:var(--sub);}
.bs-cs-opt input{width:64px;height:26px;padding:2px 6px;font-size:12px;}
.bs-cs-desc{font-size:11px;color:var(--sub);margin-top:5px;line-height:1.55;}

/* 门店范围 chips */
.bs-scope{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;}
.bs-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;
  padding:3px 11px;font-size:12px;cursor:pointer;background:#fff;transition:.14s;user-select:none;}
.bs-chip:hover{border-color:var(--brand);}
.bs-chip.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-deep);font-weight:600;}

/* 投屏凭据 */
.bs-token-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:10px;}
.bs-token-top>label{margin:0;}
.bs-newtoken{border:1px solid var(--ok);background:var(--ok-soft);border-radius:10px;padding:11px 13px;margin-bottom:11px;}
.bs-newtoken-t{font-size:12.5px;font-weight:700;color:#0b7a4b;display:flex;align-items:center;gap:7px;}
.bs-newtoken-u{margin-top:8px;display:flex;gap:8px;align-items:center;}
.bs-newtoken-u input{flex:1;font-family:ui-monospace,Consolas,monospace;font-size:11.5px;padding:7px 9px;background:#fff;}
.bs-token{border:1px solid var(--line);border-radius:9px;padding:9px 11px;margin-bottom:8px;background:#fff;}
.bs-token.dead{opacity:.62;background:var(--bg);}
.bs-token-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;}
.bs-token-h b{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;}
.bs-token-m{font-size:11.5px;color:var(--sub);margin-top:4px;line-height:1.7;display:flex;flex-wrap:wrap;gap:12px;}
.bs-token-a{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap;}
.bs-token-a button{margin:0;padding:4px 10px;font-size:11.5px;}
.bs-state{display:inline-flex;align-items:center;font-size:11px;font-weight:700;border-radius:999px;padding:1px 9px;white-space:nowrap;}
.bs-state.s-live{background:var(--ok-soft);color:var(--ok);}
.bs-state.s-dead{background:var(--bad-soft);color:var(--bad);}
.bs-state.s-rot{background:var(--warn-soft);color:var(--warn);}
.bs-state.s-ro{background:var(--bg);color:var(--sub);border:1px solid var(--line);}
.bs-lockbar{border-left:3px solid var(--warn);background:var(--warn-soft);color:#8a5a12;
  border-radius:var(--radius-sm);padding:9px 12px;font-size:12.5px;line-height:1.7;margin-bottom:11px;}

/* ================= A.5 许可管理 ================= */
.lic-key{font-family:ui-monospace,Consolas,monospace;font-size:12px;font-weight:700;}
.lic-state{display:inline-flex;align-items:center;font-size:11px;font-weight:700;border-radius:999px;padding:1px 9px;white-space:nowrap;}
.lic-state.s-active{background:var(--ok-soft);color:var(--ok);}
.lic-state.s-expired{background:var(--warn-soft);color:var(--warn);}
.lic-state.s-revoked{background:var(--bad-soft);color:var(--bad);}
.lic-src{font-size:11px;color:var(--sub);border:1px solid var(--line);border-radius:6px;padding:1px 6px;}
.lic-ev-t{display:inline-flex;align-items:center;font-size:11px;font-weight:700;border-radius:999px;padding:1px 8px;}
.lic-ev-t.t-issue{background:var(--info-soft);color:var(--info);}
.lic-ev-t.t-renew{background:var(--ok-soft);color:var(--ok);}
.lic-ev-t.t-reissue{background:#f3e8ff;color:#7c3aed;}
.lic-ev-t.t-revoke{background:var(--bad-soft);color:var(--bad);}
.lic-arrow{color:var(--line-strong);font-family:ui-monospace,Consolas,monospace;font-size:11.5px;}
.lic-flow{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--sub);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 12px;margin:10px 0;line-height:1.8;}
.lic-flow code{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;color:var(--ink-2);}

/* ============ 微信分享弹窗（2026-09-18） ============ */
.share-qr{display:flex;justify-content:center;padding:12px 0;background:#fafbfd;border:1px solid var(--line,#e5eaf1);border-radius:10px;margin:12px 0}
.share-qr svg{width:190px;height:190px;display:block}
.share-code{font-size:14px;margin:8px 0;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.share-code b{font-size:21px;letter-spacing:5px;color:var(--brand,#bf3a30);font-family:ui-monospace,Consolas,monospace}
.share-url{font-size:12.5px;word-break:break-all;margin:4px 0 2px}
