:root{--paper: #FAF8F3;--paper-elev: #FFFFFF;--paper-sunk: #F1EDE4;--ink: #141B2D;--ink-2: #3B4256;--ink-3: #6B7284;--ink-4: #A1A7B5;--ember: #E8590C;--ember-hover: #C94A08;--ember-soft: #FDEBDD;--m-untouched: #D9DCE3;--m-learning: #F5C451;--m-developing: #7CC47F;--m-mastered: #1F9D55;--m-mastered-glow: rgba(31,157,85,.35);--slate: #4A5B78;--danger: #C8322B;--info: #2E6FB6;--border-raw: rgba(20,27,45,.1);--border-strong-raw: rgba(20,27,45,.22);--border-hair-raw: rgba(20,27,45,.06);--shadow-1: 0 1px 2px rgba(20,27,45,.06), 0 2px 8px rgba(20,27,45,.06);--shadow-2: 0 4px 16px rgba(20,27,45,.1), 0 12px 32px rgba(20,27,45,.08);--radius: 10px;--radius-lg: 16px;--ember-ink: #8F3406;--slate-ink: #34425C;--mastered-ink: #14663A;--danger-ink: #8E241F;--d1: #E8590C;--d2: #4A5B78;--d3: #8E5BC2;--d4: #2E9C9C;--d5: #B8860B;--fs-12: .75rem;--fs-13: .8125rem;--fs-15: .9375rem;--fs-17: 1.0625rem;--fs-20: 1.25rem;--fs-24: 1.5rem;--fs-32: 2rem;--fs-44: 2.75rem;--fs-64: 4rem;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--sp-8: 64px;--dur-xfast: .12s;--dur-fast: .16s;--dur-mid: .3s;--dur-slow: .6s;--dur-breath: 6s;--ease: cubic-bezier(.2, .7, .2, 1);--ease-spring: cubic-bezier(.34, 1.4, .5, 1);--rail-w: 232px;--tabbar-h: 60px;--content-max: 1180px;--measure: 68ch;--drawer-w: 420px;--col-min-lg: 260px;--map-link: rgba(20,27,45,.15);--map-link-lit: rgba(232,89,12,.55);--map-plate: rgba(20,27,45,.035)}:root{--surface: var(--paper);--surface-elev: var(--paper-elev);--surface-sunk: var(--paper-sunk);--text: var(--ink);--text-2: var(--ink-2);--text-3: var(--ink-3);--text-muted: var(--ink-4);--accent: var(--ember);--accent-hover: var(--ember-hover);--accent-soft: var(--ember-soft);--accent-ink: var(--ember-ink);--focus-ring: var(--ember);--border: var(--border-raw);--border-strong: var(--border-strong-raw);--border-hair: var(--border-hair-raw);--mastery-untouched: var(--m-untouched);--mastery-learning: var(--m-learning);--mastery-developing: var(--m-developing);--mastery-mastered: var(--m-mastered);--mastery-mastered-glow: var(--m-mastered-glow);--mastery-mastered-ink: var(--mastered-ink);--tone-slate: var(--slate);--tone-slate-ink: var(--slate-ink);--tone-danger: var(--danger);--tone-danger-ink: var(--danger-ink);--tone-info: var(--info)}@font-face{font-family:Fraunces;src:url(/fonts/fraunces-latin-full-normal.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(/fonts/fraunces-latin-full-italic.woff2) format("woff2");font-weight:100 900;font-style:italic;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-latin-500-normal.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans;src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin-wght-normal.woff2) format("woff2");font-weight:100 800;font-style:normal;font-display:swap}:root{--font-fraunces: "Fraunces", Georgia, "Times New Roman", serif;--font-plex-sans: "IBM Plex Sans", system-ui, "Segoe UI", sans-serif;--font-jetbrains-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--font-display: var(--font-fraunces);--font-sans: var(--font-plex-sans);--font-mono: var(--font-jetbrains-mono)}*,*:before,*:after{box-sizing:border-box}html{color-scheme:light;-webkit-text-size-adjust:100%}body{margin:0;background-color:var(--surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");background-attachment:fixed;color:var(--text);font-family:var(--font-plex-sans),ui-sans-serif,system-ui,"Segoe UI",sans-serif;font-size:var(--fs-15);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-fraunces),Georgia,"Times New Roman",serif;font-weight:600;color:var(--text);letter-spacing:-.015em;margin:0;font-variation-settings:"SOFT" 20}h1{font-size:var(--fs-32);letter-spacing:-.025em}h2{font-size:var(--fs-24)}h3{font-size:var(--fs-20)}h4{font-size:var(--fs-17)}h1 em{font-style:italic;font-variation-settings:"SOFT" 60;color:var(--text)}p{margin:0 0 var(--sp-3)}a{color:var(--tone-info);text-underline-offset:2px}a:hover{color:var(--accent-hover)}code,kbd,pre,samp,.mono,.num{font-family:var(--font-jetbrains-mono),ui-monospace,"SFMono-Regular",Menlo,monospace;font-feature-settings:"tnum" 1}.num{font-variant-numeric:tabular-nums;letter-spacing:-.01em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}::selection{background:var(--accent-soft);color:var(--text)}hr{border:0;border-top:1px solid var(--border);margin:var(--sp-5) 0}.shell{min-height:100dvh;display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr)}.shell-main{min-width:0;padding:var(--sp-6) var(--sp-6) var(--sp-8);max-width:var(--content-max);width:100%}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-5)}.page-head .eyebrow{font-size:var(--fs-12);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);margin:0 0 var(--sp-1);font-weight:600}.lede{color:var(--text-2);max-width:62ch}.grid-2{display:grid;gap:var(--sp-4);grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{display:grid;gap:var(--sp-4);grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{display:grid;gap:var(--sp-4);grid-template-columns:repeat(4,minmax(0,1fr))}.grid-5{display:grid;gap:var(--sp-4);grid-template-columns:repeat(5,minmax(0,1fr))}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.card{background:var(--surface-elev);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:var(--sp-5)}.card-tight{padding:var(--sp-4)}.card-link{display:block;color:inherit;text-decoration:none;transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.card-link:hover{transform:translateY(-1px);box-shadow:var(--shadow-2);color:inherit}.well{background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-4)}.divider{height:1px;background:var(--border);margin:var(--sp-4) 0}.btn{--btn-bg: var(--accent);--btn-fg: #FFFFFF;--btn-bd: transparent;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:40px;padding:0 var(--sp-4);border-radius:var(--radius);border:1px solid var(--btn-bd);background:var(--btn-bg);color:var(--btn-fg);font:inherit;font-weight:600;font-size:var(--fs-15);cursor:pointer;text-decoration:none;transition:background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.btn:hover{--btn-bg: var(--accent-hover);color:var(--btn-fg)}.btn:active{transform:scale(.98)}.btn[disabled],.btn[aria-disabled=true]{--btn-bg: var(--surface-sunk);--btn-fg: var(--text-3);--btn-bd: var(--border);cursor:not-allowed;box-shadow:none}.btn[disabled]:hover,.btn[aria-disabled=true]:hover{--btn-bg: var(--surface-sunk);--btn-fg: var(--text-3)}.btn-slate{--btn-bg: var(--tone-slate)}.btn-slate:hover{--btn-bg: #3B4A64}.btn-ghost{--btn-bg: transparent;--btn-fg: var(--text-2);--btn-bd: var(--border-strong)}.btn-ghost:hover{--btn-bg: var(--surface-sunk);--btn-fg: var(--text)}.btn-danger{--btn-bg: var(--tone-danger)}.btn-danger:hover{--btn-bg: #A72923}.btn-sm{min-height:32px;font-size:var(--fs-13);padding:0 var(--sp-3)}.btn-lg{min-height:48px;font-size:var(--fs-17);padding:0 var(--sp-5)}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-4)}.field label{font-size:var(--fs-13);font-weight:600;color:var(--text-2)}.field .hint{font-size:var(--fs-12);color:var(--text-3)}.input{min-height:42px;padding:0 var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-elev);color:var(--text);font:inherit;font-size:var(--fs-15);width:100%}.input:focus-visible{border-color:var(--accent)}.input[aria-invalid=true]{border-color:var(--tone-danger)}.input-mono{font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;letter-spacing:.04em}fieldset.field{border:0;padding:0;margin:0 0 var(--sp-4);min-width:0}fieldset.field legend{padding:0;font-size:var(--fs-13);font-weight:600;color:var(--text-2)}fieldset.field[disabled]{opacity:.7}fieldset.field input[type=radio],fieldset.field input[type=checkbox]{width:18px;height:18px;flex:none;accent-color:var(--accent)}.chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-elev);color:var(--text-2);font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;font-size:var(--fs-12);font-weight:600;letter-spacing:.02em;white-space:nowrap}.chip-ember{background:var(--accent-soft);border-color:#e8590c59;color:var(--accent-ink)}.chip-slate{background:#4a5b781a;border-color:#4a5b784d;color:var(--tone-slate-ink)}.chip-mastered{background:#1f9d551f;border-color:#1f9d5559;color:var(--mastery-mastered-ink)}.chip-danger{background:#c8322b1a;border-color:#c8322b52;color:var(--tone-danger-ink)}.kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 5px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:5px;background:var(--surface-sunk);font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;font-size:var(--fs-12);color:var(--text-2)}.stat{background:var(--surface-elev);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow-1)}.stat-value{font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;font-size:var(--fs-32);font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--text)}.stat-label{font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:600;margin-top:var(--sp-1)}.stat-note{font-size:var(--fs-12);color:var(--text-3);margin-top:var(--sp-1)}.table-wrap{position:relative;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-elev)}.table-scroll{position:relative;overflow-x:auto;max-width:100%;margin:0 0 var(--sp-4)}.prose .table-scroll table{margin-bottom:0}table.data{width:100%;border-collapse:collapse;font-size:var(--fs-13)}table.data th{text-align:left;font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:600;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border-strong);white-space:nowrap}table.data td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);color:var(--text-2);vertical-align:middle}table.data tr:last-child td{border-bottom:0}table.data td.num,table.data th.num{font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums}.bar{height:8px;border-radius:999px;background:var(--surface-sunk);overflow:hidden;border:1px solid var(--border)}.bar>span{display:block;height:100%;border-radius:999px;transition:width var(--dur-slow) var(--ease)}.dot{width:10px;height:10px;border-radius:999px;display:inline-block;flex:none}.empty{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);padding:var(--sp-6);text-align:center;color:var(--text-2);background:var(--surface-elev)}.empty h3{margin-bottom:var(--sp-2)}.error-text{color:var(--tone-danger);font-size:var(--fs-13);font-weight:600}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--sp-3);top:-60px;z-index:100;background:var(--text);color:var(--surface);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius);transition:top var(--dur-fast) var(--ease)}.skip-link:focus{top:var(--sp-3);color:var(--surface)}.drawer-scrim{display:none}@media (max-width: 860px){.drawer-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#141b2d47;z-index:45;animation:map-fade-in var(--dur-fast) var(--ease) both}}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(var(--drawer-w),92vw);background:var(--surface-elev);border-left:1px solid var(--border-strong);box-shadow:var(--shadow-2);z-index:46;display:flex;flex-direction:column;animation:drawer-in var(--dur-mid) var(--ease) both}@keyframes drawer-in{0%{transform:translate(16px);opacity:0}to{transform:none;opacity:1}}.drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-5) var(--sp-5) var(--sp-3);border-bottom:1px solid var(--border)}.drawer-body{padding:var(--sp-4) var(--sp-5);overflow-y:auto;flex:1}.drawer-foot{padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--border);background:var(--surface)}.drawer-close{flex:none;width:32px;height:32px;display:grid;place-items:center;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface-elev);color:var(--text-2);cursor:pointer}.drawer-close:hover{background:var(--surface-sunk);color:var(--text)}@media (max-width: 860px){.drawer{top:auto;left:0;right:0;width:auto;max-height:82dvh;border-left:0;border-top:1px solid var(--border-strong);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding-bottom:env(safe-area-inset-bottom,0px);animation-name:sheet-in}.drawer-head:before{content:"";position:absolute;top:8px;left:50%;width:36px;height:4px;border-radius:999px;background:var(--border-strong);transform:translate(-50%)}.drawer-head{position:relative;padding-top:var(--sp-5)}}@keyframes sheet-in{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}.notches{display:flex;gap:3px}.notch{height:6px;flex:1;border-radius:2px;background:var(--surface-sunk);border:1px solid var(--border);transition:background var(--dur-fast) var(--ease)}.notch-on{background:var(--accent);border-color:transparent}.notch-current{background:var(--accent-soft);border-color:var(--accent)}.meter-inline{display:inline-flex;align-items:center;gap:var(--sp-2)}.meter-inline .bar{width:56px;height:6px;flex:none}.spark{display:block;overflow:visible}.spark-line{fill:none;stroke:var(--tone-slate);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.spark-area{fill:#4a5b781f;stroke:none}.spark-last{fill:var(--accent)}.spark-rule{stroke:var(--border-strong);stroke-width:1;stroke-dasharray:2 3}.timeline{list-style:none;margin:0;padding:0;position:relative}.timeline:before{content:"";position:absolute;left:15px;top:14px;bottom:14px;width:1px;background:var(--border-strong)}.timeline>li{position:relative;padding-left:44px;margin-bottom:var(--sp-3)}.timeline>li:last-child{margin-bottom:0}.timeline-mark{position:absolute;left:8px;top:14px;width:16px;height:16px;padding:0;border-radius:999px;border:2px solid var(--border-strong);background:var(--surface);z-index:1}button.timeline-mark{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}button.timeline-mark:hover:not(:disabled){border-color:var(--accent)}button.timeline-mark:disabled{cursor:default;opacity:.6}.timeline-mark-next{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.timeline-mark-done{border-color:var(--mastery-mastered);background:var(--mastery-mastered)}.timeline-mark-skipped{border-color:var(--text-3);background:var(--surface)}.timeline-card{display:block}.timeline-next{border-color:#e8590c66;box-shadow:var(--shadow-2)}.timeline-est{font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums;font-size:var(--fs-13);color:var(--text-3);white-space:nowrap}.rail{border-right:1px solid var(--border);background:var(--surface-elev);padding:var(--sp-5) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-5);position:sticky;top:0;height:100dvh;overflow-y:auto}.rail-brand{display:flex;align-items:center;gap:var(--sp-2);text-decoration:none;color:var(--text)}.rail-mark{width:32px;height:32px;border-radius:8px;background:var(--accent);color:#fff;display:grid;place-items:center;font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;font-weight:700;font-size:var(--fs-13);flex:none}.rail-nav{display:flex;flex-direction:column;gap:2px}.rail-link{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius);color:var(--text-2);text-decoration:none;font-size:var(--fs-15);font-weight:500;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.rail-link:hover{background:var(--surface-sunk);color:var(--text)}.rail-link[aria-current=page]{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.tabbar{display:none}@media (max-width: 860px){.shell{grid-template-columns:minmax(0,1fr)}.rail{display:none}.shell-main{padding:var(--sp-4) var(--sp-4) calc(var(--tabbar-h) + var(--sp-6))}.tabbar{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:fixed;bottom:0;left:0;right:0;height:var(--tabbar-h);background:var(--surface-elev);border-top:1px solid var(--border);z-index:40;padding-bottom:env(safe-area-inset-bottom,0px)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:var(--text-3);font-size:var(--fs-12);font-weight:600}.tab[aria-current=page]{color:var(--accent-ink)}.grid-3,.grid-4,.grid-5{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 560px){.grid-2{grid-template-columns:minmax(0,1fr)}h1{font-size:var(--fs-24)}}@media (max-width: 380px){.grid-3,.grid-4,.grid-5{grid-template-columns:minmax(0,1fr)}}.rail-link{position:relative;padding-left:var(--sp-4)}.rail-link:before{content:"";position:absolute;left:4px;top:50%;width:3px;height:0;border-radius:999px;background:var(--accent);transform:translateY(-50%);transition:height var(--dur-fast) var(--ease)}.rail-link[aria-current=page]:before{height:18px}.rail-icon{flex:none;color:currentColor;opacity:.75}.rail-link[aria-current=page] .rail-icon{opacity:1}.rail-link-body{display:flex;align-items:center;gap:var(--sp-3);min-width:0}.rail-foot-name{font-size:var(--fs-13);color:var(--text-2);margin-bottom:var(--sp-2);display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.tab{padding-top:4px}.tab-icon{opacity:.8}.tab[aria-current=page] .tab-icon{opacity:1}.only-narrow{display:none}@media (max-width: 860px){.only-narrow{display:inline-flex}}@keyframes rise-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes ember-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes ignite{0%{box-shadow:0 0 0 0 var(--mastery-mastered-glow)}to{box-shadow:0 0 0 14px #1f9d5500}}.anim-rise{animation:rise-in var(--dur-fast) var(--ease) both}.anim-shake{animation:ember-shake .2s var(--ease) 1}.anim-ignite{animation:ignite var(--dur-slow) var(--ease) 1}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.card-link:hover,.btn:active{transform:none}}.route-enter{animation:rise-in var(--dur-fast) var(--ease) both}.split{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-4);align-items:center}.hairline{border-top:1px solid var(--border-hair)}.eyebrow{font-size:var(--fs-12);letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-weight:600;margin:0 0 var(--sp-1)}.footnote{font-size:var(--fs-12);color:var(--text-3)}.skeleton{background:linear-gradient(90deg,var(--surface-sunk),var(--surface-elev),var(--surface-sunk));background-size:200% 100%;animation:shimmer 1.6s linear infinite;border-radius:var(--radius)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.map-breathe,.map-ignite-dot,.map-ignite-ring,.timer-critical,.skeleton{animation:none!important}.map-node,.flip-inner{transition:none!important}}.map-stage{position:relative;background:var(--surface-elev);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:var(--sp-4);overflow:hidden}.map-plot{position:relative;margin:0 auto;max-width:100%}.map-canvas{display:block;width:100%;height:auto;touch-action:manipulation}.map-canvas:focus{outline:none}.map-canvas:focus-visible{outline:none}.map-link{fill:none;stroke:var(--map-link);stroke-width:1;stroke-linecap:round}.map-link-lit{stroke:var(--map-link-lit);stroke-width:1.4}.map-links{animation:map-fade-in var(--dur-mid) var(--ease) both}@keyframes map-fade-in{0%{opacity:0}to{opacity:1}}.map-node{cursor:pointer;transition:transform var(--dur-mid) var(--ease)}.map-node:focus{outline:none}.map-node-dot{transform-box:fill-box;transform-origin:50% 50%;stroke:var(--surface-elev);stroke-width:1;transition:filter var(--dur-fast) var(--ease)}@keyframes leaf-breathe{0%,to{transform:scale(.84)}50%{transform:scale(1.2)}}.map-breathe{animation:leaf-breathe var(--dur-breath) var(--ease) infinite;animation-delay:var(--breath, 0s)}@keyframes ignite-pop{0%{transform:scale(1)}30%{transform:scale(2.1)}to{transform:scale(1)}}@keyframes ignite-ring{0%{transform:scale(.3);opacity:.8}to{transform:scale(2.8);opacity:0}}.map-ignite-dot{animation:ignite-pop var(--dur-slow) var(--ease-spring) 1}.map-ignite-ring{fill:none;stroke:var(--mastery-mastered);stroke-width:2;transform-box:fill-box;transform-origin:50% 50%;animation:ignite-ring var(--dur-slow) var(--ease) 1 both;pointer-events:none}.map-lit{filter:drop-shadow(0 0 6px var(--mastery-mastered-glow))}.map-node[data-state=mastered] .map-node-dot{filter:url(#map-glow)}.map-node[aria-selected=true] .map-node-dot,.map-node[data-active=true] .map-node-dot{stroke:var(--text);stroke-width:2}.map-canvas:focus-visible .map-node[data-focused=true] .map-halo,.map-node[data-focused=true] .map-halo{opacity:1}.map-halo{fill:none;stroke:var(--accent);stroke-width:2;opacity:0;transition:opacity var(--dur-xfast) var(--ease);pointer-events:none}.map-arc{cursor:pointer;transition:opacity var(--dur-fast) var(--ease)}.map-arc-halo{fill:none;stroke:var(--accent);stroke-width:2;opacity:0;pointer-events:none;transition:opacity var(--dur-xfast) var(--ease)}.map-arc[data-focused=true] .map-arc-halo{opacity:1}.map-arc-plate{fill:var(--map-plate)}.map-arc-fill{opacity:.85}.map-arc:hover .map-arc-plate{fill:var(--surface-sunk)}.map-label{font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;font-size:9px;letter-spacing:.04em;fill:var(--text-3);pointer-events:none;-webkit-user-select:none;user-select:none;paint-order:stroke;stroke:var(--surface-elev);stroke-width:3px;stroke-linejoin:round}.map-label-strong{fill:var(--text-2);font-weight:600;stroke-width:4px}.map-arc-label{font-family:var(--font-plex-sans),system-ui,sans-serif;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;fill:var(--text-2);pointer-events:none;-webkit-user-select:none;user-select:none;paint-order:stroke;stroke:var(--surface-elev);stroke-width:4px;stroke-linejoin:round}.map-hub-value{font-family:var(--font-jetbrains-mono),ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums;font-weight:600;fill:var(--text)}.map-hub-label{font-family:var(--font-plex-sans),system-ui,sans-serif;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;fill:var(--text-3)}.map-tooltip{position:absolute;z-index:20;pointer-events:none;max-width:260px;background:var(--surface-elev);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-2);padding:var(--sp-3);font-size:var(--fs-13);color:var(--text-2);animation:rise-in var(--dur-xfast) var(--ease) both}.map-tooltip strong{color:var(--text);display:block;margin-bottom:var(--sp-1)}.map-tooltip dl{display:grid;grid-template-columns:auto 1fr;gap:2px var(--sp-3);margin:var(--sp-2) 0 0}.map-tooltip dt{color:var(--text-3);font-size:var(--fs-12)}.map-tooltip dd{margin:0;text-align:right}.map-legend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-4);margin-top:var(--sp-3);font-size:var(--fs-12);color:var(--text-2)}.map-legend-item{display:inline-flex;align-items:center;gap:var(--sp-2)}.map-ramp{display:inline-flex;border-radius:999px;overflow:hidden;border:1px solid var(--border)}.map-ramp span{width:22px;height:10px;display:block}.map-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3)}.map-chip-btn{display:inline-flex;align-items:center;gap:var(--sp-2);padding:3px var(--sp-3);border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-elev);color:var(--text-2);font:inherit;font-size:var(--fs-12);font-weight:600;cursor:pointer;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.map-chip-btn:hover{background:var(--surface-sunk);color:var(--text)}.map-chip-btn[aria-pressed=true],.map-chip-btn[aria-current=page]{background:var(--text);border-color:var(--text);color:var(--surface)}.map-chip-swatch{width:9px;height:9px;border-radius:2px;flex:none}.map-chip-btn[aria-pressed=true] .map-chip-swatch,.map-chip-btn[aria-current=page] .map-chip-swatch{box-shadow:0 0 0 1px var(--surface)}a.map-chip-btn{text-decoration:none}a.map-chip-btn:hover{color:var(--text)}a.map-chip-btn[aria-current=page]:hover{color:var(--surface)}.map-help{font-size:var(--fs-12);color:var(--text-3);margin:var(--sp-3) 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.map-mini{pointer-events:none;border:0;box-shadow:none;background:transparent;padding:0}.skill-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:baseline;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border-hair);font-size:var(--fs-13);color:var(--text-2)}.skill-row:last-child{border-bottom:0}.skill-row .dot{transform:translateY(1px)}.attempt-list{list-style:none;margin:0;padding:0}.attempt-row{display:grid;grid-template-columns:10px minmax(0,1fr);gap:var(--sp-1) var(--sp-3);align-items:baseline;padding:var(--sp-2) 0;border-bottom:1px solid var(--border-hair)}.attempt-row:last-child{border-bottom:0}.attempt-dot{width:8px;height:8px;border-radius:999px;align-self:center;grid-row:span 2}.attempt-right .attempt-dot{background:var(--mastery-mastered)}.attempt-wrong .attempt-dot{background:var(--accent)}.attempt-stem{color:var(--text-2);font-size:var(--fs-13);line-height:1.45;overflow-wrap:anywhere}.attempt-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);font-size:var(--fs-12);color:var(--text-3)}.attempt-mode{border:1px solid var(--border-strong);border-radius:999px;padding:0 6px;line-height:1.6}.attempt-when{font-variant-numeric:tabular-nums}.attempt-note{background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-3);font-size:var(--fs-13)}.attempt-ghost{display:block;height:10px;border-radius:5px;background:linear-gradient(90deg,var(--surface-sunk),var(--surface-elev),var(--surface-sunk));background-size:200% 100%;animation:shimmer 1.6s linear infinite}.attempt-row-skeleton .attempt-dot{background:var(--mastery-untouched)}.attempt-row-skeleton .attempt-stem{width:100%}.attempt-row-skeleton .attempt-meta{width:45%}@media (prefers-reduced-motion: reduce){.attempt-ghost{animation:none!important}}
