@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/bricolage-grotesque-latin-700-normal.gtcctNPv.woff2) format("woff2"),url(/_astro/bricolage-grotesque-latin-700-normal.DvJDmrLu.woff) format("woff")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/bricolage-grotesque-latin-800-normal.J50vIsBe.woff2) format("woff2"),url(/_astro/bricolage-grotesque-latin-800-normal.Br4b-5gk.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2) format("woff2"),url(/_astro/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff) format("woff")}:root{color-scheme:dark;--ground: #0e1520;--surface: #151f2d;--raised: #1c2a3d;--border: #263449;--text: #e8edf3;--muted: #9aa7b8;--accent: #f2c14e;--on-accent: #1a1406;--accent-text: #f2c14e;--teal: #3cc7b4;--coral: #ff7a6b;--header-bg: rgb(14 21 32 / .85);--font-head: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--gutter: 16px;--section-gap: 96px;--radius: 16px}@media(prefers-color-scheme:light){:root{color-scheme:light;--ground: #f4f6f9;--surface: #ffffff;--raised: #eef2f7;--border: #d9dfe7;--text: #121a26;--muted: #566377;--accent-text: #8a6100;--teal: #0f8a7a;--coral: #c2410c;--header-bg: rgb(244 246 249 / .85)}}@media(max-width:760px){:root{--section-gap: 64px}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:72px;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}body{margin:0;background:var(--ground);color:var(--text);font:400 17px/1.6 var(--font-body);display:flex;flex-direction:column;min-height:100vh;overflow-wrap:break-word}main{flex:1}h1,h2,h3{font-family:var(--font-head);font-weight:800;margin:0;text-wrap:balance}h1{font-size:clamp(2.6rem,6vw,4.75rem);line-height:1.02;letter-spacing:-.02em}h2{font-size:clamp(1.8rem,3.5vw,2.6rem);line-height:1.1;letter-spacing:-.015em}h3{font-weight:700;font-size:1.3rem;line-height:1.2}p{margin:0;max-width:65ch}a{color:var(--accent-text);text-underline-offset:3px}img{display:block;max-width:100%;height:auto}ul,ol{margin:0;padding:0;list-style:none}code{font-family:var(--font-mono);font-size:.9em}.num,.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}.container{width:100%;max-width:1180px;margin-inline:auto;padding-inline:var(--gutter)}.skip{position:absolute;left:16px;top:-60px;background:var(--accent);color:var(--on-accent);padding:8px 14px;border-radius:8px;z-index:50;font-weight:600;text-decoration:none}.skip:focus{top:12px}.site-header{position:sticky;top:0;z-index:20;background:var(--header-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.bar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px}.wordmark{font-family:var(--font-head);font-weight:800;font-size:1.4rem;letter-spacing:-.02em;color:var(--text);text-decoration:none;line-height:1}.wordmark span{color:var(--accent-text)}.site-header nav{display:flex;align-items:center;gap:20px}.site-header nav a:not(.btn){color:var(--text);text-decoration:none;font-weight:500;font-size:.95rem}.site-header nav a:not(.btn):hover{color:var(--accent-text)}@media(max-width:420px){.site-header nav{gap:14px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border-radius:999px;font:600 1rem/1.2 var(--font-body);text-decoration:none;border:2px solid var(--accent);background:var(--accent);color:var(--on-accent);transition:transform .15s}.btn:hover{transform:translateY(-1px)}.btn-secondary{background:transparent;color:var(--text);border-color:var(--border)}.btn-secondary:hover{border-color:var(--muted)}.btn-small{padding:6px 14px;font-size:.85rem}.actions{display:flex;flex-wrap:wrap;gap:12px}.chip{display:inline-block;font:500 11px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;padding:5px 10px;border-radius:999px;border:1px solid;white-space:nowrap}.chip-explainer{color:var(--muted);border-color:var(--muted)}.chip-exercise{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.chip-walkthrough{color:var(--coral);border-color:var(--coral)}.chip-checkpoint{color:var(--teal);border-color:var(--teal)}.badge-free{display:inline-block;font:500 11px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;padding:5px 10px;border-radius:999px;color:var(--teal);border:1px solid var(--teal);white-space:nowrap}.pill{display:inline-block;font:500 12px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;padding:7px 12px;border-radius:999px;border:1px solid var(--accent-text);color:var(--accent-text)}.eyebrow{font:500 13px/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent-text)}.block{padding-block:calc(var(--section-gap) / 2)}.block-head{display:grid;gap:16px;margin-bottom:40px}.block-head p{color:var(--muted)}.stack{display:grid;gap:24px}.hero{padding-block:56px calc(var(--section-gap) / 2)}.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:48px;align-items:center}.hero-text{display:grid;gap:24px;justify-items:start}.hero h1 em{font-style:normal;color:var(--accent-text)}.hero .sub{font-size:1.15rem;color:var(--muted);max-width:52ch}.hero .stats{font:400 13px/1.5 var(--font-mono);color:var(--muted)}.tile{border-radius:var(--radius);overflow:hidden;background:var(--raised)}.tile img{width:100%;height:auto}.hero .tile{aspect-ratio:3 / 2}@media(max-width:760px){.hero{padding-top:32px}.hero-grid{grid-template-columns:minmax(0,1fr);gap:32px}}.compare{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.compare-row{display:grid;grid-template-columns:1fr 1fr}.compare-row>div{padding:20px 24px}.compare-row+.compare-row{border-top:1px solid var(--border)}.compare-row>div:first-child{color:var(--muted);border-right:1px solid var(--border)}.compare-head>div{font:500 12px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;padding-block:14px;background:var(--raised)}.compare-head>div:last-child{color:var(--accent-text)}.compare-row:not(.compare-head)>div:last-child{font-weight:500}.isnt{color:var(--muted)}.isnt strong{color:var(--text);font-weight:600}@media(max-width:760px){.compare-head{display:none}.compare-row{grid-template-columns:1fr}.compare-row>div:first-child{border-right:0;padding-bottom:4px}.compare-row>div:first-child:before,.compare-row>div:last-child:before{display:block;font:500 11px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.compare-row>div:first-child:before{content:"Before"}.compare-row>div:last-child:before{content:"After";color:var(--accent-text)}.compare-row>div:last-child{padding-top:4px}}.pillars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:40px 24px}.pillar{display:grid;grid-template-rows:auto 1fr;gap:20px;align-content:start}.pillar .tile{aspect-ratio:1;width:100%}.pillar div{display:grid;gap:8px;align-content:start}.pillar p{color:var(--muted)}@media(max-width:1000px){.pillars{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.pillars{grid-template-columns:minmax(0,1fr)}}.project-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:start}.bugs{display:grid;gap:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.bugs h3{padding:16px 20px;font:500 12px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:var(--raised)}.bugs li{padding:14px 20px;border-top:1px solid var(--border)}@media(max-width:860px){.project-grid{grid-template-columns:minmax(0,1fr);gap:32px}}.types{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}.types li{display:grid;gap:12px;justify-items:start;align-content:start}.types p{color:var(--muted)}@media(max-width:960px){.types{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.types{grid-template-columns:minmax(0,1fr)}}.outline-list{border-top:1px solid var(--border)}.outline-list li{display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto auto;gap:16px;align-items:baseline;padding:14px 0;border-bottom:1px solid var(--border)}.outline-list .n{font:500 .95rem var(--font-mono);color:var(--accent-text);font-variant-numeric:tabular-nums}.outline-list .c{font:400 13px var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.outline-list .slot{min-width:3.5rem;text-align:right}.more{margin-top:24px}@media(max-width:560px){.outline-list li{grid-template-columns:2.2rem minmax(0,1fr) auto}.outline-list .c{grid-column:2}.outline-list .slot{grid-column:3;grid-row:1}}.card{display:grid;grid-template-columns:220px minmax(0,1fr);gap:40px;align-items:center;padding:32px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.card .photo{border-radius:var(--radius);overflow:hidden;aspect-ratio:1;background:var(--raised)}.card .photo img{width:100%;height:100%;object-fit:cover}.card .stack{gap:14px}.card h2{font-size:clamp(1.6rem,3vw,2.2rem)}@media(max-width:640px){.card{grid-template-columns:minmax(0,1fr);gap:24px;padding:20px}.card .photo{max-width:220px}}.panel{display:grid;gap:16px;justify-items:start;padding:32px;border:1px solid var(--border);border-radius:var(--radius);background:var(--raised)}.panel p{color:var(--muted)}.panel p em{color:var(--text);font-style:normal;font-weight:500}@media(max-width:640px){.panel{padding:20px}}.course-head{padding-block:56px calc(var(--section-gap) / 3);display:grid;gap:20px;justify-items:start}.course-head .lead{font-size:1.15rem;color:var(--muted)}.legend{display:flex;flex-wrap:wrap;gap:12px 24px}.legend li{display:flex;align-items:center;gap:8px;font:400 14px var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums}.sections{display:grid;gap:12px}details.sec{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}details.sec summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto;gap:8px 16px;align-items:center;padding:18px 20px;border-radius:var(--radius)}details.sec summary::-webkit-details-marker{display:none}.sec-num{font:500 1.1rem var(--font-mono);color:var(--accent-text)}.sec-title{font:700 1.25rem/1.25 var(--font-head);display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.sec-note{font:400 12px var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.sec-meta{display:flex;align-items:center;gap:14px;font:400 13px var(--font-mono);color:var(--muted);white-space:nowrap}.sec-meta:after{content:"";width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg) translateY(-2px);transition:transform .15s}details[open] .sec-meta:after{transform:rotate(-135deg)}.lessons{border-top:1px solid var(--border)}.lesson{display:grid;grid-template-columns:4.2rem minmax(0,1fr) auto;gap:4px 16px;align-items:start;padding:14px 20px}.lesson+.lesson{border-top:1px solid var(--border)}.lesson .ln{font:400 13px/1.9 var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums}.lesson .lt{display:grid;gap:2px}.lesson .lnote{font-size:.875rem;color:var(--muted)}.lesson .chip{justify-self:end;margin-top:3px}@media(max-width:640px){details.sec summary{grid-template-columns:2.2rem minmax(0,1fr);padding:16px}.sec-meta{grid-column:2}.lesson{grid-template-columns:3.6rem minmax(0,1fr);padding:14px 16px}.lesson .chip{grid-column:2;justify-self:start;margin-top:4px}}.site-footer{border-top:1px solid var(--border);margin-top:var(--section-gap);padding-block:40px}.foot{display:grid;grid-template-columns:1.4fr auto 1fr;gap:32px;align-items:start}.foot-brand{display:grid;gap:10px;justify-items:start}.foot-brand p,.foot-meta p{color:var(--muted);font-size:.95rem}.foot nav{display:flex;gap:20px}.foot nav a{color:var(--text);text-decoration:none;font-size:.95rem}.foot nav a:hover{color:var(--accent-text)}.foot-meta{display:grid;gap:8px;justify-items:start}.made{display:flex;align-items:center;gap:12px}.made img{width:40px;height:40px;border-radius:50%;background:var(--raised)}.copy{font:400 13px var(--font-mono)}@media(max-width:860px){.foot{grid-template-columns:minmax(0,1fr)}.foot nav{flex-wrap:wrap}}.nf{padding-block:96px;display:grid;gap:20px;justify-items:start}
