/* 通用概预算系统：在 general/style.css 之上补充 */
#toast.show{display:block}
.mono{font:11px var(--mono);letter-spacing:2px;color:var(--acc)}
.modehead{margin:6px 0 14px;padding:22px 26px;border-radius:14px;background:linear-gradient(120deg,#1f1f1e,#2e3033);color:#fff}
.modehead .mono{color:#e09a57}
.modehead h2{font-size:26px;margin:6px 0 6px;color:#fff}
.modehead p{margin:0;color:#b9bdc2;font-size:13px}
.modepick{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:0 0 26px}
.modecard{position:relative;text-align:left;padding:34px 30px 26px;border-radius:16px;background:var(--panel);border:2px solid var(--line);display:flex;flex-direction:column;gap:4px;overflow:hidden;box-shadow:0 6px 22px rgba(31,31,30,.08);transition:transform .15s,border-color .15s,box-shadow .15s}
.modecard:before{content:'';position:absolute;left:0;right:0;top:0;height:6px;background:var(--acc)}
.modecard[data-v=budget]:before{background:#287455}
.modecard:hover{transform:translateY(-2px);border-color:var(--acc);box-shadow:0 12px 30px rgba(31,31,30,.14)}
.modecard[data-v=budget]:hover{border-color:#287455}
.modecard h2{font-size:30px;margin:8px 0 10px}
.modecard p{color:var(--muted);font-size:13.5px}
.modecard ul{margin:0 0 16px;padding-left:18px;font-size:13px}
.modego{margin-top:auto;align-self:flex-start;padding:10px 18px;border-radius:9px;background:var(--text);color:#fff;font-weight:600;font-size:14px}
.modecard.on{border-color:var(--acc);background:#fffaf5;box-shadow:0 0 0 4px var(--soft),0 10px 28px rgba(209,125,51,.18)}
.modecard[data-v=budget].on{border-color:#287455;background:#f0f8f3;box-shadow:0 0 0 4px #dcefe4,0 10px 28px rgba(40,116,85,.16)}
.modecard.on .modego{background:var(--acc)}
.modecard[data-v=budget].on .modego{background:#287455}
.modecard.on .mono:after{content:'  · 当前';color:var(--acc)}
.flow{padding-left:20px;font-size:13px}.flow li{margin:6px 0}
.btnlike{display:inline-block;border:1px solid var(--line);border-radius:8px;padding:9px 14px;background:var(--panel);cursor:pointer;color:var(--text);font-size:14px;margin:8px 0 0}
.btnlike:hover{border-color:var(--acc)}
.tbl{width:100%;border-collapse:collapse;font-size:13px;margin:10px 0}
.tbl th,.tbl td{border-bottom:1px solid var(--line);padding:7px 8px;text-align:left;vertical-align:top}
.tbl th{font-weight:600;color:var(--muted);font-size:12px}
.tbl .r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl tr.sum td{font-weight:700;background:#f7f7f6}
.basis{display:inline-block;font-size:10px;padding:1px 6px;border-radius:99px;margin-left:4px;background:#eee;color:#555}
.b-labeled,.b-elevation,.b-dimension{background:#e2eee7;color:var(--ok)}
.b-derived{background:#f4f4f2;color:#7a5a1d}
.b-estimated{background:#f8e4df;color:var(--danger)}
.b-manual{background:#e3e8f4;color:#2c4a86}
.badge-warn{background:#fbeccd;color:#b45309}
.discrow{display:flex;gap:8px;align-items:center;margin:6px 0}
.discrow label{margin:0;flex:1;color:var(--text);font-size:13px}
.discrow select,.discrow input[type=number]{max-width:110px}
.libgrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin:18px 0}
.libgrid .panel{margin:0;padding:18px}
.stats b{font:600 17px/1.35 var(--body);font-variant-numeric:tabular-nums;color:var(--text);letter-spacing:0}
.stats{gap:28px;padding:12px 0}
.advset>summary{cursor:pointer;padding:2px 0}
@media(max-width:1050px){.libgrid{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.modepick{grid-template-columns:1fr}.modecard h2{font-size:24px}.modehead h2{font-size:21px}.libgrid{grid-template-columns:1fr}.tbl{font-size:12px}.discrow{flex-wrap:wrap}}

/* 空间概括占比条、按面计入 */
.bar{display:inline-block;width:110px;height:8px;border-radius:9px;background:#ebebe9;vertical-align:middle;overflow:hidden}.bar i{display:block;height:100%;background:var(--acc)}
.offrow{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;margin:0 0 6px}.offrow label{margin:0;color:var(--text);font-size:12px}
.b-scaled{background:#fbeccd;color:#b45309}.b-measured{background:#e3e8f4;color:#2c4a86}
details.panel>summary{cursor:pointer;list-style-position:outside}details.panel>summary+*{margin-top:12px}
/* 答疑栏：页面底部的 CLI 式对话框 */
.main{padding-bottom:56px}
.qa{position:fixed;left:236px;right:0;bottom:0;z-index:40;background:#1f1f1e;color:#e6e6e4;font:13px/1.6 var(--mono),"Microsoft YaHei",sans-serif;box-shadow:0 -8px 30px rgba(0,0,0,.25);border-top:2px solid var(--acc)}
.qahead{display:flex;gap:12px;align-items:center;padding:10px 20px;cursor:pointer;user-select:none}.qahead b{color:#fff;letter-spacing:1px}.qamuted{color:#9b9fa6;font-size:12px}.qatog{margin-left:auto;color:#e09a57}
.qadot{width:9px;height:9px;border-radius:50%;background:#d17d33;box-shadow:0 0 0 3px rgba(209,125,51,.25)}.qadot.ok{background:#4caf7d;box-shadow:0 0 0 3px rgba(76,175,125,.25)}
.qabody{display:none;max-height:34vh;overflow:auto;padding:4px 20px 14px}.qa.open .qabody{display:block}
.qaitem{padding:10px 0;border-bottom:1px dashed #34363a}.qaq{color:#fff}.qano{color:#e09a57;margin-right:4px}.qad{color:#9b9fa6;font-size:12px;margin:3px 0}
.qaopts{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;align-items:center}.qaopts button{background:#2a2b2e;border-color:#3a3c40;color:#eee;font-size:12px;padding:5px 10px}.qaopts button:hover{border-color:var(--acc);color:#fff}
.qaopts input,.qaprompt input{background:#18181a;border:1px solid #3a3c40;color:#eee;font:12px var(--mono),"Microsoft YaHei",sans-serif;padding:6px 9px;max-width:420px}
.qadone summary{cursor:pointer;color:#9b9fa6;margin:8px 0}.qalink{background:none;border:0;color:#e09a57;padding:0 4px;font-size:12px}
.qacli{margin-top:10px;border-top:1px solid #34363a;padding-top:8px}.qamsg{margin:6px 0}.qaa{color:#cfe8d9;white-space:pre-wrap;margin-left:14px}.qap{color:#4caf7d;margin-right:6px;font-weight:700}
.qaprompt{display:flex;align-items:center;gap:4px}.qaprompt input{max-width:none;flex:1}
.qaact{font-size:11px;padding:2px 8px;border-radius:99px;background:#343b35;color:#cfe8d9}.qaact.done{opacity:.5;text-decoration:line-through}
/* 测量工具 */
.mtwrap{position:fixed;inset:0;z-index:60;background:rgba(31,31,30,.55);display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:24px}
.mtbox{background:var(--panel);border-radius:12px;padding:18px 20px;max-width:calc(100vw - 48px)}.mtcanvas{overflow:auto;max-height:68vh;border:1px solid var(--line);margin-top:6px;background:#fff}.mtcanvas canvas{display:block;cursor:crosshair}
@media(max-width:1050px){.qa{left:190px}}@media(max-width:700px){.qa{left:0}.qamuted{display:none}}
@media print{.qa,.mtwrap{display:none!important}}

/* 打印成果（A4，汉字用系统字体） */
@media print{
  @page{size:A4 portrait;margin:12mm 10mm}
  @page land{size:A4 landscape;margin:10mm}
  body{font-family:"Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif;color:#111}
  #app{display:none!important}
  .rp{page-break-after:always;font-size:10pt;line-height:1.7}
  .rp{position:relative}.rp .wmark{position:absolute;left:0;right:0;top:38%;text-align:center;font-size:72pt;font-weight:700;letter-spacing:12pt;color:rgba(207,34,46,.10);transform:rotate(-24deg);pointer-events:none;z-index:0}
  .rp:last-child{page-break-after:auto}
  .rp.land{page:land}
  .rp h2{text-align:center;font-size:16pt;margin:0 0 8px;letter-spacing:2px}
  .rp h3{font-size:11pt;margin:10px 0 4px}
  .rp p{margin:0 0 6px;text-indent:2em;text-align:justify}
  .rp p.r{text-align:right;text-indent:0}
  .cover{height:260mm;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
  .cover .c1{font-size:22pt;font-weight:700;margin-bottom:18mm}
  .cover .c2{font-size:30pt;font-weight:700;letter-spacing:8px;margin-bottom:60mm}
  .cover .c4{font-size:12pt;color:#cf222e;border:1.5px solid #cf222e;padding:4mm 8mm;margin:-45mm 0 30mm}
  .cover .c3{font-size:13pt;line-height:2.2}
  .sign table.kv{width:80%;margin:20mm auto;border-collapse:collapse;font-size:12pt}
  .sign .kv td{border-bottom:1px solid #999;padding:9px 6px}
  .sign .kv td:first-child{width:28%;color:#333}
  .meta{display:flex;justify-content:space-between;font-size:9pt;margin:4px 0}
  table.rtab{width:100%;border-collapse:collapse;table-layout:auto;font-size:8.5pt}
  table.rtab th,table.rtab td{border:1px solid #444;padding:3px 5px;vertical-align:middle;overflow-wrap:anywhere}
  table.rtab th{background:#eee;font-weight:700;text-align:center}
  table.rtab td.r{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
  table.rtab tr.b td{font-weight:700;background:#f5f5f5}
  table.rtab thead{display:table-header-group}
  table.rtab tr{break-inside:avoid}
  table.rtab td.nw{white-space:nowrap}
  .signline{margin-top:6px;font-size:9pt}
}

/* v0.3 国家规范标准格式 · 地区必选 */
.mustpick{border:2px solid #cf222e;box-shadow:0 0 0 4px rgba(207,34,46,.08)}
.kvt th{text-align:left;vertical-align:top;background:transparent}.kvt td{vertical-align:top}
.tscroll{overflow-x:auto}
@media print{
  .rp ol.rl,.rp ul.rl{margin:2px 0 8px 2.2em;padding:0}.rp ol.rl li,.rp ul.rl li{margin:1px 0}
  .rp ul.ck{list-style:none;margin-left:1em}
  .rp h3.tt{text-align:center;font-size:12pt;margin:10px 0 2px}
  table.rtab th{white-space:nowrap;word-break:keep-all;overflow-wrap:normal}
  .rp p.tnote{text-indent:0;font-size:9pt;margin-top:4px}
  .rp p.muted{color:#555;text-indent:0;font-size:9pt}
  .rp ol.toc{font-size:12pt;line-height:2.1;margin:10mm 0 0 20mm}
  .cover .c3 b{font-weight:400}
}
.qaact.blocked{background:#4a2b27;color:#f3c6bd}
.qathought{margin:2px 0 2px 14px;color:#9b9fa6;font-size:12px}.qathought summary{cursor:pointer;color:#e09a57}.qathought[open]{white-space:pre-wrap}

/* 红黄绿可信度条（不确定性台账） */
.trustbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 4px}.trustbar>span:not(.tiny){font:600 13px var(--mono,monospace);padding:3px 10px;border-radius:999px}
.trustbar .tg{background:#dff3e8;color:#1e7a4b}.trustbar .ty{background:#fdf3d0;color:#8a6100}.trustbar .tr{background:#fbe4e4;color:#b42318}
.redlist ul{margin:4px 0 6px 1.2em;padding:0}.redlist li{margin:2px 0}

/* 同济常规格式（设计院概预算书，广联达出表样式）：扉页 / 签署页 / 表头“工程名称 + 单位”/ 表尾“编制人、审核人” */
@media print{
  .rp.tjfly{min-height:250mm;padding:40mm 18mm 0}
  .rp .tjbig{text-align:center;font-size:24pt;font-weight:700;letter-spacing:6px;margin:0 0 28mm}
  .rp p.tjline{text-indent:0;font-size:14pt;line-height:2.4;margin:0}
  .rp p.tjline.c{text-align:center;margin-top:10mm}
  .rp .tjgap{height:18mm}
  .rp p.tjp{text-indent:2em;font-size:11pt;line-height:2;margin:0}
  .rp p.tjp.sub{text-indent:4em}
  .rp h2.tjt{text-align:center;font-size:20pt;letter-spacing:8px;margin:0 0 6px}
  .rp .tjmeta{display:flex;justify-content:space-between;font-size:9.5pt;margin:0 0 2px}
  .rp table.tj{width:100%;border-collapse:collapse;font-size:9pt}
  .rp table.tj th,.rp table.tj td{border:1px solid #000;padding:2px 4px;vertical-align:middle}
  .rp table.tj th{font-weight:400;text-align:center}
  .rp table.tj td.r{text-align:right;white-space:nowrap}
  .rp table.tj tr.sub td{color:#333;font-size:.92em}
  .rp table.tj tr.sub td:nth-child(2){text-align:center}
  .rp table.tj tr.b td{font-weight:700}
  .rp p.tjsig{display:flex;justify-content:space-between;text-indent:0;font-size:9.5pt;margin-top:4px;padding:0 20mm 0 0}
}

/* v0.8 · 8 分项入口与深度闸门 */
.slotgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:8px}
@media (max-width:1100px){.slotgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.slotgrid{grid-template-columns:1fr}}
.slotcard{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--panel);display:flex;flex-direction:column;gap:4px;min-width:0}
.slotcard.dragover,.slotcard:hover{border-color:#e8590c}
.slothead{display:flex;justify-content:space-between;align-items:center;gap:6px}
.slotfs{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.slotfs input{width:72px}.slotfs select{max-width:130px;min-width:112px}
.slotsel{max-width:120px;font-size:12px;margin-right:6px}
.gbadge{display:inline-block;font-size:11.5px;line-height:1;padding:3px 7px;border-radius:999px;border:1px solid var(--line);white-space:nowrap}
.gbadge.g-pass{background:#e6f4ea;border-color:#9fd3ae;color:#1a7f37}
.gbadge.g-warn{background:#fff4e5;border-color:#f2c48d;color:#9a5b00}
.gbadge.g-fail{background:#ffebe9;border-color:#f5a3a3;color:#cf222e}
.gbadge.g-empty{color:var(--muted)}
.covgap{margin:10px 0;padding:10px 12px;border:1px solid #f2c48d;border-radius:10px;background:#fffaf2;line-height:1.7}
.covgap .tiny{margin:2px 0}
.gatepanel details{margin-top:8px}.gatepanel summary{cursor:pointer}
/* v0.8.3：左侧栏固定——内容区随页面下滑，侧栏不动；侧栏自身内容超高时在栏内滚动（手机竖屏仍是顶部横排导航） */
@media (min-width:701px){.shell>.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;align-self:start;overscroll-behavior:contain}}
.filelist summary{cursor:pointer}.filelist .pageitem{padding:8px 0}.filelist .pageinfo strong{display:inline;margin-right:10px}
/* v0.8.7：各层层高 / 分区楼层点选 / 审核页直接填面积 */
.fhchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;align-items:center}
.fhchip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:8px;padding:2px 4px 2px 8px;background:var(--card,#fff)}
.fhchip b{font-size:12px;font-weight:600}
.fhchip input{width:78px;border:0;padding:4px;background:transparent}
.flchip{font-size:12px;padding:3px 9px;border-radius:12px;border:1px solid var(--line);background:transparent;cursor:pointer}
.flchip.on{background:var(--acc,#d97b2b);border-color:var(--acc,#d97b2b);color:#fff}
input.areafix{width:110px;padding:4px 6px;font-size:12px;border:1px solid var(--acc,#d97b2b);border-radius:6px}
input.nmfix{margin-top:4px;padding:3px 6px;font-size:12px;border:1px dashed var(--line);border-radius:6px;width:100%;max-width:240px;background:transparent}
input.nmfix:focus{border-style:solid;border-color:var(--acc,#d97b2b)}
.qabatches{display:flex;flex-direction:column;gap:6px;padding:8px 0 10px;border-bottom:1px dashed rgba(255,255,255,.18);margin-bottom:8px}
.qabatch{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12.5px}
.qabatch button{font-size:12px;padding:3px 10px}
.qabatch button{background:#3a2a1c;border:1px solid var(--acc,#d07d33);color:#f6d9bd}.qabatch button:hover{background:#4a3320;color:#fff}
