:root{--buncss-light:initial;--buncss-dark: ;color-scheme:light dark;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,"Helvetica Neue",Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,monospace;--bg:#f6f7f4;--surface:#fff;--surface-2:#eef1ec;--border:#e1e6df;--text:#17201b;--text-2:#4f5b54;--text-3:#6f7a73;--accent:#1f7a4d;--accent-strong:#17643e;--accent-soft:#e3f1e8;--on-accent:#fff;--good:#1f7a4d;--good-soft:#e3f1e8;--bad:#b3261e;--bad-soft:#fbe9e7;--warn:#8a5a00;--warn-soft:#fdf1d8;--yellow:#e0b100;--red:#d33b2c;--white-stake:#fff;--sand:#ead9a6;--fairway:#7cc08a;--rough:#4f9a5f;--green:#9bd9a4;--water:#6fb3e0;--radius:14px;--radius-sm:10px;--shadow:0 1px 2px #141e190d,0 4px 16px #141e190d;--focus:0 0 0 3px color-mix(in srgb,var(--accent)40%,transparent);--max:760px;--nav-h:64px}@media (prefers-color-scheme:dark){:root{--buncss-light: ;--buncss-dark:initial;--bg:#0e1310;--surface:#161d19;--surface-2:#1d2621;--border:#2a352f;--text:#e7ece8;--text-2:#b4bfb8;--text-3:#8d9992;--accent:#4cc387;--accent-strong:#6fd6a0;--accent-soft:#183526;--on-accent:#08130d;--good:#4cc387;--good-soft:#183526;--bad:#ff8a80;--bad-soft:#3a1b19;--warn:#f3c45b;--warn-soft:#3a2e12;--sand:#8f7f4f;--fairway:#3f7f4d;--rough:#2c5b37;--green:#4f9c5c;--water:#2f6e98;--white-stake:#e7ece8;--shadow:0 1px 2px #0000004d,0 4px 16px #00000040}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}body{font:16px/1.55 var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,h4{letter-spacing:-.01em;margin:0 0 .5em;line-height:1.25}h1{font-size:1.75rem}h2{font-size:1.3rem}h3{font-size:1.1rem}p{margin:0 0 1em}a{color:var(--accent);text-underline-offset:2px}a:hover{color:var(--accent-strong)}img,svg{max-width:100%}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:6px}.visually-hidden{position:absolute;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px}code{font-family:var(--mono);background:var(--surface-2);border-radius:5px;padding:.1em .35em;font-size:.9em}.shell{display:flex;flex-direction:column;min-height:100dvh}.topbar{position:sticky;z-index:20;display:flex;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));background:color-mix(in srgb,var(--bg)85%,transparent);backdrop-filter:saturate(1.4)blur(12px);-webkit-backdrop-filter:saturate(1.4)blur(12px);border-bottom:1px solid var(--border);align-items: center;gap:12px;top:0}.brand{display:flex;color:var(--text);text-decoration:none;align-items: center;gap:8px;font-size:1.05rem;font-weight:700}.brand svg{width:28px;height:28px}.topbar .spacer{flex:1}.topnav{display:none;gap:4px}.topnav a{color:var(--text-2);text-decoration:none;border-radius:999px;padding:8px 12px;font-weight:500}.topnav a[aria-current=page]{background:var(--accent-soft);color:var(--accent-strong)}.points-pill{display:inline-flex;background:var(--surface);border:1px solid var(--border);color:var(--text);text-decoration:none;border-radius:999px;align-items: center;gap:6px;padding:5px 10px;font-size:.9rem;font-weight:600}.account-link{display:inline-flex;background:var(--accent);color:var(--on-accent);text-decoration:none;border-radius:999px;align-items: center;gap:6px;padding:6px 12px;font-size:.9rem;font-weight:600}.account-link:hover{background:var(--accent-strong);color:var(--on-accent)}.account-link svg{width:16px;height:16px}.account-link[aria-current=page]{background:var(--accent-strong)}.lang-switch{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;padding:5px 10px;font-size:.85rem;font-weight:600}main.page{max-width:var(--max);padding:20px 16px calc(var(--nav-h) + 32px);flex:1;width:100%;margin:0 auto}.offline-banner{background:var(--warn-soft);color:var(--warn);text-align:center;padding:6px 12px;font-size:.9rem}.bottomnav{position:fixed;z-index:20;display:grid;grid-template-columns:repeat(5,1fr);height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb,var(--surface)92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border);bottom:0;left:0;right:0}.bottomnav a{display:flex;color:var(--text-3);text-decoration:none;flex-direction:column;justify-content:center;align-items: center;gap:2px;font-size:.75rem;font-weight:600}.bottomnav a svg{width:24px;height:24px}.bottomnav a[aria-current=page]{color:var(--accent)}.footer{max-width:var(--max);padding:24px 16px calc(var(--nav-h) + 24px);color:var(--text-3);text-align:center;margin:0 auto;font-size:.85rem}.footer nav{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 16px;margin-bottom:8px}.footer a{color:var(--text-2)}@media (min-width:820px){.topnav{display:flex}.bottomnav{display:none}main.page{padding-bottom:48px}.footer{padding-bottom:32px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card+.card,.stack>*+*{margin-top:12px}.grid{display:grid;gap:12px}@media (min-width:600px){.grid.two{grid-template-columns:1fr 1fr}.grid.three{grid-template-columns:repeat(3,1fr)}}.muted{color:var(--text-2)}.small{font-size:.875rem}.eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin-bottom:6px;font-size:.78rem;font-weight:700}.row{display:flex;align-items: center;gap:12px}.row.wrap{flex-wrap:wrap}.row .grow{flex:1;min-width:0}.hero{padding:8px 0 12px}.hero h1{font-size:1.9rem}.btn{display:inline-flex;background:var(--accent);color:var(--on-accent);text-decoration:none;cursor:pointer;border:1px solid #0000;border-radius:12px;justify-content:center;align-items: center;gap:8px;min-height:44px;padding:10px 18px;transition:transform 50ms,background .15s;font-weight:600}.btn:hover{background:var(--accent-strong);color:var(--on-accent)}.btn:active{transform:translateY(1px)}.btn.secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn.secondary:hover{background:var(--surface-2);color:var(--text)}.btn.ghost{color:var(--accent);background:0 0}.btn.danger{background:var(--bad);color:#fff}.btn.block{width:100%}.btn[disabled]{opacity:.5;cursor:not-allowed}.list-link{display:flex;text-decoration:none;color:var(--text);align-items: center;gap:14px;padding:14px 16px}.list-link:hover{background:var(--surface-2);color:var(--text)}.list{overflow:hidden;padding:0}.list>*+*{border-top:1px solid var(--border)}.icon-badge{background:var(--accent-soft);color:var(--accent-strong);display:grid;border-radius:12px;flex:none;place-items: center;width:42px;height:42px}.icon-badge svg{width:24px;height:24px}.chev{color:var(--text-3)}.meter{background:var(--surface-2);overflow:hidden;border-radius:99px;height:8px}.meter>span{display:block;background:var(--accent);border-radius:99px;height:100%}.badge{display:inline-block;background:var(--surface-2);color:var(--text-2);border-radius:99px;padding:2px 8px;font-size:.75rem;font-weight:700}.badge.good{background:var(--good-soft);color:var(--good)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.form{display:grid;gap:14px}.field{display:grid;gap:6px}.field label{font-size:.92rem;font-weight:600}.field input,.field select{border:1px solid var(--border);background:var(--surface);border-radius:10px;width:100%;min-height:46px;padding:10px 12px}.field input:focus{outline:none;box-shadow:var(--focus);border-color:var(--accent)}.field .hint{color:var(--text-3);font-size:.82rem}.alert{background:var(--surface-2);border-radius:10px;padding:12px 14px}.alert.error{background:var(--bad-soft);color:var(--bad)}.alert.success{background:var(--good-soft);color:var(--good)}.alert.info{background:var(--accent-soft);color:var(--accent-strong)}.question h2{font-size:1.15rem;font-weight:650}.options{display:grid;gap:10px;margin:16px 0}.option{display:flex;text-align:left;border:1.5px solid var(--border);background:var(--surface);cursor:pointer;border-radius:12px;align-items: flex-start;gap:12px;width:100%;padding:14px;line-height:1.4}.option:hover:not([disabled]){border-color:var(--accent)}.option .mark{border:2px solid var(--border);display:grid;border-radius:50%;flex:none;place-items: center;width:24px;height:24px;margin-top:-1px;font-size:.8rem;font-weight:700}.option.multi .mark{border-radius:6px}.option[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.option[aria-pressed=true] .mark{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.option.correct{border-color:var(--good);background:var(--good-soft)}.option.correct .mark{border-color:var(--good);background:var(--good);color:var(--on-accent)}.option.wrong{border-color:var(--bad);background:var(--bad-soft)}.option.wrong .mark{border-color:var(--bad);background:var(--bad);color:#fff}.option[disabled]{cursor:default}.feedback{border-radius:12px;margin:14px 0;padding:14px}.feedback.good{background:var(--good-soft)}.feedback.bad{background:var(--bad-soft)}.feedback strong{display:block;margin-bottom:4px}.question-actions{margin-top:14px}.sources{color:var(--text-3);font-size:.85rem}.progress-dots{display:flex;flex-wrap:wrap;gap:4px}.progress-dots span{background:var(--surface-2);border:1px solid var(--border);border-radius:50%;width:8px;height:8px}.progress-dots span.done{background:var(--accent);border-color:var(--accent)}.progress-dots span.wrong{background:var(--bad);border-color:var(--bad)}.progress-dots span.current{border:2px solid var(--accent)}.lesson{font-size:1.02rem}.lesson h2{margin-top:1.6em}.lesson h3{margin-top:1.3em;scroll-margin-top:80px}.lesson h3.target{animation:2s ease-out target-flash;border-radius:6px}@keyframes target-flash{0%{background:var(--accent-soft)}to{background:0 0}}.toc{background:var(--surface-2);border-radius:12px;margin:0 0 1.2em;padding:12px 16px}.toc strong{display:block;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:.85rem}.toc ol{margin:0;padding-left:1.3em}.toc li{margin:.2em 0}.teach-link{display:block;margin-top:10px;font-weight:600}.lesson ul,.lesson ol{margin:0 0 1em;padding-left:1.3em}.lesson li{margin:.3em 0}.callout{border-left:4px solid var(--accent);background:var(--accent-soft);border-radius:0 10px 10px 0;margin:0 0 1em;padding:12px 16px}.callout p:last-child{margin:0}.visual{margin:16px 0 20px}.visual figure{margin:0}.visual figcaption{color:var(--text-3);text-align:center;margin-top:6px;font-size:.85rem}.viz{display:block;background:var(--surface-2);border-radius:12px;width:100%;height:auto}.viz text{font-family:var(--font);fill:var(--text)}.viz-legend{display:flex;color:var(--text-2);flex-wrap:wrap;justify-content:center;gap:6px 14px;margin-top:8px;font-size:.82rem}.viz-legend i{display:inline-block;vertical-align:-1px;border-radius:3px;width:12px;height:12px;margin-right:5px}.stat{text-align:center}.stat .value{letter-spacing:-.02em;font-size:1.6rem;font-weight:750}.stat .label{color:var(--text-3);font-size:.82rem}.heatmap{display:grid;gap:8px}.heat-row{display:grid;grid-template-columns:1fr 120px 42px;align-items: center;gap:10px;font-size:.92rem}.heat-row .pct{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-2)}.toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + 20px);z-index:50;background:var(--text);color:var(--bg);box-shadow:var(--shadow);border-radius:12px;max-width:90vw;padding:10px 16px;font-weight:600;transform:translate(-50%)}@media (min-width:820px){.toast{bottom:24px}}.timer{font-variant-numeric:tabular-nums;font-weight:700}.timer.low{color:var(--bad)}.qnav{display:grid;grid-template-columns:repeat(auto-fill,minmax(36px,1fr));gap:6px}.qnav button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;height:36px;font-size:.85rem;font-weight:600}.qnav button.answered{background:var(--accent-soft);border-color:var(--accent)}.qnav button.current{box-shadow:var(--focus)}.qnav button.flagged{border-color:var(--warn);border-width:2px}.qnav button.good{background:var(--good-soft);border-color:var(--good)}.qnav button.bad{background:var(--bad-soft);border-color:var(--bad)}.disclaimer{color:var(--text-3);border:1px dashed var(--border);border-radius:10px;padding:8px 12px;font-size:.82rem}.scorecard{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.92rem}.scorecard th,.scorecard td{border:1px solid var(--border);text-align:center;padding:6px}.scorecard th{background:var(--surface-2);font-weight:600}.scorecard input{text-align:center;border:1px solid var(--border);background:var(--surface);border-radius:8px;width:44px;min-height:36px}.scorecard td.ok{background:var(--good-soft)}.scorecard td.no{background:var(--bad-soft)}.big-number{letter-spacing:-.03em;font-size:3rem;font-weight:800;line-height:1}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stats .card{margin-top:0;padding:14px 8px}.stats .value{font-size:1.3rem}.points-pill svg{color:var(--yellow);fill:var(--yellow);width:16px;height:16px}.viz-legend b{display:inline-grid;background:var(--accent);color:var(--on-accent);vertical-align:-3px;border-radius:50%;place-items: center;width:18px;height:18px;margin-right:5px;font-size:.7rem}.steps{list-style:none;margin:8px 0 0;padding:0}.step{position:relative;display:grid;grid-template-columns:32px 1fr;gap:12px;padding-bottom:16px}.step:not(:last-child):before{content:"";position:absolute;background:var(--border);width:2px;top:52px;bottom:-8px;left:15px}.step-num{display:grid;background:var(--surface-2);color:var(--text-3);border:2px solid var(--border);border-radius:50%;place-items: center;width:32px;height:32px;margin-top:14px;font-weight:700}.step-num svg{width:18px;height:18px}.step.current .step-num{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.step.done .step-num{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent-strong)}.step.current .step-body{border-color:var(--accent)}.step.todo .step-body{opacity:.85}.step-body>*+*{margin-top:12px}.step-body .list-link{border-radius:10px;padding:10px 4px}.lesson-footer{margin-top:16px}.read-status{white-space:nowrap}.read-status.all{color:var(--good);font-weight:600}.read-status svg{vertical-align:-2px;width:14px;height:14px;margin-right:3px}.home-hero{display:grid;gap:18px;padding:20px}.home-hero h1{margin-bottom:6px;font-size:1.9rem}.home-hero-text>*+*{margin-top:14px}.next-step{background:var(--accent-soft);border-radius:12px;padding:12px 14px}.next-step .eyebrow{color:var(--accent-strong)}.hero-viz{box-shadow:inset 0 0 0 1px var(--border)}.home-hero-art{order:-1;max-width:420px}@media (min-width:760px){.home-hero{grid-template-columns:1.1fr 1fr;align-items: center;padding:28px}.home-hero-art{order:0;max-width:none}}.home-section{margin-top:44px}.home-section>h2,.home-section>.row{margin-bottom:16px}.path{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:12px 6px;margin:0;padding:0}.path-item a{display:flex;text-decoration:none;color:var(--text-2);text-align:center;flex-direction:column;align-items: center;gap:6px}.path-dot{display:grid;background:var(--surface);border:2px solid var(--border);color:var(--text-3);border-radius:50%;place-items: center;width:46px;height:46px}.path-dot svg{width:22px;height:22px}.path-label{font-size:.72rem;font-weight:600;line-height:1.25}.path-item.started .path-dot{border-color:var(--accent);color:var(--accent-strong)}.path-item.done .path-dot{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.path-item.current .path-dot{box-shadow:0 0 0 4px var(--accent-soft);border-color:var(--accent);color:var(--accent-strong)}.path-item.current .path-label{color:var(--accent-strong)}.tiles{display:grid;gap:12px}@media (min-width:600px){.tiles{grid-template-columns:repeat(3,1fr)}}.tile{display:flex;text-decoration:none;color:var(--text);flex-direction:column;align-items: flex-start;gap:8px;margin-top:0!important}.tile:hover{border-color:var(--accent);color:var(--text)}.tile .btn{margin-top:4px}.btn.small{padding:8px 14px;font-size:.9rem}.btn.small svg{vertical-align:-2px;width:14px;height:14px}.code-input{letter-spacing:.3em;text-align:center;font-variant-numeric:tabular-nums;font-size:1.5rem}.linklike{font:inherit;color:var(--accent);text-decoration:underline;cursor:pointer;background:0 0;border:0;padding:0}.linklike:hover{color:var(--accent-strong)}
