/* ============ FLOORPLAN STUDIO — 建築師風格介面 ============ */
:root{
  --paper:#f5f3ee;
  --paper-deep:#edeae2;
  --ink:#1d1d1b;
  --ink-soft:#55524c;
  --line:#d8d4ca;
  --brass:#b08d57;
  --brass-deep:#94703c;
  --white:#fdfdfb;
  --mono:"Archivo","Noto Sans TC",sans-serif;
  --sans:"Noto Sans TC",-apple-system,"PingFang TC",sans-serif;
  --serif:"Noto Serif TC","Songti TC",serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--sans);color:var(--ink);background:var(--paper);overflow:hidden}

#app{display:flex;flex-direction:column;height:100vh}

/* ---------- 頂列 ---------- */
#topbar{
  display:flex;align-items:center;gap:10px;height:60px;padding:0 18px;
  background:var(--white);border-bottom:1px solid var(--ink);flex-shrink:0;
}
.brand{display:flex;flex-direction:column;line-height:1.15;margin-right:14px}
.brand-en{font-family:var(--mono);font-size:15px;letter-spacing:.22em;font-weight:400}
.brand-en b{font-weight:600;color:var(--brass-deep)}
.brand-sub{font-size:10.5px;color:var(--ink-soft);letter-spacing:.3em}
.variants{display:flex;border:1px solid var(--ink)}
.variants button{
  font-family:var(--mono);font-size:13px;letter-spacing:.05em;
  padding:7px 14px;background:var(--white);border:none;border-right:1px solid var(--ink);
  cursor:pointer;color:var(--ink);
}
.variants button:last-child{border-right:none}
.variants button:hover{background:var(--paper-deep)}
.variants button.active{background:var(--ink);color:var(--white)}
.spacer{flex:1}
#projName{
  font-family:var(--serif);font-size:15px;border:none;border-bottom:1px solid var(--line);
  background:transparent;padding:5px 4px;width:280px;color:var(--ink);text-align:right;
}
#projName:focus{outline:none;border-bottom-color:var(--brass)}
.btn{
  font-family:var(--sans);font-size:13px;padding:8px 16px;cursor:pointer;letter-spacing:.08em;
  background:var(--white);border:1px solid var(--ink);color:var(--ink);transition:background .12s;
}
.btn:hover{background:var(--paper-deep)}
.btn.primary{background:var(--ink);color:var(--white)}
.btn.primary:hover{background:#000}
.btn.ghost{border-color:var(--line);color:var(--ink-soft)}
.btn.ghost:hover{border-color:var(--ink);color:var(--ink)}
.btn.small{font-size:12px;padding:6px 10px;width:100%;margin-top:8px}
.btn.danger{border-color:#a33;color:#a33}

/* ---------- 第二工具列：情境參數 ---------- */
#toolbar2{
  display:flex;align-items:center;gap:8px;height:44px;padding:0 18px;
  background:var(--paper-deep);border-bottom:1px solid var(--line);flex-shrink:0;
  overflow-x:auto;white-space:nowrap;
}
.t2-label{font-size:11px;letter-spacing:.2em;color:var(--ink-soft);flex-shrink:0}
.t2-sel,.t2-num{
  font-family:var(--sans);font-size:13px;padding:5px 8px;border:1px solid var(--line);
  background:var(--white);color:var(--ink);flex-shrink:0;
}
.t2-num{width:64px;text-align:center;font-family:var(--mono)}
.t2-sel:focus,.t2-num:focus{outline:none;border-color:var(--brass)}
.t2-div{width:1px;height:22px;background:var(--line);margin:0 6px;flex-shrink:0}
#toolbar2 .btn{padding:6px 10px;font-size:12px;flex-shrink:0}
#toolbar2 .variants{flex-shrink:0}
#toolbar2 .variants button{padding:5px 12px;font-size:12px}

/* ---------- 主區域 ---------- */
#main{display:flex;flex:1;min-height:0}

/* ---------- 左側元件庫 ---------- */
#palette{
  width:236px;flex-shrink:0;background:var(--white);border-right:1px solid var(--line);
  overflow-y:auto;padding:12px;
}
.tools{display:flex;gap:6px;margin-bottom:10px}
.tool{
  flex:1;font-size:12px;padding:8px 4px;background:var(--paper);border:1px solid var(--line);
  cursor:pointer;letter-spacing:.05em;
}
.tool.active{background:var(--ink);color:var(--white);border-color:var(--ink)}
.palette-hint{font-size:11px;color:var(--ink-soft);line-height:1.6;margin-bottom:12px;border-left:2px solid var(--brass);padding-left:8px}
.pal-cat{margin-bottom:14px}
.pal-cat h4{
  font-size:11px;letter-spacing:.25em;color:var(--ink-soft);font-weight:500;
  border-bottom:1px solid var(--line);padding-bottom:5px;margin-bottom:8px;
}
.pal-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.pal-item{
  display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 2px 5px;
  background:var(--paper);border:1px solid var(--line);cursor:pointer;
}
.pal-item:hover{border-color:var(--ink)}
.pal-item.active{border-color:var(--brass);background:#f6efe3;box-shadow:inset 0 0 0 1px var(--brass)}
.pal-item svg{width:54px;height:36px}
.pal-item span{font-size:11px;letter-spacing:.05em}

/* ---------- 畫布 ---------- */
#canvasWrap{flex:1;position:relative;min-width:0;background:var(--paper)}
#plan{width:100%;height:100%;display:block;touch-action:none}
#plan.placing{cursor:crosshair}
#plan.panning{cursor:grabbing}
#zoomCtrl{
  position:absolute;right:16px;top:16px;display:flex;flex-direction:column;
  border:1px solid var(--ink);background:var(--white);
}
#zoomCtrl button{
  width:34px;height:34px;border:none;border-bottom:1px solid var(--line);
  background:transparent;font-size:16px;cursor:pointer;
}
#zoomCtrl button:last-child{border-bottom:none}
#zoomCtrl button:hover{background:var(--paper-deep)}
#statusBar{
  position:absolute;left:0;right:0;bottom:0;height:28px;display:flex;align-items:center;gap:18px;
  padding:0 14px;background:rgba(253,253,251,.92);border-top:1px solid var(--line);
  font-size:11px;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.05em;
}
#statusMode{color:var(--brass-deep);font-weight:600}
.kbd-hint{margin-left:auto}

/* ---------- 右側面板 ---------- */
#side{
  width:296px;flex-shrink:0;background:var(--white);border-left:1px solid var(--line);
  overflow-y:auto;padding:14px;
}
#side section{margin-bottom:20px}
#side h3{
  font-size:11px;font-weight:500;letter-spacing:.25em;color:var(--ink-soft);
  border-bottom:1px solid var(--ink);padding-bottom:6px;margin-bottom:10px;
}
.empty{font-size:12px;color:#aaa;padding:6px 0}
.prop-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.prop-row label{font-size:11.5px;color:var(--ink-soft);width:52px;flex-shrink:0;letter-spacing:.1em}
.prop-row input[type=text],.prop-row input[type=number],.prop-row textarea{
  flex:1;min-width:0;font-size:13px;padding:5px 7px;border:1px solid var(--line);
  background:var(--paper);font-family:var(--sans);color:var(--ink);
}
.prop-row input:focus,.prop-row textarea:focus{outline:none;border-color:var(--brass)}
.prop-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px;margin-bottom:8px}
.prop-grid .prop-row{margin-bottom:0}
.prop-title{font-family:var(--serif);font-size:15px;margin-bottom:10px;display:flex;align-items:baseline;gap:8px}
.prop-title small{font-size:11px;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.1em}
.prop-actions{display:flex;gap:6px;margin-top:10px}
.prop-actions .btn{flex:1;padding:7px 4px;font-size:12px}

/* 施工說明列表 */
.note-card{border:1px solid var(--line);border-left:3px solid var(--brass);padding:9px 10px;margin-bottom:8px;cursor:pointer;background:var(--paper)}
.note-card.sel{border-color:var(--brass);background:#f6efe3}
.note-card .n-head{display:flex;align-items:center;gap:8px;margin-bottom:3px}
.note-card .n-num{
  width:20px;height:20px;border-radius:50%;border:1.5px solid var(--brass-deep);color:var(--brass-deep);
  font-size:11px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);flex-shrink:0;
}
.note-card .n-title{font-size:13px;font-weight:500}
.note-card .n-body{font-size:11.5px;color:var(--ink-soft);line-height:1.55}

/* 圖層 */
.layer-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px}
.layer-row input{accent-color:var(--brass-deep)}

/* 面積表 */
#areaTable{width:100%;border-collapse:collapse;font-size:12px}
#areaTable td{padding:4px 2px;border-bottom:1px dotted var(--line)}
#areaTable td:nth-child(2),#areaTable td:nth-child(3){text-align:right;font-family:var(--mono);color:var(--ink-soft)}
#areaTable tr.total td{border-top:1px solid var(--ink);border-bottom:none;font-weight:600;color:var(--ink)}
#areaTable tr:hover{background:var(--paper)}

/* 右欄分頁 */
#sideTabs{
  position:sticky;top:-14px;z-index:5;display:flex;margin:-14px -14px 14px;
  background:var(--white);border-bottom:1px solid var(--ink);
}
#sideTabs button{
  flex:1;padding:11px 4px;font-size:12.5px;letter-spacing:.25em;cursor:pointer;
  background:var(--paper);border:none;border-right:1px solid var(--line);color:var(--ink-soft);
}
#sideTabs button:last-child{border-right:none}
#sideTabs button.active{background:var(--white);color:var(--ink);font-weight:700;box-shadow:inset 0 -2px 0 var(--brass-deep)}
#side section{display:none}
#side.stab-design section[data-stab=design],
#side.stab-system section[data-stab=system],
#side.stab-output section[data-stab=output]{display:block}
@media screen and (max-width: 980px){
  #sideTabs{top:34px;margin-top:0}
}

/* 系統設備與檢核 */
.sys-btns{display:flex;flex-direction:column;gap:2px}
.rule-row{display:flex;align-items:center;gap:6px;margin-bottom:5px}
.rule-row label{font-size:11.5px;color:var(--ink-soft);flex:1;letter-spacing:.05em}
.rule-row input{width:62px;font-size:12px;padding:3px 5px;border:1px solid var(--line);background:var(--paper);text-align:right;font-family:var(--mono)}
.rule-row span{font-size:10.5px;color:#a59f93;width:42px}
#auditList{margin-top:10px}
.audit-row{display:flex;gap:7px;align-items:flex-start;font-size:12px;line-height:1.5;padding:5px 6px;border-bottom:1px dotted var(--line)}
.audit-row .a-ic{font-weight:700;flex-shrink:0;width:14px;text-align:center}
.audit-row.a-fail{color:#8c2318}.audit-row.a-fail .a-ic{color:#c0392b}
.audit-row.a-warn{color:#7a4a12}.audit-row.a-warn .a-ic{color:#e67e22}
.audit-row.a-info{color:var(--ink-soft)}.audit-row.a-info .a-ic{color:#7d97a8}
.audit-row.a-pass{color:#3e5c43}.audit-row.a-pass .a-ic{color:#5d8a66}
.audit-row[style*="cursor"]:hover{background:var(--paper)}

/* toast */
#toast{
  position:fixed;bottom:46px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:var(--white);font-size:13px;letter-spacing:.05em;
  padding:10px 22px;opacity:0;pointer-events:none;transition:all .25s;z-index:99;
}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ============ 列印圖紙（A3 橫式 1:50） ============ */
#sheet{display:none}
@media print{
  #app,#toast,.fab{display:none!important}
  html,body{overflow:visible!important;height:auto!important;max-width:none!important}
  body{background:#fff}
  #sheet{display:block}
  @page{size:A3 landscape;margin:0}
}
.sheet-page{
  width:420mm;height:297mm;background:#fff;position:relative;
  padding:8mm;page-break-after:always;
}
.sheet-frame{
  width:100%;height:100%;border:0.6mm solid #1d1d1b;display:flex;
}
.sheet-plan{
  flex:1;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;
}
.sheet-tb{
  width:96mm;flex-shrink:0;border-left:0.4mm solid #1d1d1b;display:flex;flex-direction:column;
  font-family:var(--sans);
}
.tb-head{border-bottom:0.3mm solid #1d1d1b;padding:5mm 5mm 4mm;text-align:center}
.tb-head .tb-logo{font-family:var(--mono);font-size:4mm;letter-spacing:.3em}
.tb-head .tb-logo b{color:var(--brass-deep)}
.tb-head .tb-sub{font-size:2.4mm;letter-spacing:.45em;color:#55524c;margin-top:1mm}
.tb-meta{border-bottom:0.3mm solid #1d1d1b;padding:3mm 5mm;font-size:3mm}
.tb-meta table{width:100%;border-collapse:collapse}
.tb-meta td{padding:1.2mm 0;vertical-align:top}
.tb-meta td:first-child{width:18mm;color:#55524c;font-size:2.6mm;letter-spacing:.2em}
.tb-meta .tb-proj{font-family:var(--serif);font-size:3.8mm}
.tb-sec{padding:3mm 5mm;border-bottom:0.3mm solid #1d1d1b}
.tb-sec h5{font-size:2.6mm;letter-spacing:.35em;color:#55524c;font-weight:500;margin-bottom:2mm}
.tb-sec table{width:100%;border-collapse:collapse;font-size:2.8mm}
.tb-sec table td{padding:0.8mm 0;border-bottom:0.15mm dotted #bbb;vertical-align:top}
.tb-sec table td.num{width:6mm;color:var(--brass-deep);font-family:var(--mono)}
.tb-sec table td.r{text-align:right;font-family:var(--mono);color:#444}
.tb-sec .note-body{font-size:2.5mm;color:#555;line-height:1.5}
.tb-notes{flex:1;overflow:hidden}
.tb-foot{padding:3mm 5mm;font-size:2.4mm;color:#777;letter-spacing:.1em}
.tb-sec .num.a-fail{color:#c0392b}.tb-sec .num.a-warn{color:#e67e22}
.tb-sec .num.a-info{color:#7d97a8}.tb-sec .num.a-pass{color:#5d8a66}

/* 配置引擎/業主需求面板 */
.cmpsr-label{font-size:12px;color:var(--ink-soft);letter-spacing:.1em;margin-bottom:8px}
.cmpsr-label b{color:var(--brass-deep);font-family:var(--mono)}
.seq-row input{font-size:11.5px!important;text-align:left!important;width:100%!important}
.seq-row label{width:72px!important;flex:none!important}
.req-row{display:flex;align-items:center;gap:7px;margin-bottom:6px}
.req-row .n-num{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--brass-deep);color:var(--brass-deep);font-size:11px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);flex-shrink:0}
.req-row input{flex:1;min-width:0;font-size:12px;padding:5px 7px;border:1px solid var(--line);background:var(--paper)}
.req-row button{border:none;background:none;color:#a33;cursor:pointer;font-size:13px;padding:2px}
.req-del{border:none;background:none;color:#b6b0a4;cursor:pointer;font-size:12px;padding:2px;flex-shrink:0}
.req-del:hover{color:#a33}

.wm{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:13mm;letter-spacing:1.2em;color:rgba(192,57,43,.18);font-weight:700;
  transform:rotate(-18deg);pointer-events:none;z-index:9;font-family:var(--sans);
}
.audit-row.disposed{opacity:.75}
.disp-note{font-size:10.5px;color:#5d8a66;margin-top:2px}

/* ---- GL-01 封面＋總索引表 ---- */
.sheet-page.cover{display:flex;flex-direction:column}
.cover-grid{flex:1;display:flex;gap:8mm;border:0.6mm solid #1d1d1b;padding:10mm;min-height:0}
.cover-left{flex:1.1;display:flex;flex-direction:column;border-right:0.3mm solid #b5b0a4;padding-right:8mm}
.cover-firm{font-family:var(--mono);font-size:5mm;letter-spacing:.3em}
.cover-firm b{color:var(--brass-deep)}
.cover-firm span{display:block;font-size:2.2mm;letter-spacing:.4em;color:#888;margin-top:1.5mm}
.cover-title{font-family:var(--serif);font-size:11mm;margin-top:16mm;line-height:1.35}
.cover-sub{font-size:4mm;color:#55524c;letter-spacing:.2em;margin-top:3mm}
.cover-meta{margin-top:10mm;font-size:3.2mm;line-height:2.1}
.cover-meta label{display:inline-block;width:24mm;color:#888;font-size:2.7mm;letter-spacing:.25em}
.cover-notes{margin-top:auto}
.cover-notes h5,.cover-consult h5,.cover-rev h5{font-size:2.8mm;letter-spacing:.35em;color:#55524c;font-weight:500;border-bottom:0.3mm solid #1d1d1b;padding-bottom:1.5mm;margin-bottom:2mm}
.cover-notes ol{padding-left:5mm;font-size:2.6mm;color:#555;line-height:1.8}
.cover-right{flex:1;display:flex;flex-direction:column}
.cover-right h4{font-size:4mm;letter-spacing:.3em;border-bottom:0.5mm solid #1d1d1b;padding-bottom:2mm;margin-bottom:3mm;font-weight:500}
.ix-table{width:100%;border-collapse:collapse;font-size:3.1mm}
.ix-table td{padding:1.8mm 1mm;border-bottom:0.2mm dotted #aaa}
.ix-table .ix-head td{font-size:2.6mm;color:#888;letter-spacing:.2em;border-bottom:0.3mm solid #1d1d1b}
.ix-table .ix-no{font-family:var(--mono);color:var(--brass-deep);width:14mm}
.ix-table .r{text-align:right}
.cover-consult,.cover-rev{margin-top:6mm}
.cover-consult table,.cover-rev table{width:100%;border-collapse:collapse;font-size:2.8mm}
.cover-consult td,.cover-rev td{padding:1.4mm 1mm;border-bottom:0.2mm dotted #bbb}
.cover-consult td:nth-child(odd){color:#888;width:12mm;letter-spacing:.2em}
.cover-sign{margin-top:auto;display:flex;gap:4mm}
.cover-sign>div{flex:1;border:0.25mm solid #b5b0a4;height:22mm;padding:1.5mm;font-size:2.4mm;color:#888}
.cover-sign label{display:block;letter-spacing:.15em}
.gl2-h{font-size:4mm;letter-spacing:.3em;border-bottom:0.5mm solid #1d1d1b;padding-bottom:2mm;margin-bottom:3mm;font-weight:500}

/* ---- EL 立面圖頁 ---- */
.sheet-page.el-page{display:flex;flex-direction:column}
.el-keyplan{
  width:62mm;height:42mm;border:0.3mm solid #1d1d1b;background:#fdfdfb;
  display:flex;flex-direction:column;align-items:center;margin-left:auto;margin-right:6mm;
}
.el-keyplan svg{flex:1;width:100%;min-height:0}
.el-keyplan span{font-size:2.2mm;letter-spacing:.4em;color:#888;padding:1mm 0}
.el-grid{flex:1;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:4mm;min-height:0}
.el-cell{border:0.3mm solid #b5b0a4;display:flex;flex-direction:column;min-height:0;background:#fff}
.el-cell svg{flex:1;width:100%;min-height:0}
.el-cap{
  border-top:0.3mm solid #b5b0a4;padding:1.6mm 3mm;font-size:2.8mm;
  letter-spacing:.12em;background:#f6f4ee;color:#3c3a35;
}

/* ---- P1 封面簡報板 / P3 方案比較 ---- */
.sheet-page.board,.sheet-page.compare{display:flex;flex-direction:column}
.board-head{
  display:flex;justify-content:space-between;align-items:flex-end;
  border-bottom:0.5mm solid #1d1d1b;padding:2mm 2mm 3mm;margin-bottom:4mm;
}
.board-title{font-family:var(--serif);font-size:8mm;letter-spacing:.08em}
.board-sub{font-size:3.2mm;color:#55524c;letter-spacing:.15em;margin-top:1.5mm}
.board-logo{font-family:var(--mono);font-size:4mm;letter-spacing:.28em;text-align:right}
.board-logo b{color:var(--brass-deep)}
.board-logo span{display:block;font-size:2.2mm;letter-spacing:.5em;color:#55524c;margin-top:1mm}
.board-body{flex:1;display:flex;gap:5mm;min-height:0}
.board-axon{flex:1.35;border:0.3mm solid #1d1d1b;position:relative;background:#f6f4ee;display:flex;flex-direction:column}
.board-plan{flex:1;border:0.3mm solid #1d1d1b;position:relative;background:#fdfdfb;display:flex;flex-direction:column}
.board-axon svg,.board-plan svg{flex:1;width:100%;min-height:0}
.board-cap{
  border-top:0.3mm solid #1d1d1b;padding:2mm 3mm;font-size:2.8mm;
  letter-spacing:.3em;color:#3c3a35;background:#fff;
}
.board-foot{padding:3mm 2mm 0;font-size:2.8mm;color:#777;letter-spacing:.15em;text-align:right}
.cmp-row{flex:1;display:flex;gap:5mm;min-height:0}
.cmp-card{flex:1;border:0.3mm solid #b5b0a4;display:flex;flex-direction:column;min-width:0}
.cmp-card.cur{border:0.6mm solid var(--brass-deep)}
.cmp-head{
  padding:2.5mm 3mm;font-size:3.6mm;font-weight:500;letter-spacing:.1em;
  border-bottom:0.3mm solid #b5b0a4;background:#f6f4ee;
}
.cur-dot{color:var(--brass-deep);margin-right:1.5mm}
.cmp-svg{flex:1;min-height:0;display:flex}
.cmp-svg svg{width:100%;height:100%}
.cmp-desc{padding:2mm 3mm;font-size:2.9mm;color:#444;border-top:0.3mm solid #d8d4ca;line-height:1.5}
.cmp-meta{padding:0 3mm 2.5mm;font-size:2.7mm;color:#888;font-family:var(--mono)}

/* ============ RWD：平板/手機（≤980px 桌面版零變動） ============ */
.fab{display:none}
@media screen and (max-width: 980px){
  body{overflow:auto}
  #topbar{height:auto;flex-wrap:wrap;padding:8px 10px;gap:6px}
  .brand{margin-right:4px}
  .brand-sub{display:none}
  #projName{width:100%;order:9;text-align:left;font-size:13px;padding:3px 2px}
  .btn{padding:7px 10px;font-size:12px}
  #toolbar2{height:auto;min-height:40px;padding:6px 10px;gap:6px}
  #toolbar2::-webkit-scrollbar{display:none}
  .t2-label{font-size:10px;letter-spacing:.1em}

  /* 左右面板 → 抽屜 */
  #palette, #side{
    position:fixed;top:0;bottom:0;z-index:60;width:min(86vw,330px);
    box-shadow:0 0 40px rgba(20,18,14,.25);transition:transform .25s ease;
    padding-top:48px;
  }
  #palette{left:0;transform:translateX(-105%)}
  #side{right:0;transform:translateX(105%)}
  #palette.open, #side.open{transform:translateX(0)}
  #palette::before, #side::before{
    content:'';position:fixed;top:0;width:min(86vw,330px);height:44px;
    background:var(--ink);z-index:1;
  }
  #palette::before{left:0}
  #side::before{right:0}
  .drawer-close{
    display:flex;position:fixed;top:6px;z-index:2;width:32px;height:32px;
    align-items:center;justify-content:center;color:#fff;font-size:16px;
    background:none;border:1px solid rgba(255,255,255,.4);cursor:pointer;
  }
  #palette .drawer-close{left:10px}
  #side .drawer-close{right:10px}
  .drawer-title{
    display:block;position:fixed;top:13px;z-index:2;color:#fff;font-size:12px;letter-spacing:.3em;
  }
  #palette .drawer-title{left:52px}
  #side .drawer-title{right:52px}

  /* 浮動開關 */
  .fab{
    display:flex;position:fixed;bottom:44px;z-index:50;width:52px;height:52px;
    border-radius:50%;background:var(--ink);color:#fff;border:none;cursor:pointer;
    align-items:center;justify-content:center;font-size:13px;letter-spacing:.05em;
    box-shadow:0 4px 16px rgba(20,18,14,.35);
  }
  #fabPalette{left:14px}
  #fabSide{right:14px}

  #statusBar{height:24px;font-size:10px}
  .kbd-hint{display:none}
  #zoomCtrl{top:10px;right:10px}
  #zoomCtrl button{width:40px;height:40px;font-size:18px}
  .pal-grid{grid-template-columns:1fr 1fr 1fr}
  .prop-grid{grid-template-columns:1fr 1fr}
}
@media screen and (max-width: 600px){
  .brand-en{font-size:13px}
  .variants button{padding:6px 10px;font-size:12px}
  #toolbar2 .btn{padding:5px 8px}
}
@media screen and (min-width: 981px){
  .drawer-close,.drawer-title{display:none}
}

/* 行動版硬化：iOS 聚焦防自動縮放（字級≥16）、安全區、防橫向溢出 */
@media screen and (max-width: 980px){
  html, body{overflow-x:hidden;max-width:100vw}
  button, .btn, .tool, .pal-item{-webkit-tap-highlight-color:rgba(176,141,87,.25);touch-action:manipulation}
  #side input[type=text], #side input[type=number], #side textarea, #side select,
  .t2-sel, .t2-num, #projName{font-size:16px}
  .fab{bottom:calc(34px + env(safe-area-inset-bottom, 10px))}
  #statusBar{padding-bottom:env(safe-area-inset-bottom, 0)}
}

/* ---------- 結構樹 Outliner（docs/12 E5） ---------- */
#outlineTree{max-height:300px;overflow:auto;font-size:12px;border:1px solid var(--line);background:var(--paper);padding:4px 0}
#outlineTree .ol-room{padding:3px 8px;font-weight:600;color:#4a463e;cursor:pointer;border-top:1px solid var(--line)}
#outlineTree .ol-room:first-child{border-top:none}
#outlineTree .ol-grp{padding:2px 8px 2px 18px;color:#8a6d3b;cursor:pointer}
#outlineTree .ol-grp small{color:#a9a294;margin-left:6px}
#outlineTree .ol-item{padding:1px 8px 1px 32px;color:#6b665c;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#outlineTree .ol-item.loose{padding-left:18px}
#outlineTree [data-osel]:hover{background:#f1ede2}
#outlineTree .on{background:#ece4d2;outline:1px solid var(--brass,#b08d57)}

/* ---------- 指令面板 ⌘K ＋ 快捷鍵說明（UIUX：搜尋優先、鍵盤導航） ---------- */
#cmdk,#hotkeyHelp{position:fixed;inset:0;background:rgba(29,29,27,.42);z-index:240;display:flex;align-items:flex-start;justify-content:center;padding-top:11vh}
.cmdk-panel{width:min(560px,92vw);background:var(--paper,#fdfdfb);border:1px solid #c9c2b2;box-shadow:0 18px 60px rgba(0,0,0,.28);border-radius:10px;overflow:hidden}
#cmdkInput{width:100%;border:none;outline:none;padding:14px 16px;font-size:15px;background:transparent;border-bottom:1px solid var(--line,#e3ddd0);font-family:inherit}
#cmdkList{max-height:46vh;overflow:auto}
.cmdk-item{padding:8px 14px;font-size:13.5px;color:#3c3a35;cursor:pointer;display:flex;align-items:center;gap:9px}
.cmdk-item small{margin-left:auto;color:#a9a294;font-size:11px}
.cmdk-item.on{background:#f1ead9}
.cmdk-kind{font-size:10px;color:#8a6d3b;border:1px solid #d8cdb4;border-radius:4px;padding:1px 6px;min-width:34px;text-align:center;background:#faf6ec}
.cmdk-empty{padding:18px;color:#a9a294;font-size:13px;text-align:center}
.cmdk-foot{padding:7px 14px;border-top:1px solid var(--line,#e3ddd0);font-size:11px;color:#9a948a;background:#faf8f2}
.hk-panel{width:min(460px,92vw);background:var(--paper,#fdfdfb);border:1px solid #c9c2b2;box-shadow:0 18px 60px rgba(0,0,0,.28);border-radius:10px;padding:18px 20px 8px}
.hk-panel h3{margin:0 0 10px;font-size:15px;color:#4a463e}
.hk-panel table{width:100%;border-collapse:collapse;font-size:12.5px;color:#55514a}
.hk-panel td{padding:4.5px 6px;border-top:1px solid #efeadf}
.hk-panel td:first-child{width:130px;white-space:nowrap}
kbd{font-family:'Archivo',monospace;font-size:11px;background:#f1ede2;border:1px solid #d5cdba;border-bottom-width:2px;border-radius:4px;padding:1px 6px;color:#5a544a}
#statusKeys{margin-left:auto;color:#9a948a;font-size:11px;white-space:nowrap}
@media print{#cmdk,#hotkeyHelp{display:none!important}}

/* ---------- 丈量精靈（docs/14 軌 H） ---------- */
#wizard{position:fixed;inset:0;background:rgba(29,29,27,.42);z-index:230;display:flex;align-items:flex-start;justify-content:center;padding-top:7vh}
.wiz-panel{width:min(640px,94vw);max-height:84vh;overflow:auto;background:var(--paper,#fdfdfb);border:1px solid #c9c2b2;box-shadow:0 18px 60px rgba(0,0,0,.28);border-radius:10px;padding:16px 18px}
.wiz-panel h3{margin:0 0 10px;font-size:15px;color:#4a463e}
.wiz-panel h3 small{font-weight:400;color:#9a948a;font-size:11.5px}
.wiz-sec{margin:12px 0 4px;font-size:12.5px;font-weight:600;color:#8a6d3b}
.wiz-sec small{font-weight:400;color:#a9a294;margin-left:6px}
.wiz-sec code{background:#f1ede2;padding:0 4px;border-radius:3px}
.wiz-row{display:flex;align-items:center;gap:8px;font-size:12px;color:#6b665c;margin:4px 0}
.wiz-row select,.wiz-row input[type=number]{border:1px solid var(--line,#e3ddd0);background:var(--paper);padding:4px 6px;font-size:12px}
.wiz-table{width:100%;border-collapse:collapse;font-size:12px}
.wiz-table th{text-align:left;color:#9a948a;font-weight:500;font-size:10.5px;padding:2px 4px}
.wiz-table td{padding:2px 3px}
.wiz-table input,.wiz-table select{width:100%;border:1px solid var(--line,#e3ddd0);background:var(--paper);padding:4px 6px;font-size:12px;box-sizing:border-box}
.wiz-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
#wizErr{color:#c0392b;font-size:12px;margin-top:8px}
@media print{#wizard{display:none!important}}
