
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;700&display=swap');

/* ───────── 设计令牌（同源 PocketLift Design System） ───────── */
:root{
  --color-primary:#2861AE; --color-primary-dark:#0D3779; --color-primary-mid:#457DC9; --color-primary-light:#89ABD8;
  --color-tint-1:#F0F7FF; --color-tint-2:#DDEEFF; --color-tint-3:#C6E1FF; --color-tint-4:#EEF0F6;
  --color-gold:#B99062; --color-gold-dark:#B58953; --color-green:#00B42A; --color-green-dark:#075C3E;
  --color-green-soft:#E5F5EE; --color-green-border:#CDE9DC;
  --color-warning-dark:#70430D; --color-warning-soft:#FBF3E8; --color-warning-border:rgba(112,67,13,.24);
  --color-red-bright:#FF8888;
  --color-fg1:#323233; --color-fg2:#4E4E4E; --color-fg3:#5A606D; --color-fg4:#9096A5; --color-fg5:#B9BECC;
  --color-bg-white:#FFFFFF; --color-bg-offwhite:#F5F7FB; --color-bg-light:#EEF0F6; --color-border:rgba(227,227,229,1);
  --font-chinese:'PingFang SC','Noto Sans SC','Microsoft YaHei',sans-serif;
  --font-cn:'PingFang SC','Noto Sans SC','Microsoft YaHei',sans-serif;
  --font-num:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
  --radius-card:18px; --radius-tile:12px; --radius-pill:100px;
  --shadow-card:0 4px 18px rgba(92,138,184,.13); --shadow-soft:0 1px 3px rgba(92,138,184,.10);
  --shadow-pop:0 12px 40px rgba(13,55,121,.16);
  --appbar-h:0px; --calc-dock-h:0px;
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:var(--font-cn);
  color:var(--color-fg1);
  background:
    radial-gradient(ellipse 1200px 600px at 50% -10%, rgba(59,142,255,.10) 0%, transparent 60%),
    var(--color-bg-offwhite);
  -webkit-font-smoothing:antialiased;
  line-height:1.5;
  padding-bottom:80px;
}
.num{font-family:var(--font-num);font-feature-settings:"tnum"}

/* ───────── 顶部条 ───────── */
header.appbar{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.82);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid rgba(227,227,229,.7);
}
.appbar-inner{
  max-width:1180px;margin:0 auto;padding:13px 24px;
  display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;
}
.brand-group{display:flex;align-items:center;gap:12px;flex:0 1 auto;min-width:0}
.ab-back{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--color-primary);text-decoration:none;background:var(--color-tint-1);border:1px solid var(--color-tint-3);border-radius:100px;padding:6px 13px;white-space:nowrap;flex:none;transition:background .15s}
.ab-back:hover{background:var(--color-tint-2)}
.brand{display:flex;align-items:center;gap:11px;flex:none}
.brand img{width:34px;height:34px;object-fit:contain;flex:none}
.brand .b-cn{font-size:17px;font-weight:700;color:var(--color-primary-dark);letter-spacing:.5px;white-space:nowrap}
.brand .b-sub{font-size:10.5px;color:var(--color-fg4);letter-spacing:.26em;font-family:var(--font-num);font-weight:500;margin-top:2px}
.appbar h1{
  font-size:15px;font-weight:600;color:var(--color-fg1);white-space:nowrap;flex:none;
  padding-left:14px;margin-left:2px;border-left:1px solid var(--color-tint-3);
}
.build-badge{font-family:var(--font-num);font-size:10.5px;font-weight:600;color:var(--color-primary);background:var(--color-tint-1);border:1px solid var(--color-tint-3);border-radius:5px;padding:1px 7px;margin-left:8px;letter-spacing:.04em;vertical-align:middle}
/* 右侧操作区：整体右对齐，空间不足时整组换行，按钮再行内换行 */
.appbar-actions{
  display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  margin-left:auto;justify-content:flex-end;
}
.appbar .spacer{display:none}
/* 视口不够宽时给右上角登录胶囊让位，避免盖住操作按钮 */
@media (max-width:1560px){ .appbar-inner{padding-right:200px} }
.tag-internal{
  font-size:11px;font-weight:600;color:var(--color-primary);
  background:var(--color-tint-1);border:1px solid var(--color-tint-3);
  padding:4px 10px;border-radius:var(--radius-pill);
}
/* 隐私模式开关（眼睛 icon） */
.privacy-toggle{
  display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  font-size:12px;font-weight:600;color:var(--color-primary);
  background:var(--color-tint-1);border:1px solid var(--color-tint-3);
  padding:5px 13px 5px 11px;border-radius:var(--radius-pill);
  transition:all .15s;font-family:var(--font-cn);white-space:nowrap;
}
.privacy-toggle:hover{background:var(--color-tint-2)}
.privacy-toggle svg{width:17px;height:17px;flex:none;display:block}
.privacy-toggle .eye-closed{display:none}
.privacy-toggle .lbl-off{display:none}
body.privacy-on .privacy-toggle{color:#fff;background:linear-gradient(135deg,#2c2c2e,#1c1c1e);border-color:transparent}
body.privacy-on .privacy-toggle .eye-open{display:none}
body.privacy-on .privacy-toggle .eye-closed{display:inline-flex}
body.privacy-on .privacy-toggle .lbl-on{display:none}
/* 隐藏模式：仅保留眼睛 icon，不出现任何中文标签（避免向客户透露） */
body.privacy-on .privacy-toggle{padding:6px 11px}

/* 隐私模式：隐藏所有工时 / 公式相关内容 */
body.privacy-on .j-hours{display:none!important}
body.privacy-on .hours-col{display:none!important}

/* ───────── 主按钮 ───────── */
.btn{
  font-family:var(--font-cn);font-size:14px;font-weight:600;
  border:none;cursor:pointer;border-radius:var(--radius-pill);
  padding:10px 18px;display:inline-flex;align-items:center;gap:7px;
  transition:transform .12s ease, box-shadow .12s ease, background .15s ease;
  white-space:nowrap;
}
.btn:active{transform:translateY(1px)}
.btn-primary{
  color:#fff;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);
  box-shadow:0 4px 14px rgba(40,97,174,.32);
}
.btn-primary:hover{box-shadow:0 6px 20px rgba(40,97,174,.42)}
.btn-ghost{color:var(--color-primary);background:var(--color-bg-white);border:1px solid var(--color-tint-3);box-shadow:var(--shadow-soft)}
.btn-ghost:hover{background:var(--color-tint-1)}
.btn-dark{color:#fff;background:linear-gradient(135deg,#2c2c2e,#1c1c1e);box-shadow:0 4px 14px rgba(0,0,0,.22)}
.btn-sm{font-size:12.5px;padding:7px 13px}
/* 顶栏操作按钮更紧凑 */
.appbar-actions .btn{padding:8px 14px;font-size:13px}
.appbar-actions .btn svg{flex:none}

/* ───────── 布局 ───────── */
.layout{max-width:1180px;margin:0 auto;padding:24px;display:grid;grid-template-columns:1fr 360px;gap:24px;align-items:start}
@media(max-width:1080px){.layout{grid-template-columns:1fr}}
.col-main{min-width:0;display:flex;flex-direction:column;gap:18px}
.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
.section-head .t{font-size:18px;font-weight:700;color:var(--color-fg1)}
.section-head .hint{font-size:12.5px;color:var(--color-fg4)}

/* ───────── 型号卡片 ───────── */
.model{
  background:var(--color-bg-white);border-radius:var(--radius-card);
  box-shadow:var(--shadow-card);overflow:hidden;
  border:1px solid rgba(227,227,229,.55);
}
.model-bar{display:flex;align-items:center;gap:12px;padding:16px 18px;cursor:default}
.model-badge{
  width:30px;height:30px;border-radius:9px;flex:none;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-num);font-weight:700;font-size:15px;color:#fff;
  background:linear-gradient(135deg,var(--color-primary-mid),var(--color-primary));
}
.model-titles{flex:1;min-width:0;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.fld{display:flex;flex-direction:column;gap:0}
.inp{
  font-family:var(--font-cn);font-size:14px;color:var(--color-fg1);
  border:1px solid var(--color-border);background:var(--color-bg-white);
  border-radius:9px;padding:7px 11px;outline:none;transition:border .15s, box-shadow .15s;
}
.inp:focus{border-color:var(--color-primary-mid);box-shadow:0 0 0 3px rgba(69,125,201,.14)}
.inp::placeholder{color:var(--color-fg4)}
.inp.brand-inp{width:150px;font-weight:600}
.inp.name-inp{width:170px}
.req{color:var(--color-red-bright);font-weight:700;margin-left:1px}
.model-price{display:flex;flex-direction:column;align-items:flex-end;gap:1px;margin-left:auto;text-align:right}
.model-price .p{font-family:var(--font-num);font-weight:700;font-size:17px;color:var(--color-primary-dark)}
.model-price .h{font-size:11.5px;color:var(--color-fg4)}
.icon-btn{
  width:30px;height:30px;border-radius:8px;border:none;cursor:pointer;flex:none;
  background:var(--color-tint-1);color:var(--color-fg3);
  display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;
}
.icon-btn:hover{background:var(--color-tint-2)}
.icon-btn.danger:hover{background:#FFE9E9;color:#d44}
.icon-btn svg{width:16px;height:16px}

.model-body{padding:0 18px 18px;border-top:1px solid #F0F2F6}
.model.collapsed .model-body{display:none}

/* 类型选择 segmented */
.type-row{display:flex;align-items:center;gap:14px;padding:16px 0 6px}
.type-row .lbl{font-size:13px;color:var(--color-fg3);font-weight:500}
.seg{display:inline-flex;background:var(--color-tint-4);border-radius:11px;padding:3px;gap:2px}
.seg button{
  font-family:var(--font-cn);font-size:13.5px;font-weight:600;color:var(--color-fg3);
  border:none;background:transparent;cursor:pointer;padding:7px 18px;border-radius:8px;transition:all .15s;
}
.seg button.on{background:var(--color-bg-white);color:var(--color-primary);box-shadow:var(--shadow-soft)}

.type-empty{padding:22px 4px;color:var(--color-fg4);font-size:13.5px}

/* 配置：父项单元 + 子项 */
.cfg-units{margin-top:16px;display:flex;flex-direction:column;gap:16px}
.unit{position:relative}
.cfg-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
@media(max-width:680px){.cfg-grid{grid-template-columns:1fr}}

/* 子项容器：缩进 + 左侧连接线，体现从属 */
.unit-children{margin:9px 0 2px;padding:2px 0 2px 18px;position:relative;display:flex;flex-direction:column;gap:8px}
.unit-children::before{content:"";position:absolute;left:7px;top:2px;bottom:8px;width:2px;border-radius:2px;background:var(--color-tint-3)}
.unit-children.hidden{display:none}
/* 可命名子项：整行展示，命名框紧贴其下 */
.named-child{display:flex;flex-direction:column}
.named-child .namer-area{margin:6px 0 0}
/* 井道下「面板颜色」= 外呼LOP 的下级子项：缩进体现从属 */
.named-child:has(.cfg-item[data-id="LOP_clr"]){margin-left:16px}
.named-child:has(.cfg-item[data-id="LOP_clr"])::before{content:"└ 面板颜色 · 外呼LOP 的下级选项";display:block;font-size:10px;color:var(--color-fg5);margin:0 0 3px}

/* 基础价已含 —— “i” 悬浮提示 */
.scope-info{position:relative;display:inline-flex;align-items:center;color:var(--color-primary-light);cursor:help;outline:none}
.scope-info:hover,.scope-info:focus{color:var(--color-primary)}
.scope-info svg{display:block}
.scope-pop{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-30px) translateY(-4px);width:248px;background:#fff;border:1px solid var(--color-tint-3);border-radius:10px;box-shadow:var(--shadow-pop);padding:11px 13px;z-index:30;opacity:0;visibility:hidden;transition:opacity .15s,transform .15s;pointer-events:none;font-weight:400;text-align:left}
.scope-info:hover .scope-pop,.scope-info:focus .scope-pop{opacity:1;visibility:visible;transform:translateX(-30px) translateY(0)}
.scope-pop::before{content:"";position:absolute;bottom:100%;left:30px;border:6px solid transparent;border-bottom-color:#fff}
.scope-pop b{display:block;font-size:11px;font-weight:700;color:var(--color-primary-dark);margin-bottom:7px}
.scope-pop .sp-list{display:flex;flex-wrap:wrap;gap:5px}
.scope-pop .sp-chip{font-size:11px;font-weight:600;color:var(--color-primary);background:var(--color-tint-1);border:1px solid var(--color-tint-3);border-radius:5px;padding:1px 7px}
.scope-pop i{display:block;margin-top:8px;font-style:normal;font-size:10.5px;color:var(--color-fg4)}

/* 轿厢尺寸录入模块（可折叠选填） */
.size-mod{margin:8px 0 2px;background:var(--color-bg-offwhite);border:1px solid #E7ECF3;border-radius:var(--radius-tile);overflow:hidden}
.size-mod.hidden{display:none}
.size-mod .sm-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;width:100%;padding:10px 14px;background:transparent;border:none;cursor:pointer;font-family:var(--font-cn);text-align:left}
.size-mod .sm-bar:hover{background:var(--color-tint-1)}
.size-mod .sm-title{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--color-fg1)}
.size-mod .sm-title svg{color:var(--color-primary)}
.size-mod .sm-opt{font-size:10.5px;font-weight:600;color:var(--color-fg4);background:var(--color-bg-light);border-radius:5px;padding:1px 7px;margin-left:2px}
.size-mod .sm-hint{font-size:11px;color:var(--color-fg4)}
.size-mod .sm-status{font-size:11.5px;font-weight:600;color:var(--color-fg4);background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:3px 10px}
.size-mod .sm-status.on{color:var(--color-primary);border-color:var(--color-tint-3);background:var(--color-tint-1)}
.size-mod .sm-caret{margin-left:auto;color:var(--color-fg4);transition:transform .2s}
.size-mod.open .sm-caret{transform:rotate(180deg)}
.size-mod .sm-body{padding:2px 14px 12px}
.size-mod .sm-rows{display:flex;flex-direction:column;gap:6px}
.size-row{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--color-border);border-radius:9px;padding:6px 8px 6px 10px}
.size-row.extra{border-color:var(--color-tint-3);background:var(--color-tint-1)}
.size-row .sz-idx{width:18px;flex:none;font-family:var(--font-num);font-weight:700;font-size:12px;color:var(--color-fg4);text-align:center}
.size-row .sz-tag{flex:none;font-size:10px;font-weight:600;color:var(--color-fg4);background:var(--color-bg-light);border-radius:5px;padding:1px 7px}
.size-row.extra .sz-tag{color:var(--color-primary);background:#fff;border:1px solid var(--color-tint-3)}
.size-row .sz-fields{flex:1;display:flex;align-items:center;gap:4px;min-width:0}
.size-row .sz-fields em{color:var(--color-fg5);font-style:normal;font-size:12px}
.size-row .sz-in{width:58px;flex:1;min-width:0;border:1px solid var(--color-border);border-radius:7px;padding:5px 7px;font-family:var(--font-num);font-size:13px;text-align:center}
.size-row .sz-in:focus{border-color:var(--color-primary-mid);box-shadow:0 0 0 3px rgba(69,125,201,.14)}
.size-row .sz-unit{flex:none;font-size:11px;color:var(--color-fg4);margin-left:2px}
.size-row .sz-del{flex:none;width:24px;height:24px;border:none;background:var(--color-tint-1);color:var(--color-fg4);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}
.size-row .sz-del:hover{background:#FFE9E9;color:#d44}
.size-mod .sm-empty{font-size:12px;color:var(--color-fg4);padding:8px;text-align:center}
.size-mod .sm-add{margin-top:8px;display:inline-flex;align-items:center;gap:6px;font-family:var(--font-cn);font-size:12.5px;font-weight:600;color:var(--color-primary);background:#fff;border:1px dashed var(--color-tint-3);border-radius:9px;padding:7px 14px;cursor:pointer;transition:all .15s}
.size-mod .sm-add:hover{background:var(--color-tint-1);border-color:var(--color-primary-light)}

.cfg-item{
  display:flex;align-items:center;gap:10px;padding:8px 12px;
  background:var(--color-bg-offwhite);border-radius:var(--radius-tile);
  border:1px solid transparent;transition:border .15s,background .15s;
}
.cfg-item.active{background:var(--color-tint-1);border-color:var(--color-tint-3)}
/* 父项：白底悬浮、更醒目 */
.cfg-item.parent{background:#fff;border-color:#E7ECF3;box-shadow:var(--shadow-soft);padding:11px 14px}
.cfg-item.parent.main{border-left:3px solid var(--color-primary)}
.cfg-item.parent.active{background:#fff;border-color:#E7ECF3}
.cfg-item.parent.main.active{border-left-color:var(--color-primary)}
.cfg-item.reused{opacity:.62}
.cfg-item.reused .stepper input{color:var(--color-fg4)}
.be-flag{font-size:10.5px;font-weight:600;color:var(--color-fg4);background:var(--color-bg-light);border:1px solid var(--color-border);border-radius:6px;padding:1px 8px;white-space:nowrap}
.ci-name{flex:1;min-width:0;font-size:13.5px;color:var(--color-fg2);font-weight:500;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cfg-item.parent .ci-name{font-size:14.5px;color:var(--color-fg1);font-weight:600}
.ci-name .price-hint{font-size:11px;color:var(--color-fg5);font-weight:400;font-family:var(--font-num)}
.ci-tag{font-size:10px;font-weight:600;color:var(--color-primary);background:var(--color-tint-2);padding:1px 7px;border-radius:5px}
.ci-tag.soft{color:var(--color-fg3);background:var(--color-bg-light)}

/* 风格命名区（轿厢本体 + 背板/材质子项）：无标题栏，直接显示输入格 */
.namer-area{margin:8px 0 2px;padding:11px 13px;background:var(--color-tint-1);border:1px solid var(--color-tint-3);border-radius:var(--radius-tile)}
.namer-area.hidden{display:none}
.namer-area .sn-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}
@media(max-width:680px){.namer-area .sn-grid{grid-template-columns:1fr}}
.namer-area .sn-cell{display:flex;align-items:center;gap:8px;background:#fff;border-radius:9px;border:1px solid var(--color-border);padding:0 4px 0 0}
.namer-area .sn-idx{width:24px;height:30px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--font-num);font-weight:700;font-size:12px;color:var(--color-primary);background:var(--color-tint-1);border-radius:8px 0 0 8px}
.namer-area .sn-inp{flex:1.1;min-width:0;border:none;box-shadow:none;padding:6px 8px;font-size:13px;background:transparent}
.namer-area .sn-inp:focus{box-shadow:none}
/* 名称右侧平行「备注」栏 */
.namer-area .sn-note{flex:1;min-width:0;border:none;border-left:1px dashed var(--color-border);box-shadow:none;padding:6px 9px;font-size:12.5px;background:transparent;color:var(--color-fg2)}
.namer-area .sn-note:focus{box-shadow:none}
.namer-area .sn-note::placeholder{color:var(--color-fg5);font-weight:400}
.namer-area .sn-tag{flex:none;font-size:9.5px;font-weight:700;border-radius:4px;padding:1px 5px;letter-spacing:.02em}
.namer-area .sn-tag.std{color:var(--color-fg4);background:var(--color-bg-light)}
.namer-area .sn-tag.ex{color:var(--color-gold-dark);background:#FBF3E8}
.namer-area .sn-cell.is-std{background:var(--color-bg-offwhite)}
/* 共用：勾选 + 下拉选择共用配件 */
.namer-area .sn-cell.shared{box-shadow:inset 0 0 0 1px var(--color-tint-3)}
.photo-slot{display:flex;align-items:center;gap:5px;flex:none;min-width:0}
.photo-file{display:none}
.photo-btn,.photo-thumb,.photo-unlink{
  border:1px solid var(--color-tint-3);background:#fff;color:var(--color-primary);
  border-radius:7px;min-width:34px;height:34px;padding:0 7px;display:inline-flex;
  align-items:center;justify-content:center;gap:4px;cursor:pointer;font-family:var(--font-cn);
  font-size:11px;font-weight:700;line-height:1;transition:all .15s;flex:none
}
.photo-btn:hover,.photo-thumb:hover{background:var(--color-tint-1);border-color:var(--color-primary-light)}
.photo-btn:disabled{cursor:not-allowed;opacity:.5;background:var(--color-bg-light)}
.photo-thumb{padding:1px;width:34px;overflow:hidden}
.photo-thumb img{display:block;width:30px;height:30px;border-radius:5px;object-fit:cover;background:var(--color-bg-light)}
.photo-unlink{min-width:28px;width:28px;padding:0;color:var(--color-fg4);border-color:var(--color-border)}
.photo-unlink:hover{color:#c0392b;background:#FCEEEC;border-color:#f0c9c5}
.photo-status{max-width:92px;font-size:10.5px;line-height:1.25;color:var(--color-fg4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.photo-status.ok{color:var(--color-green);font-weight:600}
.photo-status.pending{color:var(--color-gold-dark);font-weight:600}
.photo-status.error{color:#c0392b;font-weight:600}
.photo-slot.is-busy .photo-btn{animation:photoPulse 1.1s ease-in-out infinite}
@keyframes photoPulse{50%{opacity:.55}}
#photoViewer{position:fixed;inset:0;z-index:2147482500;background:rgba(8,17,32,.84);display:none;align-items:center;justify-content:center;padding:28px}
#photoViewer.open{display:flex}
#photoViewer img{display:block;max-width:min(94vw,1200px);max-height:88vh;object-fit:contain;border-radius:12px;background:#fff;box-shadow:0 20px 70px rgba(0,0,0,.45)}
#photoViewer .pv-close{position:absolute;right:20px;top:20px;width:44px;height:44px;border:0;border-radius:50%;background:rgba(255,255,255,.94);color:var(--color-fg1);font-size:24px;cursor:pointer}
.sn-share{flex:none;display:inline-flex;align-items:center;gap:4px;cursor:pointer;user-select:none;font-size:10.5px;font-weight:600;color:var(--color-fg4);white-space:nowrap;padding-right:4px}
.sn-share input{display:none}
.sn-share .box{width:14px;height:14px;border-radius:4px;border:1.5px solid var(--color-fg5);display:flex;align-items:center;justify-content:center;transition:all .15s;flex:none}
.sn-share .box svg{width:9px;height:9px;opacity:0;color:#fff}
.sn-share input:checked + .box{background:var(--color-primary);border-color:var(--color-primary)}
.sn-share input:checked + .box svg{opacity:1}
.sn-share.on{color:var(--color-primary)}
.namer-area .sn-pick{flex:1.1;min-width:0;border:none;box-shadow:none;padding:6px 8px;font-size:13px;background:transparent;color:var(--color-primary);font-weight:600;cursor:pointer}
.namer-area .sn-pick:focus{box-shadow:none}
.namer-area .sn-pick-mini{flex:none;width:34px;min-width:34px;text-align:center;padding:6px 2px;color:var(--color-fg4);font-weight:700}
.namer-area .sn-cell.shared .sn-pick-mini{color:var(--color-primary)}

/* 数量步进器 */
.stepper{display:inline-flex;align-items:center;background:#fff;border:1px solid var(--color-border);border-radius:9px;overflow:hidden;flex:none}
.stepper button{
  width:28px;height:30px;border:none;background:#fff;cursor:pointer;color:var(--color-primary);
  font-size:17px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .12s;
}
.stepper button:hover{background:var(--color-tint-1)}
.stepper button:disabled{color:var(--color-fg5);cursor:not-allowed}
.stepper input{
  width:42px;height:30px;border:none;border-left:1px solid #EEF1F5;border-right:1px solid #EEF1F5;
  text-align:center;font-family:var(--font-num);font-weight:600;font-size:14px;color:var(--color-fg1);outline:none;
  -moz-appearance:textfield;
}
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* 复用 勾选 */
.reuse{display:inline-flex;align-items:center;gap:6px;cursor:pointer;user-select:none;font-size:11.5px;color:var(--color-fg3);font-weight:500}
.reuse input{display:none}
.reuse .box{width:16px;height:16px;border-radius:5px;border:1.5px solid var(--color-fg5);display:flex;align-items:center;justify-content:center;transition:all .15s;flex:none}
.reuse input:checked + .box{background:var(--color-primary);border-color:var(--color-primary)}
.reuse input:checked + .box svg{opacity:1}
.reuse .box svg{width:10px;height:10px;opacity:0;color:#fff}
.reuse.on{color:var(--color-green);font-weight:600}
/* 复用标记（汇总面板 / 文档） */
.reuse-chip{font-size:10px;font-weight:600;color:var(--color-green);background:rgba(0,180,42,.1);border-radius:5px;padding:1px 6px;margin-left:6px}
.reuse-zero{font-size:11px;font-weight:600;color:var(--color-green)}
.reuse-note{color:var(--color-green);font-weight:600}

.add-model{
  border:2px dashed var(--color-tint-3);background:transparent;border-radius:var(--radius-card);
  padding:18px;display:flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;
  color:var(--color-primary);font-weight:600;font-size:15px;transition:all .15s;
}
.add-model:hover{background:var(--color-tint-1);border-color:var(--color-primary-light)}
.models-empty{
  border:1px dashed var(--color-tint-3);border-radius:var(--radius-card);padding:34px 24px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
  text-align:center;color:var(--color-fg3);background:var(--color-bg-offwhite);
}
.models-empty .me-title{font-size:16px;font-weight:700;color:var(--color-fg1)}
.models-empty .me-desc{font-size:13px;line-height:1.65;color:var(--color-fg4)}
.models-empty .add-model{padding:11px 20px;border-width:1px;border-style:solid;border-radius:10px;background:#fff}
#btnClear:disabled,#btnExportData.is-disabled{opacity:.45;cursor:not-allowed}

/* ───────── 右侧汇总面板 ───────── */
.summary{position:sticky;top:84px;display:flex;flex-direction:column;gap:16px}
.sum-total{
  border-radius:var(--radius-card);padding:22px;color:#fff;
  background:linear-gradient(150deg,#1c4f95 0%,var(--color-primary-dark) 70%,#0a2a5e 100%);
  box-shadow:var(--shadow-pop);position:relative;overflow:hidden;
}
.sum-total::after{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(120,170,255,.35),transparent 70%)}
.sum-total .lab{font-size:12.5px;color:rgba(255,255,255,.7);font-weight:500}
.sum-total .total-price{font-family:var(--font-num);font-weight:800;font-size:42px;line-height:1.05;margin-top:4px;letter-spacing:-.5px}
.sum-total .total-price small{font-size:20px;font-weight:600;opacity:.8;margin-right:3px}
.sum-total .row2{display:flex;gap:22px;margin-top:18px;padding-top:16px;border-top:1px solid rgba(255,255,255,.16)}
.sum-total .row2 .k{font-size:11.5px;color:rgba(255,255,255,.65)}
.sum-total .row2 .v{font-family:var(--font-num);font-weight:700;font-size:20px;margin-top:2px}
.sum-total .row2 .v small{font-size:12px;opacity:.7;font-family:var(--font-cn);margin-left:2px}

.sum-detail{background:#fff;border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:hidden;border:1px solid rgba(227,227,229,.55)}
.sum-detail .sd-head{padding:14px 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #F0F2F6}
.sum-detail .sd-head .t{font-size:14px;font-weight:700}
.sum-detail .sd-head .c{font-size:11.5px;color:var(--color-fg4)}
.sd-list{max-height:46vh;overflow-y:auto}
.sd-row{display:flex;align-items:center;gap:10px;padding:10px 18px;border-bottom:1px solid #F5F6F9;font-size:13px}
.sd-row:last-child{border-bottom:none}
.sd-row .n{flex:1;min-width:0;color:var(--color-fg2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sd-row .q{font-family:var(--font-num);font-weight:600;color:var(--color-primary);background:var(--color-tint-1);border-radius:6px;padding:1px 7px;font-size:12px;flex:none}
.sd-row .a{font-family:var(--font-num);font-weight:600;color:var(--color-fg1);width:74px;text-align:right;flex:none}
.sd-row .hr{font-family:var(--font-num);color:var(--color-fg4);width:48px;text-align:right;flex:none;font-size:11.5px}
.sd-empty{padding:30px 18px;text-align:center;color:var(--color-fg4);font-size:13px}
.sd-foot{display:flex;align-items:center;gap:10px;padding:12px 18px;background:var(--color-bg-offwhite);font-size:12.5px;font-weight:600}
.sd-foot .n{flex:1;color:var(--color-fg3)}
.sd-foot .a{font-family:var(--font-num);width:74px;text-align:right;color:var(--color-primary-dark);font-size:14px}
.sd-foot .hr{font-family:var(--font-num);width:48px;text-align:right;color:var(--color-fg3)}

/* ───────── 导出区 ───────── */
.export-wrap{max-width:1180px;margin:6px auto 0;padding:0 24px}
.export-card{background:#fff;border-radius:var(--radius-card);box-shadow:var(--shadow-card);border:1px solid rgba(227,227,229,.55);overflow:hidden}
.export-card .ec-head{padding:18px 22px;border-bottom:1px solid #F0F2F6;display:flex;align-items:center;gap:10px}
.export-card .ec-head .t{font-size:17px;font-weight:700}
.export-card .ec-head .s{font-size:12.5px;color:var(--color-fg4)}
.export-grid{display:grid;grid-template-columns:1fr 1fr;gap:0}
@media(max-width:880px){.export-grid{grid-template-columns:1fr}}
.export-col{padding:20px 22px}
.export-col + .export-col{border-left:1px solid #F0F2F6}
@media(max-width:880px){.export-col + .export-col{border-left:none;border-top:1px solid #F0F2F6}}
.export-col .col-t{font-size:12px;font-weight:700;color:var(--color-fg4);letter-spacing:.05em;margin-bottom:14px}
.form-row{display:grid;grid-template-columns:88px 1fr;align-items:center;gap:12px;margin-bottom:11px}
.form-row label{font-size:13px;color:var(--color-fg3);font-weight:500}
.serial-wrap{display:flex;align-items:center;gap:0;background:var(--color-bg-white);border:1px solid var(--color-border);border-radius:9px;overflow:hidden}
.serial-wrap .serial-pre{padding:7px 4px 7px 11px;font-family:var(--font-num);font-size:13px;color:var(--color-fg4);white-space:nowrap}
.serial-wrap .serial-in{border:none;box-shadow:none;border-radius:0;padding:7px 11px 7px 2px;font-family:var(--font-num);font-weight:700;font-size:13px;width:100%;color:var(--color-primary-dark)}
.serial-wrap .serial-in:focus{box-shadow:none}
.serial-wrap:focus-within{border-color:var(--color-primary-mid);box-shadow:0 0 0 3px rgba(69,125,201,.14)}
.form-row .inp{width:100%}
textarea.inp{resize:vertical;min-height:38px;font-family:var(--font-cn);line-height:1.5}

.export-bar{padding:18px 22px;background:var(--color-bg-offwhite);border-top:1px solid #F0F2F6;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.export-bar .grp{display:flex;align-items:center;gap:9px}
.export-bar .grp .lbl{font-size:12.5px;color:var(--color-fg4);font-weight:600}
.fmt-seg{display:inline-flex;background:#fff;border:1px solid var(--color-border);border-radius:9px;padding:3px;gap:2px}
.fmt-seg button{font-family:var(--font-num);font-size:12.5px;font-weight:600;color:var(--color-fg3);border:none;background:transparent;cursor:pointer;padding:6px 14px;border-radius:6px;transition:all .15s}
.fmt-seg button.on{background:var(--color-primary);color:#fff}
/* 汇率芯片（仅美元时出现） */
.fx-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--color-fg3);background:#fff;border:1px solid var(--color-border);border-radius:9px;padding:4px 8px}
.fx-chip .fx-eq{font-family:var(--font-num);color:var(--color-fg4);font-weight:600}
.fx-chip .fx-in{width:56px;border:1px solid var(--color-border);border-radius:6px;padding:3px 6px;font-family:var(--font-num);font-weight:700;font-size:12.5px;color:var(--color-primary-dark);text-align:center;outline:none;-moz-appearance:textfield}
.fx-chip .fx-in::-webkit-outer-spin-button,.fx-chip .fx-in::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.fx-chip .fx-in:focus{border-color:var(--color-primary-mid);box-shadow:0 0 0 3px rgba(69,125,201,.14)}
.fx-chip .fx-src{font-size:11px;font-weight:600;color:var(--color-primary);background:var(--color-tint-1);border-radius:5px;padding:1px 7px;white-space:nowrap}
.fx-chip .fx-reset{border:none;background:var(--color-tint-1);color:var(--color-primary);width:22px;height:22px;border-radius:6px;cursor:pointer;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s}
.fx-chip .fx-reset:hover{background:var(--color-tint-2)}
/* 英文单据：放宽 meta 标签宽度，避免被截断 */
.doc-en .doc-meta .m .mk{width:96px}
.doc-en .doc-mobile .m-meta span{width:auto;min-width:44px;margin-right:8px}
.export-bar .spacer{flex:1}

/* ───────── 文档预览 ───────── */
.doc-preview-wrap{padding:24px;background:var(--color-bg-offwhite);border-top:1px solid #F0F2F6;display:flex;justify-content:center}

/* ── 任务 B:预览缩放条(≥1100)与 PC 横屏三栏(≥1400;1399 以下 DOM 不搬迁,与现状一致)── */
.doc-zoom-bar{display:none}
@media(min-width:1100px){
  .doc-zoom-bar{display:flex;align-items:center;gap:12px;padding:10px 24px;border-top:1px solid #F0F2F6;background:#fff}
  .doc-zoom-bar .lbl{font-size:12px;color:var(--color-fg4);font-weight:600;flex:none}
  .doc-zoom-bar input[type=range]{flex:1;max-width:220px;accent-color:var(--color-primary)}
  .doc-zoom-bar .pct{font-family:var(--font-num);font-feature-settings:"tnum";font-size:12px;font-weight:700;color:var(--color-primary-dark);min-width:42px;text-align:right}
  .doc-preview-wrap{overflow-x:auto}
}
@media(min-width:1400px){
  .layout{max-width:none;padding:20px 28px;grid-template-columns:minmax(0,1fr) 360px minmax(600px,.9fr);gap:20px}
  .layout > .export-wrap{
    grid-column:3;grid-row:1 / span 99;
    max-width:none;margin:0;padding:0;
    position:sticky;top:76px;height:calc(100vh - 96px);
    display:flex;flex-direction:column;min-height:0;
  }
  .layout > .export-wrap > .export-card{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
  .layout > .export-wrap .doc-preview-wrap{flex:1;min-height:0;overflow:auto;padding:16px;justify-content:flex-start;align-items:flex-start}
}
.doc-scale{transform-origin:top center}

/* A4 文档纸张（导出捕获目标） */
.doc-sheet{
  width:794px;min-height:1123px;background:#fff;color:#1d1d1f;
  padding:56px 56px 64px;font-family:var(--font-cn);
  box-shadow:0 8px 40px rgba(13,55,121,.14);position:relative;
}
.doc-head{display:flex;align-items:flex-start;justify-content:space-between;padding-bottom:22px;border-bottom:2px solid var(--color-primary-dark)}
.doc-brand{display:flex;align-items:center;gap:14px}
.doc-logo{width:52px;height:52px;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}
.doc-logo img{width:48px;height:48px;object-fit:contain}
.doc-brand .dco{font-size:19px;font-weight:700;color:var(--color-primary-dark);line-height:1.25}
.doc-brand .dco small{display:block;font-size:11px;font-weight:500;color:var(--color-fg4);letter-spacing:.22em;font-family:var(--font-num);margin-top:3px}
.doc-title{text-align:right}
.doc-title .dt{font-size:23px;font-weight:700;color:var(--color-fg1);letter-spacing:1px}
.doc-title .dno{font-size:12px;color:var(--color-fg4);font-family:var(--font-num);margin-top:6px}
.doc-title .dno .badge{display:inline-block;font-size:10px;font-weight:600;color:var(--color-primary);background:var(--color-tint-1);border-radius:5px;padding:2px 7px;margin-left:6px;font-family:var(--font-cn)}

.doc-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px 40px;margin:22px 0 26px}
.doc-meta .m{display:flex;font-size:13px}
.doc-meta .m .mk{color:var(--color-fg4);width:78px;flex:none}
.doc-meta .m .mv{color:var(--color-fg1);font-weight:500;flex:1;border-bottom:1px dotted #D7DCE3;padding-bottom:2px}

.doc-table{width:100%;border-collapse:collapse;margin-bottom:10px}
.doc-table thead th{
  font-size:12px;font-weight:600;color:#fff;background:var(--color-primary-dark);
  padding:10px 12px;text-align:left;
}
.doc-table thead th.r{text-align:right}
.doc-table thead th.c{text-align:center}
.doc-table thead th:first-child{border-radius:8px 0 0 0}
.doc-table thead th:last-child{border-radius:0 8px 0 0}
.doc-table tbody td{font-size:13px;color:var(--color-fg2);padding:9px 12px;border-bottom:1px solid #EDF0F4}
.doc-table tbody tr:nth-child(even) td{background:#FAFBFD}
.doc-table td.r{text-align:right;font-family:var(--font-num)}
.doc-table td.c{text-align:center;font-family:var(--font-num)}
.doc-table td.nm{font-weight:500;color:var(--color-fg1)}
.doc-table td .sub{font-size:11px;color:var(--color-fg4);font-weight:400;margin-left:6px}
.doc-table td .sub.reuse-note{display:block;margin:2px 0 0;color:var(--color-green);font-weight:600}
.doc-grouprow td{background:var(--color-tint-1)!important;font-weight:700;color:var(--color-primary-dark);font-size:12px}

.doc-total{display:flex;justify-content:flex-end;margin-top:4px}
.doc-total .box{min-width:300px}
.doc-total .tr{display:flex;justify-content:space-between;padding:7px 12px;font-size:13px;color:var(--color-fg3)}
.doc-total .tr .v{font-family:var(--font-num);font-weight:600;color:var(--color-fg1);white-space:nowrap}
.doc-total .grand{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));color:#fff;border-radius:10px;padding:13px 16px;display:flex;justify-content:space-between;align-items:center;margin-top:6px}
.doc-total .grand .gk{font-size:13px;font-weight:600}
.doc-total .grand .gv{font-family:var(--font-num);font-weight:800;font-size:24px}
.doc-total .grand .gv small{font-size:14px;font-weight:600;opacity:.85;margin-right:2px}
/* 优惠 / 折让 */
.doc-total .tr-disc span:first-child{color:var(--color-gold-dark);font-weight:600}
.doc-total .tr-disc .v{color:var(--color-gold-dark)}
.sum-disc{font-family:var(--font-num);font-size:12px;color:rgba(255,255,255,.82);margin-top:7px;letter-spacing:.01em}
.sum-disc b{color:#FFE0B8;font-weight:700}
.doc-mobile .m-disc{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--color-fg3);padding:3px 2px}
.doc-mobile .m-disc b{font-family:var(--font-num);font-weight:600;color:var(--color-fg1)}
.doc-mobile .m-disc.is-disc span{color:var(--color-gold-dark);font-weight:600}
.doc-mobile .m-disc.is-disc b{color:var(--color-gold-dark)}

/* 确认单：引导语 + 分节 + 总览表 + 逐项确认 */
.doc-lead{margin:20px 0 4px;font-size:12.5px;color:var(--color-fg3);line-height:1.7;background:var(--color-tint-1);border-radius:10px;padding:13px 16px;border-left:3px solid var(--color-primary)}
.doc-lead b{color:var(--color-primary-dark)}
.doc-sec{margin-top:24px}
.sec-title{display:flex;align-items:center;gap:9px;font-size:14px;font-weight:700;color:var(--color-primary-dark);margin-bottom:12px}
.sec-no{width:20px;height:20px;border-radius:6px;background:var(--color-primary-dark);color:#fff;font-family:var(--font-num);font-size:12px;display:flex;align-items:center;justify-content:center;flex:none}
.ov-table{width:100%;border-collapse:collapse}
.ov-table thead th{font-size:12px;font-weight:600;color:#fff;background:var(--color-primary-dark);padding:9px 12px;text-align:left}
.ov-table thead th.c{text-align:center}
.ov-table thead th:first-child{border-radius:8px 0 0 0}
.ov-table thead th:last-child{border-radius:0 8px 0 0}
.ov-table td{font-size:13px;color:var(--color-fg2);padding:9px 12px;border-bottom:1px solid #EDF0F4}
.ov-table td.nm{font-weight:600;color:var(--color-fg1)}
.ov-table td.c{text-align:center;font-family:var(--font-num)}
.ov-table tbody tr:last-child td{border-bottom:none}
.ov-table tbody tr:nth-child(even) td{background:#FAFBFD}

.cm-block{margin-bottom:14px;border:1px solid #E7ECF3;border-radius:10px;overflow:hidden}
.cm-head{display:flex;align-items:center;gap:9px;padding:9px 13px;background:var(--color-tint-1);border-bottom:1px solid #E7ECF3}
.cm-badge{width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,var(--color-primary-mid),var(--color-primary));color:#fff;font-family:var(--font-num);font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center;flex:none}
.cm-name{font-size:13.5px;font-weight:700;color:var(--color-fg1)}
.cm-type{font-size:11px;font-weight:600;color:var(--color-primary);background:#fff;border:1px solid var(--color-tint-3);border-radius:5px;padding:1px 8px}
.cm-sum{margin-left:auto;font-family:var(--font-num);font-weight:700;font-size:15px;color:var(--color-primary-dark)}
.cm-sum small{font-size:11px;opacity:.7;margin-right:1px}
.cm-table{width:100%;border-collapse:collapse}
.cm-table thead th{font-size:11px;font-weight:600;color:var(--color-fg3);background:#FAFBFD;padding:7px 12px;text-align:left;border-bottom:1px solid #EDF0F4;white-space:nowrap}
.cm-table thead th.c{text-align:center}
.cm-table thead th.r{text-align:right}
.cm-table tbody td{font-size:12.5px;color:var(--color-fg2);padding:7px 12px;border-bottom:1px solid #F2F4F8;vertical-align:middle}
.cm-table tbody tr:last-child td{border-bottom:none}
.cm-table td.c{text-align:center;font-family:var(--font-num)}
.cm-table td.r{text-align:right}
.cm-table td.money{font-family:var(--font-num)}
.cm-item{font-weight:600;color:var(--color-fg1)}
.cm-item.child{font-weight:400;color:var(--color-fg2);padding-left:26px;position:relative}
.cm-item.child::before{content:"└";position:absolute;left:12px;color:var(--color-fg5)}
/* 模块分组：主项=模块头（带底色），选配=子行 */
.cm-table tr.mod-head td{background:var(--color-tint-1);border-top:2px solid var(--color-tint-3)}
.cm-table tr.mod-head:first-child td{border-top:none}
.cm-table .cm-mod{font-weight:700;color:var(--color-primary-dark);font-size:13px}
.cm-table tr.mod-sub td{background:#fff}
.cm-table tr.mod-sub td.cm-item{padding-left:26px;position:relative;font-weight:400;color:var(--color-fg2)}
.cm-table tr.mod-sub td.cm-item::before{content:"└";position:absolute;left:12px;color:var(--color-fg5)}
.spec-chip{display:inline-block;font-size:11.5px;font-weight:600;color:var(--color-primary);background:var(--color-tint-1);border:1px solid var(--color-tint-3);border-radius:5px;padding:1px 8px;margin:1px 4px 1px 0}
.cm-table tr.mod-head .spec-chip{background:#fff}
.spec-chip.ex{color:var(--color-gold-dark);background:#FBF3E8;border-color:var(--color-gold)}
.spec-chip.ex em{font-style:normal;font-size:9px;font-weight:700;color:var(--color-gold-dark);margin-left:2px}
/* 单据：名称后的「备注」注释 */
.spec-chip .sn-note-em{font-style:normal;font-weight:500;color:var(--color-fg4);margin-left:4px;font-size:10px}
.shared-tag{display:inline-block;font-size:10px;font-weight:700;font-style:normal;color:var(--color-primary);background:var(--color-tint-1);border:1px solid var(--color-tint-3);border-radius:5px;padding:0 6px;margin-left:6px;vertical-align:middle}
.doc-mobile .m-chip .sn-note-em{font-style:normal;font-weight:500;color:var(--color-fg4);margin-left:4px;font-size:9.5px}
.dim-line{display:block;font-family:var(--font-num);font-size:11.5px;color:var(--color-fg2);line-height:1.6}
.dim-line.extra{color:var(--color-primary);font-weight:600}
.dim-line em{font-style:normal;font-size:10px;color:var(--color-primary);background:var(--color-tint-1);border-radius:4px;padding:0 4px;margin-left:2px}
.cm-spec{color:var(--color-fg2)}
.cm-spec .dash{color:var(--color-fg5)}
.base-note{display:block;margin-top:3px;font-size:10.5px;font-weight:400;color:var(--color-primary);line-height:1.5}
.std-note{color:var(--color-fg4);font-weight:600;font-size:11px}
.cm-reused td{background:rgba(0,180,42,.045)}
.cm-reused .cm-item{color:var(--color-fg3)}
.chk-box{display:inline-block;width:14px;height:14px;border:1.5px solid var(--color-fg5);border-radius:3px;vertical-align:middle}
.cm-empty{padding:26px;text-align:center;color:var(--color-fg4);font-size:13px;border:1px dashed var(--color-tint-3);border-radius:10px}

.doc-note{margin-top:26px;font-size:12px;color:var(--color-fg3);line-height:1.7;background:var(--color-bg-offwhite);border-radius:10px;padding:14px 16px;border-left:3px solid var(--color-primary-light)}
.doc-note b{color:var(--color-fg1)}

.doc-sign{display:flex;justify-content:space-between;margin-top:30px;gap:40px}
.doc-sign .blk{flex:1;font-size:12.5px;color:var(--color-fg3);line-height:1.85}
.doc-sign .blk .st{font-size:13px;font-weight:700;color:var(--color-primary-dark);margin-bottom:6px}
.doc-sign .blk .li{display:flex;gap:6px}
.doc-sign .blk .li .lk{color:var(--color-fg4);width:42px;flex:none}
.doc-sign .sign-line{margin-top:24px;border-top:1px solid #C9D2DD;padding-top:6px;color:var(--color-fg4);font-size:11.5px}
.doc-foot{margin-top:34px;padding-top:14px;border-top:1px solid #EDF0F4;text-align:center;font-size:11px;color:var(--color-fg5);letter-spacing:.02em}

/* 配置命名清单（文档） */
.doc-styles{margin-top:24px}
.doc-styles .ds-title{font-size:13px;font-weight:700;color:var(--color-primary-dark);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #EDF0F4}
.doc-styles .ds-row{display:flex;gap:16px;padding:9px 0;border-bottom:1px solid #F4F6F9;align-items:baseline}
.doc-styles .ds-row:last-child{border-bottom:none}
.doc-styles .ds-model{flex:none;width:150px;font-size:12.5px;font-weight:600;color:var(--color-fg1);display:flex;flex-direction:column;gap:2px}
.doc-styles .ds-model .ds-type{font-size:10.5px;font-weight:500;color:var(--color-fg4)}
.doc-styles .ds-cats{flex:1;display:flex;flex-direction:column;gap:7px}
.doc-styles .ds-cat{display:flex;gap:10px;align-items:baseline}
.doc-styles .ds-cat-label{flex:none;width:64px;font-size:11px;font-weight:600;color:var(--color-fg4)}
.doc-styles .ds-names{flex:1;display:flex;flex-wrap:wrap;gap:6px}
.doc-styles .ds-chip{font-size:11.5px;color:var(--color-fg2);background:var(--color-tint-1);border:1px solid var(--color-tint-3);border-radius:6px;padding:2px 9px;display:inline-flex;align-items:center;gap:5px}
.doc-styles .ds-chip b{font-family:var(--font-num);font-size:10px;color:var(--color-primary);background:#fff;border-radius:4px;padding:0 4px}

/* 型号级拆解（内部版） */
.doc-breakdown{margin-top:26px}
.doc-breakdown .bd-title{font-size:13px;font-weight:700;color:var(--color-primary-dark);margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid #EDF0F4}
.bd-model{margin-bottom:14px;border:1px solid #EDF0F4;border-radius:10px;overflow:hidden}
.bd-model .bm-head{display:flex;align-items:center;gap:8px;background:var(--color-bg-offwhite);padding:8px 12px;font-size:12.5px}
.bd-model .bm-head .bm-name{font-weight:700;color:var(--color-fg1)}
.bd-model .bm-head .bm-type{font-size:10.5px;color:var(--color-primary);background:var(--color-tint-2);border-radius:5px;padding:1px 7px}
.bd-model .bm-head .bm-sum{margin-left:auto;font-family:var(--font-num);font-weight:700;color:var(--color-primary-dark)}
.bd-model .bm-head .bm-hr{font-family:var(--font-num);color:var(--color-fg4);font-size:11px;margin-left:10px}
.bd-items{padding:6px 12px}
.bd-items .bi{display:flex;font-size:11.5px;color:var(--color-fg3);padding:2px 0}
.bd-items .bi .bn{flex:1}
.bd-items .bi .bq{font-family:var(--font-num);width:40px;text-align:center}
.bd-items .bi .ba{font-family:var(--font-num);width:70px;text-align:right;color:var(--color-fg2)}
.bd-items .bi .bh{font-family:var(--font-num);width:48px;text-align:right;color:var(--color-fg5)}
.bd-items .bi.reused .bn{text-decoration:line-through;opacity:.55}

.hours-col{display:table-cell}
.doc-sheet.hide-hours .hours-col{display:none}

/* offscreen render holder */
#capture-stage{position:fixed;left:-99999px;top:0;background:#fff}

/* toast */
#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(28,28,30,.94);color:#fff;font-size:13.5px;font-weight:500;padding:12px 22px;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.3);opacity:0;pointer-events:none;transition:all .3s;z-index:200}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ───────── 手机长图布局（PNG 导出 / 预览） ───────── */
.doc-sheet.doc-mobile{width:430px;min-height:0;padding:22px 18px 30px}
.doc-mobile .m-head{text-align:center;padding-bottom:16px;border-bottom:2px solid var(--color-primary-dark)}
.doc-mobile .m-brand{display:flex;align-items:center;justify-content:center;gap:9px;margin-bottom:12px}
.doc-mobile .m-brand img{width:34px;height:34px;object-fit:contain}
.doc-mobile .m-wm{text-align:left}
.doc-mobile .m-cn{font-size:17px;font-weight:700;color:var(--color-primary-dark);line-height:1.1}
.doc-mobile .m-en{font-size:9px;letter-spacing:.22em;color:var(--color-fg4);font-family:var(--font-num);margin-top:2px}
.doc-mobile .m-title{font-size:21px;font-weight:700;color:var(--color-fg1);letter-spacing:1px}
.doc-mobile .m-no{font-size:11px;color:var(--color-fg4);font-family:var(--font-num);margin-top:7px;display:flex;align-items:center;justify-content:center;gap:7px}
.doc-mobile .m-badge{font-family:var(--font-chinese);font-size:10px;font-weight:600;color:var(--color-primary);background:var(--color-tint-1);border-radius:5px;padding:2px 7px}
.doc-mobile .m-meta{display:flex;flex-direction:column;gap:7px;margin:16px 0 0;background:var(--color-bg-offwhite);border-radius:10px;padding:12px 14px}
.doc-mobile .m-meta > div{font-size:13px;color:var(--color-fg1);font-weight:500}
.doc-mobile .m-meta span{display:inline-block;width:42px;color:var(--color-fg4);font-weight:400}
.doc-mobile .m-lead{margin-top:14px;font-size:11.5px;color:var(--color-fg3);line-height:1.7;background:var(--color-tint-1);border-radius:10px;padding:11px 13px;border-left:3px solid var(--color-primary)}
.doc-mobile .m-sec{display:flex;align-items:center;gap:8px;margin:24px 0 12px;font-size:15px;font-weight:700;color:var(--color-primary-dark)}
.doc-mobile .m-sec b{width:21px;height:21px;border-radius:6px;background:var(--color-primary-dark);color:#fff;font-family:var(--font-num);font-size:12px;display:flex;align-items:center;justify-content:center}
/* 总览 */
.doc-mobile .mo-row{padding:11px 13px;border:1px solid #E7ECF3;border-radius:10px;margin-bottom:8px;background:var(--color-tint-1)}
.doc-mobile .mo-t{font-size:14px;font-weight:700;color:var(--color-primary-dark);display:flex;justify-content:space-between;align-items:baseline}
.doc-mobile .mo-t b{font-family:var(--font-num);font-size:13px;color:var(--color-fg2)}
.doc-mobile .mo-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.doc-mobile .mo-chips span{font-size:11px;font-weight:600;color:var(--color-primary);background:#fff;border:1px solid var(--color-tint-3);border-radius:5px;padding:2px 9px;font-family:var(--font-num)}
/* 型号块 */
.doc-mobile .m-model{margin-bottom:16px;border:1px solid #E7ECF3;border-radius:12px;overflow:hidden}
.doc-mobile .mmd-head{display:flex;align-items:center;gap:8px;background:linear-gradient(135deg,#1c4f95,var(--color-primary-dark));color:#fff;padding:11px 13px}
.doc-mobile .mmd-b{width:22px;height:22px;border-radius:6px;background:rgba(255,255,255,.2);font-family:var(--font-num);font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center;flex:none}
.doc-mobile .mmd-n{font-size:13.5px;font-weight:700}
.doc-mobile .mmd-t{font-size:10px;background:rgba(255,255,255,.18);border-radius:5px;padding:1px 7px}
.doc-mobile .mmd-s{margin-left:auto;font-family:var(--font-num);font-weight:800;font-size:15px}
/* 模块卡 */
.doc-mobile .mm{padding:11px 13px;border-top:1px solid #EEF1F5}
.doc-mobile .mm-head{display:flex;align-items:center;gap:7px}
.doc-mobile .mm-head .mck,.doc-mobile .ms-sub .mck{width:14px;height:14px;border:1.5px solid var(--color-fg5);border-radius:3px;flex:none;display:inline-block}
.doc-mobile .mm-n{font-size:13.5px;font-weight:700;color:var(--color-fg1)}
.doc-mobile .mm-q{font-family:var(--font-num);font-size:12px;color:var(--color-fg4)}
.doc-mobile .mm-a{margin-left:auto;font-family:var(--font-num);font-weight:700;font-size:14px;color:var(--color-primary-dark)}
.doc-mobile .mm-base{font-size:10.5px;color:var(--color-primary);line-height:1.5;margin:5px 0 0 21px}
.doc-mobile .mm-styles{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 0 21px}
.doc-mobile .m-chip{font-size:11px;font-weight:600;color:var(--color-primary);background:var(--color-tint-1);border:1px solid var(--color-tint-3);border-radius:5px;padding:1px 8px}
.doc-mobile .m-chip.x{color:var(--color-gold-dark);background:#FBF3E8;border-color:var(--color-gold)}
/* 选配子行 */
.doc-mobile .ms-sub{display:flex;gap:7px;margin:8px 0 0 21px;padding-top:8px;border-top:1px dashed #EEF1F5}
.doc-mobile .ms-body{flex:1;min-width:0}
.doc-mobile .ms-top{display:flex;align-items:center;gap:8px}
.doc-mobile .ms-n{font-size:12.5px;color:var(--color-fg2);font-weight:500}
.doc-mobile .ms-q{font-family:var(--font-num);font-size:11.5px;color:var(--color-fg4);margin-left:auto}
.doc-mobile .ms-a{font-family:var(--font-num);font-size:12.5px;color:var(--color-fg1);width:62px;text-align:right;flex:none}
.doc-mobile .ms-spec{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.doc-mobile .ms-note{font-size:10px;color:var(--color-fg4);margin-top:3px}
.doc-mobile .m-dim{display:inline-block;font-family:var(--font-num);font-size:11px;color:var(--color-fg3);background:var(--color-bg-offwhite);border-radius:5px;padding:1px 7px}
.doc-mobile .m-dim.x{color:var(--color-primary);background:var(--color-tint-1);font-weight:600}
.doc-mobile .ru{font-style:normal;font-size:10px;font-weight:700;color:var(--color-green)}
.doc-mobile .std{font-style:normal;font-size:11px;color:var(--color-fg4)}
.doc-mobile .m-total{margin-top:18px;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-dark));color:#fff;border-radius:12px;padding:15px 18px}
.doc-mobile .m-total span{font-size:13px;font-weight:600}
.doc-mobile .m-total b{font-family:var(--font-num);font-size:26px;font-weight:800}
.doc-mobile .m-total b small{font-size:15px;font-weight:600;opacity:.85;margin-right:1px}
.doc-mobile .m-note{margin-top:14px;font-size:11px;color:var(--color-fg3);line-height:1.7;background:var(--color-bg-offwhite);border-radius:10px;padding:11px 13px;border-left:3px solid var(--color-primary-light)}
.doc-mobile .m-note b{color:var(--color-fg1)}
.doc-mobile .m-empty{padding:22px;text-align:center;color:var(--color-fg4);font-size:12px;border:1px dashed var(--color-tint-3);border-radius:10px}
.doc-mobile .m-foot{margin-top:22px;padding-top:12px;border-top:1px solid #EDF0F4;text-align:center;font-size:10px;color:var(--color-fg5)}

@media print{
  body{background:#fff;padding:0}
  header.appbar,.layout > *:not(.export-wrap),.export-wrap > .export-card > *:not(.doc-preview-wrap),.section-head,#toast,
  .mobile-summary-bar,.mobile-tools-mask,.mobile-tools-menu,.mobile-summary-mask,.calc-dock{display:none!important}
  .layout{display:contents!important}
}

/* ───────── 轿厢（母级实例）配置 ───────── */
.cabin-section{position:relative}
.cabin-sec-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.cabin-sec-head .cs-t{font-size:14.5px;font-weight:700;color:var(--color-fg1);display:inline-flex;align-items:center;gap:8px}
.cabin-sec-head .cs-hint{font-size:11.5px;color:var(--color-fg4)}
.cop-share-toggle{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;font-size:12px;font-weight:600;color:var(--color-fg3);background:var(--color-bg-offwhite);border:1px solid var(--color-border);border-radius:8px;padding:5px 10px}
.cop-share-toggle input{display:none}
.cop-share-toggle .box{width:16px;height:16px;border-radius:5px;border:1.5px solid var(--color-fg5);display:flex;align-items:center;justify-content:center;transition:all .15s;flex:none}
.cop-share-toggle .box svg{width:10px;height:10px;opacity:0;color:#fff}
.cop-share-toggle input:checked + .box{background:var(--color-primary);border-color:var(--color-primary)}
.cop-share-toggle input:checked + .box svg{opacity:1}
.cop-share-toggle.on{color:var(--color-primary);border-color:var(--color-primary-light);background:var(--color-tint-1)}
.cabin-list{display:flex;flex-direction:column;gap:12px}
.cabin-card{background:#fff;border:1px solid #E1E7F0;border-left:3px solid var(--color-primary);border-radius:var(--radius-tile);box-shadow:var(--shadow-soft);padding:13px 15px}
.cabin-card.swap{border-left-color:var(--color-gold);background:linear-gradient(180deg,#FCF8F1,#fff 60%)}
.cabin-head{display:flex;align-items:center;gap:10px}
.cabin-badge{width:26px;height:26px;border-radius:8px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--font-num);font-weight:700;font-size:13px;color:#fff;background:linear-gradient(135deg,var(--color-primary-mid),var(--color-primary))}
.cabin-card.swap .cabin-badge{background:linear-gradient(135deg,#C9A26B,var(--color-gold-dark))}
.cabin-name-inp{flex:1;min-width:0;font-weight:600}
.cabin-price{font-family:var(--font-num);font-size:13px;color:var(--color-fg3);white-space:nowrap}
.cabin-price b{font-weight:700;font-size:15px;color:var(--color-primary-dark)}
.cabin-del{flex:none}
.cabin-del:disabled{opacity:.32;cursor:not-allowed}

.swap-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:11px 0 4px}
.swap-toggle{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;font-size:12.5px;font-weight:600;color:var(--color-fg2);background:var(--color-bg-offwhite);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:5px 12px;transition:all .15s}
.swap-toggle input{display:none}
.swap-toggle .box{width:16px;height:16px;border-radius:5px;border:1.5px solid var(--color-fg5);display:flex;align-items:center;justify-content:center;transition:all .15s;flex:none}
.swap-toggle .box svg{width:10px;height:10px;opacity:0;color:#fff}
.swap-toggle input:checked + .box{background:var(--color-gold-dark);border-color:var(--color-gold-dark)}
.swap-toggle input:checked + .box svg{opacity:1}
.swap-toggle.on{color:var(--color-gold-dark);border-color:var(--color-gold);background:#FBF3E8}
.swap-hint{font-size:11px;color:var(--color-fg4);flex:1;min-width:120px}
.swap-target{flex:none;width:100%;max-width:280px;font-size:13px}

.cabin-children{display:flex;flex-direction:column;gap:7px;margin-top:8px;padding-top:10px;border-top:1px solid #F0F2F6}
.cabin-child{background:var(--color-bg-offwhite);border:1px solid transparent;border-radius:var(--radius-tile);padding:7px 11px;transition:border .15s,background .15s}
.cabin-child.active{background:var(--color-tint-1);border-color:var(--color-tint-3)}
.cabin-child.reused{opacity:.62}
/* 轿厢内「控制面板」组：内呼COP + 其面板颜色（下级） */
.cabin-child[data-k="内呼COP"]::before{content:"控制面板";display:block;font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--color-fg4);margin:0 0 6px}
.cabin-child[data-k="面板颜色切换"]{margin-left:16px}
.cabin-child[data-k="面板颜色切换"]::before{content:"└ 面板颜色 · 内呼COP 的下级选项";display:block;font-size:10px;color:var(--color-fg5);margin:0 0 4px}
.cc-row{display:flex;align-items:center;gap:10px}
.cc-name{flex:1;min-width:0;font-size:13px;color:var(--color-fg2);font-weight:500;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cc-name .price-hint{font-size:11px;color:var(--color-fg5);font-weight:400;font-family:var(--font-num)}
.cc-name .price-hint.inc{color:var(--color-gold-dark);font-weight:700;font-family:var(--font-cn)}
.cabin-child .namer-area{margin:8px 0 0}

.cabin-notes{display:flex;flex-direction:column;gap:8px;margin-top:11px;padding-top:10px;border-top:1px dashed #E7ECF3}
.cabin-note-fld{display:flex;flex-direction:column;gap:4px}
.cabin-note-fld .cn-lbl{font-size:11.5px;font-weight:600;color:var(--color-fg3)}
.cabin-note-fld .cn-lbl em{font-style:normal;font-weight:500;color:var(--color-fg4);font-size:10.5px;margin-left:3px}
.cabin-note-fld .inp{width:100%;font-size:13px}

.cabin-add{margin-top:12px;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-cn);font-size:13.5px;font-weight:600;color:var(--color-primary);background:transparent;border:2px dashed var(--color-tint-3);border-radius:var(--radius-tile);padding:11px;cursor:pointer;transition:all .15s}
.cabin-add:hover{background:var(--color-tint-1);border-color:var(--color-primary-light)}
.cc-steplbl{font-size:11px;color:var(--color-fg4);font-weight:600}

/* 命名格：单列布局 + 行内「复用」勾选（复用落在名称级） */
.sn-grid.sn-grid-1{grid-template-columns:1fr}
.namer-area .sn-cell .sn-reuse{display:inline-flex;align-items:center;gap:5px;cursor:pointer;user-select:none;font-size:11px;color:var(--color-fg4);font-weight:600;flex:none;padding-right:6px}
.namer-area .sn-cell .sn-reuse input{display:none}
.namer-area .sn-cell .sn-reuse .box{width:15px;height:15px;border-radius:4px;border:1.5px solid var(--color-fg5);display:flex;align-items:center;justify-content:center;transition:all .15s;flex:none}
.namer-area .sn-cell .sn-reuse .box svg{width:9px;height:9px;opacity:0;color:#fff}
.namer-area .sn-cell .sn-reuse input:checked + .box{background:var(--color-green);border-color:var(--color-green)}
.namer-area .sn-cell .sn-reuse input:checked + .box svg{opacity:1}
.namer-area .sn-cell .sn-reuse.on{color:var(--color-green)}
.namer-area .sn-cell.reused{background:rgba(0,180,42,.06);border-color:rgba(0,180,42,.28)}
.namer-area .sn-cell.reused .sn-inp{color:var(--color-fg3)}

/* 单据：复用名称芯片标记 */
.spec-chip.ru{color:var(--color-green);background:rgba(0,180,42,.08);border-color:rgba(0,180,42,.35)}
.spec-chip.ru .ruem{font-style:normal;font-size:9px;font-weight:700;color:var(--color-green);margin-left:2px}
.doc-mobile .m-chip.ru{color:var(--color-green);background:rgba(0,180,42,.08);border-color:rgba(0,180,42,.35)}

/* ───────── 右侧汇总：层级树（型号 → 模块 → 子项） ───────── */
.sg-model{border-bottom:6px solid #F0F2F6}
.sg-model:last-child{border-bottom:none}
.sg-mhead{display:flex;align-items:center;gap:8px;padding:11px 16px;cursor:pointer;background:var(--color-bg-offwhite);border-bottom:1px solid #EEF1F5;user-select:none;position:sticky;top:0;z-index:1}
.sg-mhead:hover{background:var(--color-tint-1)}
.sg-caret{color:var(--color-fg4);display:flex;transition:transform .2s;flex:none}
.sg-model.collapsed .sg-caret{transform:rotate(-90deg)}
.sg-model.collapsed .sg-mbody{display:none}
.sg-badge{width:20px;height:20px;border-radius:6px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--font-num);font-weight:700;font-size:11px;color:#fff;background:linear-gradient(135deg,var(--color-primary-mid),var(--color-primary))}
.sg-mname{flex:1;min-width:0;font-size:12.5px;font-weight:700;color:var(--color-fg1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sg-mtype{flex:none;font-size:10px;font-weight:600;color:var(--color-primary);background:#fff;border:1px solid var(--color-tint-3);border-radius:5px;padding:1px 6px}
.sg-mamt{flex:none;font-family:var(--font-num);font-weight:700;font-size:13px;color:var(--color-primary-dark)}
.sg-mbody{padding:4px 0}
.sg-mod{padding:5px 16px 5px 18px;border-left:2px solid transparent;margin:2px 0}
.sg-mod.cabin{border-left-color:var(--color-tint-3)}
.sg-mod.swap{border-left-color:var(--color-gold)}
.sg-modrow{display:flex;align-items:center;gap:8px}
.sg-modhead{flex:1;min-width:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.sg-modname{font-size:12.5px;font-weight:600;color:var(--color-fg1)}
.sg-modtag{font-size:9.5px;font-weight:700;color:var(--color-fg4);background:var(--color-bg-light);border-radius:4px;padding:1px 5px}
.sg-modtag.swap{color:var(--color-gold-dark);background:#FBF3E8}
.sg-modamt{flex:none;font-family:var(--font-num);font-weight:700;font-size:12.5px;color:var(--color-fg1)}
.sg-sub{display:flex;align-items:center;gap:8px;padding:3px 0 3px 12px;position:relative}
.sg-sub::before{content:"";position:absolute;left:2px;top:50%;width:5px;height:1px;background:var(--color-fg5)}
.sg-subname{flex:1;min-width:0;font-size:11.5px;color:var(--color-fg3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sg-subq{flex:none;font-family:var(--font-num);font-size:10.5px;color:var(--color-fg4)}
.sg-subamt{flex:none;font-family:var(--font-num);font-size:11.5px;color:var(--color-fg2);min-width:46px;text-align:right}
.sg-tag{font-size:10px;font-weight:600;color:var(--color-fg4)}
.sg-tag.inc{color:var(--color-gold-dark)}

.mobile-toolbar-primary,.mobile-toolbar-map,.mobile-toolbar-more,.mobile-summary-bar,
.mobile-tools-mask,.mobile-tools-menu,.mobile-summary-mask,.calc-dock,
.sn-note-toggle,.photo-mobile-menu{display:none}

/* ───────── 手机 Web：紧凑工具栏 + 单列录入 ───────── */
@media(max-width:768px){
  html,body{width:100%;max-width:100%;overflow-x:hidden}
  html{scroll-padding-bottom:calc(104px + env(safe-area-inset-bottom))}
  body{padding-bottom:calc(104px + env(safe-area-inset-bottom))}
  header.appbar{position:sticky;top:0}
  .appbar-inner{
    width:100%;max-width:none;padding:8px 54px 8px 9px;gap:7px;align-items:center;
  }
  .brand-group{width:100%;gap:7px}
  .ab-back{
    width:38px;height:38px;padding:0;justify-content:center;border-radius:10px;font-size:0;gap:0;
  }
  .ab-back svg{width:17px;height:17px}
  .brand{gap:7px;min-width:0}
  .brand img{width:30px;height:30px}
  .brand .b-cn{font-size:14px}
  .brand .b-sub{display:none}
  .appbar h1{
    min-width:0;flex:1;margin-left:1px;padding-left:8px;font-size:13px;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .build-badge{display:none}
  .appbar-actions{
    width:calc(100vw - 18px);max-width:none;margin:0;padding:2px 0 3px;
    flex-wrap:nowrap;justify-content:flex-start;overflow:visible;
  }
  .appbar-actions>#privacyToggle,.appbar-actions>#btnImport,.appbar-actions>#btnExportData,
  .appbar-actions>#btnSave,.appbar-actions>#btnClear{display:none}
  .mobile-toolbar-primary{
    display:flex;flex:1;min-width:0;min-height:44px;justify-content:center;border-radius:11px
  }
  .mobile-toolbar-map,.mobile-toolbar-more{
    display:flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;
    border:1px solid var(--color-tint-3);border-radius:11px;background:#fff;color:var(--color-primary);
    font:800 18px/1 var(--font-cn);cursor:pointer;box-shadow:var(--shadow-soft)
  }
  .mobile-toolbar-more{font-size:22px}

  .layout{display:flex;flex-direction:column;align-items:stretch;max-width:none;padding:14px 10px;gap:14px}
  .col-main{gap:13px}
  .section-head{align-items:flex-start;gap:4px;flex-direction:column}
  .section-head .t{font-size:18px}
  .section-head .hint{font-size:12px;line-height:1.5}
  .model{border-radius:13px}
  .model,[data-nav-kind="section"]{
    scroll-margin-top:calc(var(--appbar-h) + var(--calc-dock-h) + 8px);
    scroll-margin-bottom:calc(104px + env(safe-area-inset-bottom))
  }
  .model-bar{
    display:grid;grid-template-columns:34px minmax(0,1fr) 44px 44px;
    align-items:start;gap:8px;padding:13px 12px;
  }
  .model-badge{grid-column:1;grid-row:1;width:34px;height:34px}
  .model-titles{grid-column:2;grid-row:1;display:grid;grid-template-columns:1fr;gap:7px}
  .inp.brand-inp,.inp.name-inp{width:100%;min-height:42px;font-size:16px}
  .model-price{grid-column:2;grid-row:2;margin:0;align-items:flex-start;text-align:left}
  .model-price .p{font-size:18px}
  .model-price .h{font-size:12px}
  .model-bar>.icon-btn:nth-last-child(2){grid-column:3;grid-row:1}
  .model-bar>.icon-btn:last-child{grid-column:4;grid-row:1}
  .icon-btn{width:44px;height:44px;border-radius:10px}
  .icon-btn svg{width:18px;height:18px}
  .model-body{padding:0 12px 13px}
  .type-row{align-items:flex-start;flex-direction:column;gap:8px;padding:13px 0 5px}
  .seg{display:flex;width:100%}
  .seg button{flex:1;min-width:0;min-height:44px;padding:7px 8px;font-size:13px}
  .cfg-units{margin-top:12px;gap:12px}
  .cfg-grid{gap:7px}
  .cfg-item,.cfg-item.parent{
    display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px;
  }
  .cfg-item.parent{padding:11px}
  .ci-name{grid-column:1/-1;font-size:13.5px;line-height:1.5}
  .reuse{grid-column:1;min-height:44px}
  .reuse .box{width:20px;height:20px}
  .stepper{grid-column:2;min-height:44px}
  .stepper button{width:44px;height:44px}
  .stepper input{width:48px;height:44px;font-size:16px}
  .unit-children{padding-left:10px}
  .unit-children::before{left:2px}
  .named-child:has(.cfg-item[data-id="LOP_clr"]){margin-left:7px}
  .namer-area{padding:8px;margin-top:7px}
  .namer-area .sn-grid{gap:7px}
  .namer-area .sn-cell{
    display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;
    padding:9px;border-radius:13px;background:#fff;border-color:#E3E3E5;
  }
  .namer-area .sn-cell.is-std{background:#fff}
  .namer-area .sn-cell.reused{background:rgba(0,180,42,.05);border-color:rgba(0,180,42,.30)}
  .namer-area .sn-idx{
    grid-column:1;width:24px;height:24px;border-radius:7px;
    color:#5A606D;background:#EEF0F6;font-size:12px
  }
  .namer-area .sn-tag{grid-column:2/span 2;align-self:center;justify-self:start;font-size:10px;padding:2px 5px}
  .namer-area .sn-tag.std{color:#9096A5;background:#EEF0F6}
  .namer-area .sn-inp,.namer-area .sn-pick{
    min-height:38px;font-size:16px;font-weight:600;padding:5px 7px;grid-column:4/-1;
  }
  .namer-area .sn-cell:not(:has(> .sn-tag))>.sn-inp,
  .namer-area .sn-cell:not(:has(> .sn-tag))>.sn-pick{grid-column:2/-1}
  .namer-area .sn-pick-mini{width:40px;min-width:40px;z-index:1;padding:5px 2px}
  .namer-area .sn-pick-mini+.sn-inp{padding-left:47px}
  .namer-area .sn-note{
    display:none;grid-column:1/-1;grid-row:3;min-height:42px;font-size:16px;
    border:1px dashed #C6E1FF;border-radius:10px;padding:8px 10px;background:#F8FBFF
  }
  .namer-area .sn-cell.note-open .sn-note,.namer-area .sn-cell.has-note .sn-note{display:block}
  .namer-area .sn-cell>.sn-reuse{grid-column:1/span 3}
  .namer-area .sn-cell>.sn-share{grid-column:4/span 3}
  .namer-area .sn-cell>.photo-slot{grid-column:7/span 3}
  .namer-area .sn-cell>.sn-note-toggle{grid-column:10/span 3}
  .namer-area .sn-cell:not(:has(> .sn-reuse))>.sn-share{grid-column:1/span 4}
  .namer-area .sn-cell:not(:has(> .sn-reuse))>.photo-slot{grid-column:5/span 4}
  .namer-area .sn-cell:not(:has(> .sn-reuse))>.sn-note-toggle{grid-column:9/span 4}
  .namer-area .sn-cell>.sn-share,.namer-area .sn-cell>.sn-reuse,
  .namer-area .sn-cell>.photo-slot,.namer-area .sn-cell>.sn-note-toggle{
    grid-row:2;min-width:0;min-height:44px;height:44px;border-radius:10px
  }
  .namer-area .sn-cell>.sn-share,.namer-area .sn-cell>.sn-reuse,.namer-area .sn-cell>.sn-note-toggle{
    display:flex;align-items:center;justify-content:center;padding:0 4px;
    border:1px solid #E3E3E5;background:#fff;color:#9096A5;
    font:700 12.5px/1 var(--font-cn);white-space:nowrap;cursor:pointer
  }
  .namer-area .sn-cell>.sn-share .box,.namer-area .sn-cell>.sn-reuse .box{display:none}
  .namer-area .sn-cell>.sn-share.on{color:#2861AE;background:#F0F7FF;border-color:#8FBBEF}
  .namer-area .sn-cell>.sn-share.on::before{content:"✓ "}
  .namer-area .sn-cell>.sn-reuse.on{color:#075C3E;background:#E5F5EE;border-color:#9BD4AE}
  .namer-area .sn-cell>.sn-reuse.on::before{content:"✓ "}
  .namer-area .sn-cell>.sn-note-toggle{border-style:dashed;border-color:#C6CBD8}
  .namer-area .sn-cell>.sn-note-toggle.on{
    color:#2861AE;background:#F0F7FF;border-color:#8FBBEF
  }
  .namer-area .sn-cell>.photo-slot{
    position:relative;display:flex;align-items:center;justify-content:center;gap:0;
    padding:1px;border:1px solid #E3C9A4;background:#fff;color:#B58953;flex-wrap:nowrap
  }
  .namer-area .sn-cell>.photo-slot .photo-desktop-action{display:none}
  .namer-area .sn-cell>.photo-slot .photo-btn,.namer-area .sn-cell>.photo-slot .photo-thumb{
    min-width:0;height:44px;border:0;background:transparent;color:#B58953;
    padding:0 3px;border-radius:8px;font-size:12px;overflow:hidden
  }
  .namer-area .sn-cell>.photo-slot .photo-btn{flex:1;width:100%}
  .namer-area .sn-cell>.photo-slot .photo-thumb{position:relative;flex:0 0 40px;width:40px;padding:0}
  .namer-area .sn-cell>.photo-slot .photo-thumb img{width:40px;height:40px;border-radius:8px}
  .namer-area .sn-cell>.photo-slot:has(.photo-status.ok) .photo-thumb::after{
    content:"已上传";position:absolute;left:1px;right:1px;bottom:1px;padding:1px 0;
    border-radius:0 0 7px 7px;background:rgba(92,62,28,.72);color:#fff;font-size:8px;line-height:1
  }
  .namer-area .sn-cell>.photo-slot:has(.photo-status.pending) .photo-thumb::after,
  .namer-area .sn-cell>.photo-slot:has(.photo-status.error) .photo-thumb::after{
    position:absolute;left:1px;right:1px;bottom:1px;padding:1px 0;border-radius:0 0 7px 7px;
    color:#fff;font-size:8px;line-height:1
  }
  .namer-area .sn-cell>.photo-slot:has(.photo-status.pending) .photo-thumb::after{content:"上传中";background:rgba(92,62,28,.72)}
  .namer-area .sn-cell>.photo-slot:has(.photo-status.error) .photo-thumb::after{content:"待重试";background:rgba(163,59,50,.82)}
  .namer-area .sn-cell>.photo-slot .photo-status{
    min-width:0;max-width:none;flex:1;font-size:10px;color:#B58953;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap
  }
  .namer-area .sn-cell>.photo-slot .photo-status.ok,.namer-area .sn-cell>.photo-slot .photo-status.pending{
    color:#B58953;font-weight:700
  }
  .namer-area .sn-cell>.photo-slot:not(.is-unavailable):not(:has(.photo-thumb)):not(:has(.photo-mobile-menu)) .photo-status{display:none}
  .namer-area .sn-cell>.photo-slot .photo-unlink{width:44px;height:44px}
  .namer-area .sn-cell>.photo-slot:has(.photo-thumb),.namer-area .sn-cell>.photo-slot.is-busy{background:#FBF3E8}
  .photo-mobile-menu{display:block;position:relative;flex:0 0 24px}
  .photo-mobile-menu summary{
    list-style:none;width:24px;height:44px;display:flex;align-items:center;justify-content:center;
    color:#8A6336;font-size:18px;font-weight:800;cursor:pointer
  }
  .photo-mobile-menu summary::-webkit-details-marker{display:none}
  .photo-mobile-pop{
    position:absolute;right:-3px;bottom:42px;z-index:8;display:flex;gap:5px;padding:6px;
    border:1px solid #E3C9A4;border-radius:10px;background:#fff;box-shadow:0 8px 24px rgba(8,42,81,.18)
  }
  .photo-mobile-pop .photo-btn,.photo-mobile-pop .photo-unlink{
    min-width:44px!important;width:auto!important;height:44px!important;padding:0 9px!important;
    border:1px solid #E3C9A4!important;background:#FBF3E8!important;color:#8A6336!important
  }
  .photo-mobile-pop .photo-unlink{color:#A33B32!important}
  .namer-area .sn-cell>.photo-slot:has(.photo-btn:disabled){opacity:.42}
  .brand-carry-wrap{position:relative;width:100%!important}
  .brand-carry-wrap .brand-inp{padding-right:88px}
  .brand-carry-badge{
    position:absolute;right:7px;top:50%;transform:translateY(-50%);pointer-events:none;
    border:1px solid #C6E1FF;border-radius:999px;background:#fff;color:#2861AE;
    padding:2px 6px;font-size:10px;font-weight:700;white-space:nowrap
  }
  .size-mod .sm-bar{min-height:48px;padding:9px 10px}
  .size-mod .sm-body{padding:2px 9px 10px}
  .size-row{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:6px;padding:8px}
  .size-row .sz-fields{grid-column:1/-1;width:100%}
  .size-row .sz-in{min-height:44px;font-size:16px}
  .size-row .sz-del{width:44px;height:44px}
  .add-model{min-height:52px;border-radius:13px;padding:13px;font-size:14px}

  .summary{display:none}
  .sum-total{border-radius:13px;padding:18px}
  .sum-total .total-price{font-size:34px}
  .sum-detail{border-radius:13px}
  .sd-list{max-height:none}
  .sd-row{padding:10px 12px;gap:7px}
  .sd-row .a{width:auto}
  .sd-row .hr{width:auto}

  .export-wrap{max-width:none;margin:0;padding:0 10px}
  .export-card{border-radius:13px}
  .export-card .ec-head{padding:15px;align-items:flex-start;flex-direction:column;gap:3px}
  .export-card .ec-head .t{font-size:16px}
  .export-col{padding:16px 14px}
  .form-row{grid-template-columns:1fr;gap:6px;margin-bottom:13px}
  .form-row .inp,.serial-wrap .serial-in,textarea.inp{font-size:16px;min-height:42px}
  .export-bar{padding:14px;align-items:stretch;gap:12px}
  .export-bar .grp{width:100%;align-items:flex-start;flex-direction:column;gap:6px}
  .export-bar .seg,.export-bar .fmt-seg{width:100%;display:flex}
  .export-bar .seg button,.export-bar .fmt-seg button{flex:1;min-height:44px;padding:7px 8px}
  .fx-chip{max-width:100%;flex-wrap:wrap}
  .fx-chip .fx-in{font-size:16px;min-height:38px}
  .fx-chip .fx-reset{width:44px;height:44px}
  .export-bar .spacer{display:none}
  #btnExport{width:100%;min-height:48px;justify-content:center}
  .doc-preview-wrap{padding:14px 8px;overflow:hidden}
  .doc-scale{transform-origin:top center}
  input,textarea,select,.inp,.cabin-name-inp,.swap-target,.cabin-note-fld .inp{
    font-size:16px;scroll-margin-top:calc(var(--appbar-h) + var(--calc-dock-h) + 8px);
    scroll-margin-bottom:calc(108px + env(safe-area-inset-bottom))
  }

  .calc-dock{
    position:sticky;top:var(--appbar-h);z-index:40;display:block;width:100%;
    pointer-events:none;color:var(--color-fg1)
  }
  .calc-dock.is-empty{display:none}
  .calc-dock-inner{
    pointer-events:auto;background:rgba(255,255,255,.97);border-bottom:1px solid var(--color-border);
    box-shadow:0 4px 18px rgba(13,55,121,.08);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)
  }
  .calc-dock-passed{overflow:visible}
  .calc-dock-passed-row{
    position:relative;display:flex;align-items:center;gap:7px;width:100%;height:44px;padding:0 10px;border:0;
    --state-fg:var(--color-fg4);--state-bg:var(--color-bg-light);--state-border:var(--color-border);
    background:transparent;color:var(--state-fg);font-family:var(--font-cn);text-align:left;cursor:pointer
  }
  .calc-dock-passed-row::before{
    content:"";position:absolute;z-index:0;inset:7px 0;
    border-bottom:1px solid var(--state-border);background:var(--state-bg)
  }
  .calc-dock-passed-row > *{position:relative;z-index:1}
  .calc-dock-passed-row:focus-visible{z-index:2;outline:2px solid var(--color-primary);outline-offset:-2px}
  .state-done{--state-fg:var(--color-green-dark);--state-bg:var(--color-green-soft);--state-border:var(--color-green-border)}
  .state-partial{--state-fg:var(--color-warning-dark);--state-bg:var(--color-warning-soft);--state-border:var(--color-warning-border)}
  .state-empty{--state-fg:var(--color-primary);--state-bg:var(--color-tint-1);--state-border:var(--color-tint-3)}
  .state-disabled{--state-fg:var(--color-fg3);--state-bg:var(--color-bg-light);--state-border:var(--color-border)}
  .calc-dock-passed-row.agg::before{background:var(--state-bg)}
  .calc-dock-passed-glyph{
    display:inline-flex;align-items:center;justify-content:center;flex:0 0 18px;width:18px;height:18px;
    border-radius:5px;background:var(--state-fg);color:#fff;font:800 9.5px var(--font-num)
  }
  .calc-dock-passed-name{
    flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-size:11.5px;font-weight:800
  }
  .calc-dock-passed-stat{flex:none;white-space:nowrap;font:700 10.5px var(--font-num);color:var(--state-fg)}
  .calc-dock-row{display:flex;align-items:center;gap:8px;height:46px;padding:0 10px;overflow:hidden}
  .calc-dock-row.section{
    height:0;padding-top:0;padding-bottom:0;border-top:0 solid transparent;background:var(--color-tint-1);
    opacity:0;transition:height .22s ease,opacity .18s ease,border-width .22s ease
  }
  .calc-dock-row.section.on{height:40px;border-top-width:1px;border-top-color:var(--color-border);opacity:1}
  .calc-dock-glyph{
    display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;width:24px;height:24px;
    border-radius:7px;background:var(--color-primary);color:#fff;font:800 11px var(--font-num)
  }
  .calc-dock-row.section .calc-dock-glyph{width:20px;height:20px;flex-basis:20px;background:var(--color-gold-dark);font-size:10px}
  .calc-dock-title{
    flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-size:13px;font-weight:800
  }
  .calc-dock-title small{margin-left:5px;color:var(--color-fg4);font-size:10.5px;font-weight:600}
  .calc-dock-progress{flex:0 0 48px;width:48px;height:5px;border-radius:99px;background:#E0E8F2;overflow:hidden}
  .calc-dock-progress i{display:block;height:100%;border-radius:inherit;background:var(--color-primary);transition:width .2s}
  .calc-dock-count,.calc-dock-amount{flex:none;white-space:nowrap;font:700 10.5px var(--font-num);color:var(--color-fg4)}
  .calc-dock-count{color:var(--color-primary)}
  .calc-dock-map{
    display:inline-flex;align-items:center;justify-content:center;flex:0 0 44px;width:44px;height:44px;
    margin-left:1px;border:0;border-radius:10px;background:var(--color-tint-1);color:var(--color-primary);
    font:800 17px/1 var(--font-cn);cursor:pointer
  }
  body.calc-dock-compact .calc-dock-passed,body.calc-dock-compact .calc-dock-row.section{display:none}

  .mobile-summary-bar{
    position:fixed;left:0;right:0;bottom:0;z-index:120;display:flex;align-items:center;gap:12px;
    min-height:70px;padding:10px 10px calc(10px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.97);border-top:1px solid var(--color-border);
    box-shadow:0 -8px 28px rgba(13,55,121,.16);backdrop-filter:blur(14px)
  }
  .mobile-summary-price{display:flex;align-items:baseline;min-width:0;color:var(--color-primary-dark)}
  .mobile-summary-price small{font:700 14px var(--font-num)}
  .mobile-summary-price strong{font:800 22px var(--font-num);white-space:nowrap}
  .mobile-summary-hours{font:600 12px var(--font-num);color:var(--color-fg4);white-space:nowrap}
  .mobile-summary-detail{
    margin-left:auto;min-width:76px;min-height:44px;border:0;border-radius:10px;background:var(--color-primary);
    color:#fff;font:700 13px var(--font-cn);cursor:pointer
  }
  .mobile-tools-mask{
    position:fixed;inset:0;z-index:150;background:rgba(13,30,60,.18)
  }
  .mobile-tools-menu{
    position:fixed;z-index:151;top:96px;right:10px;width:min(84vw,300px);padding:7px;
    border:1px solid var(--color-tint-3);border-radius:14px;background:#fff;box-shadow:var(--shadow-pop)
  }
  body.mobile-tools-open .mobile-tools-mask,body.mobile-tools-open .mobile-tools-menu{display:block}
  .mobile-tools-item{
    display:flex;align-items:center;width:100%;min-height:48px;padding:10px 12px;border:0;border-radius:9px;
    background:#fff;color:var(--color-fg2);font:600 14px var(--font-cn);text-align:left;cursor:pointer
  }
  .mobile-tools-item:hover{background:var(--color-tint-1)}
  .mobile-tools-item.danger{color:#c0392b}
  .mobile-tools-item:disabled{opacity:.42;cursor:not-allowed}
  .mobile-tools-item.is-disabled{color:var(--color-fg5)}
  .mobile-summary-mask{
    position:fixed;inset:0;z-index:220;align-items:flex-end;justify-content:center;
    padding:0;background:rgba(10,28,58,.48);backdrop-filter:blur(2px)
  }
  body.mobile-sheet-open{overflow:hidden}
  body.mobile-sheet-open .mobile-summary-mask{display:flex}
  .mobile-summary-sheet{
    width:100%;max-height:min(82dvh,760px);display:flex;flex-direction:column;background:#fff;
    border-radius:18px 18px 0 0;box-shadow:0 -20px 54px rgba(13,55,121,.24);
    padding-bottom:env(safe-area-inset-bottom)
  }
  .mobile-summary-head{
    display:flex;align-items:center;gap:10px;padding:12px 12px 10px 16px;border-bottom:1px solid var(--color-border)
  }
  .mobile-summary-head strong{font-size:16px;color:var(--color-fg1)}
  .mobile-summary-head span{font-size:11.5px;color:var(--color-fg4)}
  .mobile-summary-close{
    margin-left:auto;width:44px;height:44px;border:0;border-radius:10px;background:var(--color-bg-light);
    color:var(--color-fg3);font-size:23px;cursor:pointer
  }
  .mobile-summary-body{padding:12px;overflow:auto;overscroll-behavior:contain}
  .mobile-sheet-view{display:none}
  .mobile-summary-sheet[data-mode="summary"] #mobileSummaryView,
  .mobile-summary-sheet[data-mode="minimap"] #mobileMinimap{display:block}
  .mobile-summary-body .mobile-summary-clone{display:flex;flex-direction:column;gap:12px}
  .mobile-summary-body .sd-list{max-height:none}
  .mobile-summary-body .sum-total{padding:18px}
  .mobile-minimap-empty{
    padding:28px 16px;text-align:center;color:var(--color-fg4);font-size:13px;line-height:1.7
  }
  .minimap-tree{display:flex;flex-direction:column;gap:10px}
  .minimap-model{
    --state-fg:var(--color-fg4);--state-bg:var(--color-bg-light);--state-border:var(--color-border);
    border:1px solid var(--state-border);border-radius:13px;background:#fff;overflow:hidden
  }
  .minimap-node-row{display:flex;align-items:stretch;min-width:0}
  .minimap-jump{
    display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:8px;
    flex:1;min-width:0;min-height:48px;padding:8px 10px;border:0;background:transparent;color:var(--color-fg1);
    font-family:var(--font-cn);text-align:left;cursor:pointer
  }
  .minimap-dot{width:10px;height:10px;border-radius:50%;background:var(--state-fg);box-shadow:0 0 0 3px var(--state-bg)}
  .minimap-main{min-width:0}
  .minimap-name-line{display:flex;align-items:center;gap:6px;min-width:0}
  .minimap-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800}
  .minimap-type{flex:none;font-size:10px;color:var(--color-fg4)}
  .minimap-current{flex:none;border-radius:99px;padding:2px 6px;background:var(--color-primary);color:#fff;font-size:9.5px;font-weight:800}
  .minimap-progress{height:5px;margin-top:6px;border-radius:99px;background:var(--color-bg-light);overflow:hidden}
  .minimap-progress i{display:block;height:100%;border-radius:inherit;background:var(--state-fg)}
  .minimap-meta{display:flex;align-items:center;gap:7px;margin-top:4px;color:var(--color-fg4);font:600 10.5px var(--font-num)}
  .minimap-status{color:var(--state-fg);font-family:var(--font-cn);font-weight:800}
  .minimap-amount{white-space:nowrap;color:var(--color-fg3);font:700 11px var(--font-num)}
  .minimap-toggle{
    flex:0 0 44px;width:44px;border:0;border-left:1px solid var(--state-border);
    background:var(--state-bg);color:var(--state-fg);font-size:15px;cursor:pointer
  }
  .minimap-model.is-collapsed>.minimap-children{display:none}
  .minimap-model.is-collapsed .minimap-toggle{transform:rotate(-90deg)}
  .minimap-children{padding:0 8px 9px 22px}
  .minimap-section{
    --state-fg:var(--color-fg4);--state-bg:var(--color-bg-light);--state-border:var(--color-border);
    margin-top:7px;border-left:2px solid var(--state-border);background:var(--state-bg);border-radius:0 10px 10px 0
  }
  .minimap-section>.minimap-node-row .minimap-jump{min-height:46px}
  .minimap-groups{padding:0 7px 7px 24px}
  .minimap-group{
    --state-fg:var(--color-fg4);--state-bg:var(--color-bg-light);--state-border:var(--color-border);
    border-top:1px dashed var(--state-border)
  }
  .minimap-group .minimap-jump{min-height:44px;padding:7px 5px;grid-template-columns:10px minmax(0,1fr) auto}
  .minimap-group .minimap-name{font-size:12px;font-weight:700}
  .minimap-group .minimap-meta{margin-top:2px}
  .minimap-model.state-done,.minimap-section.state-done,.minimap-group.state-done{
    --state-fg:var(--color-green-dark);--state-bg:var(--color-green-soft);--state-border:var(--color-green-border)
  }
  .minimap-model.state-partial,.minimap-section.state-partial,.minimap-group.state-partial{
    --state-fg:var(--color-warning-dark);--state-bg:var(--color-warning-soft);--state-border:var(--color-warning-border)
  }
  .minimap-model.state-empty,.minimap-section.state-empty,.minimap-group.state-empty{
    --state-fg:var(--color-primary);--state-bg:var(--color-tint-1);--state-border:var(--color-tint-3)
  }
  .minimap-model.state-disabled,.minimap-section.state-disabled,.minimap-group.state-disabled{
    --state-fg:var(--color-fg3);--state-bg:var(--color-bg-light);--state-border:var(--color-border)
  }
  .minimap-jump:focus-visible,.minimap-toggle:focus-visible,.calc-dock-map:focus-visible,.mobile-toolbar-map:focus-visible{
    outline:2px solid var(--color-primary);outline-offset:-2px
  }
  .minimap-jump-highlight{animation:minimap-title-highlight 1.2s ease}
  @keyframes minimap-title-highlight{
    0%,100%{box-shadow:none;background:transparent}
    20%,72%{box-shadow:0 0 0 3px var(--color-tint-3);background:var(--color-tint-1)}
  }

  /* ══ 磁吸-3 可撤回增强层：组完成高亮 / 延迟收纳 / 飞入胶囊 ══ */
  .completion-fold-root{position:relative}
  .completion-fold-root.completion-fold-flash{
    animation:completion-fold-flash 1s ease both
  }
  @keyframes completion-fold-flash{
    0%,100%{box-shadow:none}
    22%,74%{box-shadow:0 0 0 3px var(--color-green-border),0 8px 22px rgba(7,92,62,.12)}
  }
  .completion-fold-root.completion-fold-collapsed{
    height:44px!important;min-height:44px!important;max-height:44px!important;
    overflow:hidden!important
  }
  .completion-fold-root.completion-fold-collapsed>:not(.completion-fold-summary){
    opacity:0!important;pointer-events:none!important
  }
  .completion-fold-summary{
    position:absolute;z-index:3;inset:0;display:flex;align-items:center;gap:8px;width:100%;
    min-height:44px;padding:0 11px;border:1px solid var(--color-green-border);border-radius:10px;
    background:var(--color-green-soft);color:var(--color-green-dark);font-family:var(--font-cn);
    text-align:left;cursor:pointer
  }
  .completion-fold-summary[hidden]{display:none}
  .completion-fold-summary-name{
    flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-size:12px;font-weight:800
  }
  .completion-fold-summary-state{
    flex:none;white-space:nowrap;font-size:10.5px;font-weight:800
  }
  .completion-fold-summary-amount{
    flex:none;white-space:nowrap;color:var(--color-fg3);font:700 11px var(--font-num)
  }
  .completion-fold-fly{
    position:fixed;z-index:121;display:flex;align-items:center;justify-content:center;
    min-height:30px;padding:6px 11px;border:1px solid var(--color-green-border);border-radius:99px;
    background:var(--color-green-soft);box-shadow:0 8px 24px rgba(7,92,62,.18);
    color:var(--color-green-dark);font:800 11px/1 var(--font-cn);white-space:nowrap;
    pointer-events:none;will-change:transform,opacity
  }
  #toast{z-index:260;bottom:calc(82px + env(safe-area-inset-bottom))}
}
@media(max-width:768px) and (prefers-reduced-motion:reduce){
  .completion-fold-root.completion-fold-flash{
    animation:none;box-shadow:0 0 0 2px var(--color-green-border)
  }
}
@media(max-width:768px) and (orientation:landscape){
  .calc-dock-passed,.calc-dock-row.section{display:none}
}

/* 入口差异只控制外壳，不另写计价或编辑规则。 */
body[data-calculator-mode="embed"] #abBack{display:none}
