  :root{--bg:#0e1014;--bg-2:#13161d;--bg-3:#191d26;--line:#272d39;--line-soft:#1d222c;--ink:#ece7dd;--dim:#a3a9b6;--faint:#6b7280;--accent:#d9a24e;--accent-soft:rgba(217,162,78,.13);--accent-line:rgba(217,162,78,.34);--ok:#67b993;--run:#6ea8d8;--alert:#d8736b;--info:#8b9ad8;--font-display:'Fraunces',serif;--font-ui:'IBM Plex Sans',system-ui,sans-serif;--font-mono:'IBM Plex Mono',monospace;--r:14px;color-scheme:dark}
  /* ── light mode: override the token set; warm paper to match the gold-accent identity ── */
  :root[data-theme="light"]{--bg:#efece3;--bg-2:#fbf9f3;--bg-3:#f1ede3;--line:#d7d1c2;--line-soft:#e7e2d6;--ink:#23201a;--dim:#6a6456;--faint:#9b9485;--accent:#8a5e1c;--accent-soft:rgba(138,94,28,.12);--accent-line:rgba(138,94,28,.32);--ok:#3f8f63;--run:#3f72a8;--alert:#bf463c;--info:#5a6bc0;color-scheme:light}
  [data-theme="light"] body{background-image:radial-gradient(900px 500px at 78% -8%,rgba(138,94,28,.06),transparent 60%),radial-gradient(700px 500px at 6% 108%,rgba(90,107,192,.05),transparent 55%)}
  [data-theme="light"] .topbar{background:linear-gradient(180deg,rgba(244,242,236,.92),rgba(244,242,236,.55))}
  [data-theme="light"] ::-webkit-scrollbar-thumb{background:#cfc7b6}
  [data-theme="light"] .brand .mark{background:linear-gradient(180deg,#c69a3e,#8a5e1c);-webkit-background-clip:text;background-clip:text}
  /* solid gold-fill controls: white text in light mode (the accent darkens, so dark text would fail) */
  [data-theme="light"] .bseg button.on,[data-theme="light"] .send,[data-theme="light"] .btn,[data-theme="light"] .tk.x .box{color:#fff}
  .themebtn{background:var(--bg-3);border:1px solid var(--line);color:var(--dim);border-radius:9px;width:32px;height:30px;cursor:pointer;font-size:13px;display:grid;place-items:center;line-height:1} .themebtn:hover{color:var(--accent);border-color:var(--accent-line)}
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{font-family:var(--font-ui);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;overflow:hidden;background-image:radial-gradient(900px 500px at 78% -8%,rgba(217,162,78,.07),transparent 60%),radial-gradient(700px 500px at 6% 108%,rgba(110,168,216,.06),transparent 55%)}
  ::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:#2a313d;border-radius:9px}::-webkit-scrollbar-track{background:transparent}
  .app{display:grid;grid-template-columns:222px 1fr;height:100vh}
  .rail{border-right:1px solid var(--line-soft);background:linear-gradient(180deg,var(--bg-2),var(--bg));display:flex;flex-direction:column;padding:22px 16px}
  .brand{display:flex;align-items:baseline;gap:8px;padding:0 6px}
  .brand .mark{font-family:var(--font-display);font-weight:600;font-size:24px;background:linear-gradient(180deg,#f4ecdd,#d9a24e);-webkit-background-clip:text;background-clip:text;color:transparent}
  .brand .sub{font-family:var(--font-mono);font-size:9px;letter-spacing:1.4px;text-transform:uppercase;color:var(--faint)}
  .rlbl{font-family:var(--font-mono);font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:var(--faint);padding:0 8px;margin:24px 0 9px}
  .mod{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:9px;color:var(--dim);font-size:13px;font-weight:500;cursor:pointer;transition:.16s;position:relative}
  .mod:hover{background:var(--bg-3);color:var(--ink)} .mod.active{background:var(--accent-soft);color:var(--ink)}
  .mod.active::before{content:"";position:absolute;left:-16px;top:8px;bottom:8px;width:2.5px;background:var(--accent);border-radius:3px}
  .mod .ic{width:15px;text-align:center} .mod.soon{opacity:.4;cursor:default} .mod.soon:hover{background:transparent;color:var(--dim)}
  .mod .tag{margin-left:auto;font-family:var(--font-mono);font-size:8px;color:var(--faint);border:1px solid var(--line);padding:1px 5px;border-radius:20px}
  .rfoot{margin-top:auto;border-top:1px solid var(--line-soft);padding-top:13px;display:flex;flex-direction:column;gap:8px}
  .stat{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:10px;color:var(--dim)}
  .d{width:6px;height:6px;border-radius:50%;flex:none} .d.ok{background:var(--ok);box-shadow:0 0 8px var(--ok)} .d.pend{background:var(--faint)}
  .main{overflow-y:auto;position:relative}
  .topbar{position:sticky;top:0;z-index:40;backdrop-filter:blur(11px);background:linear-gradient(180deg,rgba(14,16,20,.92),rgba(14,16,20,.6));border-bottom:1px solid var(--line-soft);padding:15px 32px;display:flex;align-items:center;gap:18px}
  .crumb{font-family:var(--font-mono);font-size:11px;color:var(--faint)} .crumb b{color:var(--dim);font-weight:500}
  .cmdwrap{flex:1;max-width:600px;margin:0 auto;position:relative}
  .cmd{width:100%;background:var(--bg-3);border:1px solid var(--line);border-radius:11px;padding:10px 14px 10px 38px;color:var(--ink);font-family:var(--font-ui);font-size:13px}
  .cmd::placeholder{color:var(--faint)} .cmd:focus{outline:none;border-color:var(--accent-line);box-shadow:0 0 0 4px var(--accent-soft)}
  .cmd-ic{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--accent);font-size:12px}
  .me{width:29px;height:29px;border-radius:50%;background:linear-gradient(135deg,#3a3020,#d9a24e);display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;color:#1a140a;font-weight:600;flex:none}
  .wrap{padding:26px 32px 60px;max-width:1180px;margin:0 auto}
  /* the board (main portal view) uses the full screen width so all kanban columns fit */
  #board{max-width:none}
  .h{font-family:var(--font-display);font-weight:500;font-size:24px} .h .a{font-style:italic;color:var(--accent)}
  .sub{color:var(--dim);font-size:13px;margin-top:3px}
  .seclbl{font-family:var(--font-mono);font-size:9.5px;letter-spacing:1.5px;text-transform:uppercase;color:var(--faint);margin:26px 0 12px;display:flex;align-items:center;gap:10px}
  .seclbl::after{content:"";flex:1;height:1px;background:var(--line-soft)}
  .needstrip{display:flex;flex-direction:column;gap:8px}
  .needclear{font-family:var(--font-mono);font-size:12px;color:var(--ok);background:color-mix(in srgb,var(--ok) 7%,transparent);border:1px solid color-mix(in srgb,var(--ok) 25%,transparent);border-radius:11px;padding:14px 16px}
  .needitem{display:flex;align-items:center;gap:12px;background:var(--bg-2);border:1px solid var(--line-soft);border-left:3px solid var(--alert);border-radius:10px;padding:12px 15px;cursor:pointer;transition:.16s}
  .needitem:hover{border-color:var(--line);transform:translateX(2px)} .needitem .nm{font-family:var(--font-display);font-size:15px} .needitem .dllabel{font-size:12px;color:var(--dim)}
  .needitem .r{font-family:var(--font-mono);font-size:10px;padding:2px 8px;border-radius:20px;margin-left:auto} .r.overdue{color:var(--alert);background:color-mix(in srgb,var(--alert) 12%,transparent)} .r.soon{color:var(--accent);background:var(--accent-soft)} .r.blk{color:var(--alert);background:color-mix(in srgb,var(--alert) 12%,transparent);margin-left:8px}
  .needitem .go{color:var(--accent)}
  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
  .card{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:var(--r);padding:17px 18px 15px;cursor:pointer;position:relative;overflow:hidden;transition:transform .2s,border-color .2s,box-shadow .2s;animation:rise .5s both}
  .card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--cardc,var(--accent))}
  .card:hover{transform:translateY(-3px);border-color:var(--line);box-shadow:0 16px 40px -22px rgba(0,0,0,.8)}
  .card .top{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px;gap:8px}
  .pill{font-family:var(--font-mono);font-size:9px;letter-spacing:.7px;text-transform:uppercase;padding:3px 9px;border-radius:30px;border:1px solid var(--cardc,var(--accent));color:var(--cardc,var(--accent));background:color-mix(in srgb,var(--cardc,var(--accent)) 12%,transparent)}
  .flag{font-family:var(--font-mono);font-size:9.5px;padding:2px 8px;border-radius:20px} .flag.overdue,.flag.blk{color:var(--alert);background:color-mix(in srgb,var(--alert) 12%,transparent)} .flag.soon{color:var(--accent);background:var(--accent-soft)} .flag.stale{color:var(--faint);background:var(--bg-3)}
  .card h3{font-family:var(--font-display);font-weight:500;font-size:18px;margin-bottom:6px}
  .idtags{display:flex;gap:8px;flex-wrap:wrap;margin:9px 0 2px}
  .idtag{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--ink);background:var(--bg-3);border:1px solid var(--line);border-radius:9px;padding:5px 11px}
  .idtag i{font-family:var(--font-mono);font-size:8px;letter-spacing:.9px;text-transform:uppercase;color:var(--accent);font-style:normal} .idtag.inst i{color:var(--info)}
  .idtag .ed{outline:none;border-radius:4px;cursor:text;min-width:14px} .idtag .ed:hover{box-shadow:inset 0 0 0 1px var(--line)} .idtag .ed:focus{box-shadow:inset 0 0 0 1px var(--accent-line);background:var(--bg)} .idtag .ed:empty::before{content:'+ set';color:var(--faint);font-style:italic} .idtag .ph{color:var(--faint);font-style:italic}
  .card .st{font-size:12.5px;color:var(--dim);line-height:1.5;min-height:32px;margin-top:4px}
  .card .meta{display:flex;align-items:center;gap:13px;margin-top:12px;padding-top:11px;border-top:1px solid var(--line-soft);font-family:var(--font-mono);font-size:10px;color:var(--faint)}
  .card .meta .g{display:flex;align-items:center;gap:5px} .card .disp{margin-left:auto;color:var(--accent);opacity:0;transition:.2s} .card:hover .disp{opacity:1}
  /* board toolbar + kanban + importance */
  .boardbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 14px}
  .bseg{display:flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
  .bseg button{font-family:var(--font-mono);font-size:10px;background:var(--bg-2);color:var(--dim);border:none;padding:6px 12px;cursor:pointer} .bseg button.on{background:var(--accent);color:#1a140a} .bseg button:not(.on):hover{color:var(--ink)}
  .bsel{font-family:var(--font-mono);font-size:10px;background:var(--bg-3);color:var(--dim);border:1px solid var(--line);border-radius:9px;padding:6px 9px;cursor:pointer}
  .bsearch{font-family:var(--font-mono);font-size:11px;background:var(--bg-2);color:var(--ink);border:1px solid var(--line);border-radius:9px;padding:6px 11px;min-width:160px} .bsearch::placeholder{color:var(--faint)} .bsearch:focus{outline:none;border-color:var(--accent-line)}
  .btoggle{font-family:var(--font-mono);font-size:10px;background:var(--bg-2);color:var(--dim);border:1px solid var(--line);border-radius:9px;padding:6px 11px;cursor:pointer} .btoggle.on{border-color:var(--accent-line);color:var(--accent);background:var(--accent-soft)}
  .bcount{font-family:var(--font-mono);font-size:10px;color:var(--faint);margin-left:auto}
  .improw{display:flex;align-items:center;gap:7px}
  .heatdot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--faint)} .heatdot.warm{background:var(--accent)} .heatdot.hot{background:var(--alert);box-shadow:0 0 8px color-mix(in srgb,var(--alert) 55%,transparent)}
  .star{background:none;border:none;color:var(--faint);font-size:15px;cursor:pointer;line-height:1;padding:0 2px} .star:hover{color:var(--accent)} .star.on{color:var(--accent)}
  .kanban{display:flex;gap:12px;overflow-x:auto;padding-bottom:10px}
  .kcol{flex:1;min-width:205px;background:var(--bg-2);border:1px solid var(--line-soft);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:9px}
  .kcol>h5{font-family:var(--font-mono);font-size:10px;letter-spacing:.8px;text-transform:uppercase;color:var(--dim);display:flex;justify-content:space-between;padding:2px 4px 7px;border-bottom:1px solid var(--line-soft);margin:0} .kcol>h5 .n{color:var(--faint)}
  .kcol .kempty{font-family:var(--font-mono);font-size:10px;color:var(--faint);text-align:center;padding:12px 0}
  .kcard{background:var(--bg-3);border:1px solid var(--line-soft);border-left:3px solid var(--cardc,var(--accent));border-radius:9px;padding:11px 12px;cursor:pointer;transition:transform .15s,border-color .15s} .kcard:hover{border-color:var(--line);transform:translateY(-2px)}
  .kcard h4{font-family:var(--font-display);font-weight:500;font-size:14px;margin:0;display:flex;align-items:center;gap:7px}
  .kcard .kmeta{display:flex;align-items:center;gap:9px;font-family:var(--font-mono);font-size:9.5px;color:var(--faint);margin-top:8px}
  /* console */
  .phead{padding:20px 32px 0;max-width:1320px;margin:0 auto}
  .back{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:11px;color:var(--dim);cursor:pointer;border:1px solid var(--line-soft);padding:6px 12px;border-radius:20px} .back:hover{border-color:var(--line);color:var(--ink)}
  .ptr{display:flex;align-items:center;gap:12px;margin:15px 0 2px;flex-wrap:wrap}
  .ptitle{font-family:var(--font-display);font-weight:500;font-size:28px}
  .ktag{font-family:var(--font-mono);font-size:9px;letter-spacing:.7px;text-transform:uppercase;color:var(--info);border:1px solid color-mix(in srgb,var(--info) 35%,transparent);border-radius:20px;padding:3px 8px}
  .statussel,.mini-sel{font-family:var(--font-mono);font-size:10px;background:var(--bg-3);color:var(--accent);border:1px solid var(--accent-line);border-radius:20px;padding:4px 9px;cursor:pointer}
  .mini-sel{color:var(--dim);border-color:var(--line);border-radius:8px}
  .pfocus{font-size:13px;color:var(--dim);margin-top:10px;max-width:820px;line-height:1.5;border-radius:6px;padding:3px 5px;cursor:text} .pfocus:hover{box-shadow:inset 0 0 0 1px var(--line)} .pfocus:focus{outline:none;background:var(--bg);box-shadow:inset 0 0 0 1px var(--accent-line)}
  .nextact{display:flex;align-items:center;gap:10px;margin-top:12px;background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid var(--accent-line);border-radius:11px;padding:11px 14px;max-width:820px;flex-wrap:wrap}
  .nextact .lab{font-family:var(--font-mono);font-size:9px;letter-spacing:1px;text-transform:uppercase;color:var(--accent)}
  .nextact .na-text{flex:1;min-width:200px;font-size:13.5px;outline:none;border-radius:5px;cursor:text;padding:2px 4px} .nextact .na-text:hover{box-shadow:inset 0 0 0 1px var(--line)} .nextact .na-text:focus{background:var(--bg);box-shadow:inset 0 0 0 1px var(--accent-line)} .nextact .na-text:empty::before{content:'set the next action…';color:var(--faint);font-style:italic}
  .kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-top:15px;max-width:760px}
  .kpi{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:11px;padding:10px 12px} .kpi .v{font-family:var(--font-display);font-size:20px;line-height:1} .kpi.ok .v{color:var(--ok)} .kpi.alert .v{color:var(--alert)}
  .kpi .l{font-family:var(--font-mono);font-size:8px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);margin-top:5px}
  .pgrid{display:grid;grid-template-columns:1fr 376px;gap:18px;padding:16px 32px 50px;max-width:1320px;margin:0 auto;align-items:start}
  .panels{display:grid;grid-template-columns:1fr 1fr;gap:13px}
  .panel{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:var(--r);padding:15px;animation:rise .4s both} .panel.wide{grid-column:1/-1}
  .panel h4{font-family:var(--font-mono);font-size:10px;letter-spacing:1.3px;text-transform:uppercase;color:var(--faint);margin-bottom:12px;display:flex;align-items:center;gap:8px} .panel h4 .n{margin-left:auto;color:var(--dim)} .real{color:var(--ok);font-size:8px} .pend{color:var(--faint);font-size:8px}
  .kv{display:flex;flex-direction:column;gap:9px} .kv .r2{display:flex;gap:10px;font-size:12.5px} .kv .k{font-family:var(--font-mono);font-size:10px;color:var(--faint);width:80px;flex:none;padding-top:1px} .kv .v{color:var(--ink)}
  .tasks{display:flex;flex-direction:column;gap:8px} .tk{display:flex;gap:9px;font-size:12.5px;color:var(--dim);align-items:flex-start}
  .tk .box{width:14px;height:14px;border-radius:4px;border:1.5px solid var(--line);flex:none;margin-top:1px;display:grid;place-items:center;font-size:9px;color:#1a140a;cursor:pointer} .tk.x .box{background:var(--ok);border-color:var(--ok)} .tk.x .tt{text-decoration:line-through;color:var(--faint)} .tk .tt{flex:1} .tk .mt{font-family:var(--font-mono);font-size:9px;color:var(--faint)}
  .del{color:var(--faint);cursor:pointer;font-size:13px;opacity:0;transition:.15s} .tk:hover .del,.dl:hover .del,.blk-row:hover .del{opacity:.6} .del:hover{color:var(--alert);opacity:1}
  .addrow{display:flex;gap:7px;margin-top:11px;flex-wrap:wrap} .addrow input{flex:1;min-width:80px;background:var(--bg-3);border:1px solid var(--line-soft);border-radius:8px;padding:7px 10px;color:var(--ink);font-size:12px;font-family:var(--font-ui)} .addrow input:focus{outline:none;border-color:var(--accent-line)} .addrow input::placeholder{color:var(--faint)}
  .addbtn{background:var(--bg-3);border:1px solid var(--line);color:var(--dim);border-radius:8px;width:32px;font-size:15px;cursor:pointer} .addbtn:hover{border-color:var(--accent-line);color:var(--accent)}
  .empty{font-size:12px;color:var(--faint);font-style:italic}
  .dl{display:flex;align-items:center;gap:9px;font-size:12.5px;padding:6px 0;border-top:1px solid var(--line-soft)} .dl:first-child{border-top:none}
  .kbadge{font-family:var(--font-mono);font-size:8px;letter-spacing:.6px;text-transform:uppercase;padding:2px 7px;border-radius:20px;flex:none} .kbadge.irb{color:var(--accent);background:var(--accent-soft)} .kbadge.journal{color:var(--info);background:color-mix(in srgb,var(--info) 12%,transparent)} .kbadge.grant{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)} .kbadge.conference{color:var(--run);background:color-mix(in srgb,var(--run) 12%,transparent)} .kbadge.other{color:var(--faint);background:var(--bg-3)}
  .dllab{flex:1;color:var(--ink)} .dldate{font-family:var(--font-mono);font-size:10px;color:var(--faint)} .dldate.soon{color:var(--accent)} .dldate.overdue{color:var(--alert)}
  .blk-row{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--alert);padding:6px 0;border-top:1px solid var(--line-soft)} .blk-row:first-child{border-top:none} .blk-row span:first-child{flex:1} .blk-row .since{font-family:var(--font-mono);font-size:9px;color:var(--faint)}
  .ledger{display:flex;flex-direction:column;gap:9px} .lg{display:flex;gap:9px;font-size:12.5px;color:var(--dim);line-height:1.45;align-items:flex-start} .lg .dt{font-family:var(--font-mono);font-size:9px;color:var(--faint);width:32px;flex:none;padding-top:2px}
  .who{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:5px;font-family:var(--font-mono);font-size:8px;flex:none;margin-top:1px} .who.cg{background:linear-gradient(135deg,#3a3020,#d9a24e);color:#1a140a;font-weight:600} .who.ai{background:var(--bg-3);border:1px solid var(--line);color:var(--accent);font-family:var(--font-display);font-size:11px}
  .prov{font-family:var(--font-mono);font-size:9px;color:var(--faint);margin-top:10px;padding-top:9px;border-top:1px solid var(--line-soft)}
  .session{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:var(--r);display:flex;flex-direction:column;position:sticky;top:18px;height:calc(100vh - 90px);overflow:hidden}
  .shead{padding:12px 15px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:9px;background:linear-gradient(180deg,var(--bg-3),var(--bg-2));font-family:var(--font-mono);font-size:10px} .shead .g{color:var(--accent);font-family:var(--font-display);font-size:14px} .shead .badge{margin-left:auto}
  .live{color:var(--ok);display:flex;align-items:center;gap:6px} .starting{color:var(--accent)}
  .stream{flex:1;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:13px} .hint{font-family:var(--font-mono);font-size:10px;color:var(--faint);text-align:center;margin-top:18px;line-height:1.6}
  .msg{display:flex;gap:9px;max-width:92%;animation:rise .3s both} .msg .av{width:24px;height:24px;border-radius:6px;flex:none;display:grid;place-items:center;font-family:var(--font-mono);font-size:9px}
  .msg.user{align-self:flex-end;flex-direction:row-reverse} .msg.user .av{background:linear-gradient(135deg,#3a3020,#d9a24e);color:#1a140a;font-weight:600} .msg.assistant .av{background:var(--bg-3);border:1px solid var(--line);color:var(--accent);font-family:var(--font-display);font-size:13px}
  .bub{font-size:12.5px;line-height:1.55;padding:9px 12px;border-radius:12px;white-space:pre-wrap} .msg.user .bub{background:var(--accent-soft);border:1px solid var(--accent-line);border-bottom-right-radius:4px} .msg.assistant .bub{background:var(--bg-3);border:1px solid var(--line-soft);border-bottom-left-radius:4px;color:#dfe3ea}
  .logbtn{display:inline-block;margin-top:7px;font-family:var(--font-mono);font-size:9px;color:var(--faint);cursor:pointer;opacity:0} .msg.assistant:hover .logbtn{opacity:.7} .logbtn:hover{color:var(--accent)}
  .tool{align-self:flex-start;font-family:var(--font-mono);font-size:9.5px;color:var(--run);border:1px solid color-mix(in srgb,var(--run) 30%,transparent);background:color-mix(in srgb,var(--run) 8%,transparent);border-radius:8px;padding:5px 9px}
  .composer{border-top:1px solid var(--line-soft);padding:11px 12px;display:flex;gap:8px;align-items:flex-end} .composer textarea{flex:1;resize:none;background:var(--bg-3);border:1px solid var(--line);border-radius:10px;color:var(--ink);font-family:var(--font-ui);font-size:12.5px;padding:9px 11px;line-height:1.5;max-height:120px} .composer textarea:focus{outline:none;border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}
  .send{background:var(--accent);color:#1a140a;border:none;border-radius:10px;width:38px;height:38px;font-size:15px;cursor:pointer;flex:none}
  @keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  .toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%) translateY(10px);opacity:0;background:var(--bg-3);border:1px solid var(--accent-line);border-radius:30px;padding:9px 16px;font-family:var(--font-mono);font-size:11px;color:var(--ink);z-index:300;transition:.3s;pointer-events:none} .toast.show{opacity:1;transform:translateX(-50%)}
  /* brief + radar surfaces */
  .bcard{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:var(--r);padding:14px 17px}
  .btn{font-family:var(--font-mono);font-size:10.5px;background:var(--accent);color:#1a140a;border:none;border-radius:9px;padding:7px 13px;cursor:pointer;vertical-align:middle} .btn:hover{filter:brightness(1.08)} .btn.ghost{background:var(--bg-3);color:var(--dim);border:1px solid var(--line)} .btn.ghost:hover{border-color:var(--accent-line);color:var(--accent)} .btn:disabled{opacity:.5;cursor:default}
  .gate{display:flex;gap:14px;align-items:flex-start;background:var(--bg-2);border:1px dashed var(--line);border-radius:var(--r);padding:18px 20px;color:var(--dim);font-size:13px;line-height:1.6}
  .gate .gi{font-size:22px;color:var(--accent);flex:none} .gate code{font-family:var(--font-mono);font-size:11px;color:var(--accent);background:var(--accent-soft);padding:1px 6px;border-radius:5px}
  .find{background:var(--bg-2);border:1px solid var(--line-soft);border-left:3px solid var(--info);border-radius:10px;padding:12px 15px;margin-bottom:9px;animation:rise .35s both}
  .find .fh{display:flex;gap:10px;align-items:center;margin-bottom:4px} .find .fsub{font-family:var(--font-display);font-size:15px} .find .ffrom{font-family:var(--font-mono);font-size:10px;color:var(--faint);margin-bottom:5px}
  .find .urg{margin-left:auto;font-family:var(--font-mono);font-size:9px;padding:2px 8px;border-radius:20px} .urg.high{color:var(--alert);background:color-mix(in srgb,var(--alert) 12%,transparent)} .urg.med{color:var(--accent);background:var(--accent-soft)} .urg.low{color:var(--faint);background:var(--bg-3)}
  .find .fask{font-size:12.5px;color:var(--dim);margin-top:3px}
  /* study module */
  .subtabs{display:flex;gap:6px;margin:16px 0 20px}
  .subtab{font-family:var(--font-mono);font-size:11px;color:var(--dim);padding:7px 15px;border-radius:9px;border:1px solid var(--line-soft);cursor:pointer;transition:.15s} .subtab:hover{border-color:var(--line);color:var(--ink)} .subtab.active{background:var(--accent-soft);color:var(--ink);border-color:var(--accent-line)}
  .capbar{height:6px;border-radius:6px;background:var(--bg-3);overflow:hidden;margin:2px 0 14px} .capbar span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),#e8b86a)}
  .plan{display:flex;flex-direction:column;gap:8px}
  .pblock{display:flex;gap:13px;align-items:flex-start;background:var(--bg-2);border:1px solid var(--line-soft);border-left:3px solid var(--cardc,var(--accent));border-radius:10px;padding:11px 14px;animation:rise .3s both}
  .pblock .ptime{font-family:var(--font-mono);font-size:11px;color:var(--accent);width:46px;flex:none;padding-top:2px} .pblock .pbody{flex:1}
  .pblock .ptitle2{font-size:13.5px;font-weight:500} .pblock .pdur{font-family:var(--font-mono);font-size:9px;color:var(--faint);margin-left:5px}
  .pblock .prat{font-size:12px;color:var(--dim);margin-top:3px;line-height:1.45} .pblock .ptarget{font-size:11px;color:var(--accent);margin-top:3px}
  .etag{font-family:var(--font-mono);font-size:8px;padding:2px 6px;border-radius:20px;align-self:flex-start;flex:none} .etag.step1{color:var(--accent);background:var(--accent-soft)} .etag.step2{color:var(--info);background:color-mix(in srgb,var(--info) 14%,transparent)} .etag.step3{color:var(--faint);background:var(--bg-3)}
  .pipestrip{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;max-width:520px} .pipe{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:10px;padding:10px 12px;text-align:center} .pipe .pv{font-family:var(--font-display);font-size:22px} .pipe .pl{font-family:var(--font-mono);font-size:8px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);margin-top:4px}
  .heat{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:9px}
  .hcell{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:11px;padding:12px 13px;position:relative;overflow:hidden} .hcell::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--hc,var(--faint))}
  .hcell .hsys{font-family:var(--font-display);font-size:15px;text-transform:capitalize} .hcell .hmeta{font-family:var(--font-mono);font-size:9.5px;color:var(--faint);margin-top:3px} .hcell .hbadges{display:flex;gap:5px;margin-top:8px} .hb{font-family:var(--font-mono);font-size:8.5px;padding:2px 7px;border-radius:20px} .hb.crit{color:var(--alert);background:color-mix(in srgb,var(--alert) 13%,transparent)} .hb.weak{color:var(--accent);background:var(--accent-soft)}
  .wlist{display:flex;flex-direction:column;gap:2px} .wrow{display:flex;align-items:center;gap:10px;font-size:12.5px;padding:8px 10px;border-radius:8px} .wrow:hover{background:var(--bg-2)} .wstat{width:8px;height:8px;border-radius:50%;flex:none} .wlabel{flex:1;color:var(--ink)} .wsys{font-family:var(--font-mono);font-size:9.5px;color:var(--faint);text-transform:capitalize} .overlap{font-family:var(--font-mono);font-size:8.5px;color:var(--info)} .wfail{font-family:var(--font-mono);font-size:10px;color:var(--alert);width:40px;text-align:right} .wscore{font-family:var(--font-mono);font-size:10px;color:var(--dim);width:46px;text-align:right}
  .exams{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:13px}
  .examcard{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:14px;padding:17px 19px;position:relative;overflow:hidden} .examcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}
  .examcard .extype{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--faint)} .examcard .exdays{font-family:var(--font-display);font-size:38px;line-height:1;margin-top:6px} .examcard .exu{font-size:13px;color:var(--dim);margin-left:6px} .examcard .exdate{font-family:var(--font-mono);font-size:10px;color:var(--faint);margin-top:2px}
  .examcard .exrow{display:flex;justify-content:space-between;font-size:12px;color:var(--dim);margin-top:9px;padding-top:8px;border-top:1px solid var(--line-soft)} .examcard .exrow b{color:var(--ink)} .exhint{font-family:var(--font-mono);font-size:9px;color:var(--faint)}
  .exchips{display:flex;gap:8px;margin-top:12px} .exchip{font-family:var(--font-mono);font-size:10px;color:var(--dim);background:var(--bg-2);border:1px solid var(--line-soft);border-radius:20px;padding:5px 12px;cursor:pointer;transition:.15s} .exchip:hover{border-color:var(--accent-line);color:var(--ink)} .exchip b{color:var(--accent)}
  /* study — KPI strip */
  .skpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(116px,1fr));gap:9px;margin:6px 0 2px}
  .skpi{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:11px;padding:11px 13px}
  .skpi .kv{font-family:var(--font-display);font-size:25px;line-height:1} .skpi .kl{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);margin-top:6px} .skpi .ks{font-size:10.5px;color:var(--dim);margin-top:2px}
  .skpi.crit .kv{color:var(--alert)} .skpi.warn .kv{color:var(--accent)} .skpi.good .kv{color:var(--ok)}
  /* study — audit chips */
  .auditrow{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 2px} .achip{font-family:var(--font-mono);font-size:9.5px;color:var(--dim);background:var(--bg-2);border:1px solid var(--line-soft);border-radius:7px;padding:4px 9px} .achip b{color:var(--ink)} .achip.bad b{color:var(--faint)}
  /* study — forecast */
  .fgrid{display:grid;grid-template-columns:1.25fr .9fr;gap:16px;align-items:start} @media(max-width:1080px){.fgrid{grid-template-columns:1fr}}
  .fmodel{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:12px;padding:15px 17px}
  .fmodel .mr{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;padding:7px 0;border-top:1px solid var(--line-soft)} .fmodel .mr:first-of-type{border-top:none} .fmodel .mr b{color:var(--ink);font-family:var(--font-mono);font-size:12px} .fmodel .mr span{color:var(--dim)}
  .fchart{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:12px;padding:16px;position:relative}
  .fchart svg{width:100%;height:206px;overflow:visible;display:block} .fchart .fce{position:absolute;inset:0;display:grid;place-items:center;text-align:center;color:var(--faint);font-size:12px;padding:20px}
  .warnbox{color:var(--alert);background:color-mix(in srgb,var(--alert) 10%,transparent);border:1px solid color-mix(in srgb,var(--alert) 28%,transparent);border-radius:9px;padding:8px 11px;font-size:11.5px;margin-top:11px}
  /* study — mastery gates */
  .mhead{display:flex;gap:20px;align-items:baseline;flex-wrap:wrap;margin:2px 0 10px} .mstat{font-family:var(--font-mono);font-size:10.5px;color:var(--dim)} .mstat b{color:var(--ink);font-family:var(--font-display);font-size:18px;margin-right:4px}
  .mrow2{display:grid;grid-template-columns:18px 1fr auto auto;gap:11px;align-items:center;padding:8px 10px;border-radius:8px} .mrow2:hover{background:var(--bg-2)} .mrk{font-family:var(--font-mono);font-size:9px;color:var(--faint);text-align:right}
  .gates{display:flex;gap:4px} .gate{font-family:var(--font-mono);font-size:8px;letter-spacing:.3px;text-transform:uppercase;padding:3px 6px;border-radius:5px;border:1px solid var(--line);color:var(--faint)} .gate.on{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent);background:color-mix(in srgb,var(--ok) 12%,transparent)}
  .mrev{font-family:var(--font-mono);font-size:10px;color:var(--dim);width:74px;text-align:right}
  /* study — pipeline kanban */
  .kanban{display:grid;grid-template-columns:repeat(5,1fr);gap:10px} @media(max-width:1080px){.kanban{grid-template-columns:repeat(2,1fr)}}
  .kcol{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:11px;padding:11px 12px;min-height:96px} .kch{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px} .kct{font-family:var(--font-mono);font-size:9px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint)} .kcn{font-family:var(--font-display);font-size:19px} .kcol.doing .kcn{color:var(--accent)} .kcol.graduated .kcn{color:var(--ok)}
  .kcard{font-size:11px;color:var(--ink);background:var(--bg-3);border-radius:6px;padding:5px 8px;margin-bottom:5px}
  /* study — analytics */
  .acards{display:grid;grid-template-columns:1fr 1fr;gap:14px} @media(max-width:980px){.acards{grid-template-columns:1fr}}
  .acard{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:12px;padding:14px 16px} .act{font-family:var(--font-mono);font-size:9px;letter-spacing:.6px;text-transform:uppercase;color:var(--faint);margin-bottom:11px} .acsub{font-size:10.5px;color:var(--faint);margin-top:10px;line-height:1.5}
  .atable{width:100%;border-collapse:collapse;font-size:12px} .atable th{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.4px;text-transform:uppercase;color:var(--faint);text-align:right;padding:5px 7px;font-weight:400} .atable th:first-child{text-align:left} .atable td{padding:6px 7px;text-align:right;border-top:1px solid var(--line-soft);color:var(--dim)} .atable td:first-child{text-align:left;color:var(--ink);text-transform:capitalize} .atable td b{color:var(--ink)}
  .fbar{display:grid;grid-template-columns:108px 1fr 70px;gap:10px;align-items:center;padding:4px 0} .fbt{font-size:11.5px;color:var(--ink);text-transform:capitalize} .ftrack{height:7px;border-radius:6px;background:var(--bg-3);overflow:hidden} .ffill{height:100%;border-radius:6px} .fbn{font-family:var(--font-mono);font-size:10px;color:var(--dim);text-align:right}
  /* study — weakness filters */
  .filterbar{display:flex;gap:7px;flex-wrap:wrap;margin:2px 0 14px} .fsel{font-family:var(--font-mono);font-size:10.5px;color:var(--dim);background:var(--bg-2);border:1px solid var(--line-soft);border-radius:8px;padding:6px 9px;cursor:pointer} .fsel:focus{outline:none;border-color:var(--accent-line);color:var(--ink)}
  .hcell{cursor:pointer} .hcell:hover{border-color:var(--accent-line)}
  /* people */
  .pgridppl{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:13px;margin-top:18px}
  .pcard{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:var(--r);padding:15px 17px;animation:rise .35s both}
  .pcard .ptop{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap} .pcard .pname{font-family:var(--font-display);font-size:17px} .pcard .prole{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.6px;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent-line);border-radius:20px;padding:2px 8px}
  .pcard .ptitle3{font-size:12px;color:var(--dim);margin-top:4px}
  .pcard .pprojs{display:flex;flex-direction:column;gap:4px;margin-top:11px;padding-top:10px;border-top:1px solid var(--line-soft)}
  .pproj{font-size:12.5px;color:var(--ink);cursor:pointer;display:flex;justify-content:space-between;gap:8px;border-radius:6px;padding:3px 5px} .pproj:hover{background:var(--bg-3)} .pproj i{font-family:var(--font-mono);font-size:8.5px;color:var(--faint);font-style:normal;text-transform:uppercase;flex:none}
  /* canvas viewer */
  .cv{position:fixed;inset:0;z-index:200;background:var(--bg);display:none;flex-direction:column}
  .cv.show{display:flex}
  .cvhead{display:flex;align-items:center;gap:12px;padding:11px 18px;border-bottom:1px solid var(--line-soft);background:linear-gradient(180deg,var(--bg-2),var(--bg))}
  .cvhead .cvt{font-family:var(--font-display);font-size:15px} .cvhead .cvp{font-family:var(--font-mono);font-size:10px;color:var(--faint)}
  .cvhead .cvx{margin-left:auto;cursor:pointer;color:var(--dim);border:1px solid var(--line);border-radius:8px;padding:6px 13px;font-family:var(--font-mono);font-size:11px} .cvhead .cvx:hover{color:var(--ink);border-color:var(--accent-line)}
  .cv iframe{flex:1;border:none;width:100%;background:#fff}
  @media(max-width:1080px){.pgrid{grid-template-columns:1fr}.session{position:static;height:480px}.panels{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(3,1fr)}.pipestrip{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:820px){.app{grid-template-columns:1fr}.rail{display:none}}
