/* 共用样式。深色为主：现场投屏用，暗底上状态色更跳。浅色留给会后在办公室看。 */
:root{
  --bg:#0e1110; --panel:#161a18; --panel-2:#1b201d; --panel-3:#20261f; --line:#272d29; --line-2:#333a35;
  --ink:#e9ece8; --dim:#98a29a; --faint:#6b746e;
  --accent:#5aa85d; --accent-dim:#2a3c2b; --accent-ink:#fff;
  --none:#e0655a; --none-dim:#3a201d; --part:#d9a441; --part-dim:#3a2f18;
  --full:#5aa85d; --full-dim:#1f2f20; --info:#5b9bd5; --info-dim:#1c2a38;
  --serif:"Noto Serif TC","Noto Serif CJK TC","Source Han Serif TC","Songti TC","PMingLiU",Georgia,serif;   /* 不再從 Google 載字體（2026-10-12）：裝了就用，沒有就落到系統明體 */
  --mono:ui-monospace,"SF Mono",Menlo,monospace;
  --sans:-apple-system,"PingFang TC","Noto Sans CJK TC","Microsoft JhengHei",sans-serif;
  --shadow:0 8px 30px rgba(0,0,0,.35);
}
@media (prefers-color-scheme:light){:root:not([data-theme=dark]){
  --bg:#f4f6f2; --panel:#fff; --panel-2:#f8faf6; --panel-3:#eef2ea; --line:#dfe4da; --line-2:#cdd4c7;
  --ink:#171b18; --dim:#5c655d; --faint:#8b948c;
  --accent:#2b6d2d; --accent-dim:#e6efe4;
  --none:#b8342a; --none-dim:#fbeceb; --part:#96600f; --part-dim:#fdf3e2;
  --full:#2b6d2d; --full-dim:#e6efe4; --info:#2d6aa8; --info-dim:#e6eef8;
  --shadow:0 8px 30px rgba(0,0,0,.12);
}}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14.5px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit}
button{font:inherit}
select,input[type=number],input[type=text]{border:1px solid var(--line-2);background:var(--panel-2);color:var(--ink);
  border-radius:6px;padding:6px 9px;font:inherit;font-size:13px;max-width:22rem}
select:focus-visible,input:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}

/* ── 顶栏 ─────────────────────────────────────── */
.top{height:56px;display:flex;align-items:center;gap:14px;padding:0 18px;background:var(--panel);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:baseline;gap:9px;white-space:nowrap;text-decoration:none}
.brand b{font-family:var(--serif);font-size:16px;font-weight:700;letter-spacing:.02em}
.brand span{font-size:10.5px;color:var(--faint);letter-spacing:.16em}

.top .sess{font-size:13px;color:var(--dim);display:flex;align-items:center;gap:8px}
.top .sess b{color:var(--ink);font-weight:600}
.ind{margin-left:auto;display:flex;align-items:center;gap:12px}
.pill{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;color:var(--dim);background:var(--panel-2);
  border:1px solid var(--line);border-radius:99px;padding:3px 11px;white-space:nowrap}
.dot{width:6px;height:6px;border-radius:50%;background:var(--faint);flex:0 0 auto}
.dot.on{background:var(--accent);animation:ring 1.9s infinite}
.dot.err{background:var(--none)}
@keyframes ring{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 50%,transparent)}70%{box-shadow:0 0 0 7px transparent}100%{box-shadow:0 0 0 0 transparent}}
.clock{font-family:var(--mono);font-size:15px;font-variant-numeric:tabular-nums}
.btn{border:1px solid var(--line-2);background:var(--panel-2);color:var(--ink);border-radius:6px;padding:6px 14px;font-size:12.5px;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700;letter-spacing:.04em;padding:7px 22px}
.btn.danger{background:var(--none);border-color:var(--none);color:#fff;font-weight:700}
.btn.ghost{background:transparent}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.lbl{font-size:11.5px;color:var(--faint);display:inline-flex;align-items:center;gap:5px}

/* ── 指标带 ───────────────────────────────────── */
.metrics{display:flex;background:var(--panel);border-bottom:1px solid var(--line)}
.m-main{padding:10px 20px 8px;border-right:1px solid var(--line);min-width:186px}
.m-main b{font-family:var(--serif);font-size:36px;line-height:1.05;color:var(--none);font-variant-numeric:tabular-nums;display:block}
.m-main span{font-size:11.5px;color:var(--dim);letter-spacing:.04em}
.m{padding:10px 18px 8px;border-right:1px solid var(--line)}
.m b{font-size:20px;line-height:1.2;font-variant-numeric:tabular-nums;display:block}
.m span{font-size:11px;color:var(--faint)}
.m.f b{color:var(--full)} .m.p b{color:var(--part)}

/* ── 面板 ─────────────────────────────────────── */
main.grid{display:grid;gap:11px;padding:11px 18px;height:calc(100vh - 56px - 64px)}
main.grid.replay{grid-template-columns:minmax(0,1.15fr) minmax(0,.95fr)}
main.grid.live{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
@media (max-width:1000px){main.grid{grid-template-columns:1fr!important;height:auto}}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:9px;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.ph{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line);font-size:11.5px;color:var(--faint)}
.ph b{font-weight:700;color:var(--dim);letter-spacing:.11em}
.ph .cnt{font-family:var(--mono);font-variant-numeric:tabular-nums}
.ph .cnt.bad{color:var(--none);font-weight:600}

.body{flex:1;overflow-y:auto;min-height:0;scroll-behavior:smooth}
.body::-webkit-scrollbar{width:9px}
.body::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:9px;border:3px solid var(--panel)}
.blank{padding:46px 16px;text-align:center;color:var(--faint);font-size:12.5px;line-height:1.9}
.err{margin:0 18px 9px;padding:9px 13px;border-radius:7px;background:var(--none-dim);color:var(--none);font-size:12.5px;border:1px solid var(--none)}
.err:empty{display:none}
.tabs{display:flex;gap:4px}
.tabs button{border:1px solid transparent;background:transparent;color:var(--dim);border-radius:5px;padding:2px 9px;font-size:11.5px;cursor:pointer}
.tabs button[aria-pressed=true]{background:var(--panel-3);color:var(--ink);border-color:var(--line-2)}

/* ── 台账 ─────────────────────────────────────── */
.grp{border-bottom:1px solid var(--line)}
.gh{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--panel-2);position:sticky;top:0;z-index:2;
  font-size:12.5px;border-bottom:1px solid var(--line)}
.gh b{font-weight:700}
.gh .gc{margin-left:auto;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;display:flex;gap:8px}
.gh .gc i{font-style:normal;font-weight:600}
.gh .gc .c0{color:var(--none)} .gh .gc .c1{color:var(--part)} .gh .gc .c2{color:var(--full)}
.gh .grole{font-size:10px;padding:1px 7px;border-radius:99px;background:var(--accent-dim);color:var(--accent);font-weight:600}
.q{padding:10px 14px 11px;border-bottom:1px solid var(--line);border-left:3px solid var(--none);animation:pop .32s ease;cursor:pointer}
.q:last-child{border-bottom:0}
.q:hover{background:var(--panel-2)}
@keyframes pop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.q.s1{border-left-color:var(--part)} .q.s2{border-left-color:var(--full)}
.q.hit{animation:mark 1.6s ease}
@keyframes mark{0%{background:var(--full-dim)}100%{background:transparent}}
.q.now{box-shadow:inset 0 0 0 1px var(--accent)}
.qh{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:3px}
.st{font-size:10px;font-weight:700;letter-spacing:.06em;padding:1px 7px;border-radius:3px;flex:0 0 auto}
.st0{background:var(--none-dim);color:var(--none)} .st1{background:var(--part-dim);color:var(--part)} .st2{background:var(--full-dim);color:var(--full)}
.qh b{font-size:13px} .qh i{font-style:normal;font-size:11.5px;color:var(--faint)}
.qh .t{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.qx{font-size:13px;line-height:1.6}
.ev{margin-top:6px;padding:7px 10px;background:var(--panel-2);border-radius:5px;font-size:11.8px;color:var(--dim);line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;position:relative}
.ev b{color:var(--ink);font-weight:600}
.ev.gap b{color:var(--part)}
.ev .jump{position:absolute;right:6px;top:5px;border:0;background:var(--panel-3);color:var(--accent);border-radius:4px;padding:0 7px;font-size:11px;cursor:pointer}
.man{font-size:10px;padding:1px 7px;border-radius:99px;border:1px solid var(--line-2);color:var(--dim);white-space:nowrap}
.man.m-ok{border-color:var(--info);color:var(--info)} .man.m-plus{border-color:var(--full);color:var(--full)}
.man.m-warn{border-color:var(--part);color:var(--part)}
@media (prefers-reduced-motion:reduce){.q,.dot.on{animation:none}.q.hit{animation:none}}

/* ── 资料抽屉 ─────────────────────────────────── */
.drawer-bg{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:40;opacity:0;pointer-events:none;transition:.2s}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,92vw);background:var(--panel);border-left:1px solid var(--line);
  z-index:41;transform:translateX(100%);transition:.22s cubic-bezier(.2,.7,.3,1);display:flex;flex-direction:column;box-shadow:var(--shadow)}
.drawer.open{transform:none} .drawer-bg.open{opacity:1;pointer-events:auto}
.drawer .dh{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}
.drawer .dh b{font-family:var(--serif);font-size:16px}
.drawer .db{padding:14px 18px;overflow-y:auto;font-size:13px}
.kv{display:grid;grid-template-columns:5.5em 1fr;gap:6px 12px;margin-bottom:14px}
.kv dt{color:var(--faint)} .kv dd{margin:0}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 14px}
.chip{font-size:12px;padding:2px 9px;border-radius:99px;background:var(--panel-3);border:1px solid var(--line-2)}
.chip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.off{color:var(--part)}
.badge-off{font-size:10px;padding:1px 7px;border-radius:99px;background:var(--part-dim);color:var(--part);font-weight:700;letter-spacing:.05em;white-space:nowrap}

.disc-line{padding:7px 14px;font-size:12px;background:var(--part-dim);color:var(--part);border-bottom:1px solid var(--line)}
.disc-line:empty{display:none}
.offs{display:grid;grid-template-columns:1fr;gap:4px;margin-bottom:14px}
.offs div{display:flex;gap:10px;font-size:12.5px} .offs span{color:var(--faint);min-width:12em}
.drawer h4{margin:12px 0 4px;font-size:12px;color:var(--faint);letter-spacing:.1em;font-weight:600}
.note{font-size:12px;color:var(--dim);background:var(--panel-2);border-left:2px solid var(--accent);padding:8px 10px;border-radius:0 5px 5px 0;line-height:1.6}

/* ── 首页 ─────────────────────────────────────── */

@media (max-width:820px){}
@media (max-width:820px){}

/* ── 回放页 ───────────────────────────────────── */
.vwrap{position:relative;background:#000;border-radius:9px 9px 0 0;overflow:hidden;flex:0 0 auto}
.vwrap video{display:block;width:100%;max-height:52vh;background:#000}
.cap{position:absolute;left:0;right:0;bottom:8px;display:flex;justify-content:center;pointer-events:none;padding:0 20px}
.cap span{background:rgba(0,0,0,.7);color:#fff;font-size:17px;line-height:1.5;padding:5px 14px;border-radius:6px;max-width:92%;text-align:center}
.cap small{position:absolute;right:12px;bottom:-2px;font-size:10px;color:rgba(255,255,255,.55);letter-spacing:.1em}
.who{position:absolute;left:12px;top:12px;display:flex;flex-direction:column;gap:4px;pointer-events:none;max-width:70%}
.who .w1{display:flex;align-items:center;gap:8px;background:rgba(0,0,0,.66);color:#fff;padding:5px 12px;border-radius:6px;font-size:15px;font-weight:700}
.who .role{font-size:10px;padding:1px 7px;border-radius:99px;background:var(--accent);color:#fff;font-weight:600;letter-spacing:.05em}
.who .role.o{background:var(--part);color:#fff} .who .role.c{background:#666;color:#fff}
.who .w2{background:rgba(0,0,0,.55);color:rgba(255,255,255,.9);padding:3px 10px;border-radius:5px;font-size:12px}
.who .w2 b{color:#fff}
.tour{position:absolute;right:12px;top:12px;max-width:46%;background:rgba(0,0,0,.72);color:#fff;border-left:3px solid var(--accent);
  padding:9px 12px;border-radius:6px;font-size:12.5px;line-height:1.55;display:none}
.tour.on{display:block}
.tour b{display:block;font-size:13.5px;margin-bottom:2px}
.tour i{font-style:normal;color:rgba(255,255,255,.6);font-size:11px;letter-spacing:.1em;display:block;margin-bottom:4px}
.ctl{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.ctl .sp{margin-left:auto;display:flex;gap:4px}
.ctl .sp button{border:1px solid var(--line-2);background:transparent;color:var(--dim);border-radius:5px;padding:2px 9px;font-size:11.5px;cursor:pointer}
.ctl .sp button[aria-pressed=true]{background:var(--panel-3);color:var(--ink)}
.moments{display:flex;gap:6px;padding:9px 12px;overflow-x:auto;border-bottom:1px solid var(--line);flex:0 0 auto;scroll-behavior:smooth}
.moments::-webkit-scrollbar{height:6px} .moments::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:6px}
.mo{flex:0 0 auto;border:1px solid var(--line-2);background:var(--panel-2);border-radius:7px;padding:5px 10px;cursor:pointer;
  font-size:11.5px;color:var(--dim);line-height:1.35;text-align:left;min-width:9.5em}
.mo b{display:block;color:var(--ink);font-size:12px;font-weight:600;white-space:nowrap}
.mo i{font-style:normal;font-size:10.5px;color:var(--faint);white-space:nowrap}
.mo.on{border-color:var(--accent);background:var(--accent-dim)}
.mo.k-official b{color:var(--part)} .mo.k-round_end b{color:var(--none)}
.mo.done{opacity:.6}
.mo .rd{font-size:9.5px;letter-spacing:.1em;color:var(--faint)}
.rsep{flex:0 0 auto;width:1px;background:var(--line-2);margin:4px 4px}
.turnlist{flex:1;overflow-y:auto;min-height:0}
.rule{padding:7px 14px;font-size:11.5px;color:var(--faint);border-bottom:1px solid var(--line);background:var(--panel-2)}
.rule b{color:var(--dim);font-weight:600}

/* ── 发言段（回放的会刊 / 实时的转写） ────────── */
.turn{padding:10px 14px;border-bottom:1px solid var(--line);border-left:2px solid transparent;animation:slide .3s ease}
@keyframes slide{from{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:none}}
.turn.dep{border-left-color:var(--accent-dim)} .turn.off{border-left-color:var(--part-dim)}
.turn.now{border-left-color:var(--accent);background:var(--panel-2)}
.th{display:flex;align-items:center;gap:8px;margin-bottom:3px}
.th b{font-size:13.5px;font-weight:700}
.role{font-size:10px;padding:1px 7px;border-radius:99px;letter-spacing:.05em;background:var(--accent-dim);color:var(--accent);font-weight:600;flex:0 0 auto}
.role.o{background:var(--part-dim);color:var(--part)} .role.u{background:var(--line);color:var(--faint)} .role.c{background:var(--line);color:var(--dim)}
.cue{margin-left:auto;font-size:10.5px;color:var(--faint);max-width:54%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.say{font-size:12.8px;color:var(--dim);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.turn.now{padding:12px 14px 13px}
.turn.now .say{-webkit-line-clamp:9;color:var(--ink);font-size:13.2px}

/* ── 实时页 ───────────────────────────────────── */
.setup{max-width:880px;margin:36px auto;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.setup .sh{padding:18px 24px;border-bottom:1px solid var(--line)}
.setup .sh h2{margin:0;font-family:var(--serif);font-size:20px}
.setup .sh p{margin:4px 0 0;color:var(--dim);font-size:13px}
.step{display:grid;grid-template-columns:8.5em 1fr;gap:6px 18px;padding:16px 24px;border-bottom:1px solid var(--line)}
.step:last-of-type{border-bottom:0}
.step .sn{font-size:12px;color:var(--faint);letter-spacing:.08em;padding-top:6px}
.step .sn b{display:block;color:var(--ink);font-size:14px;letter-spacing:0;margin-bottom:2px}
.step .sb{display:flex;flex-direction:column;gap:8px}
.sf{padding:14px 24px;display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);background:var(--panel-2);border-radius:0 0 12px 12px}
.sf .msg{font-size:12px;color:var(--faint);flex:1}
.hero{padding:14px 16px 12px;border-bottom:1px solid var(--line);background:var(--panel-2)}
.hero .hk{font-size:10.5px;letter-spacing:.16em;color:var(--faint);margin-bottom:6px}
.hero .hn{display:flex;align-items:center;gap:10px}
.hero .hn b{font-family:var(--serif);font-size:26px;line-height:1.1}
.hero .hc{margin-top:6px;font-size:12px;color:var(--dim);line-height:1.5}
.hero .hc b{color:var(--ink)}
.caption{padding:10px 16px;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink);min-height:62px;display:flex;gap:9px;align-items:flex-start;line-height:1.6}
.caption .mark{color:var(--accent);font-weight:700;flex:0 0 auto}
.caption.pending{color:var(--dim);font-style:italic}


.meter{display:flex;align-items:center;gap:8px;padding:6px 16px;border-bottom:1px solid var(--line);font-size:11px;color:var(--faint)}
.meter .mb{flex:1;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.meter .mb i{display:block;height:100%;width:0;background:var(--accent);transition:width .08s linear}
#meterLbl{max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.swap{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 16px;border-bottom:1px solid var(--line)}
.banner{padding:7px 14px;font-size:11.5px;background:var(--info-dim);color:var(--info);border-bottom:1px solid var(--line)}
.banner:empty{display:none}

/* ── 現場實時（2026-09 重做）：開會前、聲紋標記、覆蓋率、插話、改名 ── */
.setup .mrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.setup .mrow .grow{flex:1;min-width:16rem}.setup .mrow .grow input{width:100%}
.setup .lbl input[type=text],.setup .lbl input[type=date],.setup .lbl select{margin-left:4px}
.rlbl{font-weight:600;margin:10px 0 4px;font-size:.92rem}.rlbl .hint{font-weight:400;color:var(--dim);margin-left:8px}
.chips.sel .chip input{display:none}
.setup textarea{width:100%;margin-top:8px;font:inherit;font-size:.9rem;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink)}
.resume{padding:10px 14px;margin-bottom:12px;border:1px dashed var(--accent);border-radius:10px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-size:.9rem}
.badge-voice,.badge-anon,.badge-cue{display:inline-block;font-size:.72em;padding:2px 7px;border-radius:10px;margin-left:6px;vertical-align:middle;font-weight:600}
.badge-voice{background:var(--full-dim);color:var(--full)}.badge-voice.anon,.badge-anon{background:var(--part-dim);color:var(--part)}.badge-voice.cue,.badge-cue{background:var(--info-dim);color:var(--info)}

.cov{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:.82rem;color:var(--dim);padding:6px 0}
.cov b{color:var(--ink);font-weight:600}.cov i{font-style:normal}.cov i.bad{color:var(--none)}

.banner.warn{border-left:3px solid var(--part)}
.ij{margin-top:4px}.ij1{font-size:.85rem;color:var(--dim);padding:4px 8px;margin:4px 0;border-left:2px solid var(--line);background:var(--bg)}
.ij1 b{color:var(--ink);margin-right:4px}.ij1 .role{margin-right:6px}.ij1>span:not(.role){font-size:.75em;margin-right:6px;color:var(--faint)}
.scen-banner{padding:10px 14px;margin-bottom:10px;border-radius:10px;background:var(--accent-dim);color:var(--ink);font-size:.9rem;border-left:3px solid var(--accent)}.scen-banner b{display:block;margin-bottom:2px}.scen-banner .hint{color:var(--dim)}
/* 記分卡與場景頁 */
.bench{max-width:1100px;margin:20px auto;padding:0 20px}.bench table{width:100%;border-collapse:collapse;font-size:.9rem;margin:10px 0 24px}
.bench th,.bench td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.bench th{color:var(--dim);font-weight:600;font-size:.8rem}
.bench td b.good{color:var(--full)}.bench td b.bad{color:var(--none)}.bench td b.mid{color:var(--part)}
.scen{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin:16px 0}
.scen a{display:block;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);text-decoration:none}
.scen a:hover{border-color:var(--accent)}.scen a .k{font-size:.75rem;color:var(--accent);font-weight:600;letter-spacing:.05em}.scen a h3{margin:4px 0 6px;font-size:1.05rem}.scen a p{margin:0;font-size:.88rem;color:var(--dim)}.scen a .w{margin-top:8px;font-size:.82rem}

/* ── 表單控件與勾選塊（2026-09-07）：不再落到瀏覽器默認樣式 ── */
.setup input[type=text],.setup input[type=date],.setup select,.setup textarea,.bench input[type=text],.bench input[type=date],.bench select,

.setup input:focus,.setup select:focus,.setup textarea:focus,.bench input:focus,.bench select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.setup .lbl{display:inline-flex;align-items:center;gap:6px;color:var(--dim);font-size:.85rem}
.setup .lbl input,.setup .lbl select{margin-left:0}
/* 勾選塊：未選空心，選中實心帶勾 */
.chips.sel .chip{opacity:1;background:var(--panel);color:var(--ink);border:1px solid var(--line);padding:5px 12px 5px 10px;border-radius:999px;display:inline-flex;align-items:center;gap:4px;cursor:pointer;user-select:none;transition:background .12s,border-color .12s,color .12s}
.chips.sel .chip::before{content:"";display:inline-block;width:.85em;height:.85em;border:1.5px solid var(--faint);border-radius:50%;margin-right:4px;box-sizing:border-box;transition:background .12s,border-color .12s}
.chips.sel .chip:hover{border-color:var(--accent)}
.chips.sel .chip:focus-within{box-shadow:0 0 0 3px var(--accent-dim);border-color:var(--accent)}
.chips.sel .chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.chips.sel .chip.on::before{background:#fff;border-color:#fff;background-image:linear-gradient(45deg,transparent 40%,var(--accent) 40%,var(--accent) 55%,transparent 55%)}
.chips.sel .chip.on::before{content:"✓";width:auto;height:auto;border:0;background:none;color:#fff;font-size:.8em;line-height:1;margin-right:2px}
.chips.sel .chip .ot2{color:inherit;opacity:.72;font-size:.8em;margin-right:2px}
.chips.sel .chip.new{border-style:dashed}
.addrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0 4px}
.addrow input{width:9rem}
/* 登記表頁與會後頁 */

/* ── 自繪下拉、自繪勾選框、日期框（2026-09-07）：不用瀏覽器內置樣式 ── */
.dd{position:relative;display:inline-block}.dd>select{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.dd-btn{font:inherit;font-size:.92rem;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 32px 6px 12px;min-height:2.2rem;min-width:8rem;text-align:left;cursor:pointer;position:relative;display:inline-flex;align-items:center;gap:8px;transition:border-color .12s,box-shadow .12s}
.dd-btn:hover{border-color:var(--accent)}.dd-btn:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.dd-btn i{position:absolute;right:12px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--dim);border-bottom:1.5px solid var(--dim);transform:translateY(-70%) rotate(45deg);transition:transform .12s}
.dd.open .dd-btn i{transform:translateY(-30%) rotate(-135deg)}
.dd-menu{position:absolute;z-index:30;left:0;top:calc(100% + 4px);min-width:100%;margin:0;padding:6px;list-style:none;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow,0 8px 24px rgba(0,0,0,.12))}
.dd-menu li{padding:7px 12px 7px 28px;border-radius:7px;cursor:pointer;white-space:nowrap;font-size:.92rem;position:relative}
.dd-menu li:hover{background:var(--accent-dim)}.dd-menu li.on{color:var(--accent);font-weight:600}
.dd-menu li.on::before{content:"✓";position:absolute;left:10px;top:7px;font-size:.85em}
.dd-menu li[aria-disabled]{color:var(--faint);cursor:default}
input.date{font-family:var(--mono,ui-monospace,monospace);font-size:.9rem;width:8.2rem;letter-spacing:.02em}
input.date.bad{border-color:var(--none);box-shadow:0 0 0 3px var(--none-dim)}
.setup input[type=text],.reg input[type=text],.reg .form input{font:inherit;font-size:.92rem;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 10px;min-height:2.2rem;outline:none}
.setup input[type=text]:focus,.reg input[type=text]:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
input.ck{appearance:none;-webkit-appearance:none;width:1.1rem;height:1.1rem;border:1.5px solid var(--faint);border-radius:5px;background:var(--panel);cursor:pointer;vertical-align:middle;position:relative;margin:0}
input.ck:checked{background:var(--accent);border-color:var(--accent)}
input.ck:checked::after{content:"";position:absolute;left:.33rem;top:.12rem;width:.3rem;height:.6rem;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(45deg)}
input.ck:disabled{opacity:.35;cursor:default}input.ck:focus-visible{box-shadow:0 0 0 3px var(--accent-dim)}

/* ── 2026-09-08：整套放大到能站着操作的尺度（控件 ≥ 40px、正文 ≥ 13px）、台賬人工修改、
   自繪日曆與可自填下拉、聲音來源選項。後寫的覆蓋前面的同名規則。 ── */
:root{--ctl-h:44px;--ctl-fs:16px}
body{font-size:15px}
.top{height:60px;gap:16px}
.btn{padding:9px 16px;font-size:14px;min-height:40px;border-radius:8px}
.btn.primary{padding:10px 26px;font-size:15px}
.btn.danger{min-height:40px}
.pill{font-size:12.5px;padding:5px 12px}
.clock{font-size:17px}
.lbl{font-size:13px}
.ph{font-size:12.5px;padding:10px 14px}
.blank{font-size:13.5px}
.err{font-size:13.5px}
.gh{font-size:13.5px;padding:9px 14px}.gh .gc{font-size:12px}.gh .grole{font-size:11px}
.qh b{font-size:14.5px}.qh i{font-size:12.5px}.qh .t{font-size:11.5px}
.qx{font-size:14px}.ev{font-size:13px}.st{font-size:11px;padding:2px 8px}.man{font-size:11px}
.th b{font-size:15px}.role{font-size:11px;padding:2px 8px}.cue{font-size:12px}
.say{font-size:13.5px}.turn.now .say{font-size:14.5px}
.hero .hn b{font-size:30px}.hero .hc{font-size:13.5px}.hero .hk{font-size:11.5px}
.caption{font-size:16px}
.meter{font-size:12px}.cov{font-size:13px}.banner{font-size:13px}.disc-line{font-size:13px}
.ij1{font-size:13px}
.m-main span{font-size:12.5px}.m span{font-size:12px}
.note{font-size:13.5px;padding:10px 12px}
.drawer .db{font-size:14px}.offs div{font-size:13.5px}.chip{font-size:13.5px;padding:4px 12px}
/* 開會前 */
.setup{max-width:980px}
.setup .sh{padding:22px 28px}.setup .sh h2{font-size:24px}.setup .sh p{font-size:14.5px;margin-top:6px}
.step{padding:22px 28px;gap:10px 22px;grid-template-columns:9.5em 1fr}
.step .sn{font-size:12.5px;padding-top:10px}.step .sn b{font-size:18px;margin-bottom:4px}
.step .sb{gap:12px}
.setup .mrow{gap:14px 18px;margin-bottom:4px}
.setup .lbl{font-size:15px;color:var(--ink);gap:8px;white-space:nowrap}
.setup input[type=text],.reg input[type=text],.reg .form input,.qadd input,.qadd textarea{min-height:var(--ctl-h);font-size:var(--ctl-fs);padding:8px 14px;border-radius:10px;max-width:none}
.dd-btn{min-height:var(--ctl-h);font-size:var(--ctl-fs);padding:8px 38px 8px 14px;border-radius:10px;min-width:9rem}
.dd-btn i{right:14px}
.dd-menu{padding:8px;border-radius:12px}
.dd-menu li{padding:10px 14px 10px 34px;font-size:15px;min-height:40px;border-radius:8px}
.dd-menu li:focus{outline:none;background:var(--accent-dim)}
.dd-menu li.on::before{top:10px;left:13px}
.rlbl{font-size:16px;margin:12px 0 6px}.rlbl .hint{font-size:13.5px}
.chips.sel .chip{min-height:40px;font-size:15px;padding:8px 16px 8px 12px;gap:6px}
.chips.sel .chip .ot2{font-size:.82em}
.chips{gap:8px}
.chipbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:4px 0 8px}
.chipbar input{width:14rem}
.chipbar .btn{min-height:38px;padding:6px 14px}
.addrow{gap:10px;margin:10px 0 4px}.addrow input{width:12rem}.addrow .lbl{font-size:14px;color:var(--dim)}

.sf{padding:18px 28px}.sf .msg{font-size:14px}
.resume{padding:14px 18px;font-size:15px;gap:14px 18px}.resume>span{display:inline-flex;align-items:center;gap:10px}
.resume.live{border-style:solid;background:var(--accent-dim)}
/* 聲音來源三選一 */


.srcdet{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:4px}
/* 台賬：人工動作 */
.q{padding:12px 14px 12px}
.qacts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:9px;opacity:.6;transition:opacity .12s}
.q:hover .qacts,.q:focus-within .qacts{opacity:1}
.qa{border:1px solid var(--line-2);background:var(--panel);color:var(--dim);border-radius:8px;padding:5px 12px;font:inherit;font-size:13px;min-height:32px;cursor:pointer;white-space:nowrap}
.qa:hover{border-color:var(--accent);color:var(--ink)}
.qa.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.qa.v0.on{background:var(--none);border-color:var(--none)}.qa.v1.on{background:var(--part);border-color:var(--part)}.qa.v2.on{background:var(--full);border-color:var(--full)}
.qa.danger:hover{border-color:var(--none);color:var(--none)}

.q.dropped{opacity:.5;border-left-color:var(--line-2);padding:8px 14px;cursor:default}
.q.dropped .qh i{font-size:12.5px}
.q.checked{background:var(--full-dim)}
.st.stx{background:var(--line);color:var(--faint)}
.man.m-human{border-color:var(--info);color:var(--info)}
.qedit{margin-top:10px;display:grid;gap:8px}
.qedit label{display:grid;grid-template-columns:3.5em 1fr;align-items:center;gap:8px;font-size:13.5px;color:var(--dim)}
.qedit input,.qedit textarea{width:100%;font:inherit;font-size:14.5px;padding:8px 12px;border:1px solid var(--line-2);border-radius:8px;background:var(--panel);color:var(--ink);max-width:none;line-height:1.5;min-height:40px}
.qedit textarea{resize:vertical}
.qedit-acts{display:flex;gap:8px;justify-content:flex-end}
.qadd{padding:12px 14px;border-bottom:1px solid var(--line);background:var(--panel-2);display:grid;grid-template-columns:11rem 1fr;gap:8px 10px;align-items:start}
.qadd textarea{grid-column:1 / -1;width:100%;font:inherit;line-height:1.5;resize:vertical;border:1px solid var(--line-2);border-radius:10px;background:var(--panel);color:var(--ink)}
.qadd .acts{grid-column:1 / -1;display:flex;gap:8px;justify-content:flex-end}
/* 可自填下拉、日曆 */
.dd.combo>input,.dd.dp>input{position:static;opacity:1;pointer-events:auto;width:auto;height:auto}
.dd.dp>input{padding-right:40px;width:10.5rem}
.dp-btn{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--dim);font-size:17px;cursor:pointer;padding:6px 8px;line-height:1;border-radius:6px}
.dp-btn:hover{color:var(--accent);background:var(--accent-dim)}
.dp-pop{padding:12px;width:20rem}
.dp-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:15px}
.dp-h button{border:0;background:transparent;font-size:22px;cursor:pointer;color:var(--dim);padding:2px 12px;border-radius:8px;min-height:36px}
.dp-h button:hover{background:var(--accent-dim);color:var(--ink)}
.dp-w,.dp-g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}
.dp-w i{font-style:normal;font-size:12px;color:var(--faint);padding:4px 0}
.dp-g button{border:0;background:transparent;font:inherit;font-size:14.5px;padding:0;border-radius:8px;cursor:pointer;color:var(--ink);min-height:38px}
.dp-g button:hover{background:var(--accent-dim)}
.dp-g button.on{background:var(--accent);color:#fff}
.dp-g button.today{font-weight:700;color:var(--accent)}.dp-g button.today.on{color:#fff}
.dp-f{display:flex;justify-content:flex-end;margin-top:8px}
.dp-f button{border:1px solid var(--line-2);background:transparent;border-radius:8px;padding:6px 14px;font:inherit;font-size:13.5px;cursor:pointer;color:var(--ink);min-height:34px}
input.date{font-size:var(--ctl-fs)}
/* 結束二次確認、接回提示 */
.confirm{display:inline-flex;gap:8px;align-items:center;background:var(--none-dim);border:1px solid var(--none);border-radius:10px;padding:4px 6px 4px 12px;font-size:14px;color:var(--none)}
.confirm .btn{min-height:32px;padding:4px 12px}
.banner.attach{background:var(--accent-dim);color:var(--ink);border-left:3px solid var(--accent);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
/* 登記表 */
input.ck{width:1.4rem;height:1.4rem;border-radius:6px}
input.ck:checked::after{left:.42rem;top:.14rem;width:.4rem;height:.8rem}
/* 頂欄：標題太長省略號，導航不被擠掉 */
.top .sess{min-width:11rem;flex:1 1 auto;max-width:34vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:1.3}
.ind{gap:10px;flex:0 1 auto;min-width:0}.ind .pill{max-width:17rem;flex:0 1 auto;min-width:2.5rem;overflow:hidden}.ind .btn{padding:8px 12px}.top{gap:12px}.ind .pill>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.top .sess b{display:inline}.top .sess span{margin-left:8px;color:var(--faint)}
.ind{flex:0 0 auto}
/* 頂欄在 1600px 以下把副標題收起來，給狀態與「結束」留位 */
@media (max-width:1600px){.brand span{display:none}}
@media (max-width:1280px){.ind .btn[data-open-roster]{display:none}}

/* ── 打字員操作台（2026-09-14）：三欄 = 發言人 / 逐字稿 / 問題。打字員盯一位議員，對着原話核對他的問題；
   列點摘錄先在屏幕上預覽，列印時只出那一塊。 ── */
.deskbar{display:flex;align-items:center;gap:14px 18px;flex-wrap:wrap;padding:10px 18px;background:var(--panel);border-bottom:1px solid var(--line)}
.deskbar .lbl{font-size:14px;color:var(--dim);gap:8px}
.deskbar input[type=text]{min-height:40px;font-size:15px;padding:6px 12px;border-radius:10px;width:15rem;max-width:none}
.deskbar .dd-btn{min-height:40px;max-width:min(40rem,80vw)}.deskbar .dd-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

main.grid.desk{grid-template-columns:minmax(0,.62fr) minmax(0,1.25fr) minmax(0,1.13fr);height:calc(100vh - 60px - 61px)}
@media (max-width:1000px){main.grid.desk .body{max-height:62vh}}
.spk{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-bottom:1px solid var(--line);cursor:pointer;border-left:3px solid transparent}
.spk:hover{background:var(--panel-2)}
.spk.on{background:var(--panel-2);border-left-color:var(--accent)}
.spk .n{display:flex;align-items:center;gap:8px;font-size:15.5px;font-weight:700;flex-wrap:wrap}
.spk .n .badge-voice,.spk .n .badge-anon,.spk .n .badge-cue{margin-left:0}
.spk .d{font-size:12.5px;color:var(--faint);display:flex;gap:10px;flex-wrap:wrap}
.spk .d b{color:var(--dim);font-weight:600}.spk .d .qn{color:var(--part)}
.desk .turn .say{display:block;-webkit-line-clamp:unset;color:var(--ink);font-size:14.5px;line-height:1.75}
.desk .turn.now .say{font-size:14.5px}
.desk .turn .th{flex-wrap:wrap}.desk .turn .th .t{font-family:var(--mono);font-size:12px;color:var(--faint);font-variant-numeric:tabular-nums}

.desk .turn.now .th::after{content:"發言中";font-size:11px;padding:2px 8px;border-radius:99px;background:var(--accent);color:#fff;font-weight:700;letter-spacing:.05em}
.desk .turn.flash{animation:mark 1.6s ease}
.desk .ph .btn{min-height:32px;padding:4px 12px;font-size:13px}.desk .ph .btn.primary{padding:4px 14px}
/* 列點摘錄預覽 / 列印 */
.pv-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:50;display:none}
.pv-bg.open{display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:30px 16px}
.pv{background:#fff;color:#000;width:min(760px,100%);padding:32px 44px 36px;border-radius:8px;font-family:"標楷體","DFKai-SB","BiauKai","Noto Serif TC",serif;font-size:14pt;line-height:1.75}
.pv h1{font-size:16pt;text-align:center;margin:0;font-family:inherit}
.pv .pk{text-align:center;font-weight:700;margin:2px 0}
.pv p{margin:12px 0 6px}
.pv ol{padding-left:2em;margin:0}.pv li{margin:6px 0}
.pv .unc{display:inline-block;border:1px solid #000;padding:0 6px;font-size:11pt;margin-right:6px;vertical-align:middle}
.pv .pfoot{margin-top:18px;font-size:11pt;color:#444}
.pv-acts{display:flex;gap:10px;justify-content:flex-end;margin-bottom:14px}
@media print{
  body.desk{background:#fff;color:#000}
  body.desk .top,body.desk .deskbar,body.desk main.grid,body.desk .err,body.desk .pv-acts{display:none!important}
  body.desk .pv-bg{display:block!important;position:static;background:none;padding:0}
  body.desk .pv{width:auto;padding:0;border-radius:0}
}
/* 窄屏：頂欄換行、導航自己橫滾，頁面本身不橫滾 */
@media (max-width:1000px){
  body.desk .top{height:auto;flex-wrap:wrap;padding:8px 12px;gap:8px 12px}
  body.desk .top .sess{max-width:100%;min-width:0;flex:1 1 100%}
  body.desk .ind{margin-left:0}
}

/* ── 多人操作台（2026-09-18）：報名、認領、誰在改、已印 ── */
.gate-bg{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:60;display:flex;align-items:center;justify-content:center;padding:16px}
.gate{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:26px 28px;width:min(420px,100%);box-shadow:var(--shadow)}
.gate h3{margin:0 0 6px;font-family:var(--serif);font-size:21px}.gate p{margin:0 0 14px;color:var(--dim);font-size:14px;line-height:1.6}
.gate input[type=text]{width:100%;max-width:none;min-height:var(--ctl-h);font-size:var(--ctl-fs);padding:8px 14px;border-radius:10px;border:1px solid var(--line-2);background:var(--panel-2);color:var(--ink)}
.gate .warn{margin-top:12px;padding:8px 12px;border-radius:9px;background:var(--warn-bg,rgba(200,120,0,.12));color:var(--none);font-size:14px;line-height:1.55}
.gate .acts{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.deskbar .me{gap:6px;color:var(--ink)}.deskbar .me b{font-size:15px}.btn.small{min-height:30px;padding:3px 10px;font-size:13px}

.spkh{display:flex;align-items:center;gap:8px;padding:7px 14px 5px;font-size:11.5px;letter-spacing:.12em;color:var(--faint);background:var(--panel-2);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2}
.spkh span{font-family:var(--mono);letter-spacing:0;color:var(--dim)}.spkh.mine{color:var(--accent)}.spkh.warn{color:var(--part)}
.spk.mine{border-left-color:var(--accent)}
.spk .d .ok{color:var(--full)}
.asg{font-size:11.5px;padding:2px 9px;border-radius:99px;background:var(--line);color:var(--dim);font-weight:600;white-space:nowrap}
.asg.me{background:var(--accent);color:#fff}
.claim{margin-left:auto;font:inherit;font-size:12.5px;border:1px solid var(--line-2);background:var(--panel);color:var(--dim);border-radius:8px;padding:3px 10px;min-height:28px;cursor:pointer;white-space:nowrap;opacity:.7}
.spk:hover .claim,.spk.on .claim{opacity:1}.claim:hover{border-color:var(--accent);color:var(--ink)}
.man.m-lock{border-color:var(--part);color:var(--part);background:var(--part-dim)}
.q.locked{background:repeating-linear-gradient(-45deg,transparent 0 12px,color-mix(in srgb,var(--part) 7%,transparent) 12px 14px)}
.qa[disabled]{opacity:.35;cursor:not-allowed}

.pv-acts .sp{flex:1}.pv-acts .lbl{color:#555}
.deskbar .lbl.round .btn{min-height:36px}

/* ── 操作台重排（2026-09-18，用戶要求按打字員的座位重做）：三欄 = 窄議員欄 / 全場逐字稿 / 我的議員 ── */
main.grid.desk3{grid-template-columns:15.5rem minmax(0,1.15fr) minmax(0,1fr);height:calc(100vh - 60px - 61px - 44px)}
@media (max-width:1100px){main.grid.desk3{grid-template-columns:1fr;height:auto}}
.caption.strip{min-height:44px;padding:8px 18px;font-size:15px;border-bottom:1px solid var(--line);background:var(--panel);display:flex;gap:10px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.caption.strip .cwho{color:var(--accent);font-weight:700;flex:0 0 auto}
.caption.strip.pending{color:var(--dim);font-style:italic}

.rail .ph{padding:8px 12px}.rail .spk{padding:8px 12px;gap:2px}.rail .spk .n{font-size:14px;gap:6px}.rail .spk .d{font-size:12px;gap:8px}
.rail .claim{font-size:12px;padding:2px 8px;min-height:26px}.rail .asg{font-size:11px;padding:1px 7px}
.spk.talking{background:var(--panel-2)}
.spkfold>summary{list-style:none;cursor:pointer}.spkfold>summary::-webkit-details-marker{display:none}.spkfold>summary::after{content:"▸";margin-left:auto;color:var(--faint)}.spkfold[open]>summary::after{content:"▾"}
.blank.small{padding:14px 12px;font-size:12.5px;text-align:left;line-height:1.6}
.ph .follow{gap:7px;margin-left:auto;color:var(--dim);font-size:12.5px;white-space:nowrap;cursor:pointer;user-select:none}
/* 「跟着最新」是開關不是勾選：做成滑動開關。以前沿用 .ck 勾選框又單獨縮小，勾號按大框定位、溢出成一團綠（2026-09-24 用戶） */
.ph .follow input.ck{width:1.9rem;height:1.05rem;border-radius:99px;border:0;background:var(--line-2);transition:background .15s}
.ph .follow input.ck::after{content:"";position:absolute;top:.15rem;left:.15rem;width:.75rem;height:.75rem;border:0;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transform:none;transition:left .15s}
.ph .follow input.ck:checked{background:var(--accent)}
.ph .follow input.ck:checked::after{left:1rem;top:.15rem;width:.75rem;height:.75rem;border:0;transform:none}
.ph .follow:has(input:checked){color:var(--accent)}
.desk .turn.mine{border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.desk .turn.chair{opacity:.8}.desk .turn.chair .say{font-size:13px;color:var(--dim)}
.desk .turn .th .ph-tag{font-size:10.5px;padding:1px 7px;border-radius:99px;background:var(--panel-3);color:var(--dim)}
.desk .turn .say mark{background:var(--full-dim);color:var(--ink);border-bottom:2px solid var(--full);padding:0 1px}
.phase{font-size:12px;padding:3px 10px;border-radius:99px;background:var(--panel-3);color:var(--dim);white-space:nowrap}
.phase.talking{background:var(--accent);color:#fff}.phase.done{background:var(--part-dim);color:var(--part)}.phase.answering{background:var(--info-dim);color:var(--info)}
.phase.answered{background:var(--none-dim);color:var(--none)}.phase.extracting{background:var(--panel-3);color:var(--dim)}
.acts-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--panel-2);min-height:44px}
.acts-bar:empty{display:none}.acts-bar .sp{flex:1}.acts-bar .hint{font-size:13px;color:var(--dim)}
.acts-bar .btn{min-height:36px;padding:6px 14px}.acts-bar .btn.small{min-height:30px;padding:3px 10px;font-size:13px}
.btn.due{background:var(--none);border-color:var(--none);color:#fff;font-weight:700}
.man.m-draft{border-style:dashed;color:var(--dim)}
.offtopic{border-bottom:1px solid var(--line)}.offtopic:empty{display:none}
.oth{padding:8px 14px 4px;font-size:12px;letter-spacing:.1em;color:var(--part);font-weight:700}.oth span{letter-spacing:0;font-weight:400;color:var(--faint);margin-left:8px}
.ot{padding:6px 14px 8px;font-size:13.5px;display:grid;grid-template-columns:auto 1fr;gap:2px 10px;border-left:3px solid var(--part)}
.ot.hard{border-left-color:var(--none)}.ot b{color:var(--part)}.ot.hard b{color:var(--none)}.ot i{font-style:normal;color:var(--dim)}.ot span{grid-column:1/-1;color:var(--ink)}.ot em{grid-column:1/-1;font-style:normal;font-size:12.5px;color:var(--faint)}

/* ── 一進來先問「你是誰」（2026-09-20 重排；用戶：又有現場實時又有操作台，看不懂怎麼用）──
   會場只有兩種人：主控一位、打字員若干。導航欄的六個平級標籤全部去掉，每個頁面只說自己是給誰的。 */
.pick{max-width:1000px;margin:0 auto;padding:44px 24px 60px}
.pick h1{font-family:var(--serif);font-size:32px;margin:0 0 24px}
.pick .sub{color:var(--dim);font-size:15px;margin-bottom:28px}
/* 首頁角色卡一律寫成 .picks .pk：摘錄紙上也有 .pk（.pv .pk，日期、議員兩行），不限定的話紙上印成帶邊框的卡片（2026-10-10 查出） */
.picks{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media (max-width:860px){.picks{grid-template-columns:1fr}}
.picks .pk{display:flex;flex-direction:column;text-decoration:none;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:26px 26px 22px;transition:.15s}
.picks .pk:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}
.picks .pk.last{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}
.picks .pk .k{font-size:11.5px;letter-spacing:.14em;color:var(--faint);margin-bottom:6px}
.picks .pk h2{font-family:var(--serif);font-size:28px;margin:0 0 10px}
.picks .pk p{color:var(--dim);margin:0 0 12px;font-size:14.5px;line-height:1.7}.picks .pk p b{color:var(--ink)}
.picks .pk ul{margin:0;padding-left:18px;color:var(--dim);font-size:13.5px;line-height:1.85}
.picks .pk .go{margin-top:16px;align-self:flex-start;background:var(--accent);color:var(--accent-ink);font-weight:700;padding:9px 20px;border-radius:8px;font-size:15px}
.more{margin-top:30px;display:grid;gap:10px;font-size:13.5px;color:var(--faint)}
.more div{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;padding:10px 14px;background:var(--panel);border:1px solid var(--line);border-radius:10px}
.more b{color:var(--dim);font-weight:600;min-width:6em}
.more a{color:var(--accent);text-decoration:none}.more a:hover{text-decoration:underline}
.more span{color:var(--faint)}
.pick .foot{margin-top:18px}
.running{padding:12px 16px;border-radius:10px;background:var(--accent-dim);color:var(--ink);font-size:14px;border-left:3px solid var(--accent)}
.btn.ghost.back{text-decoration:none;display:inline-flex;align-items:center}
/* 主控右欄：全場狀態（一位議員一行）與會場的紙 */
.papers{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--panel-2)}
.papers .sp{flex:1}.papers .btn{min-height:36px;padding:6px 14px}
.brow{padding:9px 14px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px}
.brow.on{background:var(--panel-2)}
.brow .b1{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:15px}
.brow .b1 b{font-weight:700}
.brow .b2{display:flex;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--faint)}
.brow .b2 .ok{color:var(--full)}.brow .b2 .bad,.brow .b2 i.bad{color:var(--none);font-style:normal;font-weight:600}
.bst{font-size:11.5px;padding:2px 9px;border-radius:99px;background:var(--panel-3);color:var(--dim)}
.bst.talking{background:var(--accent);color:#fff}.bst.done{background:var(--part-dim);color:var(--part)}
.bst.answering{background:var(--info-dim);color:var(--info)}.bst.answered{background:var(--none-dim);color:var(--none)}
.bwait{padding:12px 14px;font-size:12.5px;color:var(--faint)}
.deskbar .sess1{font-size:15px;color:var(--ink);gap:10px}.deskbar .sess1 b{font-weight:700}.deskbar .sess1 i{font-style:normal;color:var(--faint);font-size:13px}
/* 引擎狀態一行（取代四個常駐流程盒子，2026-09-20 審查） */
.engine{display:flex;align-items:center;gap:8px;padding:7px 16px;border-bottom:1px solid var(--line);font-size:12.5px;color:var(--faint)}

.engine.bad{color:var(--none);background:var(--none-dim)}
.cov b.bad{color:var(--none)}
.ev{padding-right:74px}
.ev .jump{position:absolute;right:6px;top:5px;border:1px solid var(--line-2);background:var(--panel-3);color:var(--accent);border-radius:6px;padding:2px 10px;font-size:12px;cursor:pointer;z-index:1}
.ev .jump:hover{border-color:var(--accent);background:var(--accent-dim)}

/* 2026-09-22 交互簡化：判定按鈕收進「改判」；發言順序可拖；左欄「下一位」提示 */
.qacts .sp{flex:1}
.qv{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
.chips.order .chip{cursor:grab;padding-left:8px}.chips.order .chip.drag{opacity:.4}
.chips.order .chip .ord{display:inline-block;min-width:1.6em;text-align:right;font-family:var(--mono);font-size:.85em;opacity:.75;margin-right:6px;font-style:normal}
.chips.order .chip .ord:empty{display:none}
.chips.order .chip .tail{display:inline-flex;justify-content:flex-end;align-items:center;width:2.9em;margin-left:6px;font-style:normal}
.chips.order .chip .grip{letter-spacing:-2px;opacity:.5;font-size:.9em;font-style:normal}
.spk .n .ord,.brow .b1 .ord{font-family:var(--mono);font-style:normal;font-size:11.5px;color:var(--faint);min-width:1.4em;text-align:right}
.spk .nx{font-size:11px;color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:0 6px;line-height:16px}
.setup textarea#orderText{margin:6px 0}
.setup .sb>.btn.small{align-self:flex-start}
/* 「離任」與確認句都是浮層，不佔標籤寬度：懸停改寬會把整行擠亂（2026-09-22 用戶指出） */
.chips.order .chip{position:relative;overflow:visible}
.chips.order .chip .retire{display:none;padding:1px 7px;border-radius:999px;background:rgba(0,0,0,.28);color:#fff;font-style:normal;font-size:.78em;cursor:pointer;line-height:1.5}
.chips.order .chip:not(.on) .retire{background:var(--panel-2);color:var(--dim);border:1px solid var(--line-2)}
.chips.order .chip:hover .grip{display:none}.chips.order .chip:hover .retire{display:inline-block}
.chips.order .chip .retire-ask{position:absolute;left:0;top:calc(100% + 4px);z-index:5;display:inline-flex;gap:6px;align-items:center;white-space:nowrap;padding:6px 10px;border-radius:8px;background:var(--panel);color:var(--ink);border:1px solid var(--line-2);box-shadow:0 6px 18px rgba(0,0,0,.12);font-style:normal;font-size:13px}

/* ── 結算頁 ── */
.settle .sh{display:flex;align-items:center;gap:12px;justify-content:space-between}
.settle .stline{font-size:13px;color:var(--dim)}
.settle .snum{display:flex;flex-wrap:wrap;gap:8px 26px}
.settle .snum span{font-size:11.5px;color:var(--faint);display:flex;flex-direction:column}
.settle .snum b{font-family:var(--serif);font-size:28px;line-height:1.1;color:var(--ink);font-variant-numeric:tabular-nums}
.settle .snum .f b{color:var(--full)} .settle .snum .p b{color:var(--part)} .settle .snum .n b,.settle .snum .w b{color:var(--none)}
.settle .mrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.settle .mrow .path{flex:1;min-width:0}
.settle .path{font-size:12px;background:var(--panel-2);border:1px solid var(--line);border-radius:5px;padding:3px 8px;word-break:break-all}
.settle .btn.done{border-color:var(--full);color:var(--full)}
.settle .lbl.bad,.confirm .bad{color:var(--none);font-weight:600}
.settle .chips{display:flex;flex-wrap:wrap;gap:6px}
.settle .chip .ot2{margin-left:6px;opacity:.75;font-size:.8em}

/* 同一個人連着的段：接成一段顯示（改名合併之後，前面被拆開的幾段接上） */
.turn.cont{border-top:0;padding-top:0}
.turn.cont .th{display:none}
.rn[data-rn]:not([data-rn=""]){cursor:pointer;text-decoration:underline dotted var(--line-2);text-underline-offset:3px}
.turn:has(+ .turn.cont){border-bottom:0;padding-bottom:4px}

/* 本場領域按內容認定、與會前填的不同 */
.pill.warn{background:var(--part-dim);color:var(--part);border-color:var(--part)}

/* ── 打字員頁：簡潔版（2026-09-23 用戶：「可以做得更人性化、美觀簡潔一些嗎」）──
   原則：顏色只給要注意的事；同一件事只說一遍；不常用的按鈕平時收起來。 */
.desk .top .sess1{flex:1;min-width:0;margin:0 18px;font-size:14.5px;color:var(--ink);gap:10px;overflow:hidden;white-space:nowrap}
.desk .top .sess1 b{font-weight:700;overflow:hidden;text-overflow:ellipsis}
.desk .top .sess1 i{font-style:normal;color:var(--faint);font-size:12.5px}
.desk .top .me{font-size:13px;color:var(--dim);gap:4px}.desk .top .me b{color:var(--ink)}
.desk main.grid{height:calc(100vh - 56px)}
/* 實時字幕：逐字稿面板的最後一行 */
.desk .panel>.caption.strip{min-height:38px;padding:8px 16px;font-size:13.5px;border-bottom:0;border-top:1px solid var(--line);background:var(--panel-2);border-radius:0 0 12px 12px}
.desk .panel>.caption.strip.pending{font-style:normal}
/* 左欄：「我來盯」平時不顯示，移上去／他在講／選中時才出；「這是誰？」一直在 */
.desk .spk .claim{opacity:0;transition:opacity .12s}
.desk .spk:hover .claim,.desk .spk.talking .claim,.desk .spk.on .claim,.desk .spk.mine .claim,.desk .spk .claim[data-who],
.desk .spk[data-name^="發言人"] .claim{opacity:1}
.desk .spk .n>span{white-space:nowrap}
.desk .spk.mine .claim{min-height:26px;padding:2px 8px;font-size:12px}
/* 右欄：只看一位議員 —— 名字在欄頭說過了，分組頭與每張卡上的名字不再重複 */
.desk #ledger .gh{display:none}
.desk #ledger .q .qh>b{display:none}
.desk #ledger .q{border-left-width:3px;padding:14px 16px}
.desk #ledger .qx{font-size:14.5px;line-height:1.75;color:var(--ink)}
/* 待判：灰條灰字；紅條只留給判了「未回應」的 */
.q.pend{border-left-color:var(--line-2)}
.stp{background:var(--panel-3);color:var(--dim)}
/* 核對過的：退到背景裏，按鈕移上去才出 */
.desk #ledger .q.checked{background:transparent}
.desk #ledger .q.checked .qx{color:var(--dim)}
.desk #ledger .q.checked .qacts{display:none}
.desk #ledger .q.checked:hover .qacts,.desk #ledger .q.checked:focus-within .qacts{display:flex}
.desk #ledger .q.checked .qh::after{content:"✓ 已核對";font-size:12px;color:var(--full);font-weight:600;margin-left:auto}
/* 動作：只有「核對」像按鈕，其他是文字；「刪」移上去才出 */
.desk #ledger .qacts{opacity:1;margin-top:10px;gap:2px}
.desk #ledger .qa{border:0;background:transparent;color:var(--dim);padding:4px 10px;min-height:30px}
.desk #ledger .qa:hover{color:var(--ink);background:var(--panel-3)}
.desk #ledger .qa[data-act="check"]{border:1px solid var(--accent);color:var(--accent);font-weight:600;margin-right:6px}
.desk #ledger .qa[data-act="check"]:hover{background:var(--accent);color:#fff}
.desk #ledger .qa[data-act="check"].on{background:transparent;border-color:var(--line-2);color:var(--dim);font-weight:400}
.desk #ledger .qa.danger{visibility:hidden}
.desk #ledger .q:hover .qa.danger{visibility:visible}
.desk #ledger .ev{font-size:13px;line-height:1.7}

/* 右欄頭的狀態標籤：還沒選議員時是空的，別留一個空膠囊 */
.phase:empty{display:none}
/* 選人面板：改名＝選身份＋點名字 */
.picker{position:fixed;z-index:60;width:min(440px,calc(100vw - 24px));max-height:min(460px,calc(100vh - 24px));display:flex;flex-direction:column;
  background:var(--panel);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.18);padding:12px 12px 10px}
.pk-h{display:flex;align-items:baseline;gap:6px;font-size:15px;margin-bottom:10px}.pk-h b{font-size:16px}.pk-h span{color:var(--dim)}
.pk-x{margin-left:auto;border:0;background:transparent;font-size:20px;line-height:1;color:var(--faint);cursor:pointer;padding:0 4px}.pk-x:hover{color:var(--ink)}
.pk-roles{display:flex;gap:4px;background:var(--panel-2);border-radius:9px;padding:3px;margin-bottom:10px}
.pk-roles button{flex:1;border:0;background:transparent;border-radius:7px;padding:7px 0;font:inherit;font-size:14px;color:var(--dim);cursor:pointer}
.pk-roles button.on{background:var(--panel);color:var(--ink);font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.pk-q{width:100%;min-height:36px;font-size:14px;margin-bottom:8px}
.pk-list{overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:6px;padding:2px 2px 4px;min-height:60px}
.pk-n{border:1px solid var(--line-2);background:var(--panel);border-radius:8px;padding:8px 6px;font:inherit;font-size:14px;color:var(--ink);cursor:pointer;text-align:center;line-height:1.3;display:flex;flex-direction:column;align-items:center;gap:2px}
.pk-n:hover{border-color:var(--accent);background:var(--accent-dim)}
.pk-n small{font-size:11px;color:var(--faint);line-height:1.25;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pk-n i{font-style:normal;font-size:10.5px;color:var(--accent);font-weight:700}
.pk-n.next{border-color:var(--accent)}.pk-n.cur{opacity:.45}
.pk-sep,.pk-empty{grid-column:1/-1;font-size:12px;color:var(--faint);padding:6px 2px 0}
.pk-foot{padding-top:8px;border-top:1px solid var(--line);margin-top:6px}

/* 打字員管理（主控）：一人一行，姓名、要輸入的地址與號碼、複製、停用 */
.tp-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tp-row b{min-width:5rem}
.tp-row code{flex:1;min-width:14rem;font-size:12.5px;background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:4px 8px;color:var(--dim);user-select:all;word-break:break-all}
.tp-ask{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--none)}
.tp-add{display:flex;align-items:center;gap:8px;margin-top:10px}.tp-add input{width:12rem}
.tp-bg{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.28);display:flex;align-items:flex-start;justify-content:center;padding-top:10vh}
.tp-bg[hidden]{display:none}
.tp-box{width:min(720px,calc(100vw - 32px));background:var(--panel);border-radius:12px;box-shadow:0 16px 40px rgba(0,0,0,.2);padding:14px 18px 18px}
.tp-head{display:flex;align-items:center;margin-bottom:6px}.tp-head b{font-size:16px}

/* 首頁主控卡片：這台不是主控電腦時不可點 */
.picks .pk.off{cursor:not-allowed;opacity:.55}.picks .pk.off:hover{transform:none;box-shadow:none;border-color:var(--line)}.picks .pk.off .go{background:var(--line);color:var(--dim);font-weight:400}

/* 2026-10-10：「結束會議」的確認條掛在按鈕下方，不擠在頂欄一行裏 —— 1024 寬時「結束」按鈕被擠出屏幕右邊、整頁橫向滾動 */
#stopWrap{position:relative}
#stopWrap .confirm{position:absolute;right:0;top:calc(100% + 10px);z-index:40;white-space:nowrap;box-shadow:var(--shadow);background:var(--panel);padding:8px 8px 8px 14px}
@media (max-width:1100px){#stopWrap .confirm{white-space:normal;width:min(26rem,calc(100vw - 32px));flex-wrap:wrap}}
/* 打字員號碼：主控要唸給人聽，數字放大 */
.tp-row code b.tp-code{min-width:0;font-size:15px;color:var(--ink);letter-spacing:.08em}
/* 開會前試音的音量條：跟在按鈕後面，不佔一整行 */
#devMeter{display:inline-flex;width:15rem;font-size:13px;color:var(--dim)}
