:root{--bg:#fafafa;--card:#fff;--fg:#09090b;--muted:#71717a;--muted-bg:#f4f4f5;--border:#e4e4e7;--input:#e4e4e7;--ring:#1f78c8;--primary:#0f2a4a;--primary-fg:#fff;--accent:#1f78c8;--accent-bg:#eef5fc;--good:#15803d;--good-bg:#f0fdf4;--warn:#b45309;--warn-bg:#fffbeb;--bad:#b91c1c;--bad-bg:#fef2f2;--r:8px;--rc:12px;--sh:0 1px 2px rgba(0,0,0,.05);--side:248px}
[data-theme=dark]{--bg:#09090b;--card:#111113;--fg:#fafafa;--muted:#a1a1aa;--muted-bg:#1c1c1f;--border:#27272a;--input:#27272a;--primary:#e8f1fb;--primary-fg:#0f2a4a;--accent:#60a5fa;--accent-bg:#172235;--good:#4ade80;--good-bg:#0f2417;--warn:#fbbf24;--warn-bg:#2a1f08;--bad:#f87171;--bad-bg:#2a1010}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.5 "Inter",system-ui,sans-serif;font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;letter-spacing:-.02em;font-weight:600;line-height:1.25}h1{font-size:22px}h2{font-size:17px}h3{font-size:15px}
a{color:inherit}button{font:inherit;color:inherit}
svg.i{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.muted{color:var(--muted)}.xs{font-size:12px}.sm{font-size:13px}.mono{font-variant-numeric:tabular-nums}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:4px}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 14px;border-radius:var(--r);border:1px solid transparent;background:var(--primary);color:var(--primary-fg);font-weight:500;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s,opacity .15s}
.btn:hover{opacity:.92}.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.blue{background:var(--accent);color:#fff}.btn.outline{background:var(--card);border-color:var(--border);color:var(--fg)}.btn.outline:hover{background:var(--muted-bg);opacity:1}
.btn.ghost{background:transparent;color:var(--fg)}.btn.ghost:hover{background:var(--muted-bg);opacity:1}.btn.sm{height:30px;padding:0 10px;font-size:13px}.btn.icon{width:36px;padding:0}.btn.icon.sm{width:30px}
.btn.danger{background:var(--bad);color:#fff}
/* inputs */
.input,select.input,textarea.input{width:100%;height:36px;padding:0 10px;border:1px solid var(--input);border-radius:var(--r);background:var(--card);color:var(--fg);font:inherit;box-shadow:var(--sh)}
textarea.input{height:auto;min-height:72px;padding:8px 10px;resize:vertical}
.input:focus{outline:none;border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in oklab,var(--ring) 22%,transparent)}
label.f{display:grid;gap:6px;font-weight:500;font-size:13px}
.fgrid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:640px){.fgrid{grid-template-columns:1fr}}
/* card, badge */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--rc);box-shadow:var(--sh)}
.card-h{padding:16px 18px 0;display:flex;align-items:center;gap:10px}.card-h p{margin:2px 0 0}.card-b{padding:16px 18px}.card-h .sp{flex:1}
.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:500;border:1px solid var(--border);background:var(--card);white-space:nowrap}
.badge.sec{background:var(--muted-bg);border-color:transparent}.badge.good{background:var(--good-bg);color:var(--good);border-color:transparent}.badge.warn{background:var(--warn-bg);color:var(--warn);border-color:transparent}
.badge.bad{background:var(--bad-bg);color:var(--bad);border-color:transparent}.badge.blue{background:var(--accent-bg);color:var(--accent);border-color:transparent}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.dot.g{background:#16a34a}.dot.a{background:#d97706}.dot.rd{background:#dc2626}
/* layout */
.app{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh}.app.collapsed{--side:60px}
.side{position:sticky;top:0;height:100vh;border-right:1px solid var(--border);background:var(--card);display:flex;flex-direction:column;padding:10px;gap:4px;overflow:hidden}
.ws{display:flex;align-items:center;gap:10px;padding:8px;border-radius:var(--r);margin-bottom:6px}.ws img{width:32px;height:32px;border-radius:8px;flex:none}.ws b{display:block;font-size:14px;letter-spacing:-.01em}.ws span{font-size:12px;color:var(--muted)}
.nav-l{font-size:12px;color:var(--muted);padding:12px 10px 4px;font-weight:500}
.nav a{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border-radius:var(--r);text-decoration:none;color:var(--muted);font-weight:500;white-space:nowrap}
.nav a:hover{background:var(--muted-bg);color:var(--fg)}.nav a.on{background:var(--muted-bg);color:var(--fg)}.nav a .ct{margin-left:auto;font-size:12px;color:var(--muted)}
.side .me{margin-top:auto;display:flex;align-items:center;gap:10px;padding:8px;border-top:1px solid var(--border);padding-top:12px}
.av{width:30px;height:30px;border-radius:50%;background:var(--accent-bg);color:var(--accent);display:grid;place-items:center;font-size:12px;font-weight:600;flex:none}
.app.collapsed .side .lbl,.app.collapsed .nav-l,.app.collapsed .nav a span,.app.collapsed .nav a .ct{display:none}.app.collapsed .nav a{justify-content:center;padding:0}
.top{position:sticky;top:0;z-index:20;height:56px;display:flex;align-items:center;gap:10px;padding:0 20px;border-bottom:1px solid var(--border);background:color-mix(in oklab,var(--bg) 88%,transparent);backdrop-filter:blur(8px)}
.crumb{display:flex;align-items:center;gap:6px;color:var(--muted)}.crumb b{color:var(--fg);font-weight:500}
.kbar{margin-left:auto;display:flex;align-items:center;gap:8px;height:34px;padding:0 10px;border:1px solid var(--border);border-radius:var(--r);background:var(--card);color:var(--muted);cursor:pointer;min-width:220px;box-shadow:var(--sh)}
.kbar kbd,kbd{margin-left:auto;font:500 11px "Inter";border:1px solid var(--border);border-radius:4px;padding:1px 5px;background:var(--muted-bg);color:var(--muted)}
main{padding:24px 20px 60px}.page{max-width:1152px;margin:0 auto;display:grid;gap:16px}
.ph{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.ph .sp{flex:1}.ph p{margin:4px 0 0}
.grid{display:grid;gap:16px}.k4{grid-template-columns:repeat(4,minmax(0,1fr))}.k5{grid-template-columns:repeat(5,minmax(0,1fr))}.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.c3{grid-template-columns:2fr 1fr}
@media(max-width:1100px){.k5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.k4,.k5{grid-template-columns:repeat(2,minmax(0,1fr))}.c2,.c3{grid-template-columns:1fr}}
.kpi{padding:16px 18px}.kpi .l{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-weight:500;font-size:13px}.kpi b{display:block;font-size:24px;letter-spacing:-.02em;font-weight:600;margin-top:6px}
.kpi .d{display:flex;align-items:center;justify-content:space-between;margin-top:4px;font-size:12px;color:var(--muted)}.up{color:var(--good)}.down{color:var(--bad)}
/* tables */
.tw{overflow:auto}table.dt{width:100%;border-collapse:collapse}
.dt th{position:sticky;top:0;background:var(--card);text-align:left;font-weight:500;color:var(--muted);font-size:13px;height:40px;padding:0 12px;border-bottom:1px solid var(--border);white-space:nowrap}
.dt td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.dt tr:last-child td{border-bottom:0}
.dt tbody tr{transition:background .1s}.dt tbody tr.click{cursor:pointer}.dt tbody tr:hover{background:color-mix(in oklab,var(--muted-bg) 60%,transparent)}
.cell-n b{display:block;font-weight:500}.cell-n span{font-size:12px;color:var(--muted)}
@media(max-width:720px){.dt thead{display:none}.dt,.dt tbody,.dt tr,.dt td{display:block;width:100%}.dt tr{border-bottom:1px solid var(--border);padding:8px 0}.dt td{border:0;padding:5px 14px;display:flex;justify-content:flex-end;align-items:center;gap:6px;text-align:right}
.dt td::before{content:attr(data-l);color:var(--muted);font-size:12px;text-align:left;margin-right:auto}.dt td.first{display:block;text-align:left}.dt td.first::before{display:none}}
/* list rows */
.lr{display:flex;align-items:center;gap:12px;padding:10px 18px;border-top:1px solid var(--border)}.lr:first-child{border-top:0}.lr .grow{flex:1;min-width:0}.lr .grow b{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.empty{padding:36px 18px;text-align:center;color:var(--muted)}.empty svg.i{width:28px;height:28px;margin-bottom:8px;color:var(--muted)}.empty b{display:block;color:var(--fg);font-weight:500;margin-bottom:2px}
/* tabs, segmented */
.tabs{display:inline-flex;gap:2px;padding:3px;background:var(--muted-bg);border-radius:var(--r);flex-wrap:wrap}.tabs button{border:0;background:transparent;height:30px;padding:0 12px;border-radius:6px;font-weight:500;color:var(--muted);cursor:pointer}
.tabs button.on{background:var(--card);color:var(--fg);box-shadow:var(--sh)}
.chips{display:flex;gap:6px;flex-wrap:wrap}.chips button{height:30px;padding:0 10px;border:1px dashed var(--border);border-radius:var(--r);background:var(--card);font-size:13px;cursor:pointer;color:var(--muted)}.chips button.on{border-style:solid;color:var(--fg);background:var(--muted-bg)}
/* overlays */
.scrim{position:fixed;inset:0;background:rgba(9,9,11,.45);z-index:50;animation:fade .15s}
.sheet{position:fixed;top:0;right:0;bottom:0;width:min(760px,100vw);background:var(--card);border-left:1px solid var(--border);z-index:51;display:flex;flex-direction:column;animation:slide .2s ease-out}
.sheet-h{padding:18px 20px;border-bottom:1px solid var(--border);display:flex;gap:12px;align-items:flex-start}.sheet-h .grow{flex:1}.sheet-b{flex:1;overflow:auto;padding:16px 20px}.sheet-f{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}
.dialog{position:fixed;left:50%;top:14vh;transform:translateX(-50%);width:min(520px,calc(100vw - 32px));background:var(--card);border:1px solid var(--border);border-radius:var(--rc);z-index:51;box-shadow:0 10px 40px rgba(0,0,0,.18);animation:pop .15s}
.dialog-h{padding:18px 20px 0}.dialog-b{padding:16px 20px}.dialog-f{padding:0 20px 18px;display:flex;gap:8px;justify-content:flex-end}
.cmd{top:12vh;padding:0;overflow:hidden}.cmd input{width:100%;height:48px;border:0;border-bottom:1px solid var(--border);padding:0 16px 0 40px;font:15px "Inter";background:transparent;color:var(--fg);outline:none}
.cmd .s{position:absolute;left:14px;top:16px;color:var(--muted)}.cmd .res{max-height:340px;overflow:auto;padding:6px}.cmd .g{font-size:12px;color:var(--muted);padding:8px 10px 4px}
.cmd .it{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer}.cmd .it.on,.cmd .it:hover{background:var(--muted-bg)}.cmd .it span{margin-left:auto;font-size:12px;color:var(--muted)}
#toasts{position:fixed;right:16px;bottom:16px;z-index:60;display:grid;gap:8px}.toast{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:12px 14px;box-shadow:0 6px 24px rgba(0,0,0,.12);min-width:260px;animation:pop .15s}.toast b{display:block;font-weight:500}
@keyframes fade{from{opacity:0}}@keyframes slide{from{transform:translateX(30px);opacity:0}}@keyframes pop{from{transform:translateX(-50%) scale(.97);opacity:0}}
.toast{animation:none}
/* misc */
.skel{background:linear-gradient(90deg,var(--muted-bg),color-mix(in oklab,var(--muted-bg) 50%,var(--card)),var(--muted-bg));background-size:200% 100%;animation:sh 1.2s infinite;border-radius:var(--r)}@keyframes sh{to{background-position:-200% 0}}
.bar{height:8px;background:var(--muted-bg);border-radius:99px;overflow:hidden}.bar i{display:block;height:100%;background:var(--accent);border-radius:99px}
.funnel .row{display:grid;grid-template-columns:110px 1fr 48px;gap:12px;align-items:center;padding:6px 0}.funnel .row .bar{height:26px;border-radius:6px}.funnel .row .bar i{border-radius:6px}
.note{display:flex;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--rc);background:var(--card)}.note .av{background:var(--primary);color:var(--primary-fg)}
.chk{width:18px;height:18px;border-radius:5px;border:1px solid var(--input);background:var(--card);display:grid;place-items:center;cursor:pointer;flex:none;padding:0}.chk.on{background:var(--primary);border-color:var(--primary);color:var(--primary-fg)}.chk svg.i{width:12px;height:12px}
.done{text-decoration:line-through;color:var(--muted)}
.ed{width:100%;border-collapse:collapse}.ed td{padding:4px 4px 4px 0}.ed .input{height:32px;font-size:13px;min-width:104px}.ed td:first-child .input{min-width:200px}.ed input[type=date]{min-width:132px}.ed input[type=datetime-local]{min-width:190px}.ed th{font-weight:500;font-size:12px;color:var(--muted);text-align:left;padding:0 4px 6px 0}
.code{font:12px ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--muted-bg);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;word-break:break-all;display:flex;gap:10px;align-items:center}.code span{flex:1}
.hours .row{display:grid;grid-template-columns:120px 60px 1fr 1fr;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--border)}.hours .row:first-child{border:0}
.sw{width:36px;height:20px;border-radius:99px;background:var(--input);border:0;position:relative;cursor:pointer;padding:0}.sw::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:var(--sh);transition:left .15s}.sw.on{background:var(--primary)}.sw.on::after{left:18px}
.day{font-size:12px;color:var(--muted);font-weight:500;padding:14px 18px 6px;border-top:1px solid var(--border)}.day:first-child{border:0}
.mobile-only{display:none}
@media(max-width:900px){.app{grid-template-columns:1fr}.side{position:fixed;left:0;z-index:52;width:280px;transform:translateX(-100%);transition:transform .2s}.app.open .side{transform:none}.app.open::after{content:"";position:fixed;inset:0;background:rgba(9,9,11,.45);z-index:51}.mobile-only{display:inline-flex}.desk-only{display:none}.kbar{min-width:0}.kbar .lbl{display:none}main{padding:16px 14px 60px}}
/* login */
.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login .pane{display:grid;place-items:center;padding:32px 20px}.login .box{width:100%;max-width:380px;display:grid;gap:20px}
.login .art{background:#0f2a4a url(img/christen-seminar.jpg) center/cover;position:relative}.login .art::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,42,74,.25),rgba(15,42,74,.88))}
.login .art div{position:absolute;left:36px;right:36px;bottom:36px;z-index:1;color:#fff}.login .art q{font-size:18px;line-height:1.45;letter-spacing:-.01em;quotes:none}
@media(max-width:900px){.login{grid-template-columns:1fr}.login .art{display:none}}
/* learning + collaboration */
.frame{width:100%;border-radius:var(--r);overflow:hidden;background:var(--muted-bg);border:1px solid var(--border)}.frame iframe{width:100%;height:100%;border:0;display:block}
.kic{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;flex:none;background:var(--muted-bg);color:var(--muted)}.kic svg.i{width:16px;height:16px}
.k-video{background:var(--accent-bg);color:var(--accent)}.k-test{background:var(--warn-bg);color:var(--warn)}.k-doc{background:var(--good-bg);color:var(--good)}
.course{padding:0;text-align:left;cursor:pointer;overflow:hidden;transition:box-shadow .15s,transform .15s}.course:hover{box-shadow:0 6px 20px rgba(0,0,0,.08);transform:translateY(-1px)}
.course .thumb{aspect-ratio:16/7;background:#0f2a4a center/cover;display:grid;place-items:center;position:relative}.course .thumb::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(9,9,11,.45))}
.course .thumb svg.i{width:38px;height:38px;color:#fff;fill:rgba(255,255,255,.9);stroke:none;position:relative;z-index:1;filter:drop-shadow(0 2px 6px rgba(0,0,0,.35))}
.lr.cur{background:var(--muted-bg)}
.chat{display:flex;flex-direction:column;min-height:460px}.thread{flex:1;overflow:auto;padding:16px 18px;display:flex;flex-direction:column;gap:12px;max-height:56vh}
.msg{max-width:78%;align-self:flex-start}.msg .who{font-size:12px;color:var(--muted);margin-bottom:3px}.msg .who span{opacity:.8}.msg .b{background:var(--muted-bg);padding:10px 12px;border-radius:12px 12px 12px 4px;line-height:1.45;word-wrap:break-word}
.msg.mine{align-self:flex-end;text-align:right}.msg.mine .b{background:var(--primary);color:var(--primary-fg);border-radius:12px 12px 4px 12px;text-align:left}
.compose{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--border);align-items:flex-end}.compose textarea{min-height:42px}
.inbox{display:grid;grid-template-columns:300px 1fr;overflow:hidden}.threads{border-right:1px solid var(--border);max-height:70vh;overflow:auto}
.threads button{display:flex;gap:10px;align-items:center;width:100%;text-align:left;border:0;border-bottom:1px solid var(--border);background:transparent;padding:12px 14px;cursor:pointer}.threads button:hover,.threads button.on{background:var(--muted-bg)}
.threads .grow{flex:1;min-width:0}.threads b{display:block;font-weight:500}.threads .grow span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:900px){.inbox{grid-template-columns:1fr}.threads{max-height:220px;border-right:0;border-bottom:1px solid var(--border)}}
.picks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px;max-height:200px;overflow:auto;padding:2px}.picks label{display:flex;gap:8px;align-items:center;font-size:13px}
.mods .lr{border-top:1px solid var(--border)}
/* ACT prep */
.hero{display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;align-items:center}
.ring{--p:0;width:128px;height:128px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--muted-bg) 0);position:relative;flex:none}
.ring::before{content:"";position:absolute;inset:10px;border-radius:50%;background:var(--card)}
.ring div{position:relative;text-align:center;line-height:1.1}.ring b{font-size:38px;display:block;letter-spacing:-.03em}
.ring.sm{width:58px;height:58px}.ring.sm::before{inset:6px}.ring.sm b{font-size:19px}
.secs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.sec-t{padding:10px 12px;border:1px solid var(--border);border-radius:var(--r)}.sec-t b{font-size:20px;display:block;margin-top:2px}
.secrow{display:flex;gap:12px;align-items:center}.secrow .grow{flex:1;min-width:0;display:grid;gap:6px}
.mbar{height:8px;background:var(--muted-bg);border-radius:99px;overflow:hidden;flex:1;min-width:40px}.mbar i{display:block;height:100%;border-radius:99px;background:var(--accent);transition:width .3s}
.mbar i.lo{background:var(--bad)}.mbar i.mid{background:#d97706}.mbar i.hi{background:#16a34a}
.skill{display:grid;grid-template-columns:minmax(0,1fr) minmax(60px,140px) 40px auto;gap:10px;align-items:center;padding:7px 0;border-top:1px solid var(--border)}
.plan-i{display:flex;gap:12px;align-items:center;padding:12px 18px;border-top:1px solid var(--border)}
.plan-i .done{text-decoration:line-through;color:var(--muted)}
.qz{display:grid;gap:16px;grid-template-columns:minmax(0,760px)}.qz.wp{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start}
.passage{position:sticky;top:72px}.passage .card-b{max-height:70vh;overflow:auto;line-height:1.7}.passage p{margin:0 0 10px}
.passage table{border-collapse:collapse;margin:8px 0}.passage td,.passage th{border:1px solid var(--border);padding:4px 12px;text-align:center}
.stem{font-size:16px;line-height:1.6;margin:6px 0 14px}.stem u{text-decoration-thickness:2px;text-underline-offset:3px}
.ch{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;padding:11px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--card);cursor:pointer;margin-bottom:8px;line-height:1.45;transition:border-color .12s,background .12s}
.ch:hover:not(:disabled){border-color:var(--accent)}.ch .L{width:24px;height:24px;border-radius:50%;border:1px solid var(--border);display:grid;place-items:center;font-size:12px;font-weight:600;flex:none;background:var(--card)}
.ch.sel{border-color:var(--accent);background:var(--accent-bg)}.ch.ok{border-color:var(--good);background:var(--good-bg)}.ch.no{border-color:var(--bad);background:var(--bad-bg)}.ch:disabled{cursor:default;color:inherit}
.xp{padding:12px 14px;border-radius:var(--r);margin-top:6px;line-height:1.5}.xp.good{background:var(--good-bg)}.xp.bad{background:var(--bad-bg)}
.rv{border-top:1px solid var(--border);padding:8px 0}.rv summary{display:flex;gap:10px;align-items:center;cursor:pointer;list-style:none}.rv summary::-webkit-details-marker{display:none}
/* learn */
.cgrid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.ccard{display:flex;flex-direction:column;text-align:left;padding:0;overflow:hidden;cursor:pointer;transition:transform .15s,box-shadow .15s}.ccard:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08)}
.cover{display:flex;align-items:flex-end;padding:14px 16px;color:#fff}.cover svg.i{width:26px;height:26px}
.resume{display:grid;grid-template-columns:220px minmax(0,1fr);overflow:hidden}.resume .cover{align-items:center;justify-content:center}.resume .cover svg.i{width:40px;height:40px}
.curr .mod{padding:12px 18px 6px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;display:flex;justify-content:space-between;border-top:1px solid var(--border)}
.curr .lr{padding:9px 18px}.curr .lr.on{background:var(--accent-bg)}.curr .lr:first-child{border-top:1px solid var(--border)}
.sheet.wide{width:min(1040px,100vw)}
/* demo */
.demo{min-height:100vh;display:grid;place-items:center;padding:40px 16px;background:radial-gradient(1200px 500px at 10% -10%,var(--accent-bg),transparent),var(--bg)}
.demo-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.demo-card{padding:22px;text-align:left;cursor:pointer;display:grid;gap:10px;align-content:start;transition:transform .15s,box-shadow .15s,border-color .15s}.demo-card:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 10px 30px rgba(15,42,74,.12)}
#demo-bar{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:60;display:flex;gap:2px;align-items:center;padding:4px;border-radius:999px;background:var(--primary);color:var(--primary-fg);box-shadow:0 8px 24px rgba(0,0,0,.2);max-width:calc(100vw - 24px)}
#demo-bar .lbl{display:flex;gap:6px;align-items:center;padding:0 10px 0 8px;font-size:12px;font-weight:600;opacity:.8}
#demo-bar button{border:0;background:transparent;color:inherit;height:30px;padding:0 12px;border-radius:999px;cursor:pointer;font-weight:500;font-size:13px;opacity:.8;white-space:nowrap;display:inline-flex;align-items:center}
#demo-bar button:hover{opacity:1}#demo-bar button.on{background:var(--primary-fg);color:var(--primary);opacity:1}
@media(max-width:900px){.hero{grid-template-columns:1fr;justify-items:start}.qz.wp{grid-template-columns:minmax(0,1fr)}.passage{position:static}.passage .card-b{max-height:340px}.resume{grid-template-columns:1fr}.resume .cover{min-height:90px!important}.demo-cards{grid-template-columns:1fr}}
@media(max-width:560px){.secs{grid-template-columns:repeat(2,minmax(0,1fr))}.skill{grid-template-columns:minmax(0,1fr) 60px 36px auto}#demo-bar .lbl{display:none}#demo-bar button{padding:0 9px}}
@media print{.side,.top,#demo-bar,.tabs,.btn,#toasts{display:none!important}.app{display:block}main{padding:0}.card{break-inside:avoid;box-shadow:none}
body.print-sheet #root,body.print-sheet .scrim,body.print-sheet .sheet-f,body.print-sheet .sheet-h .btn{display:none!important}body.print-sheet .sheet{position:static;width:auto;border:0;animation:none}body.print-sheet .sheet-b{overflow:visible}}
body:has(.sheet) #demo-bar{bottom:72px}
/* simple prep platform (lite.js) */
.k3{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:900px){.k3{grid-template-columns:1fr}}
.step-l{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:10px}.step-l span{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:999px;background:var(--accent);color:#fff;font-size:12px}
.typepick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}@media(max-width:640px){.typepick{grid-template-columns:repeat(2,minmax(0,1fr))}}
.typepick button{display:flex;align-items:center;gap:8px;height:42px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--fg);font:inherit;font-size:13px;font-weight:500;cursor:pointer;text-align:left}
.typepick button.on{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.typepick svg.i{width:16px;height:16px}
.solo{min-height:100vh}.solo-top{position:sticky;top:0;display:flex;align-items:center;gap:10px}.solo main{max-width:1180px;margin:0 auto}
.stem .psg{margin:0 0 12px;padding:12px 14px;border-left:3px solid var(--accent);background:var(--accent-bg);border-radius:0 8px 8px 0}.stem ul.psg{padding-left:30px}
.stem table.mini{border-collapse:collapse;margin:0 0 12px;font-size:13px}.stem table.mini th,.stem table.mini td{border:1px solid var(--border);padding:4px 10px;text-align:left}
details.rv summary .btn{margin-left:8px}
.page{grid-template-columns:minmax(0,1fr)}.solo-top b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}details.rv summary{display:flex;align-items:center;gap:8px}
/* Students | Leads workspace switch */
.mode{display:grid;grid-template-columns:1fr 1fr;gap:2px;margin:10px 4px 0;padding:3px;background:var(--muted-bg,#f1f3f6);border-radius:8px}
.mode a{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 4px;border-radius:6px;font-size:12.5px;font-weight:500;color:inherit;opacity:.65;text-decoration:none}
.mode a.on{background:var(--card,#fff);opacity:1;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.mode svg{width:14px;height:14px}
.collapsed .mode{grid-template-columns:1fr}
/* goal card, alternate explanation, weekly email preview */
.goalc .pbar,.goalc .mbar{flex:1}
.xp.alt{background:var(--accent-bg);border-color:transparent;color:var(--fg);margin-top:10px}
.mail{max-width:620px;margin:0 auto;background:#fff;color:#18181b;border:1px solid var(--border);border-radius:12px;padding:22px 26px;font-size:14.5px;line-height:1.55}
.mail-h{display:flex;gap:12px;align-items:center;padding-bottom:14px;margin-bottom:14px;border-bottom:2px solid #0f2a4a}.mail-h img{border-radius:8px}.mail-h b{display:block;color:#0f2a4a}.mail-h span{font-size:12.5px;color:#71717a}
.mail h4{margin:16px 0 4px;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:#1f78c8}.mail ul{margin:0;padding-left:20px}.mail li{margin:2px 0}.mail .muted{color:#71717a}
/* plus.js: question bank, AI, photos, thumbnails */
.chip-ai{display:inline-flex;align-items:center;height:18px;padding:0 7px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:#fff;background:linear-gradient(90deg,#6d28d9,#1f78c8);vertical-align:middle;white-space:nowrap}
.av{position:relative;overflow:hidden}.av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.thumb-s{position:relative;flex:none;width:80px;height:45px;border-radius:8px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,#0f2a4a,#1f78c8);color:#fff}
.thumb-s svg.i{width:18px;height:18px}.thumb-s img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.qrow{align-items:flex-start}.qrow input[type=checkbox]{margin-top:4px;width:16px;height:16px;flex:none;accent-color:var(--accent)}.qrow .grow{display:grid;gap:3px}.qrow .qtext{white-space:normal}.qrow:hover{background:var(--muted-bg)}
.lbbar{position:sticky;bottom:0;display:flex;align-items:center;gap:8px;padding:10px 18px;border-top:1px solid var(--border);background:var(--card);border-radius:0 0 var(--rc) var(--rc)}.lbbar .sp{flex:1}.lbbar.on{background:var(--accent-bg)}
.draft{border:1px solid var(--border);border-radius:var(--rc);padding:14px 16px}
.tmsgs{display:grid;gap:8px}.tm{padding:10px 12px;border-radius:12px;white-space:pre-wrap;line-height:1.5;font-size:14px;max-width:92%}.tm.user{justify-self:end;background:var(--primary);color:var(--primary-fg)}.tm.assistant{justify-self:start;background:var(--muted-bg)}
.ai-btn{display:inline-flex;gap:6px;align-items:center}
.own-i{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--accent-bg);color:var(--accent);flex:none;margin-right:2px}
.own-i svg{width:16px;height:16px}

/* ===================== Brand pass: Crescent City (Fraunces + Manrope, paper + navy) ===================== */
:root{--bg:#FBFAF7;--card:#FFFFFF;--fg:#0F2A4A;--muted:#5B6575;--muted-bg:#F3F1EC;--border:rgba(15,42,74,.09);--input:rgba(15,42,74,.18);--ring:#1F78C8;
  --primary:#0F2A4A;--primary-fg:#FFFFFF;--accent:#1F78C8;--accent-bg:#EAF3FC;--sky:#8CC6F5;
  --good:#15803D;--good-bg:#EEF8F1;--warn:#B45309;--warn-bg:#FFFBEB;--bad:#B91C1C;--bad-bg:#FDF1F1;
  --r:10px;--rc:16px;--sh:0 1px 2px rgba(15,42,74,.05);
  --lift:0 0 0 1px rgba(15,42,74,.06),0 1px 2px rgba(15,42,74,.04),0 6px 16px -6px rgba(15,42,74,.08);
  --lift-hi:0 0 0 1px rgba(15,42,74,.08),0 2px 4px rgba(15,42,74,.05),0 14px 28px -10px rgba(15,42,74,.16);
  --ease:cubic-bezier(.2,0,0,1);--f-display:"Fraunces",Georgia,"Times New Roman",serif;--f-ui:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif}
[data-theme=dark]{--bg:#0B1626;--card:#111F33;--fg:#EEF2F7;--muted:#A3B2C4;--muted-bg:#172A42;--border:rgba(255,255,255,.08);--input:rgba(255,255,255,.16);--ring:#6FB3F2;
  --primary:#E8F1FB;--primary-fg:#0F2A4A;--accent:#6FB3F2;--accent-bg:#13304F;--sky:#8CC6F5;
  --good:#4ADE80;--good-bg:#0F2A1C;--warn:#FBBF24;--warn-bg:#2A1F08;--bad:#F87171;--bad-bg:#2A1212;
  --lift:0 0 0 1px rgba(255,255,255,.06),0 1px 2px rgba(0,0,0,.3),0 8px 20px -8px rgba(0,0,0,.5);--lift-hi:0 0 0 1px rgba(255,255,255,.1),0 16px 32px -12px rgba(0,0,0,.6)}
body{font:15px/1.55 var(--f-ui);font-feature-settings:normal;letter-spacing:-.003em}
h1,h2,.ws b,.hi{font-family:var(--f-display);font-weight:600;letter-spacing:-.015em;font-optical-sizing:auto}
h1{font-size:30px;line-height:1.15;text-wrap:balance}h2{font-size:21px;line-height:1.25;text-wrap:balance}h3{font-family:var(--f-ui);font-size:15px;font-weight:700;letter-spacing:-.005em}
p{text-wrap:pretty}.ph p{font-size:14.5px}
.mono,.kpi b,.ring b,.sec-t b,td.mono,.dt td,.ct{font-variant-numeric:tabular-nums}
.kpi b{font-family:var(--f-display);font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1.1}
.ring b{font-family:var(--f-display)}
a{text-underline-offset:3px}
/* surfaces: shadows over hard borders, concentric radii */
.card,.note,.draft,.demo-card{border:0;box-shadow:var(--lift);border-radius:var(--rc)}
.note{background:var(--card);padding:14px 16px;align-items:center}.note.soft{box-shadow:none;background:var(--warn-bg);color:var(--fg);gap:10px}.note.soft svg.i{color:var(--warn)}
.card .card{box-shadow:0 0 0 1px var(--border)}
.dialog,.toast{border:0;box-shadow:var(--lift-hi)}.dialog{border-radius:20px}.dialog.wide{width:min(680px,calc(100vw - 32px))}
.sheet{border-left:0;box-shadow:-24px 0 48px -24px rgba(15,42,74,.28)}
.lr,.dt td,.dt th,.plan-i,.skill,.curr .mod,.day{border-color:var(--border)}
.lr{padding:12px 18px}
.dt th{font-size:12px;letter-spacing:.04em;text-transform:uppercase;font-weight:700;color:var(--muted)}
.tabs{background:var(--muted-bg);border-radius:12px;padding:4px}.tabs button{border-radius:8px;height:32px;padding:0 14px;transition:background-color .15s var(--ease),color .15s var(--ease)}.tabs button.on{box-shadow:var(--lift)}
/* images: subtle outline for depth */
.av img,.thumb-s img,.course .thumb,.ws img{outline:1px solid oklch(0 0 0 / .1);outline-offset:-1px}
[data-theme=dark] .av img,[data-theme=dark] .thumb-s img,[data-theme=dark] .ws img{outline-color:oklch(1 0 0 / .1)}
.av{background:var(--accent-bg);color:var(--accent);font-weight:700}
.av.xl{width:52px;height:52px;font-size:18px;font-family:var(--f-ui)}
.hi{display:flex;align-items:center;gap:14px}
/* sidebar: paper, calm */
.side{background:var(--bg);border-right:1px solid var(--border)}.top{border-bottom:1px solid var(--border)}
.ws b{font-size:17px}.nav a{height:38px;border-radius:10px;color:var(--muted);transition:background-color .15s var(--ease),color .15s var(--ease)}
.nav a.on{background:var(--card);color:var(--fg);box-shadow:var(--lift)}.nav a:hover{background:var(--muted-bg)}
.mode{background:var(--muted-bg);border-radius:12px;padding:4px}.mode a{border-radius:8px;padding:7px 4px;font-size:13px;font-weight:600}.mode a.on{background:var(--card);box-shadow:var(--lift)}
.side .me{border-top:1px solid var(--border)}
/* buttons: 40px desktop / 44px touch, press feedback, specific transitions */
.btn{height:40px;padding:0 16px;border-radius:10px;font-weight:600;letter-spacing:-.005em;transition:background-color .15s var(--ease),color .15s var(--ease),box-shadow .15s var(--ease),opacity .15s var(--ease),scale .12s var(--ease)}
.btn:hover{opacity:1;background:color-mix(in oklab,var(--primary) 88%,var(--accent))}
.btn:active:not(:disabled){scale:.96}
.btn.outline{border:0;box-shadow:0 0 0 1px var(--input);background:var(--card)}.btn.outline:hover{background:var(--muted-bg)}
.btn.ghost:hover{background:var(--muted-bg)}.btn.sm{height:34px;padding:0 12px;font-size:13.5px;border-radius:9px}.btn.icon{width:40px}.btn.icon.sm{width:34px}
.btn svg.i{margin-left:-2px}
.input,select.input{height:40px;border-radius:10px;box-shadow:none;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:6px}
button,[role=button],a.btn,tr.click,.lr[onclick],summary,select{cursor:pointer}
/* badges: fewer, quieter; only status that matters gets colour */
.badge{height:24px;padding:0 9px;border:0;font-weight:600;font-size:12px}
.badge.sec,.badge.outline{background:transparent;padding:0;color:var(--muted);font-weight:500}
.badge.blue{background:var(--accent-bg);color:var(--accent)}
.chip-ai{background:var(--primary);color:var(--sky);height:20px;letter-spacing:.06em}
[data-theme=dark] .chip-ai{background:var(--accent-bg);color:var(--sky)}
/* data colour from tokens */
.mbar i.mid{background:var(--warn)}.mbar i.hi{background:var(--good)}.dot.g{background:var(--good)}.dot.a{background:var(--warn)}.dot.rd{background:var(--bad)}
.bar,.mbar{background:var(--muted-bg)}.ring{background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--muted-bg) 0)}
/* student warmth: goal card prominent, thumbnails on due rows */
.goalc{background:linear-gradient(135deg,var(--card) 55%,var(--accent-bg))}.goalc b{font-family:var(--f-display);font-size:19px;font-weight:600}
.thumb-s{border-radius:8px;width:88px;height:50px}
.kic{border-radius:10px;width:36px;height:36px}
/* upsell */
.upsell .card-b{display:flex;gap:16px;align-items:center;flex-wrap:wrap;background:linear-gradient(120deg,var(--card) 40%,var(--accent-bg));border-radius:var(--rc)}.upsell .grow{flex:1;min-width:220px;display:grid;gap:2px}.upsell b{font-family:var(--f-display);font-size:18px;font-weight:600}
/* mail preview keeps brand type */
.mail h4{font-family:var(--f-ui)}
/* motion: subtle staggered enter on route change only */
@keyframes rise{from{opacity:0;translate:0 6px}}
body[data-anim] .page>*{animation:rise .32s var(--ease) both}
body[data-anim] .page>*:nth-child(2){animation-delay:.04s}body[data-anim] .page>*:nth-child(3){animation-delay:.08s}body[data-anim] .page>*:nth-child(4){animation-delay:.12s}body[data-anim] .page>*:nth-child(n+5){animation-delay:.16s}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.btn:active:not(:disabled){scale:1}}
/* touch */
@media (pointer:coarse),(max-width:720px){.btn,.input,select.input{min-height:44px}.btn.sm{min-height:40px}.nav a{height:44px}.tabs button{height:40px}.ch{min-height:48px}h1{font-size:26px}}
@media print{.upsell{display:none!important}}
[data-theme=dark] .sw.on{background:var(--accent)}[data-theme=dark] .ws img{background:#fff;padding:3px}
.chips button{border:0;box-shadow:0 0 0 1px var(--input);border-radius:999px;padding:0 12px;color:var(--fg);transition:background-color .15s var(--ease),scale .12s var(--ease)}.chips button:hover{background:var(--muted-bg)}.chips button:active{scale:.96}.chips button.on{background:var(--primary);color:var(--primary-fg);box-shadow:none}
body:has(#demo-bar) main{padding-bottom:80px}
