
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

/* ============ tokens — Uniqus design system · light only ============ */
:root{
  color-scheme:light;
  --page:#F9FAFB;--surface:#FFFFFF;--surface-subtle:#F9FAFB;--surface-mid:#F2F4F7;--card:#FFFFFF;
  --ink:#101828;--body:#344054;--sec:#475467;--muted:#667085;--faint:#98A2B3;
  --grid:#EAECF0;--line:#EAECF0;--line-strong:#D0D5DD;--line-nav:#D1DBE9;
  --accent:#4E2C79;--accent-hover:#3D2261;--accent-mid:#53389E;--accent-ink:#fff;
  --acc-soft:#F9F5FF;--acc-tint:#F4EBFF;--acc-border:#D6BBFB;--badge-bg:#F2E5FF;--badge-border:#E9D7FE;
  --good:#067647;--good-ink:#067647;--good-soft:#ECFDF3;--good-border:#ABEFC6;
  --bad:#B42318;--bad-soft:#FEF3F2;--bad-border:#FECDCA;
  --warn:#B54708;--warn-soft:#FFFAEB;--warn-border:#FEDF89;
  --d1:#1570EF;--d2:#0E9384;--d3:#DC6803;--d4:#099250;--d5:#DD2590;
  --hero:var(--acc-soft);
  --focus-ring:0 0 0 4px rgba(158,119,237,.24);
  --sh1:rgba(16,24,40,.04);--sh2:rgba(16,24,40,.06);--sh3:rgba(16,24,40,.08);--sh4:rgba(16,24,40,.10);
  --shadow:0 1px 2px var(--sh1),0 4px 14px var(--sh2);
  --shadow-hover:0 2px 6px var(--sh3),0 10px 28px var(--sh4);
  --radius:14px;
}
@view-transition{navigation:auto}

*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth;scroll-padding-block-start:76px;scrollbar-gutter:stable}
body{font:16px/1.6 'Inter',system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--page);color:var(--body)}
a{color:var(--accent)}
h1,h2,h3,h4{text-wrap:balance;color:var(--ink)}
p,li{text-wrap:pretty}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;background:var(--surface-mid);padding:1px 6px;border-radius:5px}
pre{background:var(--surface-subtle);border:1px solid var(--line);border-radius:10px;padding:12px 14px;overflow-x:auto;margin-block:12px;
  & code{background:none;padding:0;font-size:.82rem;line-height:1.55}}
img{max-width:100%;height:auto;border-radius:10px}
table{border-collapse:collapse;width:100%;margin-block:12px;font-size:.9rem;display:block;overflow-x:auto;
  & td,& th{padding:8px 11px;border:1px solid var(--line);text-align:left;vertical-align:top}
  & th{background:var(--surface-subtle);color:var(--sec)}}
h1{font-size:clamp(1.35rem,1.1rem + 1.2vw,1.7rem);line-height:1.25}
h2{font-size:clamp(1.12rem,1rem + .6vw,1.3rem);margin:34px 0 10px;padding-block-start:6px}
h3{font-size:1.05rem;margin:24px 0 8px}
p{margin-block:10px}
ul,ol{padding-inline-start:22px;margin-block:8px}
li{margin-block:4px}
blockquote{border-inline-start:4px solid var(--accent);background:var(--acc-soft);border-radius:0 10px 10px 0;padding:10px 14px;margin-block:12px;
  & p{margin-block:4px}}
hr{border:none;border-block-start:1px solid var(--line);margin-block:26px}

/* ============ nav ============ */
.nav{position:sticky;top:0;z-index:40;display:flex;gap:6px;align-items:center;flex-wrap:wrap;
  background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(10px);
  border-block-end:1px solid var(--line-nav);padding:10px 18px;
  & .brand{font-weight:800;text-decoration:none;color:var(--ink);margin-inline-end:4px;letter-spacing:.2px;
    & b{color:var(--accent)}}
  & a.lnk{font-size:.8rem;font-weight:600;text-decoration:none;color:var(--sec);padding:5px 11px;border-radius:99px;transition:all .15s;
    &:hover{background:var(--acc-soft);color:var(--accent)}
    &.on{background:var(--acc-soft);color:var(--accent)}
    &.done::before{content:"✓ ";color:var(--good);font-weight:800}
    &.on.done::before{color:var(--good)}}
  & .spacer{flex:1}}
.navprog{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:700;color:var(--sec);
  font-variant-numeric:tabular-nums;margin-inline-end:6px;
  & i{display:block;width:44px;height:6px;border-radius:3px;background:var(--grid);position:relative;overflow:hidden;
    &::after{content:"";position:absolute;inset:0;width:var(--p,0%);background:var(--good);border-radius:3px;transition:width .4s}}}

/* ============ layout ============ */
.wrap{max-width:1120px;margin-inline:auto;padding:20px 18px 90px}
.hero{position:relative;border-radius:var(--radius);padding:clamp(20px,3vw,30px);margin-block-end:22px;color:var(--body);
  background:var(--hero);border:1px solid var(--badge-border);box-shadow:var(--shadow);overflow:hidden;
  & h1{color:var(--ink)}
  & .sub{color:var(--sec);font-size:.95rem;margin-block-start:6px;max-width:70ch;
    & b{color:var(--ink)}}
  & .meta{display:flex;gap:8px;flex-wrap:wrap;margin-block-start:14px}
  & .chip{font-size:.75rem;font-weight:700;padding:3px 12px;border-radius:99px;background:var(--badge-bg);border:1px solid var(--badge-border);color:var(--accent);
    &.done{background:var(--good);border-color:var(--good);color:#fff}}}
.grid{display:grid;grid-template-columns:230px minmax(0,1fr);gap:26px;align-items:start}
@media(max-width:900px){.grid{grid-template-columns:1fr}}
.toc{position:sticky;top:70px;font-size:.84rem;max-height:calc(100dvh - 90px);overflow:auto;
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;
  & b{display:block;margin-block-end:8px;font-size:.78rem;text-transform:uppercase;letter-spacing:.6px;color:var(--faint)}
  & a{display:block;color:var(--sec);text-decoration:none;padding:3px 8px;border-inline-start:2px solid transparent;border-radius:0 6px 6px 0;transition:all .15s;
    &.h3{padding-inline-start:20px;font-size:.8rem}
    &:hover{color:var(--accent)}
    &.on{color:var(--accent);border-inline-start-color:var(--accent);background:var(--acc-soft)}}}
@media(max-width:900px){.toc{position:static;max-height:none}}
.content{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px 32px;box-shadow:var(--shadow);min-width:0;container-type:inline-size}
@media(max-width:700px){.content{padding:20px 16px}}

/* ============ components ============ */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow);transition:box-shadow .2s,transform .2s;
  &.hoverable:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}}
.callout{border-inline-start:4px solid var(--accent);background:var(--acc-soft);border-radius:0 10px 10px 0;padding:11px 14px;margin-block:12px;font-size:.92rem;
  &.warn{border-color:var(--bad);background:var(--bad-soft);
    & b:first-child{color:var(--bad)}}
  &.mem{border-color:var(--warn);background:var(--warn-soft)}}
.pill{font-size:.72rem;font-weight:700;padding:2px 10px;border-radius:99px;background:var(--badge-bg);border:1px solid var(--badge-border);color:var(--accent)}
details{border:1px solid var(--line);border-radius:10px;margin-block:10px;background:var(--surface-subtle);overflow:hidden;interpolate-size:allow-keywords;
  & summary{cursor:pointer;padding:10px 14px;font-weight:600;list-style:none;display:flex;align-items:center;gap:8px;transition:background .15s;
    &:hover{background:var(--acc-soft)}
    &::before{content:"▸";color:var(--accent);transition:transform .2s;font-size:.9em}}
  &[open] summary::before{transform:rotate(90deg)}
  &::details-content{block-size:0;overflow:clip;transition:block-size .3s ease,content-visibility .3s allow-discrete}
  &[open]::details-content{block-size:auto}
  &>*:not(summary){padding-inline:16px}
  &>pre{margin:8px 14px 14px}}
.fade{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease;
  &.vis{opacity:1;transform:none}}
a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{
  outline:2px solid transparent;outline-offset:2px;box-shadow:var(--focus-ring);border-radius:6px}
@media(prefers-reduced-motion:reduce){
  .fade{opacity:1;transform:none;transition:none}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
  .fcinner{transition:none}
}

/* ============ flip cards ============ */
.fcgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-block:14px}
.fc{perspective:900px;border:none;background:none;padding:0;cursor:pointer;text-align:left;min-height:170px;
  &[aria-pressed="true"] .fcinner{transform:rotateY(180deg)}}
.fcinner{display:block;position:relative;width:100%;height:100%;min-height:170px;transition:transform .5s;transform-style:preserve-3d}
.fcface{position:absolute;inset:0;backface-visibility:hidden;border-radius:12px;padding:14px 16px;font-size:.85rem;line-height:1.5;overflow:auto;box-shadow:var(--shadow)}
.fcfront{background:var(--card);border:1.5px solid var(--accent);color:var(--ink);font-weight:600;
  &::after{content:"tap to flip";position:absolute;inset-inline-end:10px;bottom:6px;font-size:.65rem;color:var(--muted);font-weight:400}}
.fcback{background:var(--accent);color:#fff;transform:rotateY(180deg)}

/* ============ footer / completion ============ */
.pnav{display:flex;justify-content:space-between;gap:12px;margin-block-start:28px;
  & a{flex:1;text-decoration:none;border:1px solid var(--line);border-radius:12px;padding:12px 16px;color:var(--ink);background:var(--card);transition:all .15s;
    &:hover{border-color:var(--accent);box-shadow:var(--shadow-hover)}
    & small{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.5px}
    &.next{text-align:end}}}
.navdone{display:flex;gap:7px;align-items:center;font-size:.8rem;font-weight:700;border:1.5px solid var(--accent);
  color:var(--accent);border-radius:99px;padding:4px 12px;cursor:pointer;transition:all .15s;white-space:nowrap;
  & input{width:15px;height:15px;accent-color:var(--good)}
  &.done{border-color:var(--good);color:var(--good-ink);background:color-mix(in srgb,var(--good) 10%,transparent)}}
.donecard{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin:26px 0 6px;
  padding:18px 20px;border:1.5px solid var(--accent);border-radius:14px;background:var(--acc-soft);
  & b{font-size:1.02rem}
  & span{display:block;color:var(--sec);font-size:.83rem}
  & .ctabtn{border:none;cursor:pointer;font-size:.95rem;
    &.isdone{background:var(--good)}}}
.top{position:fixed;inset-inline-start:18px;bottom:18px;z-index:30;border:1px solid var(--line);background:var(--card);color:var(--sec);
  border-radius:99px;width:38px;height:38px;cursor:pointer;font-size:1rem;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .2s;
  &.vis{opacity:1;pointer-events:auto}}

/* ============ charts & viz ============ */
.vizrow{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-block:18px}
@media(max-width:820px){.vizrow{grid-template-columns:1fr}}
svg text{font:600 12px 'Inter',system-ui,-apple-system,"Segoe UI",sans-serif;fill:var(--ink)}
svg text.s{font-weight:400;font-size:11px;fill:var(--sec)}
.brow{display:flex;align-items:center;gap:10px;margin-block:8px;font-size:.86rem;
  & .blab{width:230px;display:flex;gap:7px;align-items:center}
  & .dot{width:10px;height:10px;border-radius:3px;flex:none}
  & .btrack{flex:1;height:18px;background:var(--grid);border-radius:9px;overflow:hidden;position:relative;
    & i{display:block;height:100%;border-radius:9px 0 0 9px;transition:width .8s ease}
    & .bpass{position:absolute;left:72%;top:-2px;bottom:-2px;width:2px;background:var(--ink);opacity:.55}}
  & .bval{width:92px;text-align:end;font-variant-numeric:tabular-nums;color:var(--sec);font-size:.8rem}}
@media(max-width:600px){.brow .blab{width:130px}}
.meter{position:relative;height:20px;background:var(--grid);border-radius:10px;overflow:visible;margin:10px 0 22px;
  & i{display:block;height:100%;border-radius:10px;background:var(--accent);transition:width .8s ease}
  & .mark{position:absolute;top:-4px;bottom:-4px;left:72%;width:2.5px;background:var(--ink);opacity:.7}
  & .marklab{position:absolute;left:72%;top:22px;transform:translateX(-50%);font-size:.72rem;color:var(--muted);white-space:nowrap}}

/* ============ steppers / checklist ============ */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0;margin-block:18px}
.step{position:relative;padding-inline-end:10px;text-align:center;
  & .dotb{width:34px;height:34px;border-radius:50%;background:var(--acc-soft);color:var(--accent);border:2px solid var(--accent);
    display:flex;align-items:center;justify-content:center;font-weight:800;margin:0 auto 8px;position:relative;z-index:1}
  &.done .dotb{background:var(--good);border-color:var(--good);color:#fff}
  &::before{content:"";position:absolute;top:17px;left:calc(-50% + 17px);right:calc(50% + 17px);height:2px;background:var(--grid)}
  &:first-child::before{display:none}
  & b{display:block;font-size:.82rem}
  & small{color:var(--sec);font-size:.74rem;line-height:1.35;display:block}}
.checklist{list-style:none;padding:0;
  & li{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border:1px solid var(--line);border-radius:10px;margin-block:7px;background:var(--card);transition:all .15s;font-size:.92rem;
    &:has(input:checked){border-color:var(--good);background:color-mix(in srgb,var(--good) 7%,var(--card))}}
  & input{width:17px;height:17px;margin-block-start:2px;accent-color:var(--good);flex:none}}

/* ============ index / dashboard ============ */
.dash{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-block:20px;container-type:inline-size}
.pathgrid{display:grid;gap:12px;margin-block:16px}
.pathcard{display:flex;gap:14px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--card);text-decoration:none;color:var(--ink);transition:all .18s;
  &:hover{border-color:var(--accent);box-shadow:var(--shadow-hover);transform:translateX(3px)}
  & .num{width:34px;height:34px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-weight:800;background:var(--acc-soft);color:var(--accent)}
  &.done .num,&:has(input:checked) .num{background:var(--good);color:#fff}
  & b{display:block}
  & small{color:var(--sec)}
  & .t{flex:1}
  & .est{font-size:.74rem;color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}
  & input{width:16px;height:16px;accent-color:var(--good)}
  &.nextup{border-color:var(--accent);box-shadow:0 0 0 3px var(--acc-soft)}
  & .nextlab{font-size:.68rem;font-weight:800;letter-spacing:.5px;color:var(--accent);text-transform:uppercase}}
.bignum{font-size:2rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.readtime{color:var(--muted);font-size:.78rem}
.cardsub{color:var(--sec);font-size:.8rem;margin:2px 0 8px}
.howto{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-block:18px;
  & .h{border:1px solid var(--line);border-radius:12px;padding:13px 15px;background:var(--card);font-size:.86rem;
    & b{display:flex;align-items:center;gap:8px;margin-block-end:4px;font-size:.92rem;
      & i{font-style:normal;width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800;flex:none}}
    & span{color:var(--sec)}}}
.milestones{display:flex;gap:8px;flex-wrap:wrap;margin-block:14px}
.mile{display:inline-flex;gap:6px;align-items:center;font-size:.76rem;font-weight:700;padding:5px 13px;border-radius:99px;
  border:1.5px solid var(--line);color:var(--muted);background:var(--card);transition:all .3s;
  &.earned{border-color:var(--good);color:var(--good-ink);background:color-mix(in srgb,var(--good) 8%,var(--card));
    &::before{content:"✓ ";font-weight:800}}}

/* ============ lesson layer ============ */
.lesson{font-size:1.02rem}
.bigidea{border:1px solid var(--badge-border);border-radius:14px;padding:16px 20px;margin:6px 0 18px;color:var(--body);background:var(--hero);font-size:1rem;
  & b{color:var(--ink)}
  & .lead{font-size:.78rem;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--accent);display:block;margin-block-end:4px}}
.conceptgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-block:14px}
@container (max-width:660px){.conceptgrid{grid-template-columns:1fr}}
.concept{border:1px solid var(--line);border-radius:14px;padding:16px 18px;background:var(--card);
  box-shadow:var(--shadow);transition:box-shadow .2s,transform .2s;font-size:.92rem;
  &:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}
  & .ic{font-size:1.35rem;display:inline-flex;width:40px;height:40px;border-radius:11px;background:var(--acc-soft);
    align-items:center;justify-content:center;margin-block-end:8px}
  & h4{margin:0 0 6px;font-size:.98rem}
  & p{margin-block:6px;color:var(--sec)}
  & .rule{display:block;margin-block-start:9px;padding:8px 11px;border-radius:9px;background:var(--acc-soft);
    font-weight:700;font-size:.84rem;color:var(--accent);
    &::before{content:"📌 Exam rule: ";font-weight:800}}}
.lessonfig{margin-block:16px;text-align:center;background:var(--card);border:1px solid var(--grid);border-radius:12px;padding:10px;
  & img{border-radius:8px}}
dfn{font-style:normal;border-block-end:1.5px dotted var(--accent);cursor:help}
.ctaquiz{display:flex;flex-direction:column;gap:6px;align-items:flex-start;margin-block:24px;padding:18px 20px;
  border:1.5px dashed var(--accent);border-radius:14px;background:var(--acc-soft);
  & span{font-size:.82rem;color:var(--sec)}}
.ctabtn.nextstep{background:var(--card);color:var(--accent);border:1.5px solid var(--accent);
  &:hover{background:var(--acc-tint);border-color:var(--acc-border);color:var(--accent-mid)}}
.ctabtn{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;font-weight:700;
  padding:10px 18px;border-radius:99px;transition:transform .15s,box-shadow .15s,background .15s;
  &:hover{transform:translateY(-1px);box-shadow:var(--shadow-hover);background:var(--accent-hover)}}
details.deepdive{border:1.5px solid var(--line);background:var(--surface-subtle);margin:26px 0 8px;
  &>summary{background:var(--warn-soft);font-size:1rem;padding:14px 16px;
    & small{display:block;font-weight:400;color:var(--sec);font-size:.78rem;margin-block-start:2px}}}
.deepbody{padding:6px 18px 18px}
