:root{--bg:#fff;--bg-soft:#f4f6f9;--text:#1b2330;--muted:#5b6676;--border:#d8dee8;--accent:#306998;--accent-contrast:#fff;--good:#1a7f37;--good-bg:#e6f6ea;--bad:#b42318;--bad-bg:#fdecea;--warn-bg:#fff6dd;--focus:#1f6feb;--radius:10px;--max:1200px;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--bg:#0f141b;--bg-soft:#18202b;--text:#e6ebf2;--muted:#9aa6b5;--border:#2b3645;--accent:#6cb4f0;--accent-contrast:#0b1118;--good:#5ad07a;--good-bg:#12301c;--bad:#ff8a80;--bad-bg:#3a1714;--warn-bg:#3a3014;--focus:#79b8ff}.astro-code,.astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-size:100%}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.6}a{color:var(--accent)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}code{background:var(--bg-soft);border-radius:4px;padding:.1em .35em}pre{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);white-space:pre-wrap;word-break:break-word;padding:.8rem 1rem;overflow-x:auto}pre code{background:0 0;padding:0}.astro-code{white-space:pre;word-break:normal}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{background:var(--accent);color:var(--accent-contrast);z-index:10;padding:.5rem 1rem;position:absolute;top:0;left:-999px}.skip-link:focus{left:0}.site-header,main,.site-footer{max-width:var(--max);margin:0 auto;padding-left:1.25rem;padding-right:1.25rem}.site-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;max-width:none;padding-top:1rem;padding-bottom:1rem;display:flex}.site-header nav{gap:1.25rem;display:flex}.brand{color:var(--text);font-size:1.15rem;font-weight:700;text-decoration:none}main{min-height:60vh;padding-top:1.5rem;padding-bottom:3rem}.site-footer{border-top:1px solid var(--border);color:var(--muted);padding-top:1rem;padding-bottom:2rem;font-size:.9rem}.muted{color:var(--muted)}.small{font-size:.875rem}.button{font:inherit;border:1px solid var(--border);background:var(--bg-soft);color:var(--text);cursor:pointer;border-radius:8px;padding:.5rem 1rem;font-weight:600;text-decoration:none;display:inline-block}.button:hover:not(:disabled){border-color:var(--accent)}.button:disabled{opacity:.55;cursor:not-allowed}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.button.large{padding:.75rem 1.4rem;font-size:1.1rem}.button.subtle{background:0 0}.button.danger{color:var(--bad);border-color:var(--bad);background:0 0}.row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.hero{padding:2rem 0 1rem}.hero h1{margin:0 0 .75rem;font-size:clamp(2rem,5vw,3.2rem);line-height:1.15}.lead{max-width:46rem;color:var(--muted);font-size:1.2rem}.cta{flex-wrap:wrap;align-items:center;gap:.75rem;margin:1.25rem 0 .5rem;display:flex}.steps{padding-left:1.25rem}.module{border:1px solid var(--border);border-radius:var(--radius);margin:1rem 0;padding:1rem 1.25rem}.module h3{margin:0}.module-number{color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin-right:.35rem;font-size:.85em}.lesson-list{margin:.5rem 0 0;padding:0;list-style:none}.lesson-list li{border-top:1px solid var(--border);align-items:baseline;gap:.6rem;padding:.35rem 0;display:flex}.lesson-list li:first-child{border-top:0}.lesson-list .check{width:1.2rem;color:var(--good);font-weight:700}.lesson-list .minutes{margin-left:auto;font-size:.85rem}.lesson-list li.done a{color:var(--muted)}.notice{min-height:1.5em}.notice.error{color:var(--bad)}.breadcrumb{color:var(--muted);margin-bottom:.5rem;font-size:.9rem}.lesson-layout{grid-template-columns:minmax(0,1fr);gap:2rem;display:grid}@media (width>=1000px){.lesson-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:start}.workspace{max-height:calc(100vh - 2rem);padding-right:.25rem;position:sticky;top:1rem;overflow-y:auto}}.lesson h1{margin-top:0}.prose h2{border-bottom:1px solid var(--border);margin-top:2rem;padding-bottom:.25rem}.prose table{border-collapse:collapse;margin:1rem 0}.prose th,.prose td{border:1px solid var(--border);text-align:left;padding:.35rem .8rem}.lesson-nav{border-top:1px solid var(--border);justify-content:space-between;gap:1rem;margin-top:2.5rem;padding-top:1rem;display:flex}.workspace h3{margin:1.25rem 0 .4rem;font-size:1rem}.editor{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.editor .cm-editor{min-height:14rem;font-size:.95rem}.editor .cm-scroller{overflow-x:hidden}.stdin-box{margin:.6rem 0}.stdin-box textarea{width:100%;font:inherit;background:var(--bg-soft);color:var(--text);border:1px solid var(--border);border-radius:8px;margin-top:.3rem;padding:.5rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:block}.buttons{margin-top:.75rem}.output{min-height:3rem;margin:0}.output.has-error{border-color:var(--bad);background:var(--bad-bg)}.banner{border-radius:var(--radius);border:1px solid var(--border);margin:1rem 0 .5rem;padding:.75rem 1rem}.banner[hidden]{display:none}.banner.success{background:var(--good-bg);border-color:var(--good)}.banner.try-again{background:var(--warn-bg)}.results{margin:.5rem 0;padding:0;list-style:none}.results li{border-left:4px solid var(--border);margin:.3rem 0;padding:.35rem .6rem}.results li.pass{border-color:var(--good)}.results li.fail{border-color:var(--bad)}.results li pre{margin:.4rem 0 0;font-size:.85em}.hints{padding-left:1.25rem}.hints:empty{display:none}.solution{margin-top:.75rem}[hidden]{display:none!important}.placement{max-width:46rem}.placement fieldset{border:0;margin:0;padding:0}.placement legend{margin-bottom:.5rem;font-weight:600}.q-code{margin:0 0 .75rem}.q-options{gap:.5rem;display:grid}.q-option{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;align-items:flex-start;gap:.6rem;padding:.55rem .75rem;display:flex}.q-option:focus-within{outline:2px solid var(--focus);outline-offset:2px}.q-option-text{white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.q-option.is-answer{border-color:var(--good);background:var(--good-bg)}.q-option.is-wrong{border-color:var(--bad);background:var(--bad-bg)}.review-missed{margin:.5rem 0 1rem}.fast-track .ft-row{border:1px solid var(--border,#d0d7de);border-radius:.5rem;margin:1rem 0;padding:.75rem 1rem}.fast-track .ft-row h3{margin-top:0}.fast-track .ft-code{margin:.5rem 0}.fast-track .ft-output{margin:.25rem 0 0}.fast-track .ft-result{margin-top:.25rem}.fast-track .ft-links a{margin-left:.5rem}.fast-track .ft-skip-list{columns:2 18rem}.module.track{border-left:3px solid var(--accent,#2563eb);padding-left:1rem}.badge{white-space:nowrap;border:1px solid;border-radius:999px;margin-left:.5rem;padding:.05rem .5rem;font-size:.75rem;display:inline-block}main:focus{outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media (forced-colors:active){.button,.badge,.banner,.notice{border:1px solid canvastext}.results li.pass:before,.results li.fail:before{forced-color-adjust:none}}@media (width<=640px){.site-header{flex-direction:column;align-items:flex-start;gap:.4rem}.site-header nav{flex-wrap:wrap;gap:0 1rem}main,.site-header,.site-footer{padding-left:1rem;padding-right:1rem}.module{padding:.75rem .9rem}.lesson-list li{flex-wrap:wrap}.lesson-nav{flex-direction:column;gap:.25rem}.buttons .button{text-align:center;flex:8rem}.prose table{display:block;overflow-x:auto}.editor .cm-editor,.stdin-box textarea{font-size:1rem}}@media (pointer:coarse){.site-header nav a,.lesson-list a,.lesson-nav a,.breadcrumb a,summary{min-height:44px;padding:0 .25rem;line-height:44px;display:inline-block}.lesson-list li{align-items:center;padding:0}.button{min-height:44px}}
