/* Helm module-navigation concepts. Tokens and base patterns copied from src/inbox/app.html (light theme). */
:root{
  --bg:#FFFEFA; --canvas:#FFFEFA; --rail:#FFFEFA; --raised:#F7F6F0;
  --ink:#262626; --ink-2:#5A5954; --ink-3:#67665F; --ink-faint:#ABA9A2;
  --line:#E9E8E3; --line-soft:#F1F0EB; --sel:#F0EFEA; --sel-2:#E7E5DF;
  --brand:#0E9F6E; --brand-ink:#FFFEFA; --unread:#3B7DE0;
  --wa:#25D366; --sms:#85847E; --mail:#8B8A83;
  --av-bg:#E8E7E1; --av-ink:#57564F;
  --ai-bg:#F2F1ED; --ai-line:#E5E3DC; --ai-ink:#57564F;
  --star:#C9993C;
  --c-green:#4F9468; --c-blue:#4E7EBF; --c-purple:#7B6EB4; --c-amber:#B4863D; --c-teal:#3E8E83;
  --shadow-pane:-14px 0 40px -28px rgba(35,30,22,.35);
  --shadow-float:0 24px 60px -18px rgba(35,30,22,.32),0 4px 14px -6px rgba(35,30,22,.16);
  --shadow-menu:0 16px 40px -14px rgba(35,30,22,.30),0 2px 8px -4px rgba(35,30,22,.14);
  --r-sm:7px; --r-md:10px; --r-lg:14px; --r-xl:18px;
  --ease:cubic-bezier(.22,.9,.28,1); --dur:.34s;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --serif:"Hedvig Letters Serif",Georgia,serif;
  --mono:"Roboto Mono",ui-monospace,monospace;
}
body{margin:0;background:var(--bg)}
/* The frame keeps the normal glyphs. Inter's tabular figures also swap the hyphen for a figure-wide
   glyph, so a frame-wide `tabular-nums` widened every hyphen in the app (#1472). Only an element
   that shows figures in a column (a time, a count, a date, the hour ruler) sets tabular figures. */
.shell,.mod{font-family:var(--sans);font-size:14px;line-height:1.45;letter-spacing:-.006em;color:var(--ink);
  -webkit-font-smoothing:antialiased;box-sizing:border-box}
:where(.shell,.mod) *{box-sizing:border-box}
:where(.shell,.mod) button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0;letter-spacing:inherit;text-align:inherit}
:where(.shell,.mod) :where(input,textarea){font:inherit;color:inherit}
.shell :focus-visible,.mod :focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.ico{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;display:block}
.ico-sm{width:15px;height:15px}
.ico-xs{width:13px;height:13px}
.fill{fill:currentColor;stroke:none}
.kbd{font-size:10.5px;font-weight:600;color:var(--ink-3);background:var(--canvas);border:1px solid var(--line);border-radius:5px;padding:1px 5px;letter-spacing:.02em;line-height:1.4}
.wordmark{margin:0;font-family:var(--serif);font-weight:400;font-size:28px;letter-spacing:-.03em;line-height:1;color:var(--ink)}
.wordmark-dot{color:#0E9F6E}
.monolab{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3)}

/* ---------- shared shell pieces (from the inbox rail) ---------- */
.shell{height:100vh;min-height:720px;width:100%;overflow:hidden;background:var(--line);position:relative}
.stage{position:relative;background:var(--canvas);min-width:0;min-height:0;overflow:hidden}
.slot{position:absolute;inset:0}
.rail{background:var(--rail);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.rail-scroll{overflow-y:auto;padding:12px 10px 6px;flex:1;min-height:0;scrollbar-width:thin}
.rail-brand{display:flex;align-items:center;padding:8px 10px 4px}
.acct{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:var(--r-md);transition:background .18s}
.acct:hover{background:var(--sel)}
.acct .tile{width:30px;height:30px;flex:none;color:#262626;display:grid;place-items:center}
.acct .tile svg{width:22px;height:22px;display:block}
.acct .who{min-width:0;flex:1;text-align:left}
.acct .who b{display:block;font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acct .who span{display:block;font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acct .cx{color:var(--ink-3)}
.compose{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin:12px 0 6px;padding:9px 12px;border-radius:var(--r-md);
  background:var(--ink);color:var(--canvas)!important;font-weight:600;font-size:13.5px;transition:transform .12s var(--ease),filter .18s}
.compose:hover{filter:brightness(1.12)}
.compose:active{transform:scale(.985)}
.grp{margin-top:16px}
.grp-h{display:flex;align-items:center;gap:6px;width:100%;padding:4px 10px;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3)}
.grp-h .cx{margin-left:auto;color:var(--ink-faint)}
.grp-body{display:flex;flex-direction:column;gap:1px;margin-top:2px}
.nav{display:flex;align-items:center;gap:10px;width:100%;padding:6.5px 10px;border-radius:8px;color:var(--ink-2);font-size:13.5px;font-weight:450;text-align:left;position:relative;transition:background .16s,color .16s}
.nav:hover{background:var(--sel)}
.nav.on{background:var(--sel-2);color:var(--ink);font-weight:600}
.nav .ico{color:var(--ink-3)}
.nav.on .ico{color:var(--ink)}
.nav .lbl{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav .n{font-size:12px;color:var(--ink-3);font-weight:500;font-variant-numeric:tabular-nums}
.nav .n.hot{color:var(--ink);font-weight:600}
.nav .kbd{opacity:0;transition:opacity .16s}
.nav:hover .kbd{opacity:1}
.dotc{width:8px;height:8px;border-radius:50%;flex:none}
.rail-sep{height:1px;background:var(--line);margin:12px 6px 0}
.rail-foot{display:flex;align-items:center;gap:4px;padding:8px 10px;border-top:1px solid var(--line);flex:none}
.foot-btn{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;color:var(--ink-3);font-size:12.5px;transition:background .16s,color .16s}
.foot-btn:hover{background:var(--sel);color:var(--ink-2)}
.foot-btn.on{background:var(--sel-2);color:var(--ink);font-weight:600}
.ask{margin-left:auto;display:flex;align-items:center;gap:7px;padding:7px 10px;border-radius:999px;background:var(--ai-bg);border:1px solid var(--ai-line);color:var(--ai-ink);font-size:12.5px;font-weight:600;transition:background .16s}
.ask:hover{background:var(--sel-2)}
.iconbtn{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--ink-2);transition:background .16s,color .16s;flex:none}
.iconbtn:hover{background:var(--sel);color:var(--ink)}
.iconbtn.small{width:28px;height:28px}
.iconbtn.on{background:var(--sel-2);color:var(--ink)}
.av{width:38px;height:38px;border-radius:50%;flex:none;position:relative;display:grid;place-items:center;font-size:13px;font-weight:600;letter-spacing:-.02em;background:var(--av-bg);color:var(--av-ink)}
.av.s{width:28px;height:28px;font-size:11px}
.av.xs{width:22px;height:22px;font-size:9.5px}

/* A scrim behind an in-stage overlay. */
.scrim{position:absolute;inset:0;z-index:20;background:rgba(28,24,18,.22);animation:fadeIn var(--dur) var(--ease);width:100%;height:100%}

/* ---------- concept B: dock + context column ---------- */
.shellB{display:grid;grid-template-columns:68px 248px minmax(0,1fr) 0px;gap:1px;transition:grid-template-columns var(--dur) var(--ease)}
.shellB.tm-on{grid-template-columns:68px 248px minmax(0,1fr) 384px}
.dock{background:var(--rail);display:flex;flex-direction:column;align-items:center;padding:14px 0 12px;gap:4px;min-height:0}
.dock .mark{width:24px;height:24px;color:#262626;margin:2px 0 14px}
.dk{position:relative;width:54px;padding:8px 0 6px;border-radius:10px;display:flex!important;flex-direction:column;align-items:center;gap:4px;color:var(--ink-3)!important;font-size:11px;font-weight:500;text-align:center!important;transition:background .16s,color .16s}
.dk:hover{background:var(--sel);color:var(--ink-2)!important}
.dk.on{background:var(--sel-2);color:var(--ink)!important;font-weight:600}
.dk .ico{width:20px;height:20px}
.dk .bn{position:absolute;top:3px;right:7px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--ink);color:var(--canvas);font-size:10px;font-weight:600;line-height:16px;text-align:center}
.dk.ai.on{background:var(--ai-bg);box-shadow:inset 0 0 0 1px var(--ai-line)}
.dock .spacer{flex:1}
.ctx{background:var(--rail);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.ctx-h{padding:18px 16px 6px;display:flex;align-items:center;gap:8px}
.ctx-h h2{margin:0;flex:1;font-family:var(--serif);font-size:24px;font-weight:400;letter-spacing:-.03em;line-height:1}
.ctx-b{flex:1;overflow-y:auto;padding:6px 10px 12px}
.ctx-b .compose{margin-top:6px}
.tm-dock{background:var(--canvas);position:relative;min-width:0;overflow:hidden}
.mini{padding:4px 6px 0}
.mini-h{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 8px;font-size:13px;font-weight:600}
.mini-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;text-align:center;font-size:11.5px}
.mini-g .dh{color:var(--ink-3);font-family:var(--mono);font-size:10px;padding:2px 0}
.mini-g .d{padding:5px 0;border-radius:7px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.mini-g .d.mute{color:var(--ink-faint)}
.mini-g .d.wk{background:var(--sel)}
.mini-g .d.today{background:var(--ink);color:var(--canvas);font-weight:600}

/* ---------- module base ---------- */
.mod{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--canvas);overflow:hidden;animation:modIn .3s var(--ease)}
.mh{padding:18px 22px 10px;display:flex;align-items:flex-start;gap:12px;flex:none}
.mh .t{flex:1;min-width:0}
.mh h1{margin:0;font-family:var(--serif);font-size:28px;font-weight:400;letter-spacing:-.03em;line-height:1;min-height:32px;display:flex;align-items:center}
.mh p{margin:4px 0 0;font-size:12.5px;color:var(--ink-3)}
.mh .acts{display:flex;align-items:center;gap:8px;flex:none}
.btn-ink{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--r-md);background:var(--ink);color:var(--canvas)!important;font-weight:600;font-size:13px;transition:transform .12s var(--ease),filter .16s;white-space:nowrap}
.btn-ink:hover{filter:brightness(1.12)}
.btn-ink:active{transform:scale(.97)}
.btn-line{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:var(--r-md);border:1px solid var(--line)!important;background:var(--canvas);color:var(--ink-2);font-weight:600;font-size:13px;transition:background .16s;white-space:nowrap}
.btn-line:hover{background:var(--sel)}
.btn-line:active{transform:scale(.97)}
.seg{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:999px;background:var(--sel);border:1px solid var(--line)}
.seg button{padding:6px 12px;border-radius:999px;font-size:12.5px;font-weight:500;color:var(--ink-3);white-space:nowrap}
.seg button.on{background:var(--canvas);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.search{display:flex;align-items:center;gap:8px;margin:0 22px 2px;padding:8px 11px;border-radius:var(--r-md);background:var(--sel);color:var(--ink-3);border:1px solid transparent}
.search input{flex:1;border:0;background:none;outline:none;font-size:13px;color:var(--ink)}
.search input::placeholder{color:var(--ink-3)}
.chips{display:flex;align-items:center;gap:7px;padding:10px 22px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none}
.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;border:1px solid var(--line)!important;background:var(--canvas);color:var(--ink-2);font-size:12.5px;font-weight:500;transition:background .16s}
.chip:hover{background:var(--sel)}
.chip.on{background:var(--sel-2);border-color:transparent!important;color:var(--ink);font-weight:600}
.chip .n{font-size:11px;color:var(--ink-3);font-weight:600}
.scroller{flex:1;overflow-y:auto;min-height:0;padding-bottom:90px}
.daylab{position:sticky;top:0;z-index:2;padding:14px 22px 6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);background:linear-gradient(var(--canvas) 72%,transparent)}
.ftabs{display:flex;gap:2px;padding:0 18px;border-bottom:1px solid var(--line);flex:none}
.ftab{position:relative;padding:8px 10px 11px;font-size:13px;font-weight:500;color:var(--ink-3)}
.ftab.on{color:var(--ink);font-weight:600}
.ftab.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;background:var(--ink);border-radius:2px}

/* inbox rows (from app.html) */
.row{display:grid;grid-template-columns:16px 38px minmax(0,1fr) auto;gap:11px;align-items:center;width:100%;text-align:left;padding:9px 22px 9px 14px;position:relative;transition:background .13s}
.row:hover{background:var(--sel)}
.row.sel{background:var(--sel-2)}
.row + .row::before{content:"";position:absolute;left:79px;right:22px;top:0;height:1px;background:var(--line-soft)}
.row:hover::before,.row.sel::before{opacity:0}
.udot{width:8px;height:8px;border-radius:50%;justify-self:center;background:var(--unread);opacity:0}
.row.unread .udot{opacity:1}
.badge{position:absolute;right:-2px;bottom:-2px;width:16px;height:16px;border-radius:50%;border:2.5px solid var(--canvas);display:grid;place-items:center;color:#fff}
.badge.wa{background:var(--wa)} .badge.sms{background:var(--sms)} .badge.mail{background:var(--mail)}
.badge .ico{width:9px;height:9px;stroke-width:2.2}
.mid{min-width:0}
.r1{display:flex;align-items:center;gap:7px;min-width:0}
.nm{font-size:13.5px;font-weight:450;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row.unread .nm{font-weight:600;color:var(--ink)}
.cnt{font-size:11px;color:var(--ink-3);font-weight:500;background:var(--sel);border-radius:999px;padding:0 6px;line-height:16px;flex:none;font-variant-numeric:tabular-nums}
.r2{display:flex;align-items:baseline;gap:6px;min-width:0;margin-top:2px;font-size:13px;color:var(--ink-3)}
.subj{color:var(--ink-2);flex:none;max-width:52%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row.unread .subj{color:var(--ink);font-weight:600}
.prev{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-3)}
.rside{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;font-weight:500;color:var(--ink-3);white-space:nowrap}
.tdot{width:7px;height:7px;border-radius:50%;flex:none}
.time{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.row.unread .time{color:var(--ink-2)}

/* reader slide-over */
.rdr-scrim{position:absolute;inset:0;z-index:5;background:rgba(28,24,18,.16);animation:fadeIn var(--dur) var(--ease);width:100%;height:100%}
.rdr{position:absolute;top:0;right:0;bottom:0;z-index:6;width:min(66%,780px);background:var(--canvas);box-shadow:var(--shadow-float);display:flex;flex-direction:column;animation:slideIn var(--dur) var(--ease)}
.rd-head{display:flex;align-items:center;gap:12px;padding:15px 18px 13px;flex:none}
.rd-head .who{min-width:0;flex:1}
.rd-head .who b{display:block;font-size:15px;font-weight:600;letter-spacing:-.01em}
.rd-head .who span{display:block;font-size:12px;color:var(--ink-3)}
.rd-actions{display:flex;align-items:center;gap:2px}
.rd-actions .sep{width:1px;height:20px;background:var(--line);margin:0 5px}
.aibar{display:flex;align-items:flex-start;gap:10px;margin:14px 20px 4px;padding:11px 13px;border-radius:var(--r-md);background:var(--ai-bg);border:1px solid var(--ai-line);flex:none}
.aibar .spark{color:var(--ai-ink);margin-top:1px}
.aibar .txt{font-size:12.5px;color:var(--ai-ink);line-height:1.5}
.thread{flex:1;overflow-y:auto;min-height:0;padding:12px 20px 18px;display:flex;flex-direction:column;gap:12px}
.thread > *{flex:none}
.tstamp{align-self:center;font-size:11px;color:var(--ink-3);font-weight:500;letter-spacing:.04em}
.msg{max-width:78%;display:flex;flex-direction:column;gap:4px}
.msg .meta{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--ink-3);padding:0 3px}
.msg .meta b{color:var(--ink-2);font-weight:600}
.msg.them{align-self:flex-start}
.msg.you{align-self:flex-end;align-items:flex-end}
.bub{padding:10px 13px;border-radius:16px;font-size:13.5px;line-height:1.55}
.msg.them .bub{background:var(--sel);border-bottom-left-radius:5px}
.msg.you .bub{background:var(--sel-2);border-bottom-right-radius:5px}
.draft{align-self:stretch;border:1px solid var(--ai-line);border-radius:var(--r-lg);background:var(--ai-bg);overflow:hidden}
.draft-h{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--ai-line);color:var(--ai-ink)}
.draft-h b{font-size:12.5px;font-weight:600;flex:1}
.heldpill{font-size:10.5px;font-weight:600;color:var(--ai-ink);background:color-mix(in srgb,var(--ai-ink) 12%,transparent);border-radius:999px;padding:2px 8px}
.draft-b{padding:12px 15px;font-size:13.5px;line-height:1.55;color:var(--ink)}
.draft-f{display:flex;align-items:center;gap:8px;padding:0 14px 13px}
.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:9px;font-size:12.5px;font-weight:600;transition:transform .12s var(--ease),filter .16s,background .16s}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--ai-ink);color:#fff!important}
.btn-primary:hover{filter:brightness(1.08)}
.btn-ghost{border:1px solid var(--ai-line)!important;color:var(--ai-ink)}
.btn-ghost:hover{background:color-mix(in srgb,var(--ai-ink) 8%,transparent)}
.btn-quiet{color:var(--ink-3);padding:7px 8px}
.reply{flex:none;padding:12px 20px 16px;border-top:1px solid var(--line)}
.reply-box{display:flex;align-items:center;gap:10px;padding:10px 12px 10px 14px;border:1px solid var(--line);border-radius:var(--r-lg);color:var(--ink-3);font-size:13.5px}
.reply-box span{flex:1}
.send{width:32px;height:32px;border-radius:9px;background:var(--ink);color:var(--canvas)!important;display:grid;place-items:center}

/* to-dos */
.td-g{padding:4px 0 10px}
.td{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:12px;padding:11px 22px;align-items:start;position:relative;transition:background .13s}
.td:hover{background:var(--sel)}
.td + .td::before{content:"";position:absolute;left:56px;right:22px;top:0;height:1px;background:var(--line-soft)}
.tick{width:19px;height:19px;border-radius:50%;border:1.5px solid var(--ink-faint)!important;display:grid;place-items:center;color:transparent;margin-top:1px;transition:background .16s,border-color .16s}
.tick:hover{border-color:var(--ink-2)!important}
.tick.done{background:var(--brand);border-color:var(--brand)!important;color:var(--brand-ink)}
.tick .ico{width:12px;height:12px;stroke-width:2.2}
.tt{font-size:13.5px;font-weight:500;color:var(--ink)}
.td.done .tt{text-decoration:line-through;color:var(--ink-3)}
.tmeta{display:flex;align-items:center;gap:8px;margin-top:5px;flex-wrap:wrap;font-size:12px;color:var(--ink-3)}
.lchip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-2);padding:2px 8px;border-radius:999px;background:var(--raised);border:1px solid var(--line-soft)!important;max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lchip .ico{color:var(--ink-3)}
.due{font-size:12px;color:var(--ink-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.due.late{color:#A3402B;font-weight:600}
.sugg{display:flex;align-items:center;gap:8px;margin-top:8px;padding:7px 10px;border-radius:var(--r-md);background:var(--ai-bg);border:1px solid var(--ai-line);font-size:12px;color:var(--ai-ink)}
.sugg span{flex:1}
.sugg button{font-weight:600;padding:3px 8px;border-radius:6px}
.sugg button:hover{background:var(--sel-2)}

/* calendar */
.cal{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 0 0 0;border-top:1px solid var(--line)}
.cal-heads{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line);flex:none}
.cal-heads div{padding:10px 8px 8px;font-size:12px;color:var(--ink-3);border-left:1px solid var(--line-soft)}
.cal-heads div:first-child{border-left:0}
.cal-heads b{display:block;font-size:20px;font-weight:500;color:var(--ink);letter-spacing:-.02em;line-height:1.1}
.cal-heads .today b{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--ink);color:var(--canvas)}
.cal-scroll{flex:1;overflow-y:auto;min-height:0}
.cal-body{display:grid;grid-template-columns:56px repeat(7,minmax(0,1fr));position:relative}
.hours div{height:52px;font-size:11px;color:var(--ink-3);text-align:right;padding:0 8px 0 0;transform:translateY(-7px);font-family:var(--mono);font-variant-numeric:tabular-nums}
.dcol{position:relative;border-left:1px solid var(--line-soft);height:520px;background-image:repeating-linear-gradient(to bottom,var(--line-soft) 0 1px,transparent 1px 52px)}
.dcol.wkend{background-color:color-mix(in srgb,var(--sel) 45%,transparent)}
.ev{position:absolute;left:4px;right:4px;border-radius:8px;padding:5px 8px;font-size:12px;line-height:1.35;overflow:hidden;color:var(--ink);text-align:left;transition:transform .14s var(--ease),box-shadow .16s}
.ev:hover{box-shadow:var(--shadow-menu);z-index:3}
.ev.on{box-shadow:0 0 0 1.5px var(--ink);z-index:3}
.ev b{display:flex;align-items:center;gap:6px;font-weight:600;font-size:12px}
.ev span{display:block;color:var(--ink-2);font-size:11.5px}
.nowline{position:absolute;left:0;right:0;height:2px;background:#A3402B;z-index:4}
.nowline::before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:#A3402B}
.evcard{position:absolute;z-index:8;right:22px;top:132px;width:300px;padding:14px 16px;border-radius:var(--r-lg);background:var(--canvas);border:1px solid var(--line);box-shadow:var(--shadow-menu);animation:popIn .22s var(--ease)}
.evcard h3{margin:0 0 4px;font-size:15px;font-weight:600;letter-spacing:-.01em}
.evcard p{margin:0;font-size:12.5px;color:var(--ink-2)}
.evcard .row2{display:flex;gap:8px;margin-top:12px}

/* mentions */
.mn-list{padding:6px 22px 90px;display:flex;flex-direction:column;gap:10px;max-width:860px}
.mn{display:grid;grid-template-columns:38px minmax(0,1fr);gap:12px;padding:14px 16px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--canvas);position:relative}
.mn.unread{background:var(--raised)}
.mn .hd{display:flex;align-items:baseline;gap:6px;font-size:13px;color:var(--ink-3);flex-wrap:wrap}
.mn .hd b{color:var(--ink);font-weight:600}
.mn .hd .w{margin-left:auto;font-size:11.5px}
.mn .body{margin:6px 0 0;font-size:13.5px;line-height:1.55;color:var(--ink)}
.mn .at{font-weight:600;color:var(--ink);background:var(--sel-2);border-radius:5px;padding:0 4px}
.mn .acts{display:flex;align-items:center;gap:4px;margin-top:10px}
.mn .acts button{font-size:12.5px;font-weight:600;color:var(--ink-2);padding:5px 9px;border-radius:7px}
.mn .acts button:hover{background:var(--sel-2);color:var(--ink)}
.mn .ud{position:absolute;left:-4px;top:22px;width:8px;height:8px;border-radius:50%;background:var(--unread)}
.mn-reply{display:flex;align-items:center;gap:8px;margin-top:10px;padding:8px 8px 8px 12px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--canvas)}
.mn-reply input{flex:1;border:0;outline:none;background:none;font-size:13px}
.mn-reply input::placeholder{color:var(--ink-3)}

/* teammate */
.tm{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--canvas)}
.tm-head{display:flex;align-items:center;gap:10px;padding:14px 16px 12px;border-bottom:1px solid var(--line);flex:none}
.tm-head .sp{width:30px;height:30px;border-radius:9px;background:var(--ai-bg);border:1px solid var(--ai-line);display:grid;place-items:center;color:var(--ai-ink)}
.tm-head b{font-size:14.5px;font-weight:600;flex:1;letter-spacing:-.01em}
.tm-scroll{flex:1;overflow-y:auto;min-height:0}
.tm-col{max-width:740px;margin:0 auto;padding:22px 24px 24px;display:flex;flex-direction:column;gap:18px}
.tm.compact .tm-col{padding:16px 16px 20px;gap:16px}
.tm-hello h1{margin:6px 0 4px;font-family:var(--serif);font-size:34px;font-weight:400;letter-spacing:-.03em;line-height:1.05}
.tm-hello p{margin:0;font-size:13.5px;color:var(--ink-3)}
.brief{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.bcard{display:flex;flex-direction:column;gap:6px;padding:13px 14px;border-radius:var(--r-lg);border:1px solid var(--line)!important;background:var(--canvas);text-align:left;transition:background .16s,transform .14s var(--ease)}
.bcard:hover{background:var(--sel)}
.bcard:active{transform:scale(.985)}
.bcard .k{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-3);font-weight:500}
.bcard b{font-size:13.5px;font-weight:600;line-height:1.35}
.bcard span.go{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:4px;margin-top:auto}
.q{align-self:flex-end;max-width:82%;padding:10px 14px;border-radius:16px;border-bottom-right-radius:5px;background:var(--sel-2);font-size:13.5px;line-height:1.5}
.a{display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px}
.a .sp{width:26px;height:26px;border-radius:8px;background:var(--ai-bg);border:1px solid var(--ai-line);display:grid;place-items:center;color:var(--ai-ink)}
.a .sp .ico{width:14px;height:14px}
.a .ab{font-size:13.5px;line-height:1.6;color:var(--ink);min-width:0}
.a .ab p{margin:3px 0 8px}
.a .ab ol{margin:0 0 8px;padding-left:20px}
.a .ab li{margin:0 0 6px;padding-left:2px}
.srcs{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.src{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--ink-2);padding:3px 9px 3px 7px;border-radius:999px;border:1px solid var(--line)!important;background:var(--canvas);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.src:hover{background:var(--sel)}
.src .ico{width:12px;height:12px;color:var(--ink-3)}
.choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.think{display:flex;flex-direction:column;gap:7px;padding-top:6px}
.think i{display:block;height:10px;border-radius:4px;background:var(--sel-2);position:relative;overflow:hidden}
.think i::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,254,250,.6),transparent);animation:shimmer 1.2s ease-in-out infinite}
.tm-foot{flex:none;padding:10px 16px 16px}
.tm:not(.compact) .tm-foot{padding:10px 24px 22px}
.tm-foot-in{max-width:740px;margin:0 auto}
.sugs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.sug{font-size:12px;color:var(--ink-2);padding:5px 10px;border-radius:999px;border:1px solid var(--line)!important;background:var(--canvas);transition:background .16s}
.sug:hover{background:var(--sel)}
.tm-comp{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--canvas);padding:10px 10px 8px 14px;box-shadow:0 1px 0 rgba(0,0,0,.02);transition:border-color .18s}
.tm-comp:focus-within{border-color:var(--ink-faint)}
.tm-comp textarea{width:100%;border:0;outline:none;resize:none;background:none;font-size:13.5px;min-height:42px;padding:2px 0}
.tm-comp textarea::placeholder{color:var(--ink-3)}
.tm-comp .bar{display:flex;align-items:center;gap:8px}
.ctxchip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;color:var(--ai-ink);background:var(--ai-bg);border:1px solid var(--ai-line);border-radius:999px;padding:3px 9px}
.tm-comp .bar .hint{margin-left:auto;font-size:11.5px;color:var(--ink-3)}

/* process builder */
.pb{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 330px;border-top:1px solid var(--line)}
.pb.lib{grid-template-columns:220px minmax(0,1fr) 330px}
.plib{border-right:1px solid var(--line);padding:12px 10px;overflow-y:auto}
.pcanvas{background:var(--raised);overflow:auto;padding:28px 28px 90px;position:relative}
.flow{display:grid;grid-template-columns:minmax(240px,1fr) 250px;column-gap:28px;max-width:640px;margin:0 auto}
.fcol{display:flex;flex-direction:column}
.st{display:flex;flex-direction:column;justify-content:center;gap:4px;height:76px;padding:10px 14px;border-radius:var(--r-lg);background:var(--canvas);border:1px solid var(--line)!important;
  box-shadow:0 1px 2px rgba(35,30,22,.05);text-align:left;width:100%;transition:box-shadow .16s,border-color .16s}
.st:hover{border-color:var(--ink-faint)!important}
.st.sel{border-color:var(--ink)!important;box-shadow:0 0 0 1px var(--ink),0 8px 22px -14px rgba(35,30,22,.4)}
.st .l1{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600}
.st .l1 .ico{color:var(--ink-3)}
.st .l2{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--ink-3)}
.rung{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:var(--sel);color:var(--ink-2)}
.rung.ai{background:var(--ai-bg);color:var(--ai-ink);box-shadow:inset 0 0 0 1px var(--ai-line)}
.rung .ico{width:11px;height:11px}
.cn{height:28px;position:relative;display:grid;place-items:center}
.cn::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--ink-faint)}
.cn .addb{position:relative;z-index:1;width:20px;height:20px;border-radius:50%;background:var(--canvas);border:1px solid var(--line)!important;display:grid;place-items:center;color:var(--ink-3);opacity:0;transition:opacity .16s}
.cn:hover .addb{opacity:1}
.cn .addb .ico{width:12px;height:12px}
.cn.split::after,.cn.join::after{content:"";position:absolute;left:50%;top:50%;width:calc(50% + 153px);height:1px;background:var(--ink-faint)}
.rspace{position:relative}
.rspace::after{content:"";position:absolute;left:50%;bottom:0;width:1px;height:14px;background:var(--ink-faint)}
.rstub{position:relative;height:14px}
.rstub::after{content:"";position:absolute;left:50%;top:0;width:1px;height:14px;background:var(--ink-faint)}
.grpcard{border:1px dashed var(--ink-faint);border-radius:var(--r-lg);background:color-mix(in srgb,var(--canvas) 70%,transparent);padding:12px;display:flex;flex-direction:column;gap:6px;height:388px;text-align:left;width:100%}
.grpcard.sel{border-style:solid;border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.grpcard .gh{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;padding:2px 2px 4px}
.grpcard .gs{font-size:11.5px;color:var(--ink-3);padding:0 2px 6px;line-height:1.4}
.duty{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:9px;background:var(--canvas);border:1px solid var(--line-soft);font-size:12.5px;color:var(--ink-2)}
.duty .ico{color:var(--ink-faint)}
.duty.ok .ico{color:var(--brand)}
.insp{border-left:1px solid var(--line);background:var(--canvas);overflow-y:auto;padding:18px 18px 90px;display:flex;flex-direction:column;gap:16px}
.insp h3{margin:0;font-size:15px;font-weight:600;letter-spacing:-.01em}
.insp .sub{margin:2px 0 0;font-size:12px;color:var(--ink-3)}
.fld{display:flex;flex-direction:column;gap:6px}
.fld > label,.fld > .lab{font-size:12px;font-weight:600;color:var(--ink-2)}
.inp{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--canvas);font-size:13px;color:var(--ink);outline:none}
.inp:focus{border-color:var(--ink-faint)}
.selbox{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid var(--line)!important;border-radius:var(--r-sm);font-size:13px;color:var(--ink)}
.selbox .cx{margin-left:auto;color:var(--ink-3)}
.opt{display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;padding:10px 12px;border:1px solid var(--line)!important;border-radius:var(--r-md);text-align:left;transition:background .16s,border-color .16s;width:100%}
.opt:hover{background:var(--sel)}
.opt.on{border-color:var(--ink)!important;background:var(--canvas);box-shadow:0 0 0 1px var(--ink)}
.opt[disabled]{opacity:.55;cursor:default}
.opt[disabled]:hover{background:none}
.opt .rd{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--ink-faint);margin-top:1px;position:relative}
.opt.on .rd{border-color:var(--ink)}
.opt.on .rd::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--ink)}
.opt b{display:block;font-size:13px;font-weight:600}
.opt span{display:block;font-size:12px;color:var(--ink-3);margin-top:1px}
.pills{display:flex;flex-wrap:wrap;gap:6px}

/* integrations */
.ig-wrap{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);border-top:1px solid var(--line)}
.ig-wrap.sub{grid-template-columns:210px minmax(0,1fr)}
.snav{border-right:1px solid var(--line);padding:12px 10px;overflow-y:auto}
.ig-main{overflow-y:auto;padding:8px 22px 90px;position:relative}
.ig-sec{max-width:780px;margin-top:18px}
.ig-sec > .monolab{display:block;padding:0 2px 8px}
.ig-list{display:flex;flex-direction:column;gap:8px}
.ig{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 14px 13px 14px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--canvas);transition:border-color .16s}
.ig:hover{border-color:var(--ink-faint)}
.ig.on{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.logo{width:40px;height:40px;border-radius:var(--r-md);background:var(--raised);border:1px solid var(--line);display:grid;place-items:center;font-size:15px;font-weight:600;color:var(--ink-2);letter-spacing:-.02em}
.logo.wa{color:var(--wa)}
.logo .ico{width:20px;height:20px}
.ig .nm2{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}
.ig .ds{font-size:12.5px;color:var(--ink-3);margin-top:2px}
.ig .acts{display:flex;align-items:center;gap:8px}
.okpill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;color:var(--ink-2);padding:2px 8px 2px 6px;border-radius:999px;background:color-mix(in srgb,var(--brand) 10%,var(--canvas))}
.okpill .ico{width:12px;height:12px;color:var(--brand);stroke-width:2.2}
.igd{position:absolute;top:0;right:0;bottom:0;width:min(400px,92%);z-index:6;background:var(--canvas);box-shadow:var(--shadow-float);display:flex;flex-direction:column;animation:slideIn var(--dur) var(--ease)}
.igd-h{display:flex;align-items:center;gap:12px;padding:16px 16px 14px;border-bottom:1px solid var(--line)}
.igd-h b{flex:1;font-size:15px;font-weight:600}
.igd-b{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:18px}
.kv{display:flex;flex-direction:column;gap:0;border:1px solid var(--line);border-radius:var(--r-md)}
.kv div{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 12px;font-size:13px}
.kv div + div{border-top:1px solid var(--line-soft)}
.kv span{color:var(--ink-3);font-size:12.5px}
.tg{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;text-align:left;padding:2px 0}
.tg b{display:block;font-size:13px;font-weight:600}
.tg span{display:block;font-size:12px;color:var(--ink-3)}
.sw{width:34px;height:20px;border-radius:999px;background:var(--sel-2);position:relative;transition:background .18s;flex:none}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#FFFEFA;box-shadow:0 1px 2px rgba(0,0,0,.18);transition:transform .2s var(--ease)}
.sw.on{background:var(--brand)}
.sw.on::after{transform:translateX(14px)}
.danger{color:#A3402B!important}

/* motion */
@keyframes modIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes slideIn{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
@keyframes popIn{from{transform:translateY(10px) scale(.985);opacity:0}to{transform:none;opacity:1}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes shimmer{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@media (prefers-reduced-motion:reduce){
  .mod,.rdr,.rdr-scrim,.scrim,.igd,.evcard,.think i::after{animation:none!important}
  .shellB{transition:none}
}

/* narrow screens */
@media (max-width:820px){
  .shellB,.shellB.tm-on{grid-template-columns:68px minmax(0,1fr) 0px 0px}
  .shellB > .ctx{display:none}
  .pb,.pb.lib{grid-template-columns:minmax(0,1fr)}
  .plib,.insp{display:none}
  .ig-wrap.sub{grid-template-columns:minmax(0,1fr)}
  .snav{display:none}
  .brief{grid-template-columns:minmax(0,1fr)}
}

/* =====================================================================
   HELM DESIGN SYSTEM, v2 (the Concept B build). Every new screen uses ONLY
   these type, spacing and component rules. Old concept screens above keep
   working; rules here win where they overlap.
   ===================================================================== */

/* Contrast: secondary text darkened to pass AA on the warm ground (#513). The app keeps --ink-3 at
   #67665F, which clears AA on the page, the raised surfaces and the hover and selected fills, so
   this port holds that app value rather than the canvas #6B6A63 (#1147). */
:root{ --ink-3:#67665F; --danger:#A3402B; --warn:#8A5A12; --warn-bg:#FBF3E2; --warn-line:#EBD9B3;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:22px; --sp-6:28px; --sp-7:40px;
  --dock-w:68px; --ctx-w:248px; --tm-w:384px; }

/* Dark theme. The app drives dark through :root[data-theme="dark"]; .theme-dark keeps one artboard
   able to show it in isolation. Both selectors carry the same values (#568). */
:root[data-theme="dark"], .theme-dark{ color-scheme:dark;
  --bg:#021B42; --canvas:#021B42; --rail:#021B42; --raised:#06224D;
  --ink:#FFFEFA; --ink-2:#D5D2C8; --ink-3:#A8A498; --ink-faint:#7A766C;
  --line:rgba(255,254,250,.14); --line-soft:rgba(255,254,250,.08); --sel:rgba(255,254,250,.08); --sel-2:rgba(255,254,250,.14);
  --brand:#21C98C; --brand-ink:#021B42; --unread:#5B9BF0;
  --av-bg:rgba(255,254,250,.1); --av-ink:#FFFEFA;
  --ai-bg:rgba(255,254,250,.06); --ai-line:rgba(255,254,250,.14); --ai-ink:#D5D2C8; --star:#E0B255;
  --c-green:#6FB98C; --c-blue:#7BA5DE; --c-purple:#A99BDB; --c-amber:#D2A863; --c-teal:#68B3A7;
  --danger:#F08A73; --warn:#E6C27A; --warn-bg:rgba(230,194,122,.10); --warn-line:rgba(230,194,122,.28);
  --shadow-float:0 24px 60px -18px rgba(0,0,0,.6),0 4px 14px -6px rgba(0,0,0,.5);
  --shadow-menu:0 16px 40px -14px rgba(0,0,0,.6),0 2px 8px -4px rgba(0,0,0,.5);
  background:var(--bg); color:var(--ink) }
:root[data-theme="dark"] .dock .mark,:root[data-theme="dark"] .acct .tile,
.theme-dark .dock .mark,.theme-dark .acct .tile{color:#FFFEFA}

/* ---------- TYPE SCALE (the only sizes a new screen may use) ----------
   Serif (Hedvig Letters Serif, the wordmark face), weight 400, -0.03em:
     .t-display 34/1.05  greeting and onboarding headline, max one per screen
     .t-title   28/1     the module title in the stage header (.mh h1)
     .t-ctx     24/1     the context column title (.ctx-h h2) and dialog titles
   Sans (Inter):
     .t-sec     15/1.3 600  section heading inside a page, card or drawer
     .t-sub     13.5/1.35 600  row title, list item name, field group name
     body       14/1.45 400  default
     .t-meta    12.5/1.4 400 ink-3  subtitles, descriptions, helper text
     .t-label   12.5/1.3 600 ink-2  form labels (always above the input)
     .monolab   11 mono uppercase  ONLY for groups in the context column
   Spacing: stage gutter 22; header 18 top / 10 bottom; between sections 28;
   heading to its content 10; label to input 6; between fields 16. */
.t-display{margin:0;font-family:var(--serif);font-weight:400;font-size:34px;line-height:1.05;letter-spacing:-.03em;color:var(--ink);text-wrap:balance}
.t-title{margin:0;font-family:var(--serif);font-weight:400;font-size:28px;line-height:1;letter-spacing:-.03em;color:var(--ink)}
.t-ctx{margin:0;font-family:var(--serif);font-weight:400;font-size:24px;line-height:1;letter-spacing:-.03em;color:var(--ink)}
.t-sec{margin:0;font-family:var(--sans);font-size:15px;line-height:1.3;font-weight:600;letter-spacing:-.01em;color:var(--ink)}
.t-sub{margin:0;font-size:13.5px;line-height:1.35;font-weight:600;color:var(--ink)}
.t-meta{margin:0;font-size:12.5px;line-height:1.4;color:var(--ink-3);text-wrap:pretty}
.t-label{font-size:12.5px;line-height:1.3;font-weight:600;color:var(--ink-2)}
.t-body{margin:0;font-size:14px;line-height:1.5;color:var(--ink);max-width:68ch;text-wrap:pretty}
.mh p,.mh .t-meta{margin-top:6px}
.fld > label,.fld > .lab{font-size:12.5px}

/* ---------- BUTTONS: one size (13px / 600 / r-md), four roles ----------
   .btn-ink primary (one per view), .btn-line secondary, .btn-quiet tertiary,
   .btn-primary / .btn-ghost on AI surfaces (drafts, Teammate). */
.btn{font-size:13px;border-radius:var(--r-md);padding:8px 14px}
.btn-quiet{color:var(--ink-2)}
.btn-quiet:hover{background:var(--sel)}
.btn-ink,.btn-line{min-height:34px}
.btn-line.danger{color:var(--danger)!important}
button:disabled,.is-disabled{opacity:.48;cursor:not-allowed}
.btn-ink.sm,.btn-line.sm{min-height:28px;padding:4px 10px;font-size:12.5px}

/* ---------- COMING SOON ---------- */
.soon{display:inline-flex;align-items:center;font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-3);background:var(--sel);border:1px solid var(--line);border-radius:999px;padding:1px 6px;line-height:1.5;white-space:nowrap}
.dk.is-soon .ico{opacity:.55}
.dk .soon{position:absolute;top:2px;right:2px;font-size:8.5px;padding:0 4px}
.nav.is-soon{color:var(--ink-3)}
.nav.is-soon .soon{margin-left:auto}
.cs{max-width:560px;padding:56px 22px 40px 22px;display:flex;flex-direction:column;gap:14px}
.cs .cs-k{display:flex;align-items:center;gap:8px}
.cs ul{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.cs li{display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;font-size:13.5px;color:var(--ink-2)}
.cs li .ico{color:var(--ink-3);margin-top:1px}

/* ---------- SHELL v2: dock | module | Teammate panel ---------- */
.shell2{display:grid;grid-template-columns:var(--dock-w) minmax(0,1fr) 0px;gap:1px;transition:grid-template-columns var(--dur) var(--ease)}
.shell2.tm-on{grid-template-columns:var(--dock-w) minmax(0,1fr) var(--tm-w)}
.shell2 > .stage{position:relative}
.dock .av-btn{margin-top:8px;border-radius:50%}
.dock .av-btn:hover .av{box-shadow:0 0 0 3px var(--sel-2)}

/* A module = its own context column + its stage. Fills whatever holds it. */
.mw{position:absolute;inset:0;display:grid;grid-template-columns:var(--ctx-w) minmax(0,1fr);gap:1px;background:var(--line);
  font-family:var(--sans);font-size:14px;line-height:1.45;letter-spacing:-.006em;color:var(--ink);-webkit-font-smoothing:antialiased}
.mw.solo{grid-template-columns:minmax(0,1fr)}
:where(.mw,.shell2,.ob) *{box-sizing:border-box}
:where(.mw,.ob) button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0;letter-spacing:inherit;text-align:inherit}
:where(.mw,.ob) :where(input,textarea,select){font:inherit;color:inherit}
.mw :focus-visible,.ob :focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}
.mw > .stage{position:relative;background:var(--canvas);min-width:0;min-height:0;overflow:hidden}
.ctx-sec{margin-top:18px}
.ctx-sec > .monolab{display:block;padding:4px 10px}

/* ---------- MENUS AND POPOVERS ---------- */
.menu{position:absolute;z-index:30;min-width:232px;padding:6px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-menu);animation:popIn .2s var(--ease)}
.menu .mi{display:flex;align-items:center;gap:10px;width:100%;min-height:34px;padding:6px 10px;border-radius:8px;font-size:13.5px;color:var(--ink-2)}
.menu .mi:hover{background:var(--sel);color:var(--ink)}
.menu .mi .ico{color:var(--ink-3)}
.menu .mi .kbd{margin-left:auto}
.menu .msep{height:1px;background:var(--line);margin:6px 4px}
.menu .mhead{padding:8px 10px 10px;display:flex;align-items:center;gap:10px}

/* ---------- DIALOGS (create / edit forms) ---------- */
.dlg-scrim{position:absolute;inset:0;z-index:40;background:rgba(28,24,18,.24);animation:fadeIn var(--dur) var(--ease);width:100%;height:100%}
:root[data-theme="dark"] .dlg-scrim,.theme-dark .dlg-scrim{background:rgba(0,0,0,.45)}
.dlg{position:absolute;z-index:41;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100% - 32px));max-height:calc(100% - 48px);
  display:flex;flex-direction:column;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-float);overflow:hidden}
.dlg.wide{width:min(720px,calc(100% - 32px))}
.dlg-h{display:flex;align-items:flex-start;gap:12px;padding:20px 22px 6px}
.dlg-h .t{flex:1;min-width:0}
.dlg-b{padding:12px 22px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}
.dlg-f{display:flex;align-items:center;gap:8px;padding:14px 22px;border-top:1px solid var(--line);background:var(--canvas)}
.dlg-f .grow{flex:1}

/* ---------- FORM FIELDS ---------- */
.f{display:flex;flex-direction:column;gap:6px;min-width:0}
.f > label,.f > .t-label{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.f-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.inp2{width:100%;min-height:36px;padding:8px 11px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--canvas);font-size:13.5px;color:var(--ink);outline:none;transition:border-color .16s,box-shadow .16s}
.inp2::placeholder{color:var(--ink-3)}
.inp2:focus,.inp2.is-focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 20%,transparent)}
.inp2.is-error{border-color:var(--danger)}
textarea.inp2{resize:vertical;line-height:1.5}
.sel2{display:flex;align-items:center;gap:8px;width:100%;min-height:36px;padding:7px 11px;border:1px solid var(--line)!important;border-radius:var(--r-md);background:var(--canvas);font-size:13.5px;color:var(--ink);text-align:left}
.sel2 .cx{margin-left:auto;color:var(--ink-3)}
.f .hint{font-size:12px;color:var(--ink-3)}
.f .err{font-size:12px;color:var(--danger);font-weight:500}
.chipfield{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:36px;padding:5px 8px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--canvas)}
.chipfield input{flex:1;min-width:120px;border:0;outline:none;background:none;font-size:13.5px;padding:3px 2px}
.pchip{display:inline-flex;align-items:center;gap:6px;padding:2px 4px 2px 8px;border-radius:999px;background:var(--sel);font-size:12.5px;color:var(--ink)}
.pchip button{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;color:var(--ink-3)}
.pchip button:hover{background:var(--sel-2)}
.check{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:var(--ink-2)}
.check input{width:16px;height:16px;margin:2px 0 0;accent-color:var(--brand)}

/* ---------- BANNERS, EMPTY, LOADING, TOAST ---------- */
.ban{display:flex;align-items:center;gap:12px;margin:0 22px 10px;padding:10px 12px 10px 14px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--raised);font-size:13px;color:var(--ink-2)}
.ban .ico{color:var(--ink-3)}
.ban .grow{flex:1;min-width:0}
.ban b{color:var(--ink);font-weight:600}
.ban.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--ink)}
.ban.warn .ico{color:var(--warn)}
.empty{display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:420px;padding:48px 22px}
.empty .ico{width:22px;height:22px;color:var(--ink-3);margin-bottom:4px}
.empty .btn-line,.empty .btn-ink{margin-top:8px}
.sk{display:block;height:10px;border-radius:5px;background:var(--sel-2);position:relative;overflow:hidden}
.sk::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--canvas) 65%,transparent),transparent);animation:shimmer 1.2s ease-in-out infinite}
.sk.c{width:38px;height:38px;border-radius:50%}
.toast{position:absolute;z-index:50;left:50%;bottom:22px;transform:translateX(-50%);display:flex;align-items:center;gap:12px;padding:10px 12px 10px 16px;border-radius:var(--r-md);background:var(--ink);color:var(--canvas);font-size:13px;box-shadow:var(--shadow-float);animation:popIn .24s var(--ease)}
.toast button{color:var(--canvas);font-weight:600;text-decoration:underline;text-underline-offset:3px}

/* ---------- SETTINGS-STYLE PAGES ---------- */
.page{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--canvas)}
.page-b{flex:1;overflow-y:auto;min-height:0;padding:0 22px 90px}
.page-in{max-width:760px;display:flex;flex-direction:column;gap:28px;padding-top:10px}
.sec{display:flex;flex-direction:column;gap:10px}
.sec-h{display:flex;align-items:flex-end;gap:12px}
.sec-h .t{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.box{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--canvas)}
.box-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px}
.box-row + .box-row{border-top:1px solid var(--line-soft)}
.box-row .t{display:flex;flex-direction:column;gap:2px;min-width:0}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--sel);color:var(--ink-2);white-space:nowrap}
.pill.ok{background:color-mix(in srgb,var(--brand) 12%,var(--canvas));color:var(--ink)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.pill.bad{background:color-mix(in srgb,var(--danger) 12%,var(--canvas));color:var(--danger)}

/* ---------- TABLES ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{text-align:left;font-size:12px;font-weight:600;color:var(--ink-3);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:11px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.tbl tr:hover td{background:color-mix(in srgb,var(--sel) 60%,transparent)}
.tbl th:first-child,.tbl td:first-child{padding-left:22px}
.tbl th:last-child,.tbl td:last-child{padding-right:22px}

/* ---------- ONBOARDING FRAME ---------- */
.ob{position:absolute;inset:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--canvas);
  font-family:var(--sans);font-size:14px;line-height:1.45;letter-spacing:-.006em;color:var(--ink);-webkit-font-smoothing:antialiased}

@media (prefers-reduced-motion:reduce){ .menu,.dlg-scrim,.toast,.sk::after{animation:none!important} .shell2{transition:none} }
@media (max-width:820px){
  .shell2,.shell2.tm-on{grid-template-columns:var(--dock-w) minmax(0,1fr) 0px}
  .mw{grid-template-columns:minmax(0,1fr)}
  .mw > .ctx{display:none}
  .f-row{grid-template-columns:minmax(0,1fr)}
  .ob{grid-template-columns:minmax(0,1fr)}
}

/* ---------- shell v2 extras: account menu, first-run tour ---------- */
.sh-menu-scrim{position:absolute;inset:0;z-index:29;width:100%;height:100%;background:transparent;cursor:default}
.sh-acct{left:calc(var(--dock-w) + 8px);bottom:14px;width:280px}
.sh-tour-scrim{position:absolute;inset:0;z-index:35;background:rgba(28,24,18,.18);animation:fadeIn var(--dur) var(--ease);pointer-events:none}
.sh-tour{position:absolute;z-index:36;width:340px;padding:16px 16px 12px;display:flex;flex-direction:column;gap:6px;background:var(--canvas);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-float);animation:popIn .26s var(--ease)}
.sh-tour-arrow{position:absolute;left:-7px;top:22px;width:12px;height:12px;background:var(--canvas);border-left:1px solid var(--line);border-bottom:1px solid var(--line);transform:rotate(45deg)}
.dock .dk .soon{color:var(--ink-3)}
@media (prefers-reduced-motion:reduce){ .sh-tour,.sh-tour-scrim{animation:none!important} }

/* ---------- v2.1 (owner review 2026-10-05) ----------
   Banners: calm, on-brand. No tinted fill; a small icon tile carries the state.
   Empty and error states: centred in the stage, icon tile, one friendly line. */
.ban,.ban.warn{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:12px;align-items:center;margin:0 22px 12px;padding:12px 12px 12px 12px;
  border:1px solid var(--line);border-radius:var(--r-lg);background:var(--canvas);color:var(--ink-2);font-size:13px;box-shadow:0 1px 2px rgba(35,30,22,.04)}
.ban .ban-i{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--raised);border:1px solid var(--line-soft)}
.ban .ban-i .ico{width:16px;height:16px;color:var(--ink-2)}
.ban.warn .ban-i{background:var(--warn-bg);border-color:var(--warn-line)}
.ban.warn .ban-i .ico{color:var(--warn)}
.ban .ban-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.ban .ban-t b{font-size:13.5px;font-weight:600;color:var(--ink)}
.ban .ban-t span{font-size:12.5px;color:var(--ink-3)}
.ban > .ico{display:none}
.empty{position:absolute;inset:0;margin:auto;height:max-content;max-width:400px;padding:24px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px}
.empty .empty-i{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--raised);border:1px solid var(--line);margin-bottom:10px}
.empty .empty-i .ico{width:22px;height:22px;color:var(--ink-2);margin:0}
.empty > .ico{width:22px;height:22px;color:var(--ink-3);margin-bottom:6px}
.empty .t-sec,.empty .t-sub{font-size:15px;font-weight:600}
.empty .t-meta{max-width:34ch}
.empty .btn-line,.empty .btn-ink{margin-top:12px}
.empty.inline{position:static;margin:0 auto;padding:56px 24px}
