html[data-skin=commit]{--c-bg:#111;--c-fg:#c8c8c8;--c-muted:#b4b4b4;--c-faint:#8c8c8c;--c-line:#444;--c-accent:#5ccf86;--c-danger:#e58b8b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){html[data-skin=commit]:not([data-theme=dark]){--c-bg:#aaa;--c-fg:#111;--c-muted:#222;--c-faint:#3d3d3d;--c-line:#7a7a7a;--c-accent:#0b5f27;--c-danger:#7d1717;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}html[data-skin=commit][data-theme=light]{--c-bg:#aaa;--c-fg:#111;--c-muted:#222;--c-faint:#3d3d3d;--c-line:#7a7a7a;--c-accent:#0b5f27;--c-danger:#7d1717;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html[data-skin=commit][data-skin]{--font-text:var(--font-mono);--header-h:48px;--keys-h:0px;--bg:var(--c-bg);--bg-hover:transparent;--code-bg:transparent;--line:var(--c-line);--line-strong:var(--c-fg);--fg:var(--c-fg);--fg-muted:var(--c-muted);--fg-faint:var(--c-faint);--middle:#555;--accent:var(--c-accent);--accent-dim:transparent;--info:var(--c-fg);--warn:var(--c-fg);--danger:var(--c-danger);--term-bg:var(--c-bg);--term-fg:var(--c-fg);--term-line:var(--c-line);--term-chrome:var(--c-fg);--bg25:repeating-conic-gradient(var(--c-fg) 0% 25%, transparent 0% 100%) 1px .5px / 2px 2px;--bg50:repeating-conic-gradient(var(--c-fg) 0% 25%, transparent 0% 50%, var(--c-fg) 0% 75%, transparent 0% 100%) 1px .5px / 2px 2px;--bg75:repeating-conic-gradient(transparent 0% 25%, var(--c-fg) 0% 100%) 1px .5px / 2px 2px;scrollbar-color:var(--middle) transparent}html[data-skin=commit] *{scrollbar-color:var(--middle) transparent}html[data-skin=commit] body{font-family:var(--font-mono);font-feature-settings:"ss01", "ss03", "ss04", "ss05";font-size:12px;line-height:16px}html[data-skin=commit] body :not(h1,h1 *,.xterm,.xterm *){font-size:12px}html[data-skin=commit] h1{margin:0 0 16px;font-size:24px;font-weight:400;line-height:32px}html[data-skin=commit] h2,html[data-skin=commit] h3,html[data-skin=commit] h4{margin:0 0 16px;font-weight:700;line-height:16px}html[data-skin=commit] p{margin:0 0 16px}html[data-skin=commit] .num{color:inherit;font-weight:inherit;margin-right:1ch}html[data-skin=commit] ::selection{background:var(--middle);color:var(--fg)}html[data-skin=commit] a,html[data-skin=commit] .btn,html[data-skin=commit] .theme-btn,html[data-skin=commit] .coach-close,html[data-skin=commit] .term-actions button,html[data-skin=commit] .idea{height:auto;color:var(--fg);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-underline-offset:.24ch;background:0 0;border:0;border-radius:0;padding:0;line-height:16px;text-decoration:underline;text-decoration-thickness:1px}html[data-skin=commit] a:hover,html[data-skin=commit] .btn:hover,html[data-skin=commit] .theme-btn:hover,html[data-skin=commit] .coach-close:hover,html[data-skin=commit] .term-actions button:hover,html[data-skin=commit] .idea:hover{background:var(--bg75);color:var(--bg);text-decoration:none}html[data-skin=commit] a:active,html[data-skin=commit] button:active{background:var(--bg50);color:var(--bg)}html[data-skin=commit] .btn-accent{font-weight:700}html[data-skin=commit] .btn:disabled{opacity:.33}html[data-skin=commit] :is(a,button,summary,code.runnable):focus-visible{background:var(--fg);color:var(--bg);outline:none;text-decoration:none;animation:50ms 2 skin-flicker}html[data-skin=commit] :not(pre)>code{color:inherit;box-shadow:inset 0 0 0 1px var(--line);background:0 0;border-radius:0;padding:0 .5ch}html[data-skin=commit] .prose code.runnable{color:var(--fg);box-shadow:inset 0 0 0 1px var(--fg)}html[data-skin=commit] .prose code.runnable:before{color:var(--accent)}html[data-skin=commit] .prose code.runnable:hover{background:var(--bg75);color:var(--bg)}html[data-skin=commit] .prose code.runnable:is(:hover,:focus-visible):before{color:inherit}html[data-skin=commit] pre{border:1px solid var(--fg);color:var(--fg);background:0 0;padding:8px 2ch;line-height:16px}html[data-skin=commit] kbd,html[data-skin=commit] .skin-key{border:1px solid var(--fg);min-width:0;color:inherit;border-bottom-width:2px;border-radius:0;padding:0 calc(.5ch - 1px);line-height:13px;display:inline-block}html[data-skin=commit] .prose{line-height:16px}html[data-skin=commit] .prose ul,html[data-skin=commit] .prose ol,html[data-skin=commit] .step-sequence,html[data-skin=commit] .quiz-solution{margin:0 0 16px;padding-left:3ch;list-style:none}html[data-skin=commit] .prose li,html[data-skin=commit] .step-sequence li,html[data-skin=commit] .quiz-solution li{margin:0 0 4px;position:relative}html[data-skin=commit] .prose ul>li:before{content:"•";position:absolute;left:-2ch}html[data-skin=commit] :is(.prose ol,.step-sequence,.quiz-solution){counter-reset:skin-ol}html[data-skin=commit] :is(.prose ol,.step-sequence,.quiz-solution)>li{counter-increment:skin-ol}html[data-skin=commit] :is(.prose ol,.step-sequence,.quiz-solution)>li:before{content:"#" counter(skin-ol);position:absolute;left:-3ch}html[data-skin=commit] .prose table,html[data-skin=commit] .cheatsheet,html[data-skin=commit] .ref-options{margin:0 0 16px}html[data-skin=commit] :is(.prose,.cheatsheet,.ref-options) :is(th,td){border-bottom:1px dotted var(--fg);padding:4px 2ch 4px 0}html[data-skin=commit] :is(.prose,.ref-options) th{color:var(--fg);font-weight:700}html[data-skin=commit] .prose blockquote{border-left:1px solid var(--fg);color:var(--fg);padding-left:2ch}html[data-skin=commit] .callout,html[data-skin=commit] .coach-tip,html[data-skin=commit] .quiz-result,html[data-skin=commit] .step-hint{border-left:1px solid var(--fg);padding:0 0 0 2ch}html[data-skin=commit] .callout-label{background:var(--fg);color:var(--bg);text-transform:uppercase;margin-right:1ch;padding:0 .5ch;font-weight:400}html[data-skin=commit] details>summary{width:-moz-fit-content;width:fit-content;color:var(--fg);cursor:pointer;margin-left:4ch;list-style:none;position:relative}html[data-skin=commit] details>summary::-webkit-details-marker{display:none}html[data-skin=commit] details>summary:before{content:"[+]";position:absolute;left:-4ch}html[data-skin=commit] details[open]>summary{background:var(--bg25)}html[data-skin=commit] details[open]>summary:before{content:"[-]"}html[data-skin=commit] .site-header{border-bottom:0;gap:4ch;padding:0 4ch}html[data-skin=commit] .brand{font-weight:700;text-decoration:none}html[data-skin=commit] .brand b{color:var(--accent)}html[data-skin=commit] .site-nav{counter-reset:skin-nav;gap:4ch}html[data-skin=commit] .site-nav a{counter-increment:skin-nav;text-transform:capitalize;text-decoration:none}html[data-skin=commit] .site-nav a:before{content:counter(skin-nav, decimal-leading-zero) " "}html[data-skin=commit] .site-nav a.active{background:var(--bg25)}html[data-skin=commit] .site-nav a.active:hover{background:var(--bg75)}html[data-skin=commit] .theme-btn{text-transform:capitalize}@media (max-width:640px){html[data-skin=commit] .site-header,html[data-skin=commit] .site-nav{gap:2ch}html[data-skin=commit] .site-header{padding:0 2ch}}html[data-skin=commit] .term-titlebar{border-bottom:0;height:32px;padding:0 4ch}html[data-skin=commit] .term-actions{gap:2ch}html[data-skin=commit] .term-body{padding-left:4ch}html[data-skin=commit] .mobile-keys{border-top:1px dotted var(--fg);gap:1ch}html[data-skin=commit] .mobile-keys button{border:1px solid var(--fg);color:var(--fg);border-bottom-width:2px;border-radius:0}html[data-skin=commit] .mobile-keys button.active{background:var(--fg);color:var(--bg);border-color:var(--fg)}html[data-skin=commit] .term-notice,html[data-skin=commit] .emulator-tip,html[data-skin=commit] .step-toast{border:1px solid var(--fg);background:var(--bg);color:var(--fg);padding:8px 2ch}html[data-skin=commit] .skin-keys{display:none}html[data-skin=commit]:has(.term-window){--keys-h:52px}html[data-skin=commit]:has(.term-window) .main-full{height:calc(100dvh - var(--header-h) - var(--keys-h))}html[data-skin=commit]:has(.term-window) .skin-keys{z-index:20;height:var(--keys-h);scrollbar-width:none;background:var(--bg);color:var(--fg);white-space:nowrap;gap:4ch;padding:4px 4ch 16px;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}html[data-skin=commit] .skin-key-group{flex-direction:column;justify-content:flex-end;display:flex}html[data-skin=commit] .skin-keycaps{gap:.5ch;margin-bottom:2px;display:flex}@media (max-width:900px),(pointer:coarse){html[data-skin=commit]:has(.term-window){--keys-h:0px}html[data-skin=commit]:has(.term-window) .skin-keys{display:none}}html[data-skin=commit] .page{max-width:132ch;margin:0;padding:48px 4ch 96px}html[data-skin=commit] .page-head{margin-bottom:32px}html[data-skin=commit] .page-head p,html[data-skin=commit] .index-intro{max-width:54ch;color:var(--fg)}html[data-skin=commit] #main>:before{content:"";z-index:15;background:var(--bg);pointer-events:none;animation:.44s steps(10,start) forwards skin-curtain;position:fixed;inset:0}@media (prefers-reduced-motion:reduce){html[data-skin=commit] #main>:before{display:none}html[data-skin=commit] :focus-visible{animation:none}}@keyframes skin-curtain{99.9%{visibility:visible}to{visibility:hidden;transform:translateY(100%)}}@keyframes skin-flicker{0%,49%{opacity:0}50%,to{opacity:1}}@keyframes skin-blink{50%{opacity:0}}html[data-skin=commit] .index-status{color:var(--fg);gap:8px 4ch;margin-bottom:48px}html[data-skin=commit] .module{margin-bottom:48px}html[data-skin=commit] .module-head{border:0;margin-bottom:8px;padding:0;display:block}html[data-skin=commit] .module-head h2{margin:0}html[data-skin=commit] .module-head p{color:var(--fg-muted)}html[data-skin=commit] .lesson-row{border:0;gap:2ch;padding:2px 0;text-decoration:none}html[data-skin=commit] .lesson-row .title{-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-underline-offset:.24ch;text-decoration:underline}html[data-skin=commit] .lesson-row .summary,html[data-skin=commit] .lesson-row .mins,html[data-skin=commit] .lesson-row .state{color:var(--fg-muted);white-space:nowrap}html[data-skin=commit] .lesson-row .state.done{color:var(--accent)}html[data-skin=commit] .lesson-row:hover,html[data-skin=commit] .lesson-row:hover :is(.num,.summary,.mins,.state){color:var(--bg)}html[data-skin=commit] .lesson-row:hover .title{text-decoration:none}html[data-skin=commit] .lesson-layout{grid-template-columns:clamp(320px,42%,76ch) minmax(0,1fr)}html[data-skin=commit] .lesson-panel{border-right:1px dotted var(--fg);padding:24px 4ch 64px}html[data-skin=commit] .lesson-crumbs{margin-bottom:24px}html[data-skin=commit] .lesson-title{margin-bottom:8px}html[data-skin=commit] .lesson-meta{color:var(--fg);gap:2ch;margin-bottom:32px}html[data-skin=commit] .progress{background:var(--bg25);height:8px}html[data-skin=commit] .progress-bar{background:var(--accent);transition:width .44s steps(10,end)}html[data-skin=commit] .steps-heading{border-bottom:1px dotted var(--fg);color:var(--fg);margin:48px 0 16px;padding-bottom:8px;font-weight:700}html[data-skin=commit] .lesson-intro>*+*{margin-top:0}html[data-skin=commit] .lesson-intro :is(pre,table,.callout){margin-bottom:24px}html[data-skin=commit] .lesson-intro :is(h2,h3){margin-top:32px}html[data-skin=commit] .step{background:0 0;border:0;grid-template-columns:4ch minmax(0,1fr);gap:0;padding:8px 0}html[data-skin=commit] .step-marker{width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;color:var(--fg);padding:0;line-height:16px}html[data-skin=commit] .step-title{font-weight:700;line-height:16px}html[data-skin=commit] .step.todo{opacity:.5}html[data-skin=commit] .step.done .step-title{color:var(--fg);font-weight:400}html[data-skin=commit] .step.current{background:0 0;padding:16px 0}html[data-skin=commit] .step.current .step-marker,html[data-skin=commit] .quiz-q.current .quiz-num{background:var(--fg);color:var(--bg);padding:0 .5ch}html[data-skin=commit] .step.just-done{animation:.1s 3 skin-flicker}html[data-skin=commit] .step .prose{margin-top:8px}html[data-skin=commit] .step-explain{color:var(--fg-muted)}html[data-skin=commit] .step-actions{gap:2ch;margin-top:16px}html[data-skin=commit] .coach-tip{margin-top:16px}html[data-skin=commit] .coach-head strong{color:var(--fg)}html[data-skin=commit] .lesson-complete{border-top:1px dotted var(--fg);margin-top:48px;padding-top:16px}html[data-skin=commit] .complete-label{background:var(--accent);width:-moz-fit-content;width:fit-content;color:var(--bg);text-transform:uppercase;margin-bottom:16px;padding:0 .5ch}html[data-skin=commit] .real-world summary{color:var(--fg)}html[data-skin=commit] .lesson-nav{border-top:1px dotted var(--fg);margin-top:48px;padding-top:16px}html[data-skin=commit] .quiz-intro p{color:var(--fg)}html[data-skin=commit] .quiz-buttons{gap:2ch}html[data-skin=commit] .quiz-q{border:0;border-bottom:1px dotted var(--line);padding:16px 0}html[data-skin=commit] .quiz-q.current{background:0 0;padding-right:0}html[data-skin=commit] .quiz-q.upcoming{opacity:.5;border:0;padding:4px 0}html[data-skin=commit] :is(.quiz-prompt,.quiz-q.upcoming){grid-template-columns:4ch minmax(0,1fr)}html[data-skin=commit] .quiz-num{width:-moz-fit-content;width:fit-content;height:-moz-fit-content;height:fit-content;color:var(--fg);padding:0;line-height:16px}html[data-skin=commit] :is(.quiz-options,.quiz-result,.quiz-waiting,.quiz-q .step-actions,.quiz-q .step-hint){margin-left:4ch}html[data-skin=commit] .quiz-waiting{color:var(--fg)}html[data-skin=commit] .quiz-waiting span:after{content:" █";animation:1s step-end infinite skin-blink}html[data-skin=commit] .quiz-options{gap:8px;margin-top:16px}html[data-skin=commit] .quiz-option{width:-moz-fit-content;width:fit-content;color:var(--fg);background:0 0;border:0;border-radius:0;padding:0;line-height:16px;position:relative}html[data-skin=commit] .quiz-option>:last-child{-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-underline-offset:.24ch;text-decoration:underline}html[data-skin=commit] .quiz-option:hover:not(:disabled){background:var(--bg50);color:var(--bg)}html[data-skin=commit] .quiz-option:hover:not(:disabled)>:last-child{text-decoration:none}html[data-skin=commit] .quiz-option:hover:not(:disabled):before{content:"→";color:var(--fg);position:absolute;left:-2ch}html[data-skin=commit] .quiz-option:disabled{color:var(--fg);opacity:.5}html[data-skin=commit] .quiz-option:disabled>:last-child{text-decoration:none}html[data-skin=commit] .quiz-option.right,html[data-skin=commit] .quiz-option.wrong{opacity:1}html[data-skin=commit] .quiz-option.right{font-weight:700}html[data-skin=commit] .quiz-option.right:after,html[data-skin=commit] .quiz-option.wrong:after{content:"✓";color:var(--accent);position:absolute;top:0;left:calc(100% + 1ch)}html[data-skin=commit] .quiz-option.wrong>:last-child{text-decoration:line-through}html[data-skin=commit] .quiz-option.wrong:after{content:"✗";color:var(--danger)}html[data-skin=commit] .quiz-letter,html[data-skin=commit] .quiz-option.right .quiz-letter,html[data-skin=commit] .quiz-option.wrong .quiz-letter{color:inherit}html[data-skin=commit] .quiz-result{margin-top:16px}html[data-skin=commit] .quiz-verdict{color:var(--accent);margin-bottom:4px;font-weight:700}html[data-skin=commit] .quiz-result.wrong .quiz-verdict{color:var(--danger)}html[data-skin=commit] .quiz-result.revealed .quiz-verdict,html[data-skin=commit] .quiz-solution-label{color:var(--fg)}html[data-skin=commit] .quiz-score{color:var(--fg);gap:2ch;margin-top:16px}html[data-skin=commit] .quiz-score>span{font-weight:700}@media (max-width:900px){html[data-skin=commit] .lesson-layout{grid-template-columns:1fr}html[data-skin=commit] .lesson-panel{border-right:0;padding:16px 2ch 48px}html[data-skin=commit] .lesson-tabs{border-bottom:1px dotted var(--fg)}html[data-skin=commit] .lesson-tabs button{color:var(--fg);text-transform:capitalize;border:0}html[data-skin=commit] .lesson-tabs button.active{background:var(--bg25)}}html[data-skin=commit] .emulator-bar{border-bottom:1px dotted var(--fg);color:var(--fg);gap:4ch;padding:8px 4ch}html[data-skin=commit] .ideas{gap:2ch}@media (max-width:640px){html[data-skin=commit] .emulator-tip{bottom:64px}}html[data-skin=commit] .search{border:1px solid var(--fg);gap:1ch;max-width:54ch;margin-bottom:32px;padding:0 1ch}html[data-skin=commit] .search:before{color:var(--fg)}html[data-skin=commit] .search input{padding:4px 0}html[data-skin=commit] .search input::placeholder{color:var(--fg-faint)}html[data-skin=commit] .ref-layout{grid-template-columns:26ch minmax(0,1fr);gap:4ch}html[data-skin=commit] .ref-toc{gap:4px}html[data-skin=commit] .ref-toc a{justify-content:flex-start;gap:1ch;width:-moz-fit-content;width:fit-content}html[data-skin=commit] .ref-toc a .faint{color:inherit}html[data-skin=commit] .ref-group{margin-bottom:48px}html[data-skin=commit] .ref-group h2{border-bottom:1px dotted var(--fg);color:var(--fg);margin-bottom:8px;padding-bottom:8px;font-weight:700}html[data-skin=commit] .ref-item{border:0}html[data-skin=commit] .ref-summary{grid-template-columns:14ch minmax(0,1fr) auto;gap:2ch;padding:2px 0;line-height:16px}html[data-skin=commit] .ref-name{color:var(--fg);-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-underline-offset:.24ch;text-decoration:underline}html[data-skin=commit] .ref-desc,html[data-skin=commit] .ref-tag{color:var(--fg-muted)}html[data-skin=commit] .ref-summary:hover{background:var(--bg75)}html[data-skin=commit] .ref-summary:hover :is(.ref-name,.ref-desc,.ref-tag){color:var(--bg);text-decoration:none}html[data-skin=commit] .ref-item.open .ref-summary{background:var(--bg25)}html[data-skin=commit] .ref-item.open .ref-summary:hover{background:var(--bg75)}html[data-skin=commit] .ref-body{padding:16px 0 32px 2ch}html[data-skin=commit] .ref-note,html[data-skin=commit] .ref-see,html[data-skin=commit] .ref-examples h3,html[data-skin=commit] .ref-options th{color:var(--fg)}html[data-skin=commit] .ref-example{gap:2ch}@font-face{font-family:Commit Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2)format("woff2"),url(/assets/commit-mono-latin-400-normal-s0S3qwFW.woff)format("woff")}@font-face{font-family:Commit Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/commit-mono-latin-600-normal-SwgSWHaV.woff2)format("woff2"),url(/assets/commit-mono-latin-600-normal-BuQDXT0M.woff)format("woff")}@font-face{font-family:Commit Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/commit-mono-latin-700-normal-DU8mrtj2.woff2)format("woff2"),url(/assets/commit-mono-latin-700-normal-1-GU0IUE.woff)format("woff")}:root{--font-text:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"Commit Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--header-h:40px;--bg:#0c0c0c;--bg-hover:#161616;--code-bg:#181818;--line:#262626;--line-strong:#383838;--fg:#f5f5f5;--fg-muted:#b4b4b4;--fg-faint:#7d7d7d;--accent:#4cd97b;--accent-dim:#4cd97b21;--info:#6cb2ff;--warn:#e5b94e;--danger:#ff7a7a;--term-bg:#0c0c0c;--term-fg:#f5f5f5;--term-line:#262626;--term-chrome:#858585;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#fff;--bg-hover:#f3f3f3;--code-bg:#f0f0f0;--line:#e0e0e0;--line-strong:#cacaca;--fg:#1a1a1a;--fg-muted:#505050;--fg-faint:#7c7c7c;--accent:#13803f;--accent-dim:#13803f1a;--info:#1f6fd1;--warn:#9a6400;--danger:#c43c3c;--term-bg:#fff;--term-fg:#1f1f1f;--term-line:#e0e0e0;--term-chrome:#7c7c7c;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}:root[data-theme=light]{--bg:#fff;--bg-hover:#f3f3f3;--code-bg:#f0f0f0;--line:#e0e0e0;--line-strong:#cacaca;--fg:#1a1a1a;--fg-muted:#505050;--fg-faint:#7c7c7c;--accent:#13803f;--accent-dim:#13803f1a;--info:#1f6fd1;--warn:#9a6400;--danger:#c43c3c;--term-bg:#fff;--term-fg:#1f1f1f;--term-line:#e0e0e0;--term-chrome:#7c7c7c;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 12px);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}body{background:var(--bg);color:var(--fg);font-family:var(--font-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:15px;line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:var(--font-mono);margin:0 0 .6em;font-weight:600;line-height:1.35}h1{font-size:19px}h2{font-size:15px}h3{font-size:14px}p{margin:0 0 1em}code,kbd,pre{font-family:var(--font-mono);font-size:.88em}:not(pre)>code{background:var(--code-bg);color:var(--fg);white-space:nowrap;border-radius:2px;padding:.1em .35em}pre{background:var(--term-bg);color:var(--term-fg);border:1px solid var(--term-line);margin:0 0 1em;padding:10px 12px;line-height:1.5;overflow-x:auto}kbd{text-align:center;min-width:1.5em;color:var(--fg);border:1px solid var(--line-strong);white-space:nowrap;border-bottom-width:2px;border-radius:2px;padding:0 .4em;font-size:.82em;line-height:1.55;display:inline-block}::selection{background:var(--accent-dim)}:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;top:0;left:0;overflow:hidden;position:absolute!important}.skip-link{z-index:100;background:var(--accent);color:var(--bg);font-family:var(--font-mono);padding:4px 10px;font-size:13px;position:absolute;top:6px;left:-999px}.skip-link:focus{left:6px}.muted{color:var(--fg-muted)}.faint{color:var(--fg-faint)}.btn{font-family:var(--font-mono);color:var(--fg-muted);border:1px solid var(--line-strong);cursor:pointer;white-space:nowrap;background:0 0;border-radius:2px;align-items:center;gap:6px;padding:3px 10px;font-size:12.5px;line-height:1.5;text-decoration:none;display:inline-flex}.btn:hover{color:var(--fg);border-color:var(--fg-faint);text-decoration:none}.btn:disabled{opacity:.5;cursor:default}.btn-accent{color:var(--accent);border-color:var(--accent)}.btn-accent:hover{color:var(--accent);background:var(--accent-dim);border-color:var(--accent)}.search{border:1px solid var(--line-strong);font-family:var(--font-mono);align-items:center;gap:10px;margin:0 0 18px;padding:0 10px;font-size:13px;display:flex}.search:focus-within{border-color:var(--accent)}.search:before{content:"/";color:var(--fg-faint)}.search input{min-width:0;color:var(--fg);font:inherit;background:0 0;border:0;outline:0;flex:1;padding:7px 0}.site-header{z-index:20;height:var(--header-h);background:var(--bg);border-bottom:1px solid var(--line);font-family:var(--font-mono);align-items:center;gap:22px;padding:0 16px;font-size:13px;display:flex;position:sticky;top:0}.brand{color:var(--fg);white-space:nowrap;font-weight:700}.brand:hover{text-decoration:none}.brand b{color:var(--accent)}.site-nav{scrollbar-width:none;gap:18px;min-width:0;display:flex;overflow-x:auto}.site-nav a{color:var(--fg-muted);white-space:nowrap;border-bottom:1px solid #0000;padding:2px 0}.site-nav a:hover{color:var(--fg);text-decoration:none}.site-nav a.active{color:var(--fg);border-bottom-color:var(--accent)}.theme-btn{color:var(--fg-faint);font:inherit;cursor:pointer;background:0 0;border:0;margin-left:auto;padding:2px 0}.theme-btn:hover{color:var(--fg)}@media (max-width:640px){.site-header{gap:10px;padding:0 10px;font-size:12px}.brand-long{display:none}.site-nav{gap:10px}}@media (min-width:641px){.brand-short{display:none}}.term-window{background:var(--term-bg);flex-direction:column;height:100%;min-height:0;display:flex}.term-titlebar{border-bottom:1px solid var(--term-line);height:30px;color:var(--term-chrome);font-family:var(--font-mono);-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:12px;padding:0 8px 0 12px;font-size:12px;display:flex}.term-actions{gap:2px;margin-left:auto;display:flex}.term-actions button{height:22px;color:var(--term-chrome);font:inherit;cursor:pointer;background:0 0;border:0;padding:0 7px}.term-actions button:hover{color:var(--term-fg);background:var(--bg-hover)}.term-body{box-sizing:content-box;flex:1;min-height:0;padding:8px 4px 12px 12px;overflow:hidden}.term-body .xterm{height:100%}.term-body .xterm-viewport{background-color:var(--term-bg)!important}.mobile-keys{border-top:1px solid var(--term-line);flex:none;gap:4px;padding:6px 8px;display:flex;overflow-x:auto}.mobile-keys button{border:1px solid var(--line-strong);min-width:38px;height:32px;color:var(--term-fg);font-family:var(--font-mono);background:0 0;border-radius:2px;flex:none;padding:0 9px;font-size:13px}.mobile-keys button.active{background:var(--accent);color:var(--bg);border-color:var(--accent)}.page{max-width:920px;margin:0 auto;padding:28px 20px 64px}.page-head{margin-bottom:20px}.page-head h1{margin-bottom:4px}.page-head p{color:var(--fg-muted);margin:0}.page-loading{color:var(--fg-faint);font-family:var(--font-mono);padding:40px 20px;font-size:13px}.callout{border-left:2px solid var(--info);margin:0 0 1em;padding:2px 0 2px 12px}.callout p:last-child{margin-bottom:0}.callout-label{font-family:var(--font-mono);color:var(--info);margin-right:4px;font-size:12.5px;font-weight:600}.callout-tip{border-left-color:var(--accent)}.callout-tip .callout-label{color:var(--accent)}.callout-warn{border-left-color:var(--warn)}.callout-warn .callout-label{color:var(--warn)}.callout-danger{border-left-color:var(--danger)}.callout-danger .callout-label{color:var(--danger)}.callout-how{border-left-color:var(--line-strong)}.callout-how .callout-label{color:var(--fg-muted)}.prose{line-height:1.65}.prose h2{margin-top:1.5em}.prose h3{margin-top:1.3em}.prose ul,.prose ol{margin:0 0 1em;padding-left:1.3em}.prose li{margin:.2em 0}.prose table{border-collapse:collapse;width:100%;margin:0 0 1em;font-size:14px}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:5px 10px 5px 0}.prose th{color:var(--fg-faint);font-family:var(--font-mono);font-size:12px;font-weight:500}.prose td code{white-space:nowrap}.prose pre code{color:inherit;background:0 0;padding:0}.prose blockquote{border-left:2px solid var(--line-strong);color:var(--fg-muted);margin:0 0 1em;padding:0 0 0 12px}.prose code.runnable{cursor:pointer;color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-dim)}.prose code.runnable:hover{background:var(--accent-dim)}.prose code.runnable:before{content:"$ ";color:var(--fg-faint)}.main-full{height:calc(100dvh - var(--header-h))}.index-intro{max-width:68ch;color:var(--fg-muted)}.index-status{font-family:var(--font-mono);color:var(--fg-faint);flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 0 30px;font-size:13px;display:flex}.module{margin-bottom:28px}.module-head{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding-bottom:6px;display:flex}.module-head h2{margin:0}.module-head p{color:var(--fg-faint);margin:0;font-size:13.5px}.num{color:var(--fg-faint);font-family:var(--font-mono);margin-right:8px;font-weight:400}.lesson-list{margin:0;padding:0;list-style:none}.lesson-row{border-bottom:1px solid var(--line);color:var(--fg);font-family:var(--font-mono);grid-template-columns:3ch 36ch minmax(0,1fr) 6ch 5ch;align-items:baseline;gap:1.5ch;padding:6px 4px;font-size:13.5px;display:grid}.lesson-row:hover{background:var(--bg-hover);text-decoration:none}.lesson-row .num{margin:0;font-size:13px}.lesson-row .summary{text-overflow:ellipsis;white-space:nowrap;color:var(--fg-faint);font-family:var(--font-text);overflow:hidden}.lesson-row .mins,.lesson-row .state{font-family:var(--font-mono);color:var(--fg-faint);text-align:right;font-size:12.5px}.lesson-row .state.done{color:var(--accent)}@media (max-width:760px){.lesson-row{grid-template-columns:3ch minmax(0,1fr) 5ch}.lesson-row .summary,.lesson-row .mins{display:none}}.lesson-layout{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(340px,42%) minmax(0,1fr);height:100%;display:grid}.lesson-tabs{display:none}.lesson-panel{border-right:1px solid var(--line);padding:18px 24px 40px;scroll-padding:20px;overflow-y:auto}.lesson-term{min-width:0;min-height:0;position:relative}.lesson-crumbs{font-family:var(--font-mono);justify-content:space-between;gap:10px;margin-bottom:14px;font-size:12.5px;display:flex}.lesson-crumbs a{color:var(--fg-muted)}.lesson-title{margin-bottom:6px}.lesson-meta{font-family:var(--font-mono);color:var(--fg-faint);align-items:center;gap:12px;margin-bottom:18px;font-size:12.5px;display:flex}.progress{background:var(--line);flex:1;min-width:40px;height:2px}.progress-bar{background:var(--accent);height:100%;transition:width .3s}.steps-heading{border-bottom:1px solid var(--line);color:var(--fg-faint);margin:40px 0 10px;padding-bottom:6px;font-weight:400}.steps{margin:0;padding:0;list-style:none}.lesson-intro>*+*{margin-top:.3em}.lesson-intro pre,.lesson-intro table,.lesson-intro .callout{margin-bottom:1.5em}.lesson-intro h2,.lesson-intro h3{margin-top:2em}.step{border-left:2px solid #0000;grid-template-columns:2.6em minmax(0,1fr);gap:6px;padding:8px 0 8px 2px;display:grid}.step-marker{font-family:var(--font-mono);color:var(--fg-faint);padding-left:6px;font-size:12.5px;line-height:1.75}.step-title{margin:0;font-size:13.5px;line-height:1.75}.step.todo .step-title{color:var(--fg-faint);font-weight:400}.step.current{border-left-color:var(--accent);background:var(--bg-hover);padding-bottom:12px}.step.current .step-marker,.step.done .step-marker{color:var(--accent)}.step.done .step-title{color:var(--fg-muted);font-weight:400}.step .prose{margin-top:6px;padding-right:10px}.step .prose p:last-child{margin-bottom:0}.step-explain{color:var(--fg-muted);font-size:14px}.step-actions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.step-actions .skip{margin-left:auto;margin-right:10px}.step-hint{border-left:2px solid var(--line-strong);margin:10px 10px 0 0;padding-left:12px;font-size:14px}.step-sequence{margin:10px 0 0;padding-left:1.4em;font-size:14px}.coach-tip{border-left:2px solid var(--danger);margin:12px 10px 0 0;padding:2px 0 2px 12px;font-size:14px}.coach-tip.info{border-left-color:var(--info)}.coach-head{font-family:var(--font-mono);justify-content:space-between;align-items:baseline;gap:10px;font-size:12.5px;display:flex}.coach-tip.error .coach-head strong{color:var(--danger)}.coach-tip.info .coach-head strong{color:var(--info)}.coach-title{margin:2px 0;font-weight:600}.coach-close{color:var(--fg-faint);font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.coach-close:hover{color:var(--fg)}.lesson-complete{border-top:1px solid var(--accent);margin-top:32px;padding-top:14px}.complete-label{font-family:var(--font-mono);color:var(--accent);margin-bottom:10px;font-size:13px}.cheatsheet{border-collapse:collapse;width:100%;margin:4px 0 16px;font-size:14px}.cheatsheet td{border-bottom:1px solid var(--line);vertical-align:top;padding:4px 12px 4px 0}.cheatsheet td:first-child{white-space:nowrap;width:1%}.real-world{margin:0 0 16px;font-size:14px}.real-world summary{cursor:pointer;font-family:var(--font-mono);color:var(--fg-muted);font-size:13px}.real-world[open] summary{margin-bottom:8px}.quiz{margin-top:8px}.quiz-list{margin:0;padding:0;list-style:none}.quiz-intro p{color:var(--fg-muted);font-size:14px}.quiz-buttons{gap:8px;display:flex}.quiz-q{border-bottom:1px solid var(--line);border-left:2px solid #0000;padding:12px 0}.quiz-q.current{border-left-color:var(--accent);background:var(--bg-hover);padding-right:10px}.quiz-q.upcoming{font-family:var(--font-mono);grid-template-columns:2.6em minmax(0,1fr);padding:6px 0;font-size:12.5px;display:grid}.quiz-q .step-actions,.quiz-q .step-hint{margin-left:2.6em}.quiz-waiting{font-family:var(--font-mono);color:var(--accent);align-items:center;gap:10px;margin:10px 0 0 2.6em;font-size:12.5px;display:flex}.quiz-solution{margin:4px 0 0;padding-left:1.4em}.quiz-solution-label{font-family:var(--font-mono);color:var(--fg-muted);margin:0;font-size:12.5px}.quiz-tip-title{margin:4px 0 2px;display:block}.mobile-only{display:none}@media (max-width:900px){.mobile-only{display:inline-flex}}.quiz-prompt{grid-template-columns:2.6em minmax(0,1fr);display:grid}.quiz-num{font-family:var(--font-mono);color:var(--fg-faint);padding-left:8px;font-size:12.5px;line-height:1.75}.quiz-prompt .prose p:last-child,.quiz-result .prose p:last-child{margin-bottom:0}.quiz-options{flex-direction:column;gap:4px;margin:10px 0 0 2.6em;display:flex}.quiz-option{border:1px solid var(--line-strong);color:var(--fg);font:inherit;text-align:left;cursor:pointer;background:0 0;border-radius:2px;grid-template-columns:2.5ch minmax(0,1fr);gap:1ch;padding:5px 10px;font-size:14px;line-height:1.5;display:grid}.quiz-option:hover:not(:disabled){border-color:var(--fg-faint);background:var(--bg-hover)}.quiz-option:disabled{cursor:default;color:var(--fg-muted)}.quiz-option.right{border-color:var(--accent);color:var(--fg)}.quiz-option.wrong{border-color:var(--danger);color:var(--fg)}.quiz-letter{font-family:var(--font-mono);color:var(--fg-faint);font-size:12.5px}.quiz-option.right .quiz-letter{color:var(--accent)}.quiz-option.wrong .quiz-letter{color:var(--danger)}.quiz-result{border-left:2px solid var(--accent);margin:10px 0 0 2.6em;padding-left:12px;font-size:14px}.quiz-result.wrong{border-left-color:var(--danger)}.quiz-result.revealed{border-left-color:var(--line-strong)}.quiz-result.revealed .quiz-verdict{color:var(--fg-muted)}.quiz-verdict{font-family:var(--font-mono);color:var(--accent);margin-bottom:2px;font-size:12.5px;display:block}.quiz-result.wrong .quiz-verdict{color:var(--danger)}.quiz-score{font-family:var(--font-mono);color:var(--fg-faint);align-items:center;gap:12px;margin-top:12px;font-size:12.5px;display:flex}.lesson-next{margin-top:28px}.lesson-nav{border-top:1px solid var(--line);font-family:var(--font-mono);justify-content:space-between;gap:16px;margin-top:40px;padding-top:12px;font-size:12.5px;display:flex}.lesson-nav a{color:var(--fg-muted)}.lesson-nav a:hover{color:var(--fg)}.term-notice{border:1px solid var(--line-strong);background:var(--term-bg);color:var(--term-fg);font-family:var(--font-mono);padding:4px 10px;font-size:12.5px;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.step-toast{display:none}@media (max-width:900px){.lesson-layout{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.lesson-tabs{border-bottom:1px solid var(--line);display:flex}.lesson-tabs button{color:var(--fg-muted);font-family:var(--font-mono);background:0 0;border:0;border-bottom:1px solid #0000;flex:1;padding:7px;font-size:13px}.lesson-tabs button.active{color:var(--fg);border-bottom-color:var(--accent)}.lesson-panel,.lesson-term{grid-area:2/1}.lesson-panel{border-right:0;padding:16px 14px 36px}.show-lesson .lesson-term{visibility:hidden;pointer-events:none}.show-terminal .lesson-panel{display:none}.step-toast{z-index:30;border:1px solid var(--accent);background:var(--term-bg);color:var(--term-fg);font-family:var(--font-mono);text-align:left;padding:8px 12px;font-size:12.5px;display:block;position:fixed;bottom:10px;left:10px;right:10px}}.emulator{flex-direction:column;height:100%;display:flex;position:relative}.emulator-bar{border-bottom:1px solid var(--line);font-family:var(--font-mono);color:var(--fg-faint);white-space:nowrap;scrollbar-width:none;align-items:center;gap:14px;padding:6px 12px;font-size:12.5px;display:flex;overflow-x:auto}.ideas{align-items:center;gap:6px;display:flex}.idea{border:1px solid var(--line-strong);color:var(--fg-muted);font:inherit;cursor:pointer;background:0 0;border-radius:2px;padding:1px 8px}.idea:hover{color:var(--accent);border-color:var(--accent)}.emulator-term{flex:1;min-height:0}.emulator-tip{z-index:5;border:1px solid var(--line-strong);background:var(--bg);border-left-width:2px;max-width:420px;margin:0;padding:8px 12px;position:absolute;bottom:20px;right:20px}.emulator-tip.error{border-left-color:var(--danger)}.emulator-tip.info{border-left-color:var(--info)}@media (max-width:640px){.emulator-tip{bottom:64px;left:10px;right:10px}}.ref-layout{grid-template-columns:215px minmax(0,1fr);align-items:start;gap:28px;display:grid}.ref-toc{top:calc(var(--header-h) + 16px);font-family:var(--font-mono);flex-direction:column;font-size:12.5px;display:flex;position:sticky}.ref-toc a{color:var(--fg-muted);justify-content:space-between;gap:8px;padding:3px 0;display:flex}.ref-toc a:hover{color:var(--fg);text-decoration:none}.ref-group{margin-bottom:26px}.ref-group h2{border-bottom:1px solid var(--line);color:var(--fg-muted);margin:0;padding-bottom:6px;font-weight:400}.ref-item{border-bottom:1px solid var(--line)}.ref-summary{width:100%;color:var(--fg);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:9em minmax(0,1fr) auto;align-items:baseline;gap:12px;padding:5px 4px;display:grid}.ref-summary:hover{background:var(--bg-hover)}.ref-name{font-family:var(--font-mono);color:var(--accent);font-size:13.5px}.ref-desc{color:var(--fg-muted);font-size:14px}.ref-tag{font-family:var(--font-mono);color:var(--fg-faint);font-size:12px}.ref-body{padding:4px 4px 16px;font-size:14px}.ref-body pre{margin-top:6px}.ref-body details{margin-bottom:1em}.ref-body summary{cursor:pointer;font-family:var(--font-mono);color:var(--fg-muted);font-size:12.5px}.ref-note{color:var(--fg-muted);font-size:13.5px}.ref-options{border-collapse:collapse;width:100%;margin:0 0 1em;font-size:13.5px}.ref-options th,.ref-options td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:4px 14px 4px 0}.ref-options th{font-family:var(--font-mono);color:var(--fg-faint);font-size:12px;font-weight:400}.ref-options td:first-child{white-space:nowrap}.ref-examples h3{color:var(--fg-faint);margin:0 0 4px;font-weight:400}.ref-example{grid-template-columns:minmax(0,auto) minmax(0,1fr) auto;align-items:baseline;gap:12px;padding:3px 0;display:grid}.ref-example code{white-space:pre-wrap}.ref-see{color:var(--fg-muted);margin:10px 0 0;font-size:13.5px}@media (max-width:760px){.ref-layout{grid-template-columns:1fr}.ref-toc{display:none}.ref-summary{grid-template-columns:7em minmax(0,1fr)}.ref-tag{display:none}.ref-example{grid-template-columns:1fr auto}.ref-example .muted{grid-area:2/1/auto/-1}}
