/* 設計 token 與骨架照抄 FR-139 prototype/control-edit.html（產品 Ultima 配色），本檔下半段才是 FR-141 專用。 */
:root{
  --bg-base:#f4f6f9;--bg-sidebar:#ffffff;--bg-card:#ffffff;--bg-elevated:#ffffff;
  --bg-active:rgba(15,23,42,.05);--bg-hover:rgba(15,23,42,.035);--bg-input:#ffffff;--bg-readonly:rgba(15,23,42,.035);
  --text-primary:rgba(15,23,42,.9);--text-secondary:rgba(15,23,42,.64);--text-muted:rgba(15,23,42,.48);--text-dim:rgba(15,23,42,.3);
  --border-default:rgba(15,23,42,.12);--border-light:rgba(15,23,42,.08);--border-medium:rgba(15,23,42,.2);--border-input:rgba(15,23,42,.18);
  --accent:#0288d1;--accent-hover:#0277bd;--accent-soft:rgba(2,136,209,.07);--accent-border:rgba(2,136,209,.28);--accent-contrast:#ffffff;
  --color-green:#2e7d32;--color-green-soft:rgba(46,125,50,.08);--color-green-border:rgba(46,125,50,.3);
  --color-orange:#e65100;--color-orange-soft:rgba(239,108,0,.08);--color-orange-border:rgba(239,108,0,.35);
  --color-yellow:#8d6e00;--color-yellow-soft:rgba(245,180,0,.13);--color-yellow-border:rgba(200,150,0,.4);
  --color-red:#c62828;--color-red-soft:rgba(198,40,40,.07);--color-red-border:rgba(198,40,40,.3);
  --color-indigo:#4f46e5;--color-indigo-soft:rgba(79,70,229,.09);
  --color-slate:#607d8b;--color-slate-soft:rgba(96,125,139,.1);
  --overlay:rgba(15,23,42,.35);--shadow:0 1px 2px rgba(15,23,42,.05);--shadow-lg:0 20px 50px rgba(15,23,42,.18);
  --radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.625rem;
}
[data-theme=dark]{
  --bg-base:#121212;--bg-sidebar:#141414;--bg-card:#1a1a1a;--bg-elevated:#1e1e1e;
  --bg-active:rgba(255,255,255,.06);--bg-hover:rgba(255,255,255,.04);--bg-input:rgba(255,255,255,.03);--bg-readonly:rgba(255,255,255,.04);
  --text-primary:rgba(255,255,255,.88);--text-secondary:rgba(255,255,255,.55);--text-muted:rgba(255,255,255,.4);--text-dim:rgba(255,255,255,.25);
  --border-default:rgba(255,255,255,.09);--border-light:rgba(255,255,255,.06);--border-medium:rgba(255,255,255,.14);--border-input:rgba(255,255,255,.08);
  --accent:#4fc3f7;--accent-hover:#6dcff9;--accent-soft:rgba(79,195,247,.08);--accent-border:rgba(79,195,247,.2);--accent-contrast:#0b1a22;
  --color-green:#81c784;--color-green-soft:rgba(129,199,132,.1);--color-green-border:rgba(129,199,132,.3);
  --color-orange:#ffb74d;--color-orange-soft:rgba(255,183,77,.1);--color-orange-border:rgba(255,183,77,.3);
  --color-yellow:#fff176;--color-yellow-soft:rgba(255,241,118,.08);--color-yellow-border:rgba(255,241,118,.28);
  --color-red:#ef5350;--color-red-soft:rgba(239,83,80,.08);--color-red-border:rgba(239,83,80,.3);
  --color-indigo:#818cf8;--color-indigo-soft:rgba(99,102,241,.15);
  --color-slate:#90a4ae;--color-slate-soft:rgba(144,164,174,.12);
  --overlay:rgba(0,0,0,.6);--shadow:none;--shadow-lg:0 20px 60px rgba(0,0,0,.5);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg-base);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;font-size:14px;line-height:1.55}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.proto-banner{font-size:.75rem;color:var(--text-muted);padding:.3rem 1rem;border-bottom:1px solid var(--border-light);background:var(--bg-sidebar);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.topbar{height:3.25rem;display:flex;align-items:center;gap:1rem;padding:0 1.25rem;background:var(--bg-sidebar);border-bottom:1px solid var(--border-light)}
.topbar .brand{font-weight:700;letter-spacing:.02em}
.topbar .brand span{color:var(--accent)}
.topbar .spacer{flex:1}
.topbar .user{color:var(--text-secondary);font-size:.875rem}
.shell{display:flex;min-height:calc(100vh - 3.25rem - 1.7rem)}
.sidebar{width:15rem;flex-shrink:0;background:var(--bg-sidebar);border-right:1px solid var(--border-light);padding:1rem .5rem}
.nav-group{font-size:.75rem;color:var(--text-muted);padding:.75rem .75rem .25rem;letter-spacing:.05em}
.nav-item{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;border-radius:var(--radius-md);color:var(--text-secondary);font-size:.875rem;border:1px solid transparent}
.nav-item:hover{background:var(--bg-hover);text-decoration:none;color:var(--text-primary)}
.nav-item.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-border)}
.nav-item.sub{padding-left:1.6rem}
.nav-item.fake{opacity:.55;cursor:default}
.nav-item.fake:hover{background:none;color:var(--text-secondary)}
.nav-foot{margin-top:1.5rem;border-top:1px solid var(--border-light);padding-top:.75rem}
.main{flex:1;min-width:0;padding:1.25rem 1.5rem 3rem}
.crumb{font-size:.8rem;color:var(--text-muted);margin-bottom:.25rem}
h1{font-size:1.5rem;margin:.1rem 0 1rem;font-weight:600}
h2{font-size:1.25rem;margin:1.5rem 0 .75rem;font-weight:600}
h3{font-size:1rem;margin:0 0 .5rem;font-weight:600}
h4{font-size:.95rem;margin:0 0 .75rem;font-weight:600}
.muted{color:var(--text-muted)}
.secondary{color:var(--text-secondary)}
.text-sm{font-size:.875rem}
.text-xs{font-size:.75rem}
.dark-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-xl);padding:1rem 1.25rem;box-shadow:var(--shadow)}
.row{display:flex;gap:1rem;flex-wrap:wrap}
.row>.grow{flex:1;min-width:16rem}
.between{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.flex{display:flex;align-items:center;gap:.5rem}
.stack>*+*{margin-top:1rem}
.look-box{border:1px solid var(--accent-border);background:var(--accent-soft);border-radius:var(--radius-xl);padding:.85rem 1.1rem;margin-bottom:1.25rem}
.look-box h3{color:var(--accent);font-size:.95rem}
.look-box ol{margin:.25rem 0 0;padding-left:1.25rem;font-size:.875rem;color:var(--text-secondary)}
.look-box li{margin:.3rem 0}
.look-box li b{color:var(--text-primary)}
/* 表單 */
.form-label{display:block;color:var(--text-secondary);margin-bottom:.3rem;font-size:.875rem}
input,select,textarea{background:var(--bg-input);border:1px solid var(--border-input);color:var(--text-primary);border-radius:var(--radius-md);padding:.5rem .65rem;font:inherit;font-size:.875rem}
input:hover,select:hover,textarea:hover{border-color:var(--border-medium)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
select option{background:var(--bg-elevated);color:var(--text-primary)}
textarea{resize:vertical;line-height:1.55}
.formgrid{display:grid;grid-template-columns:repeat(12,1fr);gap:0 1rem}
.field{margin-bottom:1rem;grid-column:span 12}
.field.half{grid-column:span 6}
@media (max-width:900px){.field.half{grid-column:span 12}}
.field input,.field select,.field textarea{width:100%}
.field .help{font-size:.75rem;color:var(--text-muted);margin-top:.25rem}
.field.is-new>.form-label{color:var(--text-primary)}
.field.is-new textarea{border-color:var(--color-orange-border)}
.icon-field{position:relative}
.icon-field>.pi{position:absolute;left:.7rem;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:.85rem}
.icon-field input{padding-left:2rem;width:100%}
/* 按鈕 */
.btn{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--border-medium);background:var(--bg-card);color:var(--text-primary);padding:.45rem .9rem;border-radius:var(--radius-md);font:inherit;font-size:.875rem;cursor:pointer;white-space:nowrap}
.btn:hover{background:var(--bg-hover);text-decoration:none}
.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600}
.btn-primary:hover{background:var(--accent-hover)}
.btn-outlined{border-color:var(--accent-border);color:var(--accent);background:transparent}
.btn-text{border-color:transparent;background:transparent;color:var(--accent);padding:.3rem .5rem}
.btn-danger{border-color:var(--color-red-border);color:var(--color-red);background:transparent}
.btn-icon{border-color:transparent;background:transparent;color:var(--text-muted);padding:.3rem .45rem;border-radius:999px}
.btn-icon:hover{color:var(--text-primary)}
.btn-icon.danger:hover{color:var(--color-red)}
.btn-sm{padding:.28rem .65rem;font-size:.8rem}
.btn[disabled]{opacity:.45;cursor:not-allowed}
[data-tip]{position:relative}
[data-tip]:hover::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:rgba(15,23,42,.92);color:#fff;font-size:.72rem;padding:.25rem .5rem;border-radius:var(--radius-sm);white-space:nowrap;z-index:60;pointer-events:none;font-weight:400}
/* 標籤 */
.status-badge{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap;border-radius:999px;padding:1px 10px;font-size:.78rem;font-weight:500}
.status-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.sb-idle{background:var(--color-slate-soft);color:var(--color-slate)}
.sb-active{background:var(--color-indigo-soft);color:var(--color-indigo)}
.sb-success{background:var(--color-green-soft);color:var(--color-green)}
.sb-warning{background:var(--color-orange-soft);color:var(--color-orange)}
.sb-danger{background:var(--color-red-soft);color:var(--color-red)}
.sb-inherit{background:transparent;color:var(--text-muted);border:1px dashed var(--border-medium)}
.tag-code{display:inline-flex;align-items:center;font-size:.78rem;font-weight:600;padding:1px .5rem;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border);white-space:nowrap}
.tag-version{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;font-weight:500;padding:1px .5rem;border-radius:var(--radius-sm);background:var(--bg-active);color:var(--text-secondary);border:1px solid var(--border-light);white-space:nowrap}
.tag-new{display:inline-flex;align-items:center;font-size:.68rem;font-weight:600;padding:0 .4rem;border-radius:var(--radius-sm);background:var(--color-orange-soft);color:var(--color-orange);border:1px solid var(--color-orange-border);margin-left:.35rem;white-space:nowrap;vertical-align:middle;line-height:1.5}
.doc-kind{display:inline-flex;align-items:center;gap:.25rem;font-size:.72rem;padding:0 .45rem;border-radius:999px;white-space:nowrap;border:1px solid}
.doc-kind.client{color:var(--color-slate);border-color:var(--border-medium);background:var(--color-slate-soft)}
.doc-kind.consult{color:var(--color-indigo);border-color:rgba(79,70,229,.3);background:var(--color-indigo-soft)}
/* hint bar */
.hint-bar{display:flex;align-items:center;gap:.6rem;padding:.6rem 1rem;font-size:.85rem;border:1px solid transparent;border-radius:var(--radius-md);flex-wrap:wrap}
.hint-bar--info{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}
.hint-bar--warn{background:var(--color-orange-soft);border-color:var(--color-orange-border);color:var(--color-orange)}
.note-proto{font-size:.75rem;color:var(--color-orange);border-left:2px solid var(--color-orange-border);padding-left:.6rem;margin:.5rem 0}
/* 表格 */
.table-wrap{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-xl);overflow:auto;box-shadow:var(--shadow)}
table{border-collapse:collapse;width:100%}
th{font-size:.75rem;font-weight:600;color:var(--text-muted);text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--border-default);white-space:nowrap;background:var(--bg-active)}
td{padding:.65rem .75rem;border-bottom:1px solid var(--border-light);vertical-align:top;font-size:.875rem}
tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--bg-hover)}
/* 分頁籤 */
.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border-default);flex-wrap:wrap}
.tab{padding:.6rem 1rem;color:var(--text-secondary);border-bottom:2px solid transparent;margin-bottom:-1px;font-size:.875rem;cursor:default;white-space:nowrap}
.tab.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}
/* 頁首列 */
.pl-header{display:flex;align-items:center;gap:.75rem 1rem;padding:.85rem 1.25rem;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-xl);margin-bottom:.75rem;flex-wrap:wrap;box-shadow:var(--shadow)}
.pl-header .ttl{font-size:1.15rem;font-weight:500;flex:1;min-width:14rem;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.ver-meta{font-size:.8rem;color:var(--text-secondary);display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.ver-meta .dirty{color:var(--color-orange)}
.stat-card{border:1px solid var(--border-light);border-radius:var(--radius-md);padding:.35rem .7rem;font-size:.75rem;min-width:8.5rem;color:var(--text-muted)}
.stat-card b{display:block;font-size:.8rem;color:var(--text-primary)}
/* 左右分割與樹 */
.planning-split{display:grid;grid-template-columns:19rem 1fr;border:1px solid var(--border-light);border-top:none;border-radius:0 0 var(--radius-xl) var(--radius-xl);background:var(--bg-card);min-height:70vh}
@media (max-width:1100px){.planning-split{grid-template-columns:1fr}}
.planning-tree{border-right:1px solid var(--border-light);padding:.75rem .5rem;font-size:.83rem}
.tree-tools{display:flex;justify-content:flex-end;gap:.25rem;margin:.4rem 0 .5rem}
.tnode{display:flex;align-items:center;gap:.4rem;padding:.38rem .5rem;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:default}
.tnode:hover{background:var(--bg-hover)}
.tnode.sel{background:var(--accent-soft);color:var(--accent)}
.tnode .pi{font-size:.7rem;color:var(--text-muted)}
.tnode .bdg{margin-left:auto;font-size:.7rem;color:var(--text-muted)}
.tnode.l1{padding-left:1.4rem}.tnode.l2{padding-left:2.6rem}
.tnode .nm{min-width:0}
.tnode .nm small{display:block;font-size:.72rem;color:var(--text-muted)}
.planning-content{padding:1.25rem 1.5rem;min-width:0}
.ref-text{font-size:.82rem;color:var(--text-secondary);border-left:2px solid var(--border-medium);padding:.2rem 0 .2rem .75rem;margin-top:.75rem}
.ref-text summary{cursor:pointer;color:var(--text-muted);font-size:.78rem}
/* 程序書 */
.ref-doc-list{display:flex;flex-direction:column;gap:.5rem;margin-top:.25rem}
.ref-doc-item{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;border-radius:var(--radius-lg);border:1px solid var(--border-light);background:var(--bg-active);font-size:.875rem}
.ref-doc-item .pi-file{color:var(--accent)}
.ref-doc-item a{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ref-doc-empty{font-size:.85rem;padding:.5rem .75rem;border-radius:var(--radius-lg);color:var(--text-muted);border:1px dashed var(--border-default);background:var(--bg-active)}
/* 建議附件 */
.att-block{border:1px dashed var(--color-indigo);border-radius:var(--radius-lg);padding:.6rem .75rem;background:var(--color-indigo-soft)}
.att-item{display:flex;align-items:center;gap:.6rem;padding:.45rem .65rem;border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border-light);font-size:.875rem;margin-top:.4rem}
.att-item .pi-paperclip{color:var(--color-indigo)}
.att-item .att-name{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.att-item .att-desc{flex:1;min-width:0;color:var(--text-muted);font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* AO 卡 */
.ao-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-xl);padding:1rem 1.15rem;cursor:pointer;box-shadow:var(--shadow)}
.ao-card:hover{border-color:var(--border-default)}
.ao-card.expanded{border-color:var(--accent-border)}
.ao-card-header{display:flex;gap:.75rem;align-items:flex-start}
.ao-card-header>.pi-file{color:var(--accent);margin-top:.2rem}
.ao-meta{display:flex;align-items:center;gap:.6rem;margin-top:.45rem;font-size:.8rem;color:var(--text-muted);flex-wrap:wrap}
.ao-chev{color:var(--text-muted);transition:transform .2s}
.ao-card.expanded .ao-chev{transform:rotate(180deg)}
.ao-card-body{display:none;margin-top:.9rem;padding-top:.9rem;border-top:1px solid var(--border-light);cursor:auto}
.ao-card.expanded .ao-card-body{display:block}
/* 唯讀欄位 */
.ro-field{margin-bottom:.9rem}
.ro-field .form-label{display:flex;align-items:center;gap:.3rem}
.ro-text{background:var(--bg-readonly);border-radius:var(--radius-md);padding:.5rem .7rem;font-size:.875rem;white-space:pre-wrap;min-height:2.1rem}
.ro-text.empty{color:var(--text-dim)}
/* 對話框 */
.overlay{position:fixed;inset:0;background:var(--overlay);display:none;align-items:flex-start;justify-content:center;padding:8vh 1rem;z-index:50;overflow:auto}
.overlay.open{display:flex}
.dialog{background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-xl);width:min(34rem,100%);box-shadow:var(--shadow-lg)}
.dialog-head{padding:1rem 1.25rem;border-bottom:1px solid var(--border-light);display:flex;justify-content:space-between;align-items:center;font-weight:600}
.dialog-body{padding:1.25rem}
.dialog-foot{padding:.85rem 1.25rem;border-top:1px solid var(--border-light);display:flex;justify-content:flex-end;gap:.5rem}
.seg{display:inline-flex;border:1px solid var(--border-default);border-radius:var(--radius-md);overflow:hidden}
.seg button{background:transparent;border:none;color:var(--text-secondary);padding:.4rem .85rem;font:inherit;font-size:.85rem;cursor:pointer;border-right:1px solid var(--border-default)}
.seg button:last-child{border-right:none}
.seg button.on{background:var(--accent-soft);color:var(--accent);font-weight:500}
.toast{position:fixed;top:4.5rem;right:1.5rem;background:var(--bg-elevated);border:1px solid var(--color-green-border);border-left:4px solid var(--color-green);border-radius:var(--radius-md);padding:.65rem 1rem;font-size:.85rem;box-shadow:var(--shadow-lg);display:none;z-index:70}
.toast.show{display:block}
.mini-stat{padding:.55rem .85rem;border-radius:var(--radius-md);border:1px solid var(--border-light);background:var(--bg-card);min-width:7.5rem;cursor:pointer}
.mini-stat.active{border-color:var(--accent-border);background:var(--accent-soft)}
.mini-stat .n{font-size:1.25rem;font-weight:600}
.mini-stat .l{font-size:.75rem;color:var(--text-muted)}
.index-card{display:block;color:inherit}
.index-card:hover{text-decoration:none;border-color:var(--accent-border)}
.index-card h3{color:var(--accent)}
.lib-tabs{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:0 .75rem}
.tab-toolbar{display:flex;justify-content:flex-end;padding:.75rem 1rem 0;background:var(--bg-card);border-left:1px solid var(--border-light);border-right:1px solid var(--border-light)}
.planning-split{border-top:none}
.ctrl-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.ctrl-head h2{margin:0;font-size:1.2rem}
.dirty-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:var(--color-orange)}
.save-row{display:flex;justify-content:flex-end;grid-column:span 12;margin:.25rem 0 1rem}
.kind-pick{display:flex;gap:.75rem;flex-wrap:wrap}
.kind-card{flex:1;min-width:12rem;border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:.6rem .8rem;cursor:pointer}
.kind-card.on{border-color:var(--accent);background:var(--accent-soft)}
.kind-card b{display:block;font-size:.875rem}
.kind-card span{font-size:.75rem;color:var(--text-muted)}
.drop{border:1px dashed var(--border-medium);border-radius:var(--radius-lg);padding:1rem;text-align:center;color:var(--text-muted);font-size:.85rem;margin-bottom:1rem}


/* ── FR-141 專用 ── */
.tab{cursor:pointer;user-select:none}
.tab .cnt{font-size:.72rem;color:var(--text-muted);margin-left:.3rem}
.tab-panel{background:var(--bg-card);border:1px solid var(--border-light);border-top:none;border-radius:0 0 var(--radius-xl) var(--radius-xl);padding:1.25rem 1.5rem}
.phase-banner{display:flex;align-items:center;gap:.6rem;padding:.55rem 1rem;border-radius:var(--radius-md);background:var(--color-indigo-soft);color:var(--color-indigo);font-size:.85rem;margin-bottom:.75rem;flex-wrap:wrap}
.phase-banner .step{color:var(--text-muted)}
.phase-banner .step.on{color:var(--color-indigo);font-weight:600}
.ro-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;padding:1px .55rem;border-radius:999px;background:var(--color-slate-soft);color:var(--color-slate)}
.is-readonly .edit-only{display:none!important}
.menu-wrap{position:relative;display:inline-block}
.menu{position:absolute;right:0;top:calc(100% + 4px);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:19rem;padding:.35rem;display:none;z-index:40}
.menu.open{display:block}
.menu-item{display:flex;gap:.65rem;align-items:flex-start;padding:.55rem .7rem;border-radius:var(--radius-md);cursor:pointer;color:var(--text-primary)}
.menu-item:hover{background:var(--bg-hover);text-decoration:none}
.menu-item>.pi{color:var(--accent);margin-top:.15rem}
.menu-item small{display:block;color:var(--text-muted);font-size:.75rem}
/* 多選 */
.ms{position:relative;min-width:0}
.ms-box{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center;min-height:2.1rem;padding:.25rem .35rem;border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--bg-input);cursor:pointer}
.ms-box:hover{border-color:var(--border-medium)}
.ms.open .ms-box{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.ms-ph{color:var(--text-dim);font-size:.8rem;padding:0 .25rem}
.chip{display:inline-flex;align-items:center;gap:.2rem;font-size:.76rem;padding:1px .45rem;border-radius:999px;background:var(--bg-active);border:1px solid var(--border-light);white-space:nowrap}
.chip .x{cursor:pointer;color:var(--text-muted);font-size:.65rem}
.chip .x:hover{color:var(--color-red)}
.ms-panel{position:absolute;left:0;top:calc(100% + 3px);min-width:100%;width:max-content;max-width:20rem;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:45;display:none;padding:.3rem}
.ms.open .ms-panel{display:block}
.ms-opt{display:flex;align-items:center;gap:.45rem;padding:.35rem .5rem;border-radius:var(--radius-sm);font-size:.82rem;cursor:pointer}
.ms-opt:hover{background:var(--bg-hover)}
.ms-opt input{margin:0}
.ms-add{display:flex;gap:.3rem;border-top:1px solid var(--border-light);margin-top:.3rem;padding-top:.35rem}
.ms-add input{flex:1;padding:.3rem .5rem;font-size:.8rem}
.is-readonly .ms-box{cursor:default;background:var(--bg-readonly)}
.is-readonly .chip .x{display:none}
/* AO 表 */
.ao-toolbar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.85rem}
.progress{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-secondary)}
.progress .bar{width:8rem;height:.4rem;border-radius:999px;background:var(--bg-active);overflow:hidden}
.progress .bar>i{display:block;height:100%;background:var(--color-green)}
.ctrl-group{border:1px solid var(--border-light);border-radius:var(--radius-lg);margin-bottom:.6rem;background:var(--bg-card)}
.ctrl-row{display:flex;align-items:center;gap:.6rem;padding:.6rem .85rem;cursor:pointer;flex-wrap:wrap}
.ctrl-row:hover{background:var(--bg-hover)}
.ctrl-row .chev{color:var(--text-muted);font-size:.75rem;transition:transform .15s}
.ctrl-group.open .ctrl-row .chev{transform:rotate(90deg)}
.ctrl-row .nm{font-weight:500;flex:1;min-width:12rem}
.ctrl-body{display:none;border-top:1px solid var(--border-light);overflow-x:auto}
.ctrl-group.open .ctrl-body{display:block}
.ao-table{min-width:68rem}
.ao-table td{padding:.6rem .6rem}
.ao-table th{padding:.45rem .6rem}
.ao-text{font-size:.84rem;line-height:1.5}
.ao-text .lbl{font-weight:600;color:var(--accent);margin-right:.25rem}
.ao-text small{display:block;color:var(--text-muted);font-size:.72rem;margin-top:.2rem}
.mg{display:flex;gap:.35rem;align-items:flex-start;margin-bottom:.35rem}
.mg select{width:8.5rem;flex-shrink:0;padding:.35rem .4rem;font-size:.8rem}
.mg textarea{flex:1;min-width:10rem;font-size:.8rem;padding:.35rem .5rem;min-height:2.1rem}
.mg .btn-icon{flex-shrink:0;margin-top:.15rem}
.tag-override{display:inline-flex;align-items:center;gap:.2rem;font-size:.68rem;font-weight:600;padding:0 .4rem;border-radius:var(--radius-sm);background:var(--color-yellow-soft);color:var(--color-yellow);border:1px solid var(--color-yellow-border);white-space:nowrap}
.tag-inherit{font-size:.68rem;color:var(--text-muted)}
.row-unfilled td:first-child{box-shadow:inset 3px 0 0 var(--color-orange)}
.fill-badge{font-size:.72rem;padding:1px .5rem;border-radius:999px;white-space:nowrap}
.fill-badge.done{background:var(--color-green-soft);color:var(--color-green)}
.fill-badge.part{background:var(--color-orange-soft);color:var(--color-orange)}
/* 匯入預覽 */
.steps{display:flex;gap:.5rem;align-items:center;font-size:.82rem;color:var(--text-muted);flex-wrap:wrap}
.steps .on{color:var(--accent);font-weight:600}
.steps .done{color:var(--color-green)}
.st-ok{color:var(--color-green)}.st-warn{color:var(--color-orange)}.st-err{color:var(--color-red)}
.diff-old{color:var(--text-muted);text-decoration:line-through;white-space:pre-wrap}
.diff-new{white-space:pre-wrap}
.cell-pre{white-space:pre-wrap;font-size:.8rem}
/* 報告稿 */
.paper{background:#fff;color:#1b1b1b;max-width:52rem;margin:0 auto;padding:3rem 3.5rem;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-family:"Noto Serif TC","PingFang TC","Microsoft JhengHei",serif;font-size:15px;line-height:1.85}
.paper h1{text-align:center;font-size:1.5rem;margin:0 0 2rem}
.paper h2{font-size:1.1rem;margin:1.5rem 0 .35rem}
.paper p{margin:.2rem 0 .5rem;text-indent:2em}
.paper ol{margin:.2rem 0 .5rem}
.paper .placeholder{border:1px dashed #b0b0b0;color:#888;padding:.8rem 1rem;border-radius:4px;text-align:center;font-size:.9rem}
.paper table{font-size:12px;line-height:1.5;margin-top:.5rem}
.paper th,.paper td{border:1px solid #9a9a9a;padding:.35rem .4rem;vertical-align:top;color:#1b1b1b;background:#fff;white-space:pre-wrap}
.paper th{background:#e8edf3;font-weight:600;text-align:center}
.paper tbody tr:hover td{background:#fff}
.paper .meta{font-size:13px;margin:.1rem 0}
.paper-break{border:none;border-top:2px dashed #c7c7c7;margin:2.5rem -3.5rem}
/* .field input 的 width:100% 會把勾選框撐滿整列 */
input[type=checkbox]{width:auto!important;padding:0;margin:0 .35rem 0 0;vertical-align:middle}
.field>.form-label>input[type=checkbox]{margin-right:.4rem}

/* ── 第二輪：稽核次麵包屑、左樹右表單、預覽模式 ── */
.pass-crumb{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-size:.85rem;margin-bottom:.6rem}
.pc-sep{font-size:.7rem;color:var(--text-dim)}
.pc-pass{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--accent-border);background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.2rem .7rem;font:inherit;font-size:.85rem;font-weight:600;cursor:pointer}
.pc-pass.ext{border-color:var(--color-indigo);color:var(--color-indigo);background:var(--color-indigo-soft)}
.pc-pass:hover{filter:brightness(1.05)}
.menu .menu-item.on{background:var(--accent-soft)}
.menu .menu-item.disabled{opacity:.5;cursor:not-allowed}
.menu .menu-item.disabled:hover{background:none}
.pass-ro{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.55rem 1rem;border-radius:var(--radius-md);background:var(--color-slate-soft);border:1px solid var(--border-medium);color:var(--text-secondary);font-size:.85rem;margin-bottom:.75rem}
.pass-ro a{margin-left:auto}
.pass-note{display:flex;align-items:center;gap:.45rem;font-size:.8rem;color:var(--text-muted)}
.split{display:grid;grid-template-columns:18.5rem 1fr;background:var(--bg-card);border:1px solid var(--border-light);border-top:none;border-radius:0 0 var(--radius-xl) var(--radius-xl);min-height:72vh}
@media (max-width:1000px){.split{grid-template-columns:1fr}.split .tree-col{border-right:none;border-bottom:1px solid var(--border-light);max-height:22rem}}
.tree-col{border-right:1px solid var(--border-light);padding:.85rem .6rem;display:flex;flex-direction:column;gap:.6rem;position:sticky;top:0;align-self:start;max-height:100vh;overflow:auto}
.tree-col .progress{font-size:.8rem}
.tree-col .progress .bar{flex:1}
.tree-col>*{flex-shrink:0}
.tree-col .seg{display:flex}
.tree-col .seg button{flex:1;padding:.32rem .3rem;font-size:.75rem;min-height:1.9rem}
#tree{font-size:.83rem}
.tnode.fam{color:var(--text-primary);cursor:pointer;margin-top:.2rem}
.tnode.fam .pi{font-size:.65rem}
.tnode.l1{cursor:pointer;padding-left:1.1rem}
.tnode .nm small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:9.5rem}
.dot{width:.55rem;height:.55rem;border-radius:50%;flex-shrink:0;border:1.5px solid var(--color-slate)}
.dot.done{background:var(--color-green);border-color:var(--color-green)}
.dot.part{background:linear-gradient(90deg,var(--color-orange) 50%,transparent 50%);border-color:var(--color-orange)}
.tbadge{font-size:.66rem;font-weight:600;padding:0 .35rem;border-radius:var(--radius-sm);white-space:nowrap;margin-left:auto}
.tbadge+.bdg{margin-left:.3rem}
.tbadge.chg{background:var(--color-yellow-soft);color:var(--color-yellow);border:1px solid var(--color-yellow-border)}
.tbadge.prob{background:var(--color-red-soft);color:var(--color-red);border:1px solid var(--color-red-border)}
.form-col{padding:1.15rem 1.4rem 1.5rem;min-width:0}
.view-bar{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.6rem 1rem;background:var(--bg-card);border-left:1px solid var(--border-light);border-right:1px solid var(--border-light)}
.def-block{border:1px dashed var(--accent-border);background:var(--accent-soft);border-radius:var(--radius-lg);padding:.8rem 1rem;margin:1rem 0}
.def-grid,.aoc-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,.9fr);gap:.9rem;margin-top:.6rem}
@media (max-width:1250px){.def-grid,.aoc-grid{grid-template-columns:1fr}}
.aoc{border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:.85rem 1rem;margin-bottom:.7rem;background:var(--bg-card)}
.aoc.unfilled{box-shadow:inset 3px 0 0 var(--color-orange)}
.aoc-head{display:flex;gap:.6rem;align-items:flex-start}
.aoc-head .lbl{font-weight:700;color:var(--accent);flex-shrink:0}
.aoc-txt{flex:1;font-size:.88rem}
.aoc-txt small{display:block;color:var(--text-muted);font-size:.74rem}
.aoc-tags{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.aoc-pid{margin-top:.4rem;text-align:right}
.u-tag{margin-top:.3rem}
.tag-inh{display:inline-flex;align-items:center;gap:.25rem;font-size:.68rem;font-weight:600;padding:0 .4rem;border-radius:var(--radius-sm);background:var(--color-indigo-soft);color:var(--color-indigo);white-space:nowrap}
.ov-table td{font-size:.8rem}
.mg select{width:9rem}
.mg textarea{min-height:2rem}
/* 預覽模式 */
.pv-banner{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding:.7rem 1rem;border-radius:var(--radius-lg);background:var(--color-yellow-soft);border:1px solid var(--color-yellow-border);margin-bottom:.75rem;position:sticky;top:0;z-index:30}
.pv-banner .ttl{font-weight:600}
.pv-banner .sp{flex:1}
.pv-changed textarea,.pv-changed input,.pv-changed .ms-box,.aoc.pv-changed{background:var(--color-yellow-soft)!important;border-color:var(--color-yellow-border)!important}
.aoc.pv-problem{border-color:var(--color-red-border)!important;box-shadow:inset 3px 0 0 var(--color-red)}
.pv-old{font-size:.76rem;color:var(--text-muted);margin-top:.3rem;white-space:pre-wrap}
.pv-old s{color:var(--text-muted)}
.mg-unknown .unk-box,.mg-mapped .unk-box{width:9rem;flex-shrink:0;border-radius:var(--radius-md);padding:.3rem .35rem}
.mg-unknown .unk-box{border:1px solid var(--color-red-border);background:var(--color-red-soft);color:var(--color-red)}
.mg-mapped .unk-box{border:1px solid var(--color-green-border);background:var(--color-green-soft);color:var(--color-green)}
.unk-box select{width:100%;margin-top:.25rem;padding:.25rem .3rem;font-size:.78rem}
.tab-hl{color:var(--color-yellow);font-size:.7rem;margin-left:.3rem}

.unk-person{font-size:.75rem;margin-top:.35rem;padding:.3rem .45rem;border-radius:var(--radius-md);display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}
.unk-person.bad{border:1px solid var(--color-red-border);background:var(--color-red-soft);color:var(--color-red)}
.unk-person.ok{border:1px solid var(--color-green-border);background:var(--color-green-soft);color:var(--color-green)}
.unk-person select{padding:.2rem .3rem;font-size:.75rem}
