:root{
  --bg:#F8F7F2; --surface:#ffffff; --surface-2:#F1EFE7; --ink:#263449; --muted:#718096;
  --line:#EAE6DA; --primary:#4A90F8; --primary-soft:#EAF2FE; --primary-ink:#2F6FD6; --teal:#3AC7C2; --purple:#8B6BD6; --orange:#F5A65B; --coral:#F07470; --sidebar-bg:#FFFFFF;
  --correct:#15B187; --correct-bg:#E4F7F1; --wrong:#E5484D; --wrong-bg:#FDECEE; --amber:#F5A65B;
  --shadow:0 1px 3px rgba(38,52,73,.04),0 12px 28px rgba(38,52,73,.07);
  --shadow-lg:0 8px 20px rgba(38,52,73,.08),0 24px 48px rgba(38,52,73,.10);
  --radius:18px;
  --grad-hero:linear-gradient(120deg,#4A90F8 0%,#8B6BD6 55%,#3AC7C2 100%);
}
[data-theme="dark"]{
  --bg:#0E1420; --surface:#171F30; --surface-2:#1E2740; --ink:#EBEFF7; --muted:#98A5BD;
  --line:#28324A; --primary:#5B9BFF; --primary-soft:#1C2C4C; --primary-ink:#B7D2FF; --teal:#3FD9D3; --purple:#A98CE8; --orange:#F5B472; --coral:#F4867E; --sidebar-bg:#111827;
  --correct:#34D399; --correct-bg:#11271f; --wrong:#F4708A; --wrong-bg:#2a1418; --amber:#F0B36E;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.35);
  --shadow-lg:0 10px 24px rgba(0,0,0,.35),0 28px 60px rgba(0,0,0,.4);
  --grad-hero:linear-gradient(120deg,#2F6FD6 0%,#6E4FB8 55%,#1C9A96 100%);
}
:focus-visible{outline:2.5px solid var(--primary);outline-offset:2px;border-radius:6px}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--ink);font-family:"Nunito Sans",Inter,system-ui,sans-serif;line-height:1.55;-webkit-font-smoothing:antialiased}
.mono,.num{font-family:"Lexend",Inter,sans-serif;font-feature-settings:"tnum"}
a{color:var(--primary);text-decoration:none}
button{font-family:inherit;cursor:pointer}
.wrap{max-width:1080px;margin:0 auto;padding:0 clamp(18px,4vw,40px)}

/* Sidebar layout */
.app-shell{display:flex;min-height:100vh;align-items:stretch}
.sidebar{position:sticky;top:0;align-self:flex-start;height:100vh;width:252px;flex:none;background:var(--sidebar-bg);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:22px 14px;gap:4px;z-index:50}
.brand{display:flex;align-items:center;gap:11px;font-family:"Lexend";font-weight:700;font-size:19px;letter-spacing:-.01em;margin:4px 8px 22px;color:var(--ink)}
.brand .pulse{width:38px;height:38px;border-radius:12px;background:var(--grad-hero);display:grid;place-items:center;color:#fff;flex:none;box-shadow:0 6px 16px rgba(74,144,248,.35)}
.brand .pulse svg{width:22px;height:22px}
.brand .tag{display:block;font-family:"Nunito Sans";font-weight:600;font-size:11px;color:var(--muted);letter-spacing:0;margin-top:1px}
nav.tabs{display:flex;flex-direction:column;gap:3px}
nav.tabs button{position:relative;display:flex;align-items:center;gap:12px;width:100%;justify-content:flex-start;text-align:left;background:none;border:0;color:var(--muted);font-weight:600;font-size:14.5px;padding:12px 14px;border-radius:14px;transition:background .15s,color .15s;min-height:44px}
nav.tabs button svg{width:20px;height:20px;flex:none}
nav.tabs button:hover{color:var(--ink);background:var(--surface-2)}
nav.tabs button.active{color:#fff;background:var(--grad-hero);box-shadow:var(--shadow)}
nav.tabs button.active svg{color:#fff}
.side-foot{margin-top:auto;display:flex;align-items:center;gap:10px;padding:12px 6px 2px}
.side-foot .ftxt{font-size:12px;color:var(--muted);font-weight:600}
.theme-btn{background:var(--surface);border:1px solid var(--line);color:var(--ink);width:44px;height:44px;border-radius:13px;display:grid;place-items:center;flex:none}
.theme-btn:hover{background:var(--surface-2)}
.theme-btn svg{width:18px;height:18px}

/* Grouped nav flyout panels (Study / More) */
.navflyout{position:fixed;z-index:200;min-width:220px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-lg);padding:8px;display:none;flex-direction:column;gap:2px}
.navflyout.open{display:flex}
.navflyout button{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:11px;background:none;border:0;color:var(--ink);font-weight:600;font-size:14px;text-align:left;min-height:44px}
.navflyout button:hover{background:var(--surface-2)}
.navflyout button svg{width:18px;height:18px;color:var(--muted);flex:none}
.navflyout .flytitle{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700;padding:8px 12px 4px}
.nav-backdrop{position:fixed;inset:0;z-index:190;display:none}
.nav-backdrop.open{display:block}

/* Bottom mobile nav */
.bottomnav{display:none}
@media(max-width:820px){
  .app-shell{flex-direction:column}
  .sidebar{display:none}
  main{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .bottomnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:150;background:var(--surface);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -4px 20px rgba(38,52,73,.08)}
  .bottomnav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:none;border:0;color:var(--muted);font-size:11px;font-weight:600;padding:6px 2px;min-height:52px;border-radius:12px}
  .bottomnav button svg{width:21px;height:21px}
  .bottomnav button.active{color:var(--primary)}
  .bottomnav button.active svg{color:var(--primary)}
  .mobile-topbar{display:flex!important}
}
.mobile-topbar{display:none;align-items:center;justify-content:space-between;padding:14px clamp(18px,4vw,40px) 0}
.mobile-topbar .brand{margin:0}

/* Layout */
main{flex:1;min-width:0;padding:34px 0 90px}
.view{animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
h1.page{font-family:"Lexend";font-size:26px;letter-spacing:-.02em;margin:0 0 4px}
.sub{color:var(--muted);font-size:14px;margin:0 0 22px}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.pad{padding:20px}
.grid{display:grid;gap:16px}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.g3,.g2,.g4{grid-template-columns:1fr}}

/* Vitals strip */
.vitals{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}
.vital{background:var(--surface);padding:16px 18px}
.vital .k{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.vital .v{font-family:"Lexend";font-size:30px;font-weight:600;line-height:1.1;margin-top:4px;letter-spacing:-.02em}
.vital .v small{font-size:14px;color:var(--muted);font-weight:500}
@media(max-width:760px){.vitals{grid-template-columns:repeat(2,1fr)}}

.barline{height:7px;background:var(--surface-2);border-radius:99px;overflow:hidden}
.barline > i{display:block;height:100%;background:var(--primary);border-radius:99px;transition:width .5s ease}

.lec-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.lec-row:last-child{border-bottom:0}
.dot{width:10px;height:10px;border-radius:99px;flex:none}
.lec-row .name{font-weight:600;font-size:14px;flex:1;min-width:0}
.lec-row .name small{display:block;color:var(--muted);font-weight:500;font-size:12px}
.lec-row .acc{font-family:"Lexend";font-weight:600;width:54px;text-align:right}
.lec-row .mini{width:120px}
@media(max-width:600px){.lec-row .mini{display:none}}

.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:4px 9px;border-radius:99px;border:1px solid var(--line);background:var(--surface-2);color:var(--muted)}
.pill.E{color:#2f7d52;border-color:#bfe3cd;background:#eaf7ef}
.pill.M{color:#9a6212;border-color:#ecd4ad;background:#fbf1df}
.pill.D{color:#a23046;border-color:#edc3cc;background:#fbe7ec}
[data-theme="dark"] .pill.E{color:#5fd49a;border-color:#1d4030;background:#10261c}
[data-theme="dark"] .pill.M{color:#e0b066;border-color:#3d3015;background:#241b0c}
[data-theme="dark"] .pill.D{color:#f4889e;border-color:#3f2129;background:#250f14}

.btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;background:var(--primary);color:#fff;border:0;font-weight:600;font-size:14px;padding:11px 18px;border-radius:11px;min-height:44px}
[data-theme="dark"] .btn{color:#04100e}
.btn:hover{filter:brightness(.96)}
.btn.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line)}
.btn.ghost:hover{background:var(--surface-2);filter:none}
.btn.sm{padding:8px 13px;font-size:13px;border-radius:9px}
.btn:disabled{opacity:.45;cursor:not-allowed}

/* Question */
.q-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.q-meta .lectag{font-size:12px;font-weight:600;color:var(--muted)}
.q-img-wrap{margin:0 0 16px;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:var(--surface-2)}
.q-img{display:block;width:100%;max-height:420px;object-fit:contain;cursor:zoom-in;background:#0b0b0b}
.img-lightbox{display:none;position:fixed;inset:0;background:rgba(10,12,16,.88);z-index:9999;align-items:center;justify-content:center;padding:24px;cursor:zoom-out}
.img-lightbox.open{display:flex}
.img-lightbox img{max-width:100%;max-height:100%;border-radius:10px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.q-stem{font-size:17px;line-height:1.55;margin:0 0 18px;font-weight:500}
.opts{display:flex;flex-direction:column;gap:10px}
.opt{display:flex;gap:13px;align-items:flex-start;text-align:left;width:100%;background:var(--surface);border:1.5px solid var(--line);border-radius:12px;padding:14px 15px;color:var(--ink);font-size:15px;line-height:1.45;transition:border-color .15s,background .15s}
.opt:hover:not(:disabled){border-color:var(--primary)}
.opt .ltr{font-family:"Lexend";font-weight:600;width:26px;height:26px;border-radius:7px;background:var(--surface-2);display:grid;place-items:center;flex:none;font-size:14px;color:var(--muted)}
.opt.correct{border-color:var(--correct);background:var(--correct-bg)}
.opt.correct .ltr{background:var(--correct);color:#fff}
.opt.wrong{border-color:var(--wrong);background:var(--wrong-bg)}
.opt.wrong .ltr{background:var(--wrong);color:#fff}
.opt:disabled{cursor:default}
.opt .mark{margin-left:auto;font-weight:700;flex:none}
.opt.correct .mark{color:var(--correct)}
.opt.wrong .mark{color:var(--wrong)}

.expl{margin-top:18px;border-top:1px solid var(--line);padding-top:18px;animation:fade .3s ease}
.expl h4{margin:0 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.expl .why{font-size:14px;line-height:1.55;margin:0 0 14px}
.expl .why .row{display:flex;gap:9px;padding:5px 0;border-bottom:1px dashed var(--line)}
.expl .why .row:last-child{border-bottom:0}
.expl .why .row .l{font-family:"Lexend";font-weight:600;color:var(--muted)}
.expl .why .row.c .l{color:var(--correct)}
.takeaway{background:var(--primary-soft);border:1px solid color-mix(in srgb,var(--primary) 25%,transparent);border-radius:11px;padding:13px 15px;font-size:14px;margin-bottom:12px}
.takeaway b{color:var(--primary-ink)}
.tags{display:flex;gap:7px;flex-wrap:wrap}
.tag{font-size:12px;color:var(--muted);background:var(--surface-2);border:1px solid var(--line);padding:3px 9px;border-radius:99px}

.foot{display:flex;align-items:center;gap:10px;margin-top:18px;flex-wrap:wrap}
.foot .spacer{flex:1}
.flagbtn{background:none;border:1px solid var(--line);color:var(--muted);border-radius:9px;padding:8px 12px;font-weight:600;font-size:13px;display:inline-flex;gap:7px;align-items:center;min-height:44px}
.flagbtn.on{color:var(--amber);border-color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,transparent)}

/* ============================================================
   QUESTION EXPERIENCE STYLES
   - Change the reading width: edit --qwidth below (suggested 760-880px).
   - Disable answer animations: set --qmotion:none (also respects
     prefers-reduced-motion automatically, see the media query below).
   ============================================================ */
:root{ --qwidth:820px; --qmotion:1; }
.qwrap{max-width:var(--qwidth);margin:0 auto}
.card.pad.qcard{padding:26px 28px 24px}
@media(max-width:600px){.card.pad.qcard{padding:18px 16px 16px}}

/* QUESTION SESSION HEADER */
.qhead{max-width:var(--qwidth);margin:0 auto 10px;display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}
.qhead-course{font-family:"Lexend";font-weight:700;font-size:15px}
.qhead-meta{font-size:12.5px;color:var(--muted);font-weight:600}
.qbar-wrap{max-width:var(--qwidth);margin:0 auto 14px}
.qbar{height:8px}
.sess-chips{max-width:var(--qwidth);margin:0 auto 16px;display:flex;gap:8px;flex-wrap:wrap}
.chip{font-size:12px;font-weight:700;padding:5px 11px;border-radius:99px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}
.chip.streak{background:color-mix(in srgb,var(--amber) 16%,var(--surface));color:var(--amber);border-color:color-mix(in srgb,var(--amber) 30%,var(--line))}
@media(max-width:420px){.chip.hide-narrow{display:none}}
.kb-help-btn{width:36px;height:36px;border-radius:10px;background:var(--surface);border:1px solid var(--line);color:var(--muted);display:grid;place-items:center;font-size:13px;font-weight:700}
.kb-help-btn:hover{color:var(--ink);background:var(--surface-2)}
.kb-modal{display:none;position:fixed;inset:0;z-index:9999;background:rgba(15,18,24,.5);align-items:center;justify-content:center;padding:18px}
.kb-modal.open{display:flex}
.kb-modal-card{position:relative;width:100%;max-width:340px;background:var(--surface);color:var(--ink);border-radius:18px;padding:22px 20px;box-shadow:var(--shadow-lg)}
.kb-modal-card h3{margin:0 0 14px;font-family:"Lexend";font-size:16px}
.kb-modal-x{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:50%;background:var(--surface-2);border:0;color:var(--muted);font-size:16px;display:grid;place-items:center}
.kb-row{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:13.5px;color:var(--muted)}
.kb-row kbd{background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-family:"Lexend";font-size:12px;font-weight:600;color:var(--ink);min-width:22px;text-align:center}
.kb-row span{margin-left:4px}

/* ============================================================
   FOCUS MODE STYLES
   Toggled via document.body.classList.add/remove("focus-mode") from
   enterFocusMode()/exitFocusMode() in the script (search "FOCUS MODE STATE").
   - Change the focused question width: edit --qwidth-focus below.
   - Change which elements are hidden: edit the selectors in each
     FOCUS MODE sub-section below.
   - Disable Focus Mode entirely: set FOCUS_MODE_ENABLED=false in the script.
   ============================================================ */

/* FOCUS MODE BASE STYLES */
:root{ --qwidth-focus:900px; }
body.focus-mode{ --qwidth:var(--qwidth-focus); }
body.focus-mode main{transition:padding .18s ease}
.focus-toggle-btn{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--line);color:var(--muted);font-weight:700;font-size:12.5px;padding:8px 13px;border-radius:10px;min-height:40px}
.focus-toggle-btn:hover{color:var(--ink);background:var(--surface-2)}
.focus-toggle-btn[aria-pressed="true"]{background:var(--primary);color:#fff;border-color:var(--primary)}
.focus-toggle-btn svg{width:15px;height:15px;flex:none}

/* FOCUS MODE DESKTOP */
@media(min-width:821px){
  body.focus-mode .sidebar{display:none}
}

/* FOCUS MODE MOBILE */
@media(max-width:820px){
  body.focus-mode .bottomnav{display:none!important}
  body.focus-mode .mobile-topbar{display:none!important}
  body.focus-mode main{padding-bottom:24px}
}

/* FOCUS MODE EXAM NAVIGATION — the persistent navigator collapses into a
   drawer opened from a "Questions" button, so it's never fully removed. */
.exam-nav-drawer-btn{display:none;align-items:center;gap:7px}
body.focus-mode .examgrid{grid-template-columns:1fr!important}
body.focus-mode .examnav-card{display:none}
body.focus-mode .exam-nav-drawer-btn{display:inline-flex}
.exam-nav-drawer{position:fixed;inset:0;z-index:9998;background:rgba(15,18,24,.5);display:none;align-items:flex-start;justify-content:center;padding:70px 16px 16px;overflow-y:auto}
.exam-nav-drawer.open{display:flex}
.exam-nav-drawer-card{position:relative;background:var(--surface);border-radius:16px;padding:20px;max-width:360px;width:100%;box-shadow:var(--shadow-lg)}
.exam-nav-drawer-card h4{margin:0 0 12px;font-size:14px}
.exam-nav-drawer-x{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:50%;background:var(--surface-2);border:0;color:var(--muted);font-size:16px;display:grid;place-items:center}

/* FOCUS MODE CORTEX ADJUSTMENTS — purely visual (smaller, quieter, less
   motion); never touches the user's saved minimize preference. */
body.focus-mode{ --cortex-size:44px; }
body.focus-mode .cortex-widget{opacity:.5;transition:opacity .2s ease}
body.focus-mode .cortex-widget:hover,body.focus-mode .cortex-widget:focus-within{opacity:1}
body.focus-mode .cortex-avatar{animation:none}
@media(max-width:820px){ body.focus-mode .cortex-widget{right:14px;bottom:14px} }

/* FOCUS MODE REDUCED MOTION */
@media(prefers-reduced-motion:reduce){
  body.focus-mode main,body.focus-mode .cortex-widget{transition:none!important}
}

/* ANSWER CHOICE STATES */
.opt{position:relative;min-height:44px}
.opt:focus-visible{outline:2.5px solid var(--primary);outline-offset:2px}
.opt.picked-precommit{border-color:var(--primary);background:var(--primary-soft)}
.opt-txt{flex:1;min-width:0}
.opt-tag{flex:none;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:99px;margin-left:8px}
.opt.correct .opt-tag{background:var(--correct);color:#fff}
.opt.wrong .opt-tag{background:var(--wrong);color:#fff}
.opt.correct .mark svg,.opt.wrong .mark svg{width:16px;height:16px}
@media(prefers-reduced-motion:no-preference){
  .opt.correct,.opt.wrong{animation:opt-settle .28s ease}
}
@keyframes opt-settle{0%{transform:scale(1)}40%{transform:scale(1.012)}100%{transform:scale(1)}}

/* ANSWER FEEDBACK SYSTEM */
.result-msg{display:flex;align-items:center;gap:10px;margin-top:16px;padding:12px 15px;border-radius:12px;font-weight:700;font-size:14.5px}
.result-msg.good{background:var(--correct-bg);color:var(--correct)}
.result-msg.bad{background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}
.result-msg .ric{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:none}
.result-msg.good .ric{background:var(--correct);color:#fff}
.result-msg.bad .ric{background:var(--muted);color:var(--surface)}
@media(prefers-reduced-motion:no-preference){.result-msg{animation:fade .25s ease}}
.similar-q-btn{margin-top:10px}

/* EXPLANATION LAYOUT */
.expl-sec{margin-bottom:16px}
.expl-sec:last-child{margin-bottom:0}
.expl-sec h4{display:flex;align-items:center;gap:6px}
.takeaway-box{display:flex;gap:12px;align-items:flex-start;background:var(--primary-soft);border:1px solid color-mix(in srgb,var(--primary) 25%,transparent);border-radius:14px;padding:15px 16px;margin:4px 0 16px}
.takeaway-box .tk-ico{width:30px;height:30px;border-radius:9px;background:var(--primary);color:#fff;display:grid;place-items:center;flex:none}
.takeaway-box .tk-ico svg{width:16px;height:16px}
.takeaway-box .tk-body b{display:block;font-family:"Lexend";font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--primary-ink);margin-bottom:3px}

/* ============================================================
   CONFIDENCE CONTROL STYLES
   - Change confidence labels: edit CONFIDENCE_LABELS in the script.
   - Disable confidence ratings entirely: set CONFIDENCE_ENABLED=false
     in the script (search "CONFIDENCE_ENABLED").
   - Hide in exam mode: already the default — the control is only ever
     rendered by renderPractice(), never renderExam().
   ============================================================ */
.conf-control{margin:2px 0 16px}
.conf-label{display:block;font-size:12.5px;font-weight:700;color:var(--muted);margin-bottom:7px}
.conf-pills{display:flex;gap:8px;flex-wrap:wrap}
.conf-pill{flex:1;min-width:100px;min-height:44px;padding:9px 12px;border-radius:11px;border:1.5px solid var(--line);background:var(--surface);color:var(--muted);font-weight:700;font-size:13px;text-align:center;transition:border-color .15s,background .15s,color .15s}
.conf-pill:hover:not(:disabled){border-color:var(--primary)}
.conf-pill:focus-visible{outline:2.5px solid var(--primary);outline-offset:2px}
.conf-pill[aria-checked="true"]{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-ink)}
.conf-pill:disabled{opacity:.7;cursor:default}
@media(max-width:480px){.conf-pill{min-width:0;font-size:12px;padding:9px 6px}}

/* CONFIDENCE FEEDBACK */
.conf-feedback{margin-top:12px;padding:11px 14px;border-radius:11px;font-size:13.5px;line-height:1.5;background:var(--surface-2);border:1px solid var(--line)}
.conf-feedback.strong{background:var(--correct-bg);color:var(--correct);border-color:transparent}
.conf-feedback.watch{background:color-mix(in srgb,var(--amber) 14%,var(--surface));color:var(--amber);border-color:color-mix(in srgb,var(--amber) 30%,var(--line))}

/* CONFIDENCE PROGRESS METRICS */
.conf-metrics-note{font-size:11.5px;color:var(--muted);margin:0 0 10px}

/* ============================================================
   MISTAKE NOTEBOOK STYLES
   - Disable personal notes: set NOTEBOOK_NOTES_ENABLED=false in the script.
   - Change filter set: edit NOTEBOOK_FILTERS in the script.
   - Change status colors: edit --nb-status-* variables below.
   ============================================================ */
:root{ --nb-needs:var(--wrong); --nb-progress:var(--amber); --nb-resolved:var(--correct); --nb-reopened:var(--purple); }
.nb-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}
.nb-filters{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.nb-filter-btn{font-size:12.5px;font-weight:700;padding:7px 12px;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--muted);min-height:36px}
.nb-filter-btn:hover{background:var(--surface-2)}
.nb-filter-btn[aria-pressed="true"]{background:var(--primary);color:#fff;border-color:var(--primary)}
.nb-search{min-width:160px;flex:1;max-width:260px;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:13px;min-height:36px}
.nb-sort{padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:12.5px;min-height:36px}
@media(max-width:640px){.nb-toolbar{flex-direction:column;align-items:stretch}.nb-search,.nb-sort{max-width:none}}

.nb-list{display:flex;flex-direction:column;gap:10px}
.nb-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;transition:box-shadow .15s ease}
.nb-card:hover{box-shadow:var(--shadow)}
.nb-row{display:flex;align-items:center;gap:10px;cursor:pointer;min-height:44px}
.nb-row .dot{flex:none}
.nb-row .nb-main{flex:1;min-width:0}
.nb-row .nb-topic{font-weight:700;font-size:14px}
.nb-row .nb-meta{font-size:12px;color:var(--muted);margin-top:2px}
.nb-status-pill{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:99px;flex:none}
.nb-status-pill.needs_review{background:var(--wrong-bg);color:var(--nb-needs)}
.nb-status-pill.in_progress{background:color-mix(in srgb,var(--amber) 16%,var(--surface));color:var(--nb-progress)}
.nb-status-pill.resolved{background:var(--correct-bg);color:var(--nb-resolved)}
.nb-status-pill.reopened{background:color-mix(in srgb,var(--purple) 16%,var(--surface));color:var(--nb-reopened)}
.nb-conf-dot{width:9px;height:9px;border-radius:50%;flex:none}
.nb-expand-ico{flex:none;width:18px;height:18px;color:var(--muted);transition:transform .15s ease}
.nb-card[aria-expanded="true"] .nb-expand-ico{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){.nb-expand-ico{transition:none}}

.nb-detail{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.nb-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;font-size:12.5px}
@media(max-width:520px){.nb-detail-grid{grid-template-columns:1fr}}
.nb-detail-grid .k{color:var(--muted);font-weight:600}
.nb-cat-select{width:100%;padding:9px 11px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:13px;min-height:44px;margin-bottom:12px}
.nb-note-wrap{margin-bottom:14px}
.nb-note-label{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:700;color:var(--muted);margin-bottom:6px}
.nb-note-saved{color:var(--correct);font-weight:700;opacity:0;transition:opacity .2s ease}
.nb-note-saved.show{opacity:1}
.nb-note{width:100%;min-height:64px;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:13.5px;line-height:1.5;resize:vertical;font-family:inherit}
.nb-note:focus-visible{outline:2.5px solid var(--primary);outline-offset:1px}
.nb-note-count{font-size:11px;color:var(--muted);text-align:right;margin-top:3px}
.nb-actions{display:flex;flex-wrap:wrap;gap:8px}
.nb-history{margin-top:12px;font-size:12px;color:var(--muted)}
.nb-history-row{padding:3px 0}
.nb-insight-card{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:10px}
.nb-insight-ico{width:32px;height:32px;border-radius:10px;background:var(--primary-soft);color:var(--primary-ink);display:grid;place-items:center;flex:none}
.nb-insight-ico svg{width:16px;height:16px}
.nb-empty{padding:30px 20px;text-align:center;color:var(--muted)}

/* Scope selector */
.checkrow{display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;background:var(--surface);cursor:pointer}
.checkrow:hover{border-color:var(--primary)}
.checkrow input{width:18px;height:18px;accent-color:var(--primary);flex:none}
.checkrow .nm{font-weight:600;font-size:14px;flex:1}
.checkrow .ct{color:var(--muted);font-size:13px;font-family:"Lexend"}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{background:var(--surface);border:0;padding:8px 14px;font-weight:600;font-size:13px;color:var(--muted)}
.seg button.on{background:var(--primary);color:#fff}
[data-theme="dark"] .seg button.on{color:#04100e}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-size:13px;font-weight:600;color:var(--muted)}
input.txt,select.txt{width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font-size:14px;font-family:inherit}
input.txt:focus,select.txt:focus{outline:2px solid var(--primary);outline-offset:1px}

/* Exam navigator */
.nav-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:7px}
.nav-grid button{aspect-ratio:1;border:1px solid var(--line);background:var(--surface);border-radius:8px;font-family:"Lexend";font-weight:600;font-size:13px;color:var(--ink)}
.nav-grid button.ans{background:var(--primary-soft);border-color:var(--primary)}
.nav-grid button.cur{outline:2px solid var(--primary);outline-offset:1px}
.nav-grid button.miss{background:var(--wrong-bg);border-color:var(--wrong)}
.nav-grid button.hit{background:var(--correct-bg);border-color:var(--correct)}

.timer{font-family:"Lexend";font-weight:600;font-size:18px}
.timer.warn{color:var(--wrong)}

.empty{text-align:center;color:var(--muted);padding:40px 20px}
.empty svg{width:40px;height:40px;opacity:.5;margin-bottom:10px}
.locked{opacity:.62}
.course-card{display:flex;align-items:center;gap:14px;padding:16px;cursor:pointer}
.course-card .ico{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;flex:none;color:#fff}
.course-card .ico svg{width:22px;height:22px}
.course-card .t{font-weight:700;font-size:15px}
.course-card .d{color:var(--muted);font-size:13px}
.badge{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:99px;margin-left:auto;flex:none}
.badge.live{background:var(--correct-bg);color:var(--correct)}
.badge.soon{background:var(--surface-2);color:var(--muted)}

/* Course World cards (rich) */
.world-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.world-card{position:relative;overflow:hidden;border-radius:20px;padding:20px 20px 18px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease;min-height:190px;display:flex;flex-direction:column}
.world-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.world-card:focus-visible{transform:translateY(-3px)}
.world-card.locked{cursor:default;opacity:.7}
.world-card.locked:hover{transform:none;box-shadow:var(--shadow)}
.world-card .wc-deco{position:absolute;top:-18px;right:-18px;width:110px;height:110px;opacity:.14;pointer-events:none}
.world-card .wc-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:10px}
.world-card .wc-ico{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;flex:none;color:#fff}
.world-card .wc-ico svg{width:23px;height:23px}
.world-card .wc-name{font-family:"Lexend";font-weight:700;font-size:16px;letter-spacing:-.01em;line-height:1.25}
.world-card .wc-desc{color:var(--muted);font-size:12.5px;margin-top:2px}
.world-card .wc-bar{height:8px;background:var(--surface-2);border-radius:99px;overflow:hidden;margin:12px 0 8px}
.world-card .wc-bar>i{display:block;height:100%;border-radius:99px}
.world-card .wc-meta{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);font-weight:600;margin-top:auto;gap:8px}
.world-card .wc-cta{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:13px;color:var(--primary);margin-top:12px}
.world-card .wc-due{background:var(--wrong-bg);color:var(--wrong);border-radius:99px;padding:2px 9px;font-size:11px;font-weight:700}

/* Hero */
.hero{position:relative;overflow:hidden;border-radius:24px;padding:32px clamp(20px,4vw,40px);margin-bottom:26px;background:var(--grad-hero);color:#fff;box-shadow:var(--shadow-lg)}
.hero .hero-deco{position:absolute;inset:0;opacity:.16;pointer-events:none}
.hero-top{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:18px}
.hero-greet{font-family:"Lexend";font-size:clamp(22px,3.4vw,30px);font-weight:600;letter-spacing:-.01em;margin:0}
.hero-sub{opacity:.92;font-size:15px;margin:6px 0 0;max-width:520px}
.hero-cta{background:#fff;color:var(--primary-ink);font-weight:700;padding:13px 22px;border-radius:13px;border:0;font-size:14.5px;display:inline-flex;align-items:center;gap:8px;box-shadow:0 8px 20px rgba(0,0,0,.15);white-space:nowrap}
.hero-cta:hover{filter:brightness(.97)}
.hero-stats{position:relative;display:flex;gap:26px;margin-top:22px;flex-wrap:wrap}
.hero-stat{background:rgba(255,255,255,.14);backdrop-filter:blur(6px);border-radius:14px;padding:11px 16px;min-width:100px}
.hero-stat .n{font-family:"Lexend";font-weight:700;font-size:22px;line-height:1}
.hero-stat .l{font-size:11px;opacity:.85;font-weight:600;margin-top:3px;text-transform:uppercase;letter-spacing:.05em}
@media(max-width:640px){.hero-stats{gap:10px}.hero-stat{flex:1;min-width:0;padding:9px 10px}.hero-stat .n{font-size:18px}}

/* Homepage sections */
.sec{margin:0 0 30px}
.sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:10px}
.sec-title{font-family:"Lexend";font-size:18px;font-weight:600;letter-spacing:-.01em;margin:0}
.sec-link{font-size:13px;font-weight:700;color:var(--primary)}
.rowcards{display:flex;gap:14px;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}
.rowcard{flex:none;width:240px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow);cursor:pointer}
.rowcard:hover{box-shadow:var(--shadow-lg)}
.rowcard .rc-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.rowcard .rc-dot{width:9px;height:9px;border-radius:99px;flex:none}
.rowcard .rc-t{font-weight:700;font-size:13.5px}
.rowcard .rc-s{color:var(--muted);font-size:12px;margin-top:2px}
.attn-card{display:flex;align-items:center;gap:14px;padding:15px 18px;border-radius:16px;background:var(--coral);background:color-mix(in srgb,var(--coral) 12%,var(--surface));border:1px solid var(--line)}

/* ============================================================
   TODAYS MISSIONS STYLES
   - Change the number of cards shown: see MISSIONS_MAX / MISSIONS_MIN in the script.
   - Change card accent: each mission carries its own "color" field (course color).
   ============================================================ */
.missions-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.mission-card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:17px 18px;box-shadow:var(--shadow);transition:transform .16s ease,box-shadow .16s ease}
.mission-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.mission-card .mc-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.mission-card .mc-ico{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;color:#fff;flex:none}
.mission-card .mc-ico svg{width:18px;height:18px}
.mission-card .mc-course{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.mission-card .mc-title{font-family:"Lexend";font-weight:700;font-size:15px;margin:0 0 4px}
.mission-card .mc-desc{color:var(--muted);font-size:13px;line-height:1.45;margin:0 0 10px;flex:1}
.mission-card .mc-meta{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--muted);font-weight:600;margin-bottom:10px}
.mission-card .mc-bar{height:7px;background:var(--surface-2);border-radius:99px;overflow:hidden;margin-bottom:12px}
.mission-card .mc-bar>i{display:block;height:100%;border-radius:99px;transition:width .4s ease}
.mission-card.done{background:color-mix(in srgb,var(--correct) 7%,var(--surface));border-color:color-mix(in srgb,var(--correct) 30%,var(--line))}
.mission-card.done .mc-title{color:var(--correct)}
.mission-card .mc-check{position:absolute;top:14px;right:14px;width:24px;height:24px;border-radius:50%;background:var(--correct);color:#fff;display:grid;place-items:center}
.mission-card .mc-check svg{width:14px;height:14px}
.mission-card .mc-donelabel{font-size:11.5px;font-weight:700;color:var(--correct);margin-bottom:8px}
.missions-empty{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:16px;background:var(--surface);border:1px solid var(--line)}
.missions-complete-card{display:flex;align-items:center;gap:16px;padding:18px 20px;border-radius:18px;background:linear-gradient(120deg,color-mix(in srgb,var(--correct) 10%,var(--surface)),var(--surface));border:1px solid color-mix(in srgb,var(--correct) 25%,var(--line))}
.missions-complete-card .mcc-ico{width:44px;height:44px;border-radius:13px;background:var(--correct);color:#fff;display:grid;place-items:center;flex:none}
.missions-refresh-link{font-size:12.5px;font-weight:700;color:var(--muted);background:none;border:0;padding:4px 2px}
.missions-refresh-link:hover{color:var(--ink)}
@media(max-width:600px){.missions-grid{grid-template-columns:1fr}}
.attn-card .aico{width:38px;height:38px;border-radius:11px;background:var(--coral);color:#fff;display:grid;place-items:center;flex:none}
.activity-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.activity-row:last-child{border-bottom:0}
.activity-row .adot{width:8px;height:8px;border-radius:99px;flex:none}
.activity-row .amuted{color:var(--muted);margin-left:auto;font-size:12px;flex:none}
.note{font-size:13px;color:var(--muted);background:var(--surface-2);border:1px dashed var(--line);border-radius:11px;padding:13px 15px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:11px 18px;border-radius:11px;font-size:14px;font-weight:600;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:99}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px)}
.searchhit{padding:13px 0;border-bottom:1px solid var(--line);cursor:pointer}
.searchhit:hover .ht{color:var(--primary)}
.ht{font-weight:600;font-size:14px}
.hd{color:var(--muted);font-size:13px;margin-top:3px}
hr.soft{border:0;border-top:1px solid var(--line);margin:18px 0}

/* Learn / study-guide reader */
.guidebar{display:flex;align-items:center;gap:10px;margin:0 0 14px;flex-wrap:wrap}
.guidebar .meta{font-size:13px;color:var(--muted);font-weight:600}
.subject-head{display:flex;align-items:center;gap:13px;margin:0 0 18px}
.subject-head .dot{width:13px;height:13px;border-radius:50%;flex:none}
.guide-frame{width:100%;height:calc(100vh - 150px);min-height:480px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}
.gico{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;flex:none;color:#fff}
.gico svg{width:22px;height:22px}
.lecgroup{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:14px 0 6px}
.lecgroup .mtag{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.04em;padding:1px 7px;margin-left:7px;border-radius:99px;background:var(--surface);border:1px solid var(--line);color:var(--primary)}
.modsec{margin-bottom:18px}
.modsec-head{display:flex;align-items:center;gap:10px;margin:18px 0 8px;flex-wrap:wrap}
.modsec-tag{font-family:"Lexend";font-weight:600;font-size:13px;color:#fff;background:linear-gradient(135deg,var(--primary),var(--purple));padding:4px 12px;border-radius:99px;flex:none}
.modsec-meta{font-size:12.5px;color:var(--muted);font-weight:600}
.modsec-head .btn.sm{margin-left:auto}
.lb-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.lb-trophy{flex:none;width:42px;height:42px;color:var(--primary)}
.lb-trophy svg{width:42px;height:42px}
.lb-mecard{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 12%,transparent),color-mix(in srgb,var(--purple) 12%,transparent))}
.lb-melabel{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.lb-mestreak{font-family:"Lexend";font-size:38px;font-weight:600;line-height:1.05}
.lb-unit{font-size:15px;font-weight:600;color:var(--muted)}
.lb-meact{display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.lb-meplayer{font-weight:700;font-size:14.5px}
.lb-list{display:flex;flex-direction:column;gap:4px}
.lb-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;background:var(--surface)}
.lb-row.me{background:color-mix(in srgb,var(--primary) 16%,transparent);outline:1.5px solid color-mix(in srgb,var(--primary) 45%,transparent)}
.lb-rank{flex:none;width:34px;text-align:center;font-weight:700;font-size:16px;color:var(--muted)}
.lb-name{flex:1;min-width:0;font-weight:600;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-you{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:var(--primary);padding:1px 6px;border-radius:99px;margin-left:6px;vertical-align:middle}
.lb-streak{flex:none;font-family:"Lexend";font-weight:600;font-size:20px}
.lb-streak .lb-unit{font-size:12px;margin-left:1px}
.lb-loading,.lb-err{text-align:center;color:var(--muted);padding:26px 14px;line-height:1.5}
.lb-err{color:var(--wrong)}
.lb-input{width:100%;box-sizing:border-box;padding:11px 13px;border:1.5px solid var(--line);border-radius:12px;background:var(--bg);color:var(--ink);font-size:15px;font-family:inherit}
.lb-input:focus{outline:none;border-color:var(--primary)}
.lb-setup ol{margin:0;padding-left:20px;line-height:1.65}
.lb-setup li{margin-bottom:9px}
.lb-setup code{background:var(--surface);padding:1px 6px;border-radius:6px;font-size:13px}
.gtag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.03em;padding:3px 8px;border-radius:99px;background:var(--surface-2);color:var(--muted)}

/* Cardiovascular simulator */
.sim-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
@media(max-width:760px){.sim-grid{grid-template-columns:1fr}}
.sl-row{margin:0 0 17px}
.sl-row .lab{display:flex;justify-content:space-between;font-size:13.5px;font-weight:600;margin-bottom:6px}
.sl-row .lab .v{font-family:"Lexend";color:var(--primary)}
.sl-row input[type=range]{width:100%;accent-color:var(--primary);height:4px}
.sl-row .hint{font-size:12px;color:var(--muted);margin-top:4px}
.read-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.read{background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:11px 13px}
.read .k{font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.read .v{font-family:"Lexend";font-size:23px;font-weight:700;line-height:1.1;margin-top:3px}
.read .v small{font-size:12px;color:var(--muted);font-weight:600}
.read .d{font-size:12px;font-weight:700;margin-top:3px}
.read .up{color:var(--amber)} .read .dn{color:var(--primary)} .read .eq{color:var(--muted);font-weight:600}
.scen-btns{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px}
.scen-btns button{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);font-weight:600;font-size:13px;padding:8px 12px;border-radius:9px}
.scen-btns button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
[data-theme="dark"] .scen-btns button.on{color:#04100e}
.pred-opts{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 10px}
.pred-opts button{flex:1;min-width:84px;background:var(--surface);border:1px solid var(--line);color:var(--ink);font-weight:600;font-size:13px;padding:9px;border-radius:9px}
.pred-opts button.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary-ink)}
.reveal-box{border:1px solid var(--line);border-radius:11px;padding:13px 15px;margin-top:12px;background:var(--surface-2)}
.reveal-box .res{font-weight:700;margin-bottom:7px;font-size:14px}
.reveal-box .ok{color:var(--correct)} .reveal-box .no{color:var(--wrong)}
.reveal-box p{margin:0;font-size:13.5px;color:var(--ink);line-height:1.55}

/* Glucose / endocrine simulator */
.zone-badge{display:inline-flex;align-items:center;gap:9px;padding:9px 15px;border-radius:12px;font-weight:700;font-size:14.5px;margin-bottom:13px}
.zone-badge .dot{width:10px;height:10px;border-radius:50%;flex:none}

/* ===== Osmosis redesign overrides ===== */
h1.page{font-weight:700;letter-spacing:-.01em;font-size:28px}
.sub{font-size:14.5px}
.card.pad{padding:24px}
.vitals{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;background:none;border:0;border-radius:0;overflow:visible}
.vital{background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:18px 20px}
.vital .v{font-size:32px}
.barline{height:9px}
.barline > i{background:linear-gradient(90deg,var(--primary),var(--teal))}
.btn{border-radius:13px}
.btn:hover{filter:brightness(1.05)}
@media(max-width:680px){.vitals{grid-template-columns:repeat(2,1fr)}}
/* Daily progress */
.daily{display:flex;align-items:center;gap:18px;padding:20px 24px;margin-bottom:18px;background:linear-gradient(120deg,var(--primary-soft),color-mix(in srgb,var(--teal) 16%,#ffffff));border:1px solid var(--line)}
[data-theme="dark"] .daily{background:linear-gradient(120deg,color-mix(in srgb,var(--primary) 20%,var(--surface)),var(--surface))}
.daily .spark{width:46px;height:46px;border-radius:14px;background:linear-gradient(135deg,var(--primary),var(--purple));display:grid;place-items:center;color:#fff;flex:none;box-shadow:0 8px 18px rgba(117,59,189,.22)}
.daily .spark svg{width:24px;height:24px}
.daily-l{flex:1;min-width:0}
.daily-title{font-family:"Lexend";font-weight:700;font-size:17px;color:var(--ink);letter-spacing:-.01em}
.daily-sub{font-size:13.5px;color:var(--muted);margin-top:2px}
.daily-track{height:10px;background:rgba(255,255,255,.65);border:1px solid var(--line);border-radius:99px;overflow:hidden;margin-top:11px;max-width:520px}
[data-theme="dark"] .daily-track{background:rgba(255,255,255,.08)}
.daily-track > i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--primary),var(--teal));transition:width .6s cubic-bezier(.4,0,.2,1)}
.daily-meta{display:flex;align-items:center;gap:18px;flex:none}
.daily-stat{text-align:center}
.daily-stat .n{font-family:"Lexend";font-weight:700;font-size:22px;line-height:1;color:var(--primary-ink)}
.daily-stat .l{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:4px;font-weight:700}
@media(max-width:680px){.daily{flex-wrap:wrap;gap:14px}.daily-meta{width:100%;justify-content:space-around}.daily-track{max-width:none}}

/* Course hubs + session */
.course-hero{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:20px 24px;margin-bottom:16px}
.course-hero .chip{width:13px;height:46px;border-radius:8px;flex:none}
.course-stat{text-align:center;flex:none;padding:0 8px}
.course-stat .n{font-family:"Lexend";font-weight:700;font-size:21px;color:var(--primary-ink)}
.course-stat .l{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:700;margin-top:3px}
.hub-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 8px}
.hub-h{font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:24px 0 10px;font-weight:700}
.session-card{display:flex;align-items:center;gap:16px;padding:18px 22px;margin-bottom:16px;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:var(--shadow)}
.session-card .scn{flex:none;width:46px;height:46px;border-radius:14px;background:linear-gradient(135deg,var(--teal),var(--primary));display:grid;place-items:center;color:#fff}
.session-card .scn svg{width:23px;height:23px}
.session-card .due{font-family:"Lexend";font-weight:700;color:var(--primary-ink)}
.course-card .due-badge{font-size:10.5px;font-weight:700;color:var(--primary-ink);background:var(--primary-soft);border-radius:99px;padding:2px 8px;margin-left:7px;vertical-align:middle}
@media(max-width:680px){.course-hero{flex-wrap:wrap}.hub-actions .btn{flex:1}.session-card{flex-wrap:wrap}.session-card .btn{width:100%}}

.focus-pick{display:flex;flex-direction:column;gap:4px;flex:none}
.focus-pick .fl{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.focus-pick select{font-family:inherit;font-weight:600;font-size:13px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:7px 10px;cursor:pointer}
.focus-tag{font-family:"Nunito Sans";font-size:11px;font-weight:700;color:var(--primary-ink);background:var(--primary-soft);border-radius:99px;padding:2px 9px;margin-left:6px;vertical-align:middle}
@media(max-width:680px){.focus-pick{width:100%;flex-direction:row;align-items:center;justify-content:space-between}.focus-pick select{flex:1;margin-left:12px}}
/* ============================================================
   OSI MEDICAL ROBOT STYLES
   The existing Cortex IDs/functions are retained internally for compatibility.
   - Change OSI colors with --cortex-a / --cortex-b / --cortex-glow.
   - Disable the assistant with CORTEX_ENABLED=false in the script.
   ============================================================ */
:root{ --cortex-a:#4A90F8; --cortex-b:#3AC7C2; --cortex-glow:rgba(74,144,248,.32); --cortex-size:68px; }
[data-theme="dark"]{ --cortex-a:#5B9BFF; --cortex-b:#3FD9D3; --cortex-glow:rgba(91,155,255,.25); }
.cortex-widget{position:fixed;right:26px;bottom:26px;z-index:120;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}
.cortex-widget *{pointer-events:auto}
.cortex-avatar{position:relative;width:var(--cortex-size);height:var(--cortex-size);border:0;background:transparent;display:grid;place-items:center;cursor:pointer;animation:cortex-float 4.8s ease-in-out infinite;filter:drop-shadow(0 9px 14px var(--cortex-glow))}
.cortex-avatar svg{width:100%;height:100%;overflow:visible}
.cortex-avatar:hover{filter:drop-shadow(0 10px 16px var(--cortex-glow)) brightness(1.04)}
.cortex-min-btn{width:24px;height:24px;border-radius:50%;background:var(--surface);border:1px solid var(--line);color:var(--muted);display:grid;place-items:center;font-size:14px;line-height:1;position:absolute;top:-2px;right:-2px;box-shadow:var(--shadow)}
.cortex-min-btn:hover{color:var(--ink)}
.cortex-widget.minimized .cortex-avatar{width:42px;height:42px;animation:none}
.cortex-widget.minimized .cortex-bubble{display:none}
.cortex-widget.minimized .cortex-min-btn{display:none}
.cortex-bubble{max-width:230px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:14px 14px 4px 14px;padding:10px 30px 10px 13px;font-size:13px;line-height:1.4;font-weight:600;box-shadow:var(--shadow-lg);position:relative;opacity:0;transform:translateY(6px) scale(.97);transition:opacity .18s ease,transform .18s ease;pointer-events:none}
.cortex-bubble.show{opacity:1;transform:none;pointer-events:auto}
.cortex-bubble-x{position:absolute;top:6px;right:7px;width:18px;height:18px;border-radius:50%;background:none;border:0;color:var(--muted);font-size:14px;line-height:1;display:grid;place-items:center}
.cortex-bubble-x:hover{color:var(--ink)}
.osi-shell{fill:url(#osiShell);stroke:color-mix(in srgb,var(--cortex-a) 55%,#20304a);stroke-width:1.6}
.osi-face{fill:#132038;stroke:rgba(255,255,255,.28);stroke-width:1.2}
.osi-panel{fill:rgba(255,255,255,.94)}
.osi-eye{fill:#A9F5FF;transition:transform .2s ease,opacity .2s ease}
.osi-eye-glow{fill:#A9F5FF;opacity:.18}
.osi-status{fill:var(--teal)}
.osi-medline{stroke:#A9F5FF;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;fill:none;opacity:.9}
.osi-antenna-light{fill:var(--coral)}
.osi-side{fill:color-mix(in srgb,var(--cortex-b) 75%,#fff)}
.osi-shadow{fill:rgba(9,20,40,.18)}
.cortex-avatar.state-exam .osi-eye{transform:scaleY(.55);transform-origin:center}
.cortex-avatar.state-incorrect .osi-eye{transform:translateY(1px) rotate(10deg);transform-origin:center}
.cortex-avatar.state-thinking .osi-status{animation:osi-status-pulse .9s ease-in-out infinite}
.cortex-avatar.state-thinking .osi-medline{stroke-dasharray:5 4;animation:osi-scan 1.1s linear infinite}
.cortex-avatar.state-review .osi-status{fill:var(--amber)}
.cortex-avatar.state-simulator .osi-status{fill:var(--purple)}
.cortex-avatar.state-correct .osi-status,.cortex-avatar.state-complete .osi-status{fill:var(--correct)}
.cortex-avatar.state-streak .osi-antenna-light{fill:var(--amber)}
.cortex-avatar.state-welcome .osi-eye{transform:scaleY(.82);transform-origin:center}
.cortex-avatar.state-correct,.cortex-avatar.state-complete{filter:drop-shadow(0 0 10px color-mix(in srgb,var(--correct) 60%,transparent)) drop-shadow(0 9px 14px var(--cortex-glow))}
.cortex-avatar.state-streak{filter:drop-shadow(0 0 11px color-mix(in srgb,var(--amber) 65%,transparent)) drop-shadow(0 9px 14px var(--cortex-glow))}
.cortex-bump{animation:cortex-bump .5s ease}
.cortex-particles{position:absolute;inset:-14px;pointer-events:none;opacity:0}
.cortex-particles.go{animation:cortex-particles .9s ease forwards}
@keyframes cortex-float{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-6px) rotate(1deg)}}
@keyframes cortex-bump{0%{transform:scale(1)}30%{transform:scale(1.10)}60%{transform:scale(.98)}100%{transform:scale(1)}}
@keyframes cortex-particles{0%{opacity:1;transform:scale(.7)}100%{opacity:0;transform:scale(1.35)}}
@keyframes osi-status-pulse{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes osi-scan{to{stroke-dashoffset:-18}}
@media(prefers-reduced-motion:reduce){
  .cortex-avatar,.cortex-bump,.cortex-particles.go,.cortex-avatar.state-thinking .osi-status,.cortex-avatar.state-thinking .osi-medline{animation:none!important}
  .cortex-particles.go{opacity:0}
}
@media(max-width:820px){
  .cortex-widget{right:12px;bottom:calc(78px + env(safe-area-inset-bottom));gap:6px}
  :root{--cortex-size:54px}
  .cortex-bubble{max-width:180px;font-size:12.5px}
}

/* ============================================================
   SIM LAB HUB STYLES
   - Change Sim Lab card colors: edit the inline style color per SIMULATORS entry
     (see SIM LAB CONFIGURATION in the script) or the .simcard--<accent> rules below.
   ============================================================ */
.simcard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:18px}
.simcard{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:var(--shadow);display:flex;flex-direction:column;transition:transform .18s ease,box-shadow .18s ease}
.simcard:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.simcard .sc-deco{position:absolute;top:-20px;right:-20px;width:100px;height:100px;opacity:.12;pointer-events:none}
.simcard .sc-ico{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;color:#fff;margin-bottom:12px}
.simcard .sc-ico svg{width:23px;height:23px}
.simcard .sc-course{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}
.simcard .sc-title{font-family:"Lexend";font-weight:700;font-size:16.5px;margin:0 0 6px}
.simcard .sc-desc{color:var(--muted);font-size:13px;line-height:1.5;margin:0 0 14px;flex:1}
.simcard .sc-tag{display:inline-flex;font-size:11px;font-weight:700;color:var(--primary);background:var(--primary-soft);padding:3px 9px;border-radius:99px;margin-bottom:12px;width:fit-content}
.simcard.soon{opacity:.68;cursor:pointer}
.simcard.soon .sc-title{display:flex;align-items:center;gap:8px}
.simcard .soon-badge{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:var(--surface-2);color:var(--muted);padding:3px 8px;border-radius:99px}

/* ============================================================
   STUDYOS GUIDED LEARNING REDESIGN — 2026
   Preserves existing engines while clarifying the learning path.
   ============================================================ */
.guided-kicker{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary-ink);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.learning-path{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 24px}
.path-card{position:relative;overflow:hidden;border:1px solid var(--line);background:var(--surface);border-radius:18px;padding:18px;min-height:150px;box-shadow:var(--shadow);transition:.18s ease;cursor:pointer}
.path-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--pc) 42%,var(--line))}
.path-num{font-family:'Lexend';font-size:11px;font-weight:800;color:var(--pc);letter-spacing:.08em;text-transform:uppercase;margin-bottom:16px}
.path-card h3{font-family:'Lexend';font-size:17px;margin:0 0 7px}.path-card p{font-size:12.5px;color:var(--muted);line-height:1.48;margin:0 0 16px}.path-go{font-size:12px;font-weight:800;color:var(--pc)}
.path-orb{position:absolute;width:86px;height:86px;border-radius:50%;right:-28px;top:-30px;background:var(--pc);opacity:.09}
.course-command{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(250px,.75fr);gap:16px;margin-bottom:22px}.course-command .card{height:100%}
.course-next{display:flex;align-items:flex-start;gap:14px}.course-next-ico{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;color:#fff;flex:none}.course-next h3{margin:1px 0 5px;font-family:'Lexend';font-size:17px}.course-next p{margin:0;color:var(--muted);font-size:13px;line-height:1.45}
.resource-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.resource-card{border:1px solid var(--line);background:var(--surface);border-radius:18px;padding:18px;box-shadow:var(--shadow);cursor:pointer;transition:.18s ease;min-height:150px}.resource-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.resource-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;color:#fff;margin-bottom:13px}.resource-icon svg{width:21px;height:21px}.resource-card h3{font-family:'Lexend';font-size:15px;margin:0 0 6px}.resource-card p{font-size:12.5px;color:var(--muted);line-height:1.45;margin:0}.resource-card .resource-meta{margin-top:13px;font-size:11.5px;font-weight:800;color:var(--primary)}
.library-hero{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.6fr);gap:18px;align-items:stretch;margin-bottom:22px}.library-search{position:relative;margin-top:18px}.library-search input{width:100%;padding:14px 48px 14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);font:inherit}.library-search button{position:absolute;right:5px;top:5px;height:38px;padding:0 14px;border:0;border-radius:10px;background:var(--primary);color:#fff;font-weight:800;cursor:pointer}
.quick-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-stat{background:var(--surface-2);border-radius:14px;padding:13px}.quick-stat b{display:block;font-family:'Lexend';font-size:20px}.quick-stat span{font-size:11px;color:var(--muted)}
.course-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0 18px}.course-tab{border:1px solid var(--line);background:var(--surface);color:var(--muted);padding:9px 13px;border-radius:999px;font-weight:800;font-size:12px;cursor:pointer}.course-tab.on{background:var(--primary);border-color:var(--primary);color:#fff}
@media(max-width:980px){.learning-path{grid-template-columns:1fr 1fr}.resource-grid{grid-template-columns:1fr 1fr}.course-command,.library-hero{grid-template-columns:1fr}}
@media(max-width:620px){.learning-path,.resource-grid{grid-template-columns:1fr}.path-card{min-height:132px}.course-hero{align-items:flex-start}.course-stat{min-width:64px}.library-search input{font-size:16px}}


/* ============================ EXAMS PANEL ============================ */
.exam-card{position:relative;overflow:hidden}
.exam-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--line)}
.exam-card.exam-urgent::before{background:var(--coral,#e5484d)}
.exam-card.exam-soon::before{background:var(--amber,#F59E0B)}
.exam-card.exam-later::before{background:var(--teal,#0f766e)}
.exam-card.exam-past::before{background:var(--muted)}
.exam-countdown{font-family:'Lexend';font-weight:700;font-size:13px;padding:6px 12px;border-radius:99px;white-space:nowrap;background:var(--surface-2);color:var(--muted)}
.exam-countdown.exam-urgent{background:color-mix(in srgb,var(--coral,#e5484d) 16%,var(--surface));color:var(--coral,#e5484d)}
.exam-countdown.exam-soon{background:color-mix(in srgb,var(--amber,#F59E0B) 16%,var(--surface));color:var(--amber,#F59E0B)}
.exam-countdown.exam-later{background:color-mix(in srgb,var(--teal,#0f766e) 14%,var(--surface));color:var(--teal,#0f766e)}
.exam-countdown.exam-past{background:var(--surface-2);color:var(--muted)}
.exam-date-input{border:1px solid var(--line);border-radius:8px;padding:5px 8px;font-size:12.5px;background:var(--surface);color:var(--ink);font-family:inherit}

/* ============================ CONFIDENTLY WRONG ============================ */
.exam-cw-flag{margin-top:8px;font-size:12.5px;font-weight:700;color:var(--wrong);cursor:pointer;display:inline-block}
.exam-cw-flag:hover{text-decoration:underline}
.exam-cw-banner{display:flex;align-items:center;gap:12px;cursor:pointer;margin-bottom:12px;border:1px solid color-mix(in srgb,var(--wrong) 35%,var(--line))}
.exam-cw-ico{font-size:20px;flex:none}
.exam-cw-go{font-weight:700;color:var(--wrong);white-space:nowrap;flex:none}

/* ============================ EXAM MODE CONFIDENCE ============================ */
.nav-grid button.noconf{position:relative}
.nav-grid button.noconf::after{content:"";position:absolute;top:3px;right:3px;width:6px;height:6px;border-radius:99px;background:var(--amber)}

/* ============================ CALM DASHBOARD ============================ */
.dash-calm{max-width:1100px}
.dash-greet{margin-bottom:22px}
.dash-tip{margin:10px 0 0;font-size:14px;color:var(--muted)}
.dash-tip b{color:var(--ink)}
.dash-top{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:20px;align-items:start;margin-bottom:24px}
@media(max-width:820px){.dash-top{grid-template-columns:1fr}}
.stack{display:flex;flex-direction:column;gap:14px}

/* ---- Calendar widget ---- */
.cal-widget{font-family:'Inter',sans-serif}
.cal-headrow{display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.cal-month{font-family:'Lexend';font-weight:700;font-size:14px}
.cal-table{width:100%;table-layout:fixed;border-collapse:collapse}
.cal-table th{width:14.2857%;font-size:11px;font-weight:700;color:var(--muted);text-align:center;padding-bottom:6px}
.cal-cell{width:14.2857%;aspect-ratio:1;text-align:center;vertical-align:middle;border-radius:8px;position:relative;padding:2px}
.cal-cell.empty{visibility:hidden}
.cal-cell.today{box-shadow:inset 0 0 0 2px var(--primary)}
.cal-cell.today .cal-daynum{color:var(--primary-ink);font-weight:700}
.cal-cell.has-exam{border-radius:10px}
.cal-cell.has-exam .cal-daynum{color:#fff;font-weight:700}
.cal-cell.has-exam.today{box-shadow:inset 0 0 0 2px #fff}
.cal-daynum{font-size:12px;color:var(--ink)}
.cal-legend{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}
.cal-legend-row{display:flex;align-items:center;gap:8px;font-size:12.5px}
.cal-legend-row span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-legend-date{color:var(--muted);font-family:'IBM Plex Mono',monospace;font-size:11px}

/* ---- Dx Detective (diagnosis game) ---- */
.dxg-homecard{cursor:pointer;display:flex;align-items:center;gap:14px}
.dxg-daily{display:block}
.dxg-daily-top{display:flex;align-items:center;gap:14px}
.dxg-badge{font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}
.dxg-solved{font-size:11.5px;font-weight:700;color:var(--correct)}
.dxg-syschips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.dxg-syschip{background:var(--surface);border:1px solid var(--line);color:var(--ink);font-weight:600;font-size:13px;padding:8px 14px;border-radius:999px}
.dxg-syschip.active{background:var(--grad-hero);color:#fff;border-color:transparent}
.dxg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.dxg-mystery{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:14px;padding:14px 16px;cursor:pointer;transition:box-shadow .15s ease}
.dxg-mystery:hover{box-shadow:var(--shadow)}
.dxg-mystery-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.dxg-mystery-q{font-weight:700;font-size:14.5px}

.dxg-playhead{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.dxg-case{max-width:640px}
.dxg-timeline{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}
.dxg-clue{display:flex;gap:12px;align-items:flex-start;animation:fade .25s ease}
.dxg-clue p{margin:0;line-height:1.55}
.dxg-cluenum{flex:none;width:24px;height:24px;border-radius:50%;background:var(--primary-soft);color:var(--primary-ink);font-size:12px;font-weight:700;display:grid;place-items:center;margin-top:1px}

.dxg-guesslog{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;padding-top:12px;border-top:1px dashed var(--line)}
.dxg-guessrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13.5px;padding:8px 10px;border-radius:10px;background:var(--surface-2)}
.dxg-guessrow.ok{background:var(--correct-bg)}
.dxg-guessrow.no{background:var(--wrong-bg)}
.dxg-guesstext{font-weight:700;text-transform:capitalize}
.dxg-guessmark{font-weight:700}
.dxg-guessrow.ok .dxg-guessmark{color:var(--correct)}
.dxg-guessrow.no .dxg-guessmark{color:var(--wrong)}
.dxg-fb{display:flex;gap:6px;flex-wrap:wrap;width:100%;margin-top:2px}
.dxg-fb.unknown{font-size:12px;color:var(--muted);font-style:italic}
.dxg-chip{font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px}
.dxg-chip.ok{background:var(--correct-bg);color:var(--correct)}
.dxg-chip.no{background:var(--wrong-bg);color:var(--wrong)}

.dxg-inputrow{display:flex;gap:10px}
.dxg-inputwrap{position:relative;flex:1}
.dxg-inputwrap .txt{width:100%}
.dxg-suggest{display:none;position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:240px;overflow-y:auto;z-index:20}
.dxg-suggest.show{display:block}
.dxg-suggest-item{padding:10px 14px;font-size:14px;font-weight:600;cursor:pointer;border-bottom:1px solid var(--line)}
.dxg-suggest-item:last-child{border-bottom:none}
.dxg-suggest-item:hover,.dxg-suggest-item.active{background:var(--surface-2)}
.dxg-actions{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}

.dxg-result{margin-top:6px;padding-top:14px;border-top:1px solid var(--line)}
.dxg-result-head{font-family:"Lexend";font-weight:700;font-size:17px;margin-bottom:8px}
.dxg-result.ok .dxg-result-head{color:var(--correct)}
.dxg-result.no .dxg-result-head{color:var(--wrong)}
.dxg-explain{margin:0 0 8px;line-height:1.55}
.dxg-pearl{margin:0 0 10px;color:var(--muted);font-size:13.5px}
.dxg-score{margin-bottom:10px}

/* ---- Co-op (live multiplayer quiz) ---- */
.coop-lobby{max-width:480px}
.coop-code-block{text-align:center;padding:18px 0 6px}
.coop-code{font-family:"Lexend";font-weight:700;font-size:42px;letter-spacing:.14em;color:var(--primary-ink);margin:6px 0}
.coop-roster{display:flex;flex-wrap:wrap;gap:8px}
.coop-player-chip{background:var(--surface-2);border-radius:999px;padding:8px 14px;font-weight:600;font-size:13.5px}

.coop-qhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.coop-timer{margin-left:auto;font-family:"Lexend";font-weight:700;font-size:22px;color:var(--primary-ink)}
.coop-timer.low{color:var(--wrong)}
.coop-qcard{max-width:640px}
.coop-stem{margin:0 0 16px;line-height:1.6;font-size:15.5px}
.coop-opts{display:flex;flex-direction:column;gap:10px}
.coop-opt{text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:12px;padding:13px 16px;font-size:14.5px;font-weight:600;color:var(--ink);min-height:48px}
.coop-opt:not(:disabled):hover{background:var(--surface-2);border-color:var(--primary)}
.coop-opt:disabled{opacity:.85;cursor:default}
.coop-opt.picked-correct{background:var(--correct-bg);border-color:var(--correct);color:var(--correct)}
.coop-opt.picked-wrong{background:var(--wrong-bg);border-color:var(--wrong);color:var(--wrong)}

/* Private per-player feedback after answering (visible to you only, until
   you click Continue) and the neutral "locked in" state after that, which
   never reveals which option you picked to anyone glancing at your screen */
.coop-feedback{border-radius:14px;padding:16px;border:1.5px solid var(--line)}
.coop-feedback.is-correct{background:var(--correct-bg);border-color:var(--correct)}
.coop-feedback.is-wrong{background:var(--wrong-bg);border-color:var(--wrong)}
.coop-feedback-head{display:flex;align-items:center;gap:9px;margin-bottom:10px}
.coop-feedback-icon{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:50%}
.coop-feedback-icon svg{width:16px;height:16px}
.is-correct .coop-feedback-icon{background:var(--correct);color:#fff}
.is-wrong .coop-feedback-icon{background:var(--wrong);color:#fff}
.coop-feedback-title{font-family:"Lexend";font-weight:700;font-size:16px}
.is-correct .coop-feedback-title{color:var(--correct)}
.is-wrong .coop-feedback-title{color:var(--wrong)}
.coop-feedback-row{background:var(--surface);border-radius:10px;padding:10px 12px;margin-top:8px}
.coop-feedback-row-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin-bottom:2px}
.coop-feedback-row.correct .coop-feedback-row-label{color:var(--correct)}
.coop-feedback-row.wrong .coop-feedback-row-label{color:var(--wrong)}
.coop-feedback-row-text{font-weight:700;font-size:14.5px;color:var(--ink)}
.coop-feedback-row-why{font-size:13.5px;color:var(--muted);margin-top:4px;line-height:1.45}
.coop-waiting{text-align:center;padding:26px 10px}
.coop-waiting-icon{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--correct);color:#fff;margin-bottom:10px}
.coop-waiting-icon svg{width:24px;height:24px}
.coop-waiting-title{font-family:"Lexend";font-weight:700;font-size:16px}

.lb-row.ok{background:var(--correct-bg)}
.lb-pts{flex:none;font-family:"Lexend";font-weight:700;font-size:14px;color:var(--muted)}
.lb-row.ok .lb-pts{color:var(--correct)}
.lb-row.me{background:color-mix(in srgb,var(--primary) 16%,transparent);outline:1.5px solid color-mix(in srgb,var(--primary) 45%,transparent)}

.coop-final{max-width:520px;margin:0 auto}
.coop-podium{display:flex;align-items:flex-end;justify-content:center;gap:14px;margin-top:6px}
.coop-podium-item{background:var(--surface-2);border-radius:14px;padding:16px 18px;text-align:center;min-width:100px}
.coop-podium-item.place-1{order:2;padding-top:26px;background:linear-gradient(160deg,#FFE9B0,var(--surface-2))}
.coop-podium-item.place-2{order:1}
.coop-podium-item.place-3{order:3}
.coop-medal{font-size:30px;line-height:1}
.coop-podium-name{font-weight:700;font-size:13.5px;margin-top:6px}
.coop-podium-pts{color:var(--muted);font-size:12px;margin-top:2px}

/* Topic (per-lecture) picker in the Create Room form */
.coop-topic-mod{margin-bottom:14px}
.coop-topic-modhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.coop-topic-modlabel{font-weight:700;font-size:12.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.coop-topic-modtoggle{background:none;border:0;color:var(--primary-ink);font-weight:700;font-size:12px;cursor:pointer;padding:2px 4px}

/* Streak flame badge on leaderboard rows */
.coop-streak{font-size:11.5px;font-weight:700;color:var(--coral);margin-left:4px;white-space:nowrap}

/* Always-visible running leaderboard on the question/reveal screens */
.coop-leaderboard{max-width:640px;margin-top:14px}
.coop-lb-toggle{width:100%;display:flex;align-items:center;gap:8px;background:none;border:0;cursor:pointer;padding:0;font-weight:700;font-size:15px;color:var(--ink);font-family:"Lexend"}
.coop-lb-chevron{margin-left:auto;color:var(--muted);font-size:11px}
.coop-lb-title-static{font-weight:700;font-size:12.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin:2px 0 8px}

/* Floating in-room chat panel */
.coop-shell{position:relative}
/* Floating in-room chat: a fixed-size round button while minimized (no
   shrink-to-fit sizing tricks, so it can't collapse or go invisible), and
   a normal fixed-width panel while open. */
.coop-chat-fab{position:fixed;left:16px;bottom:16px;z-index:140;width:52px;height:52px;border-radius:50%;background:var(--primary);color:#fff;border:0;box-shadow:var(--shadow-lg);display:grid;place-items:center;cursor:pointer;padding:0}
.coop-chat-fab:hover{filter:brightness(1.06)}
.coop-chat-fab-badge{position:absolute;top:-3px;right:-3px;background:var(--coral);color:#fff;font-size:11px;font-weight:800;min-width:19px;height:19px;padding:0 4px;border-radius:999px;display:grid;place-items:center;border:2px solid var(--surface)}
@media (max-width:680px){ .coop-chat-fab{bottom:calc(68px + env(safe-area-inset-bottom))} }
.coop-chat-panel{position:fixed;left:16px;bottom:16px;z-index:140;width:380px;max-width:calc(100vw - 32px);max-height:min(560px,75vh);background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-lg);overflow:hidden;display:flex;flex-direction:column}
@media (max-width:680px){ .coop-chat-panel{bottom:calc(68px + env(safe-area-inset-bottom));max-height:70vh} }
.coop-chat-header{flex:none;display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);font-weight:700;font-size:14px;color:var(--ink)}
.coop-chat-min-btn{margin-left:auto;width:26px;height:26px;border-radius:50%;background:var(--surface-2);border:0;cursor:pointer;color:var(--muted);font-size:18px;line-height:1;display:grid;place-items:center;font-weight:700}
.coop-chat-min-btn:hover{color:var(--ink);background:var(--line)}
.coop-chat-body{border-top:0;display:flex;flex-direction:column;flex:1;min-height:0}
.imsg-msgs{flex:1;min-height:180px;max-height:60vh;overflow-y:auto;padding:14px 12px;display:flex;flex-direction:column;gap:2px;background:var(--surface)}
.imsg-divider{align-self:center;font-size:11.5px;font-weight:600;color:var(--muted);margin:10px 0 6px;text-transform:uppercase;letter-spacing:.02em}
.imsg-row{display:flex;flex-direction:column;max-width:78%;margin-bottom:2px}
.imsg-row.me{align-self:flex-end;align-items:flex-end}
.imsg-row.other{align-self:flex-start;align-items:flex-start}
.imsg-name{font-size:11px;font-weight:700;color:var(--muted);margin:6px 10px 3px}
.imsg-bubble{position:relative;padding:8px 13px;border-radius:18px;font-size:14.5px;line-height:1.38;word-break:break-word;max-width:100%}
.imsg-bubble.me{background:var(--primary);color:#fff;border-bottom-right-radius:18px}
.imsg-bubble.other{background:var(--surface-2);color:var(--ink);border-bottom-left-radius:18px}
.imsg-bubble.me.grouped-top{border-top-right-radius:5px}
.imsg-bubble.me.grouped-bottom{border-bottom-right-radius:5px}
.imsg-bubble.other.grouped-top{border-top-left-radius:5px}
.imsg-bubble.other.grouped-bottom{border-bottom-left-radius:5px}
.imsg-row.me + .imsg-row.me{margin-top:2px}
.imsg-row.other + .imsg-row.other{margin-top:2px}
.imsg-tail{position:absolute;bottom:0;width:14px;height:14px;background:inherit}
.imsg-bubble.me .imsg-tail{right:-5px;border-radius:0 0 0 14px}
.imsg-bubble.other .imsg-tail{left:-5px;border-radius:0 0 14px 0}
.imsg-inputrow{flex:none;display:flex;align-items:center;gap:8px;padding:10px 12px;border-top:1px solid var(--line);background:var(--surface)}
.imsg-input{flex:1;padding:9px 15px;font-size:14.5px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line)}
.imsg-send{flex:none;width:30px;height:30px;border-radius:50%;background:var(--primary);color:#fff;border:0;display:grid;place-items:center;transition:opacity .15s,transform .1s}
.imsg-send:disabled{opacity:.35;cursor:default}
.imsg-send:not(:disabled):active{transform:scale(.92)}

/* Full-screen streak celebrations */
.coop-celebrate-overlay{position:fixed;inset:0;z-index:9999;pointer-events:none;display:flex;align-items:center;justify-content:center;opacity:1;transition:opacity .4s ease}
.coop-celebrate-overlay.fading{opacity:0}
.coop-celebrate-canvas{position:absolute;inset:0;width:100%;height:100%}
.coop-celebrate-text{position:relative;text-align:center;animation:coopCelebratePop .55s cubic-bezier(.34,1.56,.64,1)}
.coop-celebrate-glow{position:absolute;inset:-50px;background:radial-gradient(circle,rgba(0,0,0,.55) 0%,rgba(0,0,0,0) 70%);z-index:-1;border-radius:50%}
.coop-celebrate-emoji{font-size:64px;line-height:1;filter:drop-shadow(0 6px 18px rgba(0,0,0,.3))}
.coop-celebrate-count{font-family:"Lexend";font-weight:800;font-size:34px;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.4);margin-top:6px;letter-spacing:.01em}
.coop-celebrate-label{font-family:"Lexend";font-weight:700;font-size:15px;letter-spacing:.14em;text-transform:uppercase;color:#FFD23F;text-shadow:0 2px 8px rgba(0,0,0,.4);margin-top:4px}
@keyframes coopCelebratePop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.12);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes coopShakeKf{0%,100%{transform:translate(0,0)}20%{transform:translate(-6px,4px)}40%{transform:translate(6px,-4px)}60%{transform:translate(-4px,-4px)}80%{transform:translate(4px,4px)}}
.coop-shake{animation:coopShakeKf .45s ease}

/* ============================================================
   OSCE CASE SIMULATOR
   ============================================================ */
.osce-modgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:18px}
@media(max-width:900px){.osce-modgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.osce-modgrid{grid-template-columns:1fr}}
.osce-modbtn{--osce-accent:var(--primary);display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:20px 18px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);cursor:pointer;border-top:4px solid var(--osce-accent);transition:transform .12s,box-shadow .12s}
.osce-modbtn:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.osce-modbtn-name{font-family:"Lexend";font-weight:700;font-size:16px;color:var(--ink)}
.osce-modbtn-count{font-size:12.5px;color:var(--muted)}

.osce-layout{display:grid;grid-template-columns:260px 1fr;gap:18px;align-items:start}
@media(max-width:900px){.osce-layout{grid-template-columns:1fr}}
.osce-patientpanel{position:sticky;top:14px}
@media(max-width:900px){.osce-patientpanel{position:static}}
.osce-pp-name{font-family:"Lexend";font-weight:700;font-size:17px}
.osce-vitalsgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}
.osce-vital{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.osce-vital .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.osce-vital .v{font-family:"Lexend";font-weight:600;font-size:13.5px;margin-top:2px}
.osce-cc{border-top:1px solid var(--line);padding-top:12px}
.osce-cc .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-bottom:4px}
.osce-cc p{margin:0;font-size:13.5px;line-height:1.5}

.osce-main{display:flex;flex-direction:column;gap:18px}
.osce-console-head{font-family:"Lexend";font-weight:700;font-size:14px;margin-bottom:10px}
.osce-chat{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px 2px}
.osce-bubble{max-width:82%;padding:9px 13px;border-radius:14px;font-size:13.5px;line-height:1.45}
.osce-bubble-who{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;opacity:.65;margin-bottom:2px}
.osce-bubble.patient{align-self:flex-start;background:var(--surface-2);border:1px solid var(--line);border-bottom-left-radius:4px}
.osce-bubble.you{align-self:flex-end;background:var(--primary-soft);color:var(--primary-ink);border-bottom-right-radius:4px}
.osce-qlist{display:flex;flex-direction:column;gap:7px}
.osce-qbtn{text-align:left;padding:10px 13px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:13px;cursor:pointer;transition:background .12s}
.osce-qbtn:hover:not(:disabled){background:var(--surface-2)}
.osce-qbtn:disabled{opacity:.55;cursor:default}
.osce-asked{float:right;font-size:11px;font-weight:700;color:var(--correct)}

.osce-examgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:520px){.osce-examgrid{grid-template-columns:1fr}}
.osce-exbtn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);cursor:pointer;transition:background .12s}
.osce-exbtn:hover:not(:disabled){background:var(--surface-2)}
.osce-exbtn:disabled{opacity:.6;cursor:default}
.osce-exbtn.ordered{border-color:var(--correct)}
.osce-exbtn-cat{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.osce-exbtn-label{font-size:13px;font-weight:600}
.osce-resultcards{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.osce-resultcard{background:var(--surface-2);border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:10px;padding:10px 12px}
.osce-resultcard-head{display:flex;justify-content:space-between;font-size:12px;font-weight:700;margin-bottom:4px}
.osce-resultcard-ts{color:var(--muted);font-weight:500}
.osce-resultcard p{margin:0;font-size:13px;line-height:1.5}

.osce-verdict{display:inline-block;margin-top:8px;padding:5px 16px;border-radius:99px;font-family:"Lexend";font-weight:700;font-size:13px;letter-spacing:.04em}
.osce-verdict.pass{background:var(--correct-bg);color:var(--correct)}
.osce-verdict.fail{background:var(--wrong-bg);color:var(--wrong)}
.osce-checkrow{font-size:13px;padding:7px 0;border-bottom:1px solid var(--line)}
.osce-checkrow:last-child{border-bottom:0}
.osce-checkrow.ok{color:var(--ink)}
.osce-checkrow.no{color:var(--ink)}
