:root{
  --paper:#F7F4EC; --surface:#FFFFFF; --surface-2:#F1EDE2;
  --ink:#16202B; --ink-2:#465360; --ink-3:#6F7B86;
  --line:#E0DACB; --line-2:#EBE6DA;
  --accent:#2E5A7D; --accent-ink:#1D4460; --accent-soft:#E9F0F5; --accent-line:#C3D5E2;
  --gold:#8A6A22; --gold-soft:#FAF3E2; --gold-line:#E7D9B4;
  --green:#2E6E37; --green-soft:#EAF3EB; --green-line:#CBE2CE;
  --red:#A6342B;
  --sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --serif:'Source Serif 4',Georgia,'Times New Roman',serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;
  --r:7px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#11171D; --surface:#18202A; --surface-2:#1F2831;
    --ink:#ECE8DE; --ink-2:#B3BDC6; --ink-3:#8A949E;
    --line:#2B353F; --line-2:#232C35;
    --accent:#8FB8D6; --accent-ink:#B0CEE5; --accent-soft:#1B2B38; --accent-line:#31475A;
    --gold:#D9B872; --gold-soft:#2B2618; --gold-line:#453C22;
    --green:#84C08D; --green-soft:#1B2A1E; --green-line:#2C452F;
    --red:#E08078;
  }
}
:root[data-theme="dark"]{
  --paper:#11171D; --surface:#18202A; --surface-2:#1F2831;
  --ink:#ECE8DE; --ink-2:#B3BDC6; --ink-3:#8A949E;
  --line:#2B353F; --line-2:#232C35;
  --accent:#8FB8D6; --accent-ink:#B0CEE5; --accent-soft:#1B2B38; --accent-line:#31475A;
  --gold:#D9B872; --gold-soft:#2B2618; --gold-line:#453C22;
  --green:#84C08D; --green-soft:#1B2A1E; --green-line:#2C452F;
  --red:#E08078;
}

*{box-sizing:border-box}
html,body{height:100%}
[hidden]{display:none!important}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-text-size-adjust:100%}
button{font:inherit;color:inherit;cursor:pointer}
input,textarea,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.shell{display:flex;height:100%;overflow:hidden}

/* Rail */
.rail{flex:0 0 194px;background:var(--surface-2);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:14px 10px calc(10px + env(safe-area-inset-bottom,0px));gap:3px;overflow-y:auto}
.brand{display:flex;align-items:center;gap:9px;padding:2px 8px 14px}
.brand b{font-size:15px;font-weight:600;letter-spacing:-.01em}
.mark{width:27px;height:27px;border-radius:8px;background:#16202B;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:15px;flex:0 0 auto}
.dot{width:7px;height:7px;border-radius:50%;background:var(--ink-3);flex:0 0 auto}
.dot.ok{background:var(--green)}.dot.syncing{background:var(--gold)}.dot.offline{background:var(--red)}
#storeState{display:flex;align-items:center;gap:6px}
.dev{display:flex;align-items:center;gap:9px;padding:9px 0;border-top:1px solid var(--line-2);font-size:13px}
.dev .n{flex:1;min-width:0}
.dev .w{font-size:11.5px;color:var(--ink-3)}
.navbtn{display:flex;align-items:center;gap:10px;padding:8px 10px;border:0;background:none;border-radius:var(--r);text-align:left;color:var(--ink-2);font-size:13.5px;width:100%}
.navbtn:hover{background:var(--line-2)}
.navbtn[aria-current="true"]{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}
.navbtn svg{flex:0 0 auto;opacity:.85}
.railfoot{margin-top:auto;padding:10px 8px 0;font-size:11px;color:var(--ink-3);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:5px}

/* Main */
.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.topbar{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--surface);flex-wrap:wrap}
.topbar h1{margin:0;font-size:16px;font-weight:600;letter-spacing:-.01em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.spacer{flex:1 1 auto}
.body{flex:1;min-height:0;overflow-y:auto;padding:18px 16px 60px}
.wrap{max-width:820px;margin:0 auto}
.two{display:flex;gap:18px;align-items:flex-start;max-width:1180px;margin:0 auto}
.two>.col-main{flex:1 1 auto;min-width:0}
.two>.col-side{flex:0 0 288px}
@media (max-width:900px){ .two{flex-direction:column} .two>.col-side{flex:1 1 auto;width:100%} }

/* Controls */
.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border:1px solid var(--line);background:var(--surface);border-radius:var(--r);font-size:13px;color:var(--ink-2)}
.btn:hover{border-color:var(--ink-3);color:var(--ink)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}
.btn.primary:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:#fff}
.btn.ghost{border-color:transparent;background:none}
.btn.ghost:hover{background:var(--line-2)}
.btn.danger:hover{border-color:var(--red);color:var(--red)}
.btn small{color:inherit;opacity:.7;font-size:11px}
.field{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);color:var(--ink)}
.field:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.lbl{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);font-weight:600}
.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:11px;font-size:11.5px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2)}
.pill.blue{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}
.pill.gold{background:var(--gold-soft);border-color:var(--gold-line);color:var(--gold)}
.pill.green{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:10px}
.muted{color:var(--ink-3);font-size:12.5px}
.empty{padding:34px 20px;text-align:center;color:var(--ink-3);font-size:13px}

/* Talk list */
.tlist{display:flex;flex-direction:column;gap:8px}
.titem{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:10px;width:100%;text-align:left}
.titem:hover{border-color:var(--accent-line)}
.titem .t1{font-size:14px;font-weight:600;margin-bottom:3px}
.titem .t2{font-size:12px;color:var(--ink-3)}
.titem .meta{margin-left:auto;display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}

/* Editor */
.blocks{display:flex;flex-direction:column;gap:3px;padding-bottom:20px}
.blk{position:relative;display:flex;gap:9px;align-items:flex-start;border-radius:var(--r);padding:2px 4px 2px 0}
.blk:hover{background:var(--line-2)}
.blk .handle{flex:0 0 22px;padding-top:7px;text-align:center;color:var(--ink-3);opacity:0;font-size:11px}
.blk:hover .handle,.blk:focus-within .handle{opacity:1}
.blk .ta{flex:1;min-width:0;border:0;background:none;resize:none;overflow:hidden;padding:5px 2px;line-height:1.65;font-size:15px}
.blk .ta:focus{outline:none}
.blk[data-kind="point"] .ta{font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);padding-top:14px}
.blk[data-kind="bullet"]{padding-left:6px}
.blk[data-kind="bullet"] .ta{padding-left:16px}
.blk[data-kind="bullet"]::before{content:"";position:absolute;left:34px;top:16px;width:5px;height:5px;border-radius:50%;background:var(--ink-3)}
.blk[data-kind="note"] .ta{font-size:14px;color:var(--gold);background:var(--gold-soft);border:1px solid var(--gold-line);border-radius:var(--r);padding:9px 11px}
.blk[data-kind="cite"] .ta{font-size:14px;color:var(--ink-2);background:var(--surface-2);border-left:3px solid var(--ink-3);border-radius:0 var(--r) var(--r) 0;padding:9px 11px}
.blk .del{opacity:0;flex:0 0 auto;border:0;background:none;color:var(--ink-3);padding:6px;border-radius:5px}
.blk:hover .del,.blk:focus-within .del{opacity:1}
.blk .del:hover{color:var(--red);background:var(--line-2)}
.scrip{flex:1;display:flex;flex-direction:column;gap:5px;background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r);padding:10px 12px;min-width:0}
.scrip .ref{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.scrip .ref b{font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-ink)}
.scrip .vt{font-family:var(--serif);font-size:15px;line-height:1.55;color:var(--ink)}
.scrip a{color:var(--accent-ink);font-size:11.5px;text-decoration:none;border-bottom:1px solid var(--accent-line)}
.scrip a:hover{border-bottom-color:var(--accent-ink)}
.rule{flex:1;height:1px;background:var(--line);margin:14px 0}

/* slash menu */
.menu{position:absolute;z-index:40;width:270px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--line);border-radius:9px;box-shadow:0 14px 34px rgba(0,0,0,.18);overflow:hidden;padding:4px}
.menu .mi{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:0;background:none;border-radius:6px;text-align:left;font-size:13px}
.menu .mi[aria-selected="true"]{background:var(--accent-soft);color:var(--accent-ink)}
.menu .mi span.d{margin-left:auto;font-size:11px;color:var(--ink-3)}
.menu .mh{padding:7px 10px 4px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:600}

/* Talk mode */
.tm{position:fixed;inset:0;z-index:100;background:var(--paper);display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.tm .tmbar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tm .clock{font-family:var(--mono);font-size:22px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.tm .pace{height:6px;border-radius:3px;background:var(--line);overflow:hidden;flex:1 1 140px;min-width:100px}
.tm .pace i{display:block;height:100%;background:var(--green)}
.tm .stage{flex:1;min-height:0;overflow-y:auto;padding:26px 24px}
.tm .stage .inner{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.tm h2{margin:0;font-size:clamp(22px,3.4vw,34px);line-height:1.25;letter-spacing:-.02em;text-wrap:balance}
.tm .tmscrip{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:12px;padding:20px 22px}
.tm .tmscrip b{font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:var(--accent-ink)}
.tm .tmscrip p{font-family:var(--serif);font-size:clamp(17px,2.2vw,25px);line-height:1.5;margin:8px 0 0}
.tm .tmtext{font-size:clamp(15px,1.7vw,20px);line-height:1.6}
.tm .tmnote{background:var(--gold-soft);border:1px solid var(--gold-line);color:var(--gold);border-radius:9px;padding:13px 16px;font-size:clamp(14px,1.5vw,17px)}
.tm .tmnav{flex:0 0 auto;display:flex;border-top:1px solid var(--line)}
.tm .tmnav button{flex:1;padding:18px 10px;border:0;background:none;font-size:14px;font-weight:600;color:var(--ink-2)}
.tm .tmnav button:hover:not(:disabled){background:var(--surface-2)}
.tm .tmnav button:disabled{opacity:.35;cursor:default}
.tm .tmnav .mid{flex:0 0 auto;padding:18px 16px;font-size:12px;color:var(--ink-3);align-self:center}

/* Listening */
.cap{display:flex;gap:12px;align-items:flex-start;padding:7px 0;border-bottom:1px solid var(--line-2)}
.cap .ts{flex:0 0 46px;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);padding-top:4px;font-variant-numeric:tabular-nums}
.cap .kd{flex:0 0 72px}
.cap .tx{flex:1;min-width:0;font-size:14.5px;line-height:1.55}
.capbar{position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:9px;margin:0 -16px -60px}
.chips{display:flex;gap:7px;flex-wrap:wrap}

/* Search */
.hit{display:block;width:100%;text-align:left;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.hit:hover{border-color:var(--accent-line)}
mark{background:#F6E6A8;color:inherit;border-radius:2px;padding:0 2px}
:root[data-theme="dark"] mark{background:#4A3F1E;color:#F0E6C8}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) mark{background:#4A3F1E;color:#F0E6C8}}

/* toast */
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(22px + env(safe-area-inset-bottom,0px));z-index:200;background:var(--ink);color:var(--paper);padding:9px 16px;border-radius:20px;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.24)}

@media (max-width:760px){
  .shell{flex-direction:column-reverse}
  .rail{flex:0 0 auto;flex-direction:row;overflow-x:auto;border-right:0;border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));gap:4px}
  .brand,.railfoot{display:none}
  .navbtn{flex-direction:column;gap:3px;font-size:10.5px;padding:7px 10px;white-space:nowrap}
}

/* speech */
.micbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:150;width:min(640px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 38px rgba(0,0,0,.2);padding:12px 14px;display:flex;flex-direction:column;gap:9px}
.micbar .row{display:flex;align-items:center;gap:10px}
.micbar .live{font-size:14px;line-height:1.5;color:var(--ink-3);min-height:21px;max-height:76px;overflow:hidden}
.micbar .live b{color:var(--ink);font-weight:400}
.dot{width:9px;height:9px;border-radius:50%;background:var(--red);flex:0 0 auto;animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.dot{animation:none}}
.covbar{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--ink-3)}
.covbar i{display:block;height:6px;border-radius:3px;background:var(--green)}
[data-bid].covered{opacity:.42}
[data-bid].covered .bd,[data-bid].covered.tmtext{text-decoration:line-through;text-decoration-color:var(--ink-3);text-decoration-thickness:1px}
[data-bid].missed{background:var(--gold-soft);border-left:3px solid var(--gold);border-radius:0 7px 7px 0;padding:6px 12px;margin-left:-15px}
[data-bid].saying{border-left:3px solid var(--accent);padding-left:12px;margin-left:-15px}

/* conversation */
.who{flex:0 0 auto;margin-top:7px;border:1px solid var(--line);background:var(--surface);border-radius:11px;padding:2px 9px;font-size:11px;color:var(--ink-2);white-space:nowrap;max-width:110px;overflow:hidden;text-overflow:ellipsis}
.who.b{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-ink)}
.blk.roleB .ta{color:var(--ink-2)}
.dlg{display:flex;flex-direction:column;gap:15px}
.dlg .ln{display:flex;gap:16px;align-items:flex-start}
.dlg .ln .rl{flex:0 0 104px;text-align:right;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);padding-top:7px;font-weight:600}
.dlg .ln .bd{flex:1;min-width:0;font-size:clamp(14px,1.5vw,18px);line-height:1.6;color:var(--ink-3)}
.dlg .ln.mine .rl{color:var(--accent)}
.dlg .ln.mine .bd{color:var(--ink);font-size:clamp(17px,2.1vw,24px);line-height:1.5}
.dlg .ln.mine .bd .tmscrip{margin-top:6px}
@media (max-width:640px){.dlg .ln{flex-direction:column;gap:2px}.dlg .ln .rl{text-align:left;flex:0 0 auto}}

@media print{
  .rail,.topbar,.capbar,.noprint,.tm{display:none!important}
  .shell,.main,.body{display:block;overflow:visible;height:auto}
  body{background:#fff;color:#000}
  .blk .del,.blk .handle{display:none}
  .blk .ta{border:0!important;background:none!important;color:#000!important}
  .scrip{background:#fff;border:1px solid #bbb}
}

/* ---------------- sign-in gate ---------------- */
.gate{position:fixed;inset:0;z-index:300;background:var(--paper);display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto}
.gate[hidden]{display:none}
.gatecard{width:100%;max-width:400px;display:flex;flex-direction:column;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:30px 28px calc(26px + env(safe-area-inset-bottom,0px));box-shadow:0 14px 40px rgba(22,32,43,.09)}
.gatehead{display:flex;align-items:center;gap:11px}
.gatehead b{font-size:17px;font-weight:600;letter-spacing:-.01em}
.mark-lg{width:38px;height:38px;border-radius:11px}
.gatecard h2{margin:6px 0 0;font-family:var(--serif);font-size:24px;font-weight:600;line-height:1.25;letter-spacing:-.015em}
.gatep{margin:0;font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.gateform{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.btn.big{padding:11px 16px;font-size:14px;justify-content:center}
.btn.wide{width:100%}
.gateor{text-align:center;font-size:12px;color:var(--ink-3);position:relative}
.gateok{font-size:13.5px;line-height:1.6;color:var(--accent-ink);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r);padding:11px 13px}
.gatewarn{font-size:13px;line-height:1.55;color:var(--gold);background:var(--gold-soft);border:1px solid var(--gold-line);border-radius:var(--r);padding:10px 12px}
.linkbtn{border:0;background:none;color:var(--ink-3);font-size:12.5px;text-decoration:underline;text-underline-offset:3px;padding:6px 0 0;align-self:center}
.linkbtn:hover{color:var(--ink-2)}
@media (max-width:520px){ .gatecard{border:0;box-shadow:none;padding:24px 20px} .gate{padding:0;align-items:flex-start;padding-top:calc(28px + env(safe-area-inset-top,0px))} }
