@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(../media/2e482247ef29dcb9-s.3gj6ciom31zjc.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(../media/068feab4deafcd0f-s.0_kz_z3o_slvt.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(../media/db545dba463279ae-s.p.1cp9-4nby68jc.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Fallback;src:local(Arial);ascent-override:88.96%;descent-override:21.28%;line-gap-override:0.0%;size-adjust:98.7%}.iX1fDW_className{font-family:Archivo,Archivo Fallback;font-style:normal}.iX1fDW_variable{--font-archivo:"Archivo", "Archivo Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/faab88e4be272d29-s.0rgnxg2b64rzs.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a45aa1001bf9176f-s.2vemzm0itqzfy.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/41ba59f553543ecf-s.3cb5lpr2l6xud.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/67bba87670b402d1-s.1u30mmyq6lnsd.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d6c1ff7e86974212-s.p.40sczeszzbjw1.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/49b1d53681a91a99-s.1yd4_i3e35931.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/123d516c9baeb953-s.1qc6dx89jd2qv.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a74d2542cc4c775f-s.29yke99gs9qpn.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7ac0b1cd3e695dd0-s.1i-sca43-qwng.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/916cd8a3bde3edf8-s.p.0oace-s_gkfks.woff2?dpl=e7cd4bee1157e875c108244cc19e881edce1caee)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.cjC0Ca_className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.cjC0Ca_variable{--font-plex-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--color-bg:#fff;--color-surface:#f4f2ee;--color-card-border:#13243f21;--color-rail:#f9f8f6;--color-text:#13243f;--color-accent:#fbb61a;--color-accent-2:#2f6699;--color-accent-hover:#ffc94d;--color-accent-active:#e5a20e;--color-on-accent:#13243f;--color-accent-text:#8a5a00;--color-accent-text-hover:#6e4700;--color-control:var(--color-accent-2);--color-focus:var(--color-accent-2);--color-divider:#201e1d1f;--color-neutral-100:#f4f2ee;--color-neutral-200:#e9e6e0;--color-neutral-300:#dad6cf;--color-neutral-400:#c6c1b8;--color-neutral-500:#8a96a3;--color-neutral-600:#5c6b7a;--color-neutral-700:#4a5866;--color-neutral-800:#33404d;--color-neutral-900:#1e2a38;--color-accent-100:#fff6e0;--color-accent-200:#ffebb8;--color-accent-300:#ffd982;--color-accent-400:#fdc54a;--color-accent-500:#fbb61a;--color-accent-600:#a87200;--color-accent-700:#8a5a00;--color-accent-800:#664200;--color-accent-900:#3f2900;--color-accent-2-100:#eaf1f8;--color-accent-2-200:#d0e0ef;--color-accent-2-300:#a9c6e2;--color-accent-2-400:#7aa6cf;--color-accent-2-500:#4f84b6;--color-accent-2-600:#2f6699;--color-accent-2-700:#24527d;--color-accent-2-800:#1b3e60;--color-accent-2-900:#13243f;--font-heading:"Archivo", system-ui, sans-serif;--font-heading-weight:700;--font-body:"Archivo", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--space-1:4.4px;--space-2:8.8px;--space-3:13.2px;--space-4:17.6px;--space-6:26.4px;--space-8:35.2px;--gutter:clamp(20px, 6vw, 44px);--gutter-app:clamp(16px, 6vw, 40px);--font-display:clamp(34px, 5vw + 16px, 62px);--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-input:4px;--shadow-sm:0 1px 2px #13243f24;--shadow-md:0 3px 10px #13243f29;--shadow-lg:0 12px 32px #13243f38}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body)}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:var(--font-heading-weight)}.washed{filter:saturate(.6)contrast(.85)brightness(1.1)opacity(.94)}*,:before,:after{box-sizing:border-box}body{margin:0;font-size:15px;font-weight:400;line-height:1.55}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-heading-weight);letter-spacing:-.015em;margin:0 0 var(--space-2);line-height:1.12}h1{font-size:42px}h2{font-size:32px}h1,h2{font-weight:800;font-stretch:105%}h3{font-size:25px}h4{font-size:20px}h5{font-size:16px}h6{font-size:13px;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;font-weight:500}p{margin:0 0 var(--space-3)}a{color:var(--color-accent-text);text-underline-offset:3px}img{max-width:100%;display:block}figure{margin:0}figcaption{margin-top:var(--space-1);color:color-mix(in srgb, var(--color-text) 62%, transparent);font-size:11px}.text-muted{color:color-mix(in srgb, var(--color-text) 62%, transparent)}.band-paper{background:var(--color-neutral-100)}.band-paper .text-muted{color:var(--color-neutral-600)}:focus{outline:none}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}::selection{background:color-mix(in srgb, var(--color-accent) 30%, transparent)}.hr{height:1px;margin:var(--space-4) 0;background:var(--color-divider);border:0}.btn{cursor:pointer;font-family:var(--font-heading);color:var(--color-text);padding:var(--space-2) calc(var(--space-3) * 1.2);border-radius:var(--radius-md);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;font-size:14px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.btn svg{display:block}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:var(--color-on-accent)}.btn-primary:hover{background:var(--color-accent-hover)}.btn-primary:active{background:var(--color-accent-active)}.btn-secondary{border-color:var(--color-divider)}.btn-secondary:hover{background:color-mix(in srgb, var(--color-text) 7%, transparent)}.btn-secondary:active{background:color-mix(in srgb, var(--color-text) 14%, transparent)}.btn-ghost{color:var(--color-accent-text);padding-inline:var(--space-1)}.btn-ghost:hover{background:color-mix(in srgb, var(--color-accent) 10%, transparent)}.btn-ghost:active{background:color-mix(in srgb, var(--color-accent) 18%, transparent)}.btn-icon{width:36px;height:36px;padding:0}.btn-block{width:100%;margin-top:var(--space-2)}.field>label{color:color-mix(in srgb, var(--color-text) 70%, transparent);margin-bottom:5px;font-size:12px;display:block}.input{width:100%;min-height:36px;font:inherit;color:var(--color-text);caret-color:var(--color-accent-text);border:1px solid var(--color-divider);border-radius:var(--radius-md);background:#fff;padding:6px 10px;font-size:14px}.input:hover{border-color:color-mix(in srgb, var(--color-text) 45%, transparent)}.input:focus-visible{border-color:var(--color-focus);outline-offset:0}textarea.input{resize:vertical;min-height:90px}.radio{cursor:pointer;align-items:center;gap:8px;font-size:14px;display:inline-flex}.radio input,.seg-opt input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.radio .dot{border:1.5px solid var(--color-divider);border-radius:50%;flex:none;width:16px;height:16px}.radio:hover .dot{border-color:var(--color-control)}.radio input:checked+.dot{border-color:var(--color-control);background:var(--color-control);box-shadow:inset 0 0 0 4px var(--color-bg)}.radio input:focus-visible+.dot{outline:2px solid var(--color-focus);outline-offset:2px}.seg{border:1px solid var(--color-divider);border-radius:var(--radius-md);display:inline-flex;overflow:hidden}.seg-opt{cursor:pointer;align-items:center;gap:6px;padding:7px 12px;font-size:13px;display:inline-flex}.seg-opt+.seg-opt{border-left:1px solid var(--color-divider)}.seg-opt:has(input:checked){background:var(--color-accent);color:var(--color-on-accent)}.seg-opt:not(:has(input:checked)):hover{background:color-mix(in srgb, var(--color-text) 7%, transparent)}.seg-opt:has(input:focus-visible){outline:2px solid var(--color-focus);outline-offset:-2px}.card{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-card-border);background:#fff;flex-direction:column;display:flex}.card-kicker{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent-text);font-size:11px}.card-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:17px;line-height:1.2}.card-body{opacity:.8;flex:1;margin:0;font-size:13px}.card-meta{color:color-mix(in srgb, var(--color-text) 50%, transparent);align-items:center;gap:6px;font-size:11px;display:flex}.elev-sm{box-shadow:var(--shadow-sm)}.elev-md{box-shadow:var(--shadow-md)}.elev-lg{box-shadow:var(--shadow-lg)}.tag{letter-spacing:.02em;border-radius:calc(var(--radius-md) * .75);align-items:center;padding:3px 10px;font-size:11px;display:inline-flex}.tag-accent{background:var(--color-accent-100);color:var(--color-accent-800)}.tag-accent-2{background:var(--color-accent-2-100);color:var(--color-accent-2-800)}.tag-neutral{background:var(--color-neutral-100);color:var(--color-neutral-800)}.tag-outline{border:1px solid var(--color-accent-text);color:var(--color-accent-text)}.nav{align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);row-gap:var(--space-2);border-bottom:none;flex-wrap:wrap;display:flex}.nav-brand{font-family:var(--font-heading);font-weight:var(--font-heading-weight);margin-right:auto;font-size:18px}.nav a{color:inherit;font-size:14px;text-decoration:none}.nav a:hover,.nav a[aria-current=page]{color:var(--color-accent-text)}.nav a[aria-current=page]{font-weight:600}.course-main{grid-template-columns:1fr 380px;grid-template-areas:"title card""body card";align-items:start;gap:26px 44px;display:grid}.course-title{grid-area:title;min-width:0}.course-body{flex-direction:column;grid-area:body;gap:26px;min-width:0;display:flex}.course-aside{grid-area:card;min-width:0}@media (max-width:880px){.course-main{grid-template-columns:minmax(0,1fr);grid-template-areas:"title""card""body"}}.lesson-body{grid-template-columns:1fr 320px;align-items:start;display:grid}.lesson-body>main{min-width:0}.lesson-aside{border-left:1px solid var(--color-divider);align-self:stretch;min-width:0;padding:20px 0}@media (max-width:880px){.lesson-body{grid-template-columns:minmax(0,1fr)}.lesson-aside{border-left:none;border-top:1px solid var(--color-divider);align-self:auto}}.table{border-collapse:collapse;width:100%;font-size:14px}.table th{text-align:left;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--color-text) 62%, transparent);background:var(--color-rail);padding:var(--space-2);border-bottom:1px solid var(--color-divider);font-size:11px;font-weight:500}.table td{padding:var(--space-2);border-bottom:1px solid color-mix(in srgb, var(--color-text) 8%, transparent)}.table tbody tr:hover{background:color-mix(in srgb, var(--color-text) 4%, transparent)}.lesson-table-wrap{margin:var(--space-3) 0;overflow-x:auto}.lesson-table-wrap .table{font-size:inherit}.lesson-prose .contains-task-list{padding-left:var(--space-3);list-style:none}.lesson-prose .task-list-item input{margin-right:var(--space-2)}.lesson-prose code{font-family:var(--font-mono);background:#f7f3ec;border-radius:4px;padding:.1em .35em;font-size:.9em}.lesson-code{margin:var(--space-3) 0;position:relative}.lesson-code pre{border:1px solid var(--color-divider);border-radius:var(--radius-md);background:#f7f3ec;margin:0;padding:14px 16px;font-size:13.5px;line-height:1.55;overflow-x:auto}.lesson-code:has(.lesson-code-label) pre{padding-top:28px}.lesson-code pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.lesson-code-label{letter-spacing:.04em;text-transform:uppercase;color:#6b6560;font-size:11px;font-weight:700;position:absolute;top:6px;right:10px}.lesson-code .hljs-keyword,.lesson-code .hljs-selector-tag,.lesson-code .hljs-built_in,.lesson-code .hljs-name,.lesson-code .hljs-tag{color:#9a3412}.lesson-code .hljs-string,.lesson-code .hljs-regexp,.lesson-code .hljs-symbol{color:#2f6b1f}.lesson-code .hljs-comment,.lesson-code .hljs-quote{color:#6b6560;font-style:italic}.lesson-code .hljs-number,.lesson-code .hljs-literal{color:#7c2d8f}.lesson-code .hljs-title,.lesson-code .hljs-section,.lesson-code .hljs-selector-id,.lesson-code .hljs-selector-class{color:#1f5f8b}.lesson-code .hljs-attr,.lesson-code .hljs-attribute,.lesson-code .hljs-property{color:#805300}.lesson-code .hljs-variable,.lesson-code .hljs-template-variable,.lesson-code .hljs-params{color:#5b3a8c}.lesson-code .hljs-meta,.lesson-code .hljs-doctag{color:#555}.dialog-backdrop{padding:var(--space-4);background:color-mix(in srgb, var(--color-neutral-900) 50%, transparent);place-items:center;display:grid;position:fixed;inset:0}.dialog{gap:var(--space-3);width:min(440px,100%);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-lg);flex-direction:column;display:flex}.dialog-title{font-family:var(--font-heading);font-weight:var(--font-heading-weight);font-size:20px}.dialog-body{opacity:.85;font-size:14px}.dialog-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);display:flex}.card{border-radius:var(--radius-md)}.dialog{border-radius:var(--radius-lg)}.btn,.tag,.seg{border-radius:var(--radius-sm)}.input{border-radius:var(--radius-input);padding-inline:14px}.input-on-dark{color:#fff;background:#00000038;border-color:#ffffff59}.input-on-dark::placeholder{color:#ffffffe6}.input-on-dark:hover{border-color:#fff9}.seg-opt:is(button,a){color:inherit;font:inherit;background:0 0;border:0;text-decoration:none}.seg-opt[aria-pressed=true],.seg-opt[aria-current=page]{background:var(--color-accent);color:var(--color-on-accent)}.seg-opt:is(button,a):not([aria-pressed=true]):not([aria-current=page]):hover{background:color-mix(in srgb, var(--color-text) 7%, transparent)}.seg-opt:is(button,a):focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.switch{cursor:pointer;align-items:center;gap:10px;font-size:14px;display:inline-flex;position:relative}.switch input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.switch .track{background:color-mix(in srgb, var(--color-text) 55%, var(--color-bg));border-radius:999px;flex:none;width:36px;height:20px;transition:background-color .15s;position:relative}.switch .track:after{content:"";background:var(--color-bg);border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.switch input:checked+.track{background:var(--color-control)}.switch input:checked+.track:after{transform:translate(16px)}.switch input:focus-visible+.track{outline:2px solid var(--color-focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){.switch .track,.switch .track:after{transition:none}}:root{--color-danger:#a8321f;--color-danger-100:#fdece8;--color-danger-300:#f3c3b8}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:#8c2818}.btn-danger:active{background:#741f12}.btn-link{font:inherit;color:var(--color-accent-text);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.btn-link:hover{color:var(--color-accent-text-hover)}.btn-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.footer-col-heading{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0 0 var(--space-2) 0;font-size:12px;font-weight:500}

