/* ====== Woodle Cloud tokens + shell (from cadence-app/assets/styles.css) ====== */
:root{
  --accent-100:oklch(.92 .05 255);--accent-300:oklch(.74 .16 255);--accent-400:oklch(.64 .20 255);--accent-500:oklch(.56 .22 255);--accent-600:oklch(.50 .23 256);--accent-700:oklch(.44 .20 256);--accent-contrast:oklch(.99 0 0);
  --nimbus:oklch(.70 .15 300);
  --n-bg:oklch(.16 .005 270);--n-surface:oklch(.19 .006 270);--n-surface-2:oklch(.22 .007 270);--n-elevated:oklch(.24 .008 270);--n-line:oklch(1 0 0/.09);--n-line-2:oklch(1 0 0/.14);--n-text:oklch(.97 .003 270);--n-text-2:oklch(.80 .004 270);--n-text-3:oklch(.64 .005 270);--n-text-4:oklch(.50 .006 270);
  --success:oklch(.72 .15 155);--success-bg:oklch(.72 .15 155/.14);--warning:oklch(.80 .13 85);--warning-bg:oklch(.80 .13 85/.16);--danger:oklch(.68 .18 25);--danger-bg:oklch(.68 .18 25/.14);--info:oklch(.72 .13 240);--info-bg:oklch(.72 .13 240/.14);
  --font-sans:"Geist","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:"Geist Mono","JetBrains Mono","SF Mono",Menlo,monospace;--font-serif:Georgia,"Times New Roman",serif;
  --radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:14px;--ease:cubic-bezier(.4,0,.2,1);
  --glow:0 0 0 1px oklch(from var(--accent-500) l c h/.4),0 6px 20px oklch(from var(--accent-500) l c h/.25);
}
[data-theme="light"]{--n-bg:oklch(.99 .002 270);--n-surface:oklch(1 0 0);--n-surface-2:oklch(.975 .003 270);--n-elevated:oklch(1 0 0);--n-line:oklch(0 0 0/.09);--n-line-2:oklch(0 0 0/.15);--n-text:oklch(.22 .01 270);--n-text-2:oklch(.40 .01 270);--n-text-3:oklch(.55 .01 270);--n-text-4:oklch(.68 .01 270);}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.5;letter-spacing:-.006em;color:var(--n-text-2);background:var(--n-bg);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;color:var(--n-text);letter-spacing:-.014em;font-weight:680;line-height:1.2}
button{font:inherit}
a{color:var(--accent-400);cursor:pointer;text-decoration:none}

/* Stringify AI logo — official lockup (mark + wordmark + slate dot), currentColor adapts */
.sai-logo-wrap{display:inline-flex;align-items:center;color:var(--n-text)}
.sai-logo-wrap .sai-logo{height:100%;width:auto;display:block;fill:currentColor}
.login .brandpane .sai-logo-wrap{color:#fff;--logo-dot:#fff}
/* subtle "Powered by Woodle Cloud" platform attribution */
.poweredby{display:inline-flex;align-items:center;gap:7px}
.poweredby .pb-l{font-size:10.5px;color:var(--n-text-4);letter-spacing:.01em}
.wclogo{height:13px;width:auto;display:block;color:var(--n-text-3)}
.wclogo .w{fill:currentColor}.wclogo .c{fill:#64748B}.wclogo .d{fill:#2563EB}
.foot-pb{padding:10px 11px 2px}
.side.collapsed .foot-pb{display:none}
.login .brandpane .poweredby .pb-l{color:oklch(1 0 0/.6)}
.login .brandpane .wclogo{color:#fff}
.login .brandpane .wclogo .c{fill:oklch(1 0 0/.72)}
.login .brandpane .wclogo .d{fill:#fff}
.aboutrow{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;color:var(--n-text-2);padding:9px 0;border-bottom:1px solid var(--n-line)}
.aboutrow:last-child{border-bottom:0}.aboutrow b{color:var(--n-text)}

/* wordmark + mark */
.wc-logo{display:inline-flex;align-items:center;gap:8px;color:var(--n-text);font-weight:680}
.wc-mark{fill:currentColor;flex-shrink:0}
.wc-word{font-size:15px;display:inline-flex;align-items:baseline}
.wc-word b{font-weight:800}.wc-word .wc-cloud{font-weight:500;color:var(--n-text-3)}.wc-word .wc-dot{color:var(--accent-500);font-weight:800}
.wc-divider{width:1px;height:15px;background:var(--n-line-2);margin:0 3px}

/* shell */
.appwrap{display:flex;flex-direction:column;height:100vh;overflow:hidden}
.body{display:flex;flex:1;min-height:0}
.topbar{height:52px;flex-shrink:0;border-bottom:1px solid var(--n-line);display:flex;align-items:center;gap:14px;padding:0 16px;background:var(--n-bg);position:relative;z-index:30}
.tb-left{display:flex;align-items:center;gap:8px;flex-shrink:0;position:relative}
.collapse-btn,.icon-btn{height:34px;width:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:transparent;border:1px solid transparent;color:var(--n-text-3);cursor:pointer}
.collapse-btn:hover,.icon-btn:hover{background:var(--n-surface-2);color:var(--n-text)}
.app-chip{display:inline-flex;align-items:center;gap:9px;height:38px;padding:0 10px 0 8px;border-radius:var(--radius-md);border:1px solid transparent;background:transparent;color:var(--n-text);cursor:pointer}
.app-chip:hover{background:var(--n-surface-2);border-color:var(--n-line)}
.app-chip .wc-mark{fill:currentColor}.app-chip .ac-name{font-size:14px;font-weight:600}.app-chip .ac-caret{color:var(--n-text-3)}
.tsearch{flex:1;max-width:520px;margin:0 auto;position:relative}
.tsearch input{width:100%;height:36px;background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-md);padding:0 12px 0 34px;color:var(--n-text);font:inherit;font-size:13px;outline:none}
.tsearch input:focus{border-color:var(--accent-500);box-shadow:var(--glow)}
.tsearch svg{position:absolute;left:11px;top:10px;color:var(--n-text-3)}
.tsearch kbd{position:absolute;right:9px;top:8px;font-family:var(--font-mono);font-size:10px;color:var(--n-text-3);border:1px solid var(--n-line-2);border-radius:3px;padding:1px 5px}
.topright{margin-left:auto;display:flex;align-items:center;gap:12px}
.bell{position:relative;cursor:pointer;color:var(--n-text-3);padding:6px}
.bell .dot{position:absolute;top:3px;right:3px;width:8px;height:8px;border-radius:50%;background:var(--danger);border:2px solid var(--n-bg)}
.prof{display:flex;align-items:center;gap:9px;cursor:pointer}
.prof .nm{font-size:12.5px;color:var(--n-text);font-weight:560;font-family:var(--font-mono)}.prof .rl{font-size:11px;color:var(--n-text-3)}
.av{width:30px;height:30px;border-radius:50%;background:var(--accent-600);color:var(--accent-contrast);display:inline-grid;place-items:center;font-size:11px;font-weight:680;font-family:var(--font-mono);flex-shrink:0}
.side{width:240px;flex-shrink:0;background:var(--n-bg);border-right:1px solid var(--n-line);display:flex;flex-direction:column;padding:12px;overflow-y:auto;transition:width .16s var(--ease)}
.side.collapsed{width:64px;padding:12px 8px}
.side.collapsed .lbl,.side.collapsed .nav-grp{display:none}
.side.collapsed .nav-i{justify-content:center;gap:0;padding:9px 0}
.side.collapsed .badge-mini{display:none}
.nav-i{display:flex;align-items:center;gap:11px;padding:8px 11px;border-radius:var(--radius-md);font-size:13.5px;color:var(--n-text-2);margin-bottom:2px;cursor:pointer;white-space:nowrap;overflow:hidden}
.nav-i:hover{background:var(--n-surface-2);color:var(--n-text)}
.nav-i.on{background:oklch(from var(--accent-500) l c h/.16);color:var(--n-text);font-weight:560}
.nav-i .ic{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.nav-i .badge-mini{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--n-text-4);background:var(--n-surface-2);border:1px solid var(--n-line);border-radius:999px;padding:0 6px}
.nav-i.on .badge-mini{color:var(--accent-400)}
.nav-grp{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--n-text-4);padding:14px 11px 5px;font-weight:680}
.side .foot{margin-top:auto;border-top:1px solid var(--n-line);padding-top:10px}
.main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}
.content{flex:1;overflow-y:auto;padding:24px 28px 80px}
.contentwrap{max-width:1140px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:13.5px;font-weight:560;height:38px;padding:0 15px;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all .12s}
.btn:focus-visible{outline:none;box-shadow:var(--glow)}
.btn-primary{background:var(--accent-600);color:var(--accent-contrast)}.btn-primary:hover{background:var(--accent-500)}
.btn-secondary{background:var(--n-surface-2);color:var(--n-text);border-color:var(--n-line-2)}.btn-secondary:hover{background:var(--n-elevated)}
.btn-sm{height:32px;padding:0 12px;font-size:12.5px}

/* page head / lists / badges */
.crumb{font-size:12.5px;color:var(--n-text-3);margin-bottom:10px}.crumb b{color:var(--n-text-2);font-weight:560}.crumb a{color:var(--n-text-3)}.crumb a:hover{color:var(--accent-400)}
.phead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:6px;flex-wrap:wrap}
.phead h1{font-size:24px;letter-spacing:-.02em}
.psub{color:var(--n-text-3);font-size:13.5px;margin-bottom:20px}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:560;padding:2px 9px;border-radius:999px;border:1px solid transparent}
.badge-success{background:var(--success-bg);color:var(--success);border-color:oklch(from var(--success) l c h/.3)}
.badge-warn{background:var(--warning-bg);color:var(--warning);border-color:oklch(from var(--warning) l c h/.3)}
.badge-info{background:var(--info-bg);color:var(--info);border-color:oklch(from var(--info) l c h/.3)}
.badge-danger{background:var(--danger-bg);color:var(--danger);border-color:oklch(from var(--danger) l c h/.3)}
.badge-neutral{background:var(--n-surface-2);color:var(--n-text-3);border-color:var(--n-line)}
.badge-accent{background:oklch(from var(--accent-500) l c h/.14);color:var(--accent-400);border-color:oklch(from var(--accent-500) l c h/.3)}
.src-pill{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-family:var(--font-mono);color:var(--n-text-3);background:var(--n-surface-2);border:1px solid var(--n-line);border-radius:999px;padding:2px 9px}
.rowlist{display:flex;flex-direction:column;gap:10px}
.rowcard{display:flex;align-items:center;gap:14px;background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:14px 16px;cursor:pointer;transition:all .12s;text-align:left;width:100%}
.rowcard:hover{border-color:var(--accent-500);background:var(--n-surface-2)}
.rc-main{flex:1;min-width:0}.rc-title{font-size:14px;color:var(--n-text);font-weight:560;display:flex;align-items:center;gap:8px}.rc-meta{font-size:12px;color:var(--n-text-3);margin-top:3px}
.rc-go{color:var(--n-text-4);flex-shrink:0}
.rc-prog{width:160px;flex-shrink:0}
.rc-prog-top{display:flex;justify-content:space-between;font-size:10.5px;color:var(--n-text-3);margin-bottom:5px}
.rc-prog-n{font-family:var(--font-mono);color:var(--n-text-4)}
.pbar{height:6px;border-radius:999px;background:var(--n-surface-2);overflow:hidden}.pbar.sm{height:4px}.pbar i{display:block;height:100%;background:var(--accent-500);border-radius:999px}
.sec-label{display:flex;align-items:center;gap:9px;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--n-text-4);font-weight:680;margin:22px 0 11px}
.sec-label:first-child{margin-top:0}
.sec-label .cnt{font-family:var(--font-mono);letter-spacing:0}
.empty{text-align:center;padding:50px 20px;color:var(--n-text-3)}.empty .e1{font-size:15px;color:var(--n-text);font-weight:560}.empty .e2{font-size:13px;margin-top:6px}

/* cards / stats */
.card{background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:18px;margin-bottom:16px}
.card h3{font-size:14.5px;margin-bottom:4px}.card .lead{font-size:12.5px;color:var(--n-text-3);margin-bottom:12px}
.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:22px}
.stat{background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:16px 18px}
.stat .sk{font-size:11.5px;color:var(--n-text-3);display:flex;align-items:center;gap:7px}
.stat .sk .ic{color:var(--n-text-4)}
.stat .sv{font-size:28px;font-weight:680;color:var(--n-text);letter-spacing:-.02em;margin-top:8px;font-family:var(--font-mono)}
.stat .sd{font-size:11.5px;margin-top:4px}.stat .sd.up{color:var(--success)}.stat .sd.down{color:var(--danger)}.stat .sd.flat{color:var(--n-text-3)}
.grid2{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;align-items:start}
@media(max-width:980px){.grid2{grid-template-columns:1fr}}
.logline{display:flex;gap:9px;font-size:12.5px;color:var(--n-text-2);align-items:flex-start;padding:7px 0;border-bottom:1px solid var(--n-line)}
.logline:last-child{border-bottom:0}.logline .lt{font-family:var(--font-mono);font-size:10px;color:var(--n-text-4);flex-shrink:0;padding-top:2px;width:54px}
.logline .ld{flex-shrink:0;margin-top:5px;width:7px;height:7px;border-radius:50%;background:var(--accent-500)}

/* kanban */
.kanban{display:flex;gap:14px;overflow-x:auto;padding-bottom:8px}
.col{flex:0 0 270px;background:var(--n-surface-2);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:11px;display:flex;flex-direction:column;gap:9px}
.col-h{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;font-weight:680;color:var(--n-text-2);text-transform:uppercase;letter-spacing:.05em;padding:2px 4px}
.col-h .cn{font-family:var(--font-mono);color:var(--n-text-4)}
.tkt{background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-md);padding:11px 12px;cursor:pointer}
.tkt:hover{border-color:var(--accent-500)}
.tkt .tt{font-size:13px;color:var(--n-text);font-weight:560;line-height:1.35}
.tkt .tm{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:11px;color:var(--n-text-3)}
.tkt .key{font-family:var(--font-mono);font-size:10.5px;color:var(--n-text-4)}
.who{width:20px;height:20px;border-radius:50%;background:var(--accent-700);color:#fff;display:inline-grid;place-items:center;font-size:9px;font-weight:680;font-family:var(--font-mono)}

/* pipeline (releases) */
.pipe{display:flex;align-items:center;gap:0;margin:0 0 18px;flex-wrap:wrap}
.pstep{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--n-text-3);padding:6px 12px;border-radius:999px}
.pstep .si{width:20px;height:20px;border-radius:50%;border:1px solid var(--n-line-2);display:grid;place-items:center;font-size:10px;font-family:var(--font-mono);color:var(--n-text-3)}
.pstep.done .si{background:var(--success);border-color:transparent;color:#fff}
.pstep.on{background:oklch(from var(--accent-500) l c h/.14);color:var(--n-text)}.pstep.on .si{background:var(--accent-600);border-color:transparent;color:#fff}
.psep{width:18px;height:1px;background:var(--n-line-2)}

/* deck viewer (inside shell) */
.deckbar{display:flex;align-items:center;gap:12px;padding:0 0 14px;border-bottom:1px solid var(--n-line)}
#deckFrame{flex:1;width:100%;border:1px solid var(--n-line);border-radius:var(--radius-lg);background:#fff;margin-top:14px}

/* ====== Knowledge view (style carried from app-v2.5 knowledge.css; no Pro/Basic) ====== */
.kb-gov{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--n-text-2);background:var(--n-surface-2);border:1px solid var(--n-line);border-radius:var(--radius-md);padding:7px 12px;margin-bottom:14px}
.kb-gov .g{display:inline-flex;align-items:center;gap:6px}.kb-gov .g b{color:var(--n-text)}
.kb-gov .sep{width:1px;height:12px;background:var(--n-line)}
.kb-pill{font-size:9.5px;font-family:var(--font-mono);padding:2px 7px;border-radius:999px;border:1px solid var(--n-line);color:var(--n-text-3)}
.kb-pill.ok{color:var(--success);border-color:oklch(from var(--success) l c h/.4)}
.kb-body{display:grid;grid-template-columns:1fr 300px;gap:16px;align-items:start}
.kb-ai{position:sticky;top:0;background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:14px}
@media(max-width:1100px){.kb-body{grid-template-columns:1fr}.kb-ai{position:static}}
.kb-tb{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.kb-seg{display:flex;background:var(--n-surface-2);border:1px solid var(--n-line);border-radius:9px;padding:3px}
.kb-seg button{font:inherit;font-size:12.5px;color:var(--n-text-3);background:transparent;border:0;padding:6px 11px;border-radius:6px;cursor:pointer}
.kb-seg button.on{background:var(--n-elevated);color:var(--n-text)}
.kb-gsel{font:inherit;font-size:12px;background:var(--n-elevated);border:1px solid var(--n-line);color:var(--n-text);padding:6px 9px;border-radius:6px;cursor:pointer;max-width:200px}
.kb-count{margin-left:auto;font-size:11.5px;color:var(--n-text-3)}
.kb-files{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.kb-file{background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:13px 14px;position:relative}
.kb-file:hover{border-color:oklch(from var(--accent-500) l c h/.35)}
.kb-ftop{display:flex;align-items:center;gap:7px;margin-bottom:8px;flex-wrap:wrap}
.kb-src{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-family:var(--font-mono);color:var(--n-text-3);padding:2px 6px 2px 4px;border-radius:999px;border:1px solid var(--n-line)}
.kb-srcic{width:15px;height:15px;border-radius:4px;display:inline-grid;place-items:center;flex-shrink:0;font-size:10px}
.kb-srcic.woodle{background:oklch(from var(--accent-500) l c h/.18)}
.kb-srcic.gdrive{background:oklch(.80 .13 85/.18);color:var(--warning)}
.kb-srcic.shared{background:oklch(.72 .15 155/.18);color:var(--success)}
.kb-scope{font-size:9px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;border-radius:999px;border:1px solid var(--n-line);color:var(--n-text-3)}
.kb-scope.public{color:var(--success);border-color:oklch(from var(--success) l c h/.35)}
.kb-scope.team{color:var(--info);border-color:oklch(from var(--info) l c h/.4)}
.kb-scope.founder{color:var(--accent-400);border-color:oklch(from var(--accent-500) l c h/.4)}
.kb-scope.private{color:var(--warning);border-color:oklch(from var(--warning) l c h/.4)}
.kb-file .yr{margin-left:auto;font-size:10.5px;color:var(--n-text-3);font-family:var(--font-mono)}
.kb-file h3{font-size:13.5px;margin:0 0 4px;line-height:1.3;color:var(--n-text);cursor:pointer}
.kb-file h3:hover{color:var(--accent-400)}
.kb-auth{font-size:11px;color:var(--n-text-3);margin-bottom:9px}
.kb-tagrow{display:flex;gap:5px;flex-wrap:wrap;align-items:center}
.kb-tag{font-size:10px;padding:2px 7px;border-radius:999px;border:1px solid var(--n-line);color:var(--n-text-2);background:var(--n-surface-2)}
.kb-noteprev{margin-top:9px;font-size:11px;color:var(--n-text-2);background:var(--n-surface-2);border-left:2px solid var(--accent-500);border-radius:6px;padding:6px 9px}
.kb-privc{font-size:9px;font-family:var(--font-mono);color:var(--accent-300);margin-top:6px;display:inline-flex;align-items:center;gap:4px}
.kb-notebtn{margin-top:8px;font-size:10.5px;color:var(--accent-400);cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.kb-gh{font-size:11px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent-400);margin:18px 0 9px;display:flex;align-items:center;gap:8px}
.kb-gh::after{content:"";flex:1;height:1px;background:var(--n-line)}
.kb-aih{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:640;color:var(--n-text);margin-bottom:3px}
.kb-aidesc{font-size:11.5px;color:var(--n-text-3);line-height:1.45;margin-bottom:13px}
.kb-chip{display:block;width:100%;text-align:left;font:inherit;font-size:12px;color:var(--n-text);background:var(--n-surface-2);border:1px solid var(--n-line);border-radius:9px;padding:9px 11px;margin-bottom:7px;cursor:pointer;line-height:1.35}
.kb-chip:hover{border-color:oklch(from var(--accent-500) l c h/.4);background:var(--n-elevated)}
.kb-chip .k{font-size:10px;color:var(--accent-400);font-family:var(--font-mono);display:block;margin-bottom:2px}
.kb-psec{font-size:10.5px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--n-text-3);margin:16px 0 9px}
.kb-scrim{position:fixed;inset:0;background:oklch(0 0 0/.55);display:none;align-items:center;justify-content:center;z-index:200}
.kb-scrim.on{display:flex}
.kb-modal{width:560px;max-width:92vw;background:var(--n-surface);border:1px solid var(--n-line-2);border-radius:var(--radius-xl);box-shadow:0 24px 64px oklch(0 0 0/.4);overflow:hidden}
.kb-modal .mh{padding:16px 18px;border-bottom:1px solid var(--n-line)}
.kb-modal .mh .t{font-size:13px;font-weight:640;color:var(--n-text)}.kb-modal .mh .s{font-size:11px;color:var(--n-text-3);margin-top:2px}
.kb-modal .mb{padding:16px 18px}
.kb-modal textarea{width:100%;min-height:104px;resize:vertical;background:var(--n-bg);border:1px solid var(--n-line);border-radius:var(--radius-md);color:var(--n-text);font:inherit;font-size:13px;line-height:1.5;padding:11px 12px;outline:none}
.kb-modal textarea:focus{border-color:oklch(from var(--accent-500) l c h/.5);box-shadow:var(--glow)}
.kb-modal .mf{display:flex;align-items:center;gap:10px;padding:14px 18px;border-top:1px solid var(--n-line)}
.kb-hint{font-size:11px;color:var(--n-text-3)}

/* sub-brand tag (email affiliation) */
.wc-vert{font-size:10px;font-weight:700;letter-spacing:.16em;color:var(--accent-500);display:inline-flex;align-items:center;gap:7px}
.wc-vert::before{content:"";width:14px;height:2px;border-radius:2px;background:var(--accent-500)}

/* ===== login ===== */
.login{display:flex;min-height:100vh}
.login .brandpane{flex:1;background:linear-gradient(155deg,var(--accent-500),var(--accent-700) 72%,oklch(.30 .09 256));color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:48px;position:relative;overflow:hidden}
.login .brandpane .wm{position:absolute;right:-70px;bottom:-50px;width:440px;height:440px;opacity:.08;fill:#fff;pointer-events:none}
.login .brandpane .wc-logo{color:#fff;position:relative}.login .wc-word .wc-cloud{color:oklch(1 0 0/.6)}.login .wc-word .wc-dot{color:#fff}
.login .sub-brand{position:relative;margin-top:14px;font-size:12px;font-weight:700;letter-spacing:.14em;color:oklch(1 0 0/.85);text-transform:uppercase;display:inline-flex;align-items:center;gap:9px}
.login .sub-brand::before{content:"";width:18px;height:2px;background:#fff;border-radius:2px}
.login .bp-mid{position:relative;margin-top:auto}
.login .bp-mid h1{color:#fff;font-size:32px;line-height:1.15;max-width:16ch}
.login .welcome{margin-top:16px;color:oklch(1 0 0/.82);font-size:15px;max-width:42ch;line-height:1.6}
.login .copyr{position:relative;margin-top:36px;font-size:13px;color:oklch(1 0 0/.7)}
.login .formpane{width:460px;max-width:46vw;display:flex;align-items:center;justify-content:center;background:var(--n-bg);padding:32px}
.formcard{width:100%;max-width:340px}
.formcard h2{font-size:22px}.formcard .sub{color:var(--n-text-3);font-size:13px;margin:6px 0 22px}
.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;color:var(--n-text-2);margin-bottom:6px}.field .req{color:var(--accent-400)}
.input{width:100%;background:var(--n-surface);border:1px solid var(--n-line-2);border-radius:var(--radius-md);padding:0 12px;height:42px;color:var(--n-text);font:inherit;font-size:14px;outline:none}
.input:focus{border-color:var(--accent-500);box-shadow:var(--glow)}
.pw-wrap{position:relative;display:flex;align-items:center}.pw-wrap .input{padding-right:40px}
.pw-eye{position:absolute;right:6px;height:30px;width:30px;display:grid;place-items:center;border:0;background:transparent;color:var(--n-text-3);cursor:pointer;border-radius:var(--radius-sm)}
.pw-eye:hover{color:var(--n-text);background:var(--n-surface-2)}
.row-between{display:flex;justify-content:space-between;align-items:center;margin:4px 0 18px;font-size:13px}
.rm{display:flex;align-items:center;gap:7px;color:var(--n-text-2)}.rm input{accent-color:var(--accent-600)}
.btn-block{width:100%;height:44px}
.loginmsg{margin-top:12px;font-size:12.5px;min-height:16px;line-height:1.45}.loginmsg.err{color:var(--danger)}.loginmsg.note{color:var(--n-text-3)}
.hint{text-align:center;margin-top:18px;font-size:12px;color:var(--n-text-4)}
@media(max-width:1080px){.login .formpane{width:380px}}
@media(max-width:860px){.login{flex-direction:column}.login .brandpane{min-height:36vh;padding:32px}.login .formpane{width:100%;max-width:100%;padding:32px}}

/* ===== workstreams (abstracted dev oversight; project-equivalent) ===== */
.ws-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:14px}
.ws-card{background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:16px 17px;cursor:pointer;transition:all .12s;text-align:left;display:block;width:100%}
.ws-card:hover{border-color:var(--accent-500)}
.ws-top{display:flex;align-items:center;gap:10px;margin-bottom:5px}
.ws-name{font-size:15px;font-weight:640;color:var(--n-text)}
.ws-sum{font-size:12px;color:var(--n-text-3);line-height:1.45;margin:0 0 12px}
.ws-meta{display:flex;align-items:center;gap:14px;font-size:11.5px;color:var(--n-text-3);margin-bottom:11px}
.ws-meta .who{width:20px;height:20px;border-radius:50%;background:var(--accent-700);color:#fff;display:inline-grid;place-items:center;font-size:9px;font-weight:680;font-family:var(--font-mono)}
.ws-aspects{display:flex;gap:6px;flex-wrap:wrap}
.asp{font-size:9.5px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:999px;border:1px solid var(--n-line);color:var(--n-text-3);display:inline-flex;align-items:center;gap:5px}
.asp .d{width:6px;height:6px;border-radius:50%;background:var(--n-text-4)}
.asp.done{color:var(--success);border-color:oklch(from var(--success) l c h/.35)}.asp.done .d{background:var(--success)}
.asp.active{color:var(--accent-400);border-color:oklch(from var(--accent-500) l c h/.4)}.asp.active .d{background:var(--accent-500)}
.asp.blocked{color:var(--danger);border-color:oklch(from var(--danger) l c h/.4)}.asp.blocked .d{background:var(--danger)}
.ws-prog{display:flex;align-items:center;gap:10px;margin-top:13px}.ws-prog .pbar{flex:1}.ws-prog .pn{font-family:var(--font-mono);font-size:11px;color:var(--n-text-3)}
.aspbig{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:4px 0}
.aspbig .a{background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-md);padding:11px 13px}
.aspbig .a .an{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--n-text-4);font-weight:680;font-family:var(--font-mono)}
.aspbig .a .av{font-size:13px;font-weight:560;color:var(--n-text);margin-top:6px;display:flex;align-items:center;gap:7px}
.aspbig .a .av .d{width:7px;height:7px;border-radius:50%;background:var(--n-text-4)}
.aspbig .a.done .av .d{background:var(--success)}.aspbig .a.active .av .d{background:var(--accent-500)}.aspbig .a.blocked .av .d{background:var(--danger)}
.signal{display:flex;gap:9px;font-size:13px;color:var(--n-text-2);padding:8px 0;border-bottom:1px solid var(--n-line)}
.signal:last-child{border-bottom:0}.signal .sd{margin-top:6px;width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--accent-500)}

/* phase journey (workstream lifecycle: Discover → Design → Build → Launch) */
.phase-mini{display:flex;align-items:center;gap:5px;margin-top:12px}
.phase-mini .pm{width:24px;height:5px;border-radius:3px;background:var(--n-surface-2);border:1px solid var(--n-line)}
.phase-mini .pm.done{background:var(--success);border-color:transparent}
.phase-mini .pm.on{background:var(--accent-500);border-color:transparent}
.phase-mini .pm-lbl{margin-left:7px;font-size:11px;color:var(--n-text-3);font-family:var(--font-mono)}
.phasejourney{display:flex;gap:10px;flex-wrap:wrap}
.pj{flex:1;min-width:150px;background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-md);padding:12px 13px}
.pj.on{border-color:var(--accent-500);box-shadow:var(--glow)}
.pj.done{opacity:.9}
.pj-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.pj-dot{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-family:var(--font-mono);background:var(--n-surface-2);border:1px solid var(--n-line-2);color:var(--n-text-3);flex-shrink:0}
.pj.done .pj-dot{background:var(--success);border-color:transparent;color:#fff}
.pj.on .pj-dot{background:var(--accent-600);border-color:transparent;color:#fff}
.pj-name{font-size:13px;font-weight:640;color:var(--n-text)}
.pj-desc{font-size:11.5px;color:var(--n-text-3);line-height:1.45}

/* upcoming (grayed) nav item + Studio preview */
.nav-i.upcoming{opacity:.55}
.nav-i.upcoming:hover{opacity:.85}
.nav-soon{margin-left:auto;font-size:9px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--n-text-4);border:1px solid var(--n-line-2);border-radius:999px;padding:1px 6px}
.side.collapsed .nav-soon{display:none}
.upcoming-hero{background:linear-gradient(155deg,oklch(from var(--accent-500) l c h/.10),transparent 70%);border:1px solid var(--n-line);border-radius:var(--radius-xl);padding:24px 26px;margin-bottom:18px}
.upcoming-hero h2{font-size:22px;letter-spacing:-.014em;margin:12px 0 8px}
.upcoming-hero p{font-size:14px;color:var(--n-text-2);max-width:72ch;line-height:1.6;margin:0}
.nodeflow{display:flex;align-items:stretch;gap:8px;overflow-x:auto;padding-bottom:8px;margin-bottom:20px}
.nf-node{flex:1;min-width:158px;background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:14px}
.nf-node.out{border-color:var(--accent-500);background:oklch(from var(--accent-500) l c h/.06)}
.nf-n{width:24px;height:24px;border-radius:50%;background:var(--n-surface-2);border:1px solid var(--n-line-2);display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;color:var(--n-text-3);margin-bottom:9px}
.nf-node.out .nf-n{background:var(--accent-600);color:#fff;border-color:transparent}
.nf-t{font-size:13.5px;font-weight:640;color:var(--n-text)}
.nf-d{font-size:11.5px;color:var(--n-text-3);margin-top:4px;line-height:1.45}
.nf-arr{display:flex;align-items:center;color:var(--n-text-4);flex-shrink:0}
.feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}

/* vertical delivery-lifecycle (workstream detail) */
.lifecycle{position:relative;margin-top:4px}
.lc{display:flex;gap:14px;padding-bottom:14px;position:relative}
.lc:not(:last-child) .lc-rail::after{content:"";position:absolute;top:26px;bottom:-14px;left:50%;transform:translateX(-50%);width:2px;background:var(--n-line)}
.lc-rail{position:relative;flex-shrink:0;width:24px;display:flex;justify-content:center}
.lc-dot{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-family:var(--font-mono);background:var(--n-surface-2);border:1px solid var(--n-line-2);color:var(--n-text-3);z-index:1}
.lc.done .lc-dot{background:var(--success);border-color:transparent;color:#fff}
.lc.on .lc-dot{background:var(--accent-600);border-color:transparent;color:#fff}
.lc-body{flex:1;min-width:0;background:var(--n-surface);border:1px solid var(--n-line);border-radius:var(--radius-lg);padding:13px 15px;margin-top:-1px}
.lc.on .lc-body{border-color:var(--accent-500)}
.lc-head{display:flex;align-items:center;gap:10px}
.lc-name{font-size:14px;font-weight:640;color:var(--n-text)}
.lc-status{margin-left:auto;font-size:10px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--n-text-4)}
.lc-status.done{color:var(--success)}.lc-status.on{color:var(--accent-400)}
.lc-meta{font-size:11.5px;color:var(--n-text-3);margin-top:5px;font-family:var(--font-mono)}
.lc-gate{font-size:12px;color:var(--n-text-2);margin-top:9px;background:var(--n-surface-2);border-left:2px solid var(--accent-500);border-radius:6px;padding:7px 10px;line-height:1.45}
.lc-gate b{color:var(--n-text)}
.lc-mats{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.lc-mat{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:11.5px;color:var(--n-text-2);background:var(--n-surface-2);border:1px solid var(--n-line);border-radius:999px;padding:3px 10px;cursor:pointer}
.lc-mat:hover{border-color:var(--accent-500);color:var(--n-text)}

/* upload form + card actions */
.grid2cols{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.input[type=file]{padding:9px 12px;height:auto}
.kb-modal .mb .field{margin-bottom:13px}
.kb-actions{display:flex;align-items:center;gap:14px;margin-top:10px}
.kb-notebtn.rm{color:var(--n-text-4)}.kb-notebtn.rm:hover{color:var(--danger)}

/* deck viewer zoom + scroll host */
.deckview{display:flex;flex-direction:column}
.deck-title{flex:1;min-width:0;font-weight:680;color:var(--n-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.zoomctl{display:inline-flex;align-items:center;gap:2px;background:var(--n-surface-2);border:1px solid var(--n-line);border-radius:var(--radius-md);padding:2px;flex-shrink:0}
.zoomctl button{border:0;background:transparent;color:var(--n-text-2);cursor:pointer;font:inherit;height:26px;border-radius:var(--radius-sm)}
.zoomctl .zb{width:28px;display:grid;place-items:center;font-size:17px;line-height:1}
.zoomctl .zlbl{min-width:48px;font-size:12px;font-family:var(--font-mono);color:var(--n-text-3)}
.zoomctl button:hover{background:var(--n-elevated);color:var(--n-text)}
.deckhost{flex:1;min-height:0;overflow:auto;border:1px solid var(--n-line);border-radius:var(--radius-lg);margin-top:14px;background:#fff}
.deckhost #deckFrame{display:block;border:none;background:#fff;width:100%;height:100%;margin:0}

@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
