:root{--ink:#162622;--muted:#596560;--paper:#f5f7f5;--line:#d9dfda;--green:#d0fb75;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6}a{color:inherit;text-underline-offset:.23em}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,pre:focus-visible{outline:3px solid #368022;outline-offset:5px}button{cursor:pointer}button:disabled{cursor:default}[hidden]{display:none!important}.wrap{width:min(1180px,calc(100% - 64px));margin-inline:auto}.header{background:#14201f;color:white}.nav{display:flex;align-items:center;gap:4rem;min-height:108px}.brand{display:flex;gap:14px;align-items:center;text-decoration:none;font-size:17px;font-weight:650;line-height:1.25;letter-spacing:-.2px}.brand-mark{display:flex;align-items:center;justify-content:center;gap:1px;background:var(--green);color:#15241e;width:46px;height:46px;font-size:27px;font-family:var(--mono);font-weight:700}.brand-mark span{transform:translateY(4px)}.nav nav{display:flex;gap:30px;font-size:15px}.nav nav a{padding:8px 0;text-decoration:none;color:#c1c9c5}.nav nav a[aria-current]{color:var(--green);border-bottom:1px solid var(--green)}.header-note{margin-left:auto;color:#bac5c0;font-family:var(--mono);font-size:13px}.skip{position:fixed;left:1rem;top:-100px;padding:10px 20px;background:var(--green);color:var(--ink);z-index:10}.skip:focus{top:10px}.intro{display:grid;grid-template-columns:1.05fr 1fr;gap:60px;padding:62px 0 56px;border-bottom:1px solid var(--line)}.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:1.3px;font-weight:600;line-height:1.5}.intro .eyebrow{margin:0 0 26px}.intro h1{font-size:clamp(44px,5.7vw,74px);letter-spacing:-3px;line-height:1.04;margin:0;font-weight:650}.intro h1 span{color:#4c6956}.intro-description{font-size:18px;line-height:1.6;color:var(--muted);margin:25px 0 0;max-width:430px}.featured{background:#dfebdf;padding:28px 30px;text-decoration:none;display:flex;flex-direction:column;justify-content:space-between;gap:25px;border:1px solid #c5d6c5;transition:border-color .2s}.featured:hover{border-color:#5c795f}.featured-top{display:flex;justify-content:space-between;font:12px var(--mono);letter-spacing:1px}.featured-top span:last-child{font-size:22px}.terminal{background:#1b2d28;color:#edf3e9;padding:20px 22px;font-family:var(--mono);font-size:15px;line-height:1.75;overflow:hidden}.terminal-label{color:#a8b8ac;font-size:12px;border-bottom:1px solid #405347;margin-bottom:14px;padding-bottom:9px}.terminal code{white-space:pre-wrap;overflow-wrap:anywhere}.terminal code span,.terminal code b{color:var(--green);font-weight:400}.featured-category{font:12px var(--mono);letter-spacing:1px;color:#425645}.featured h2{font-size:27px;line-height:1.2;letter-spacing:-.6px;margin:10px 0}.featured p{color:#44594a;font-size:15px;margin:0}.catalog{padding:42px 0 64px}.catalog-heading{display:flex;justify-content:space-between;align-items:baseline;gap:20px}.catalog h2{font-size:29px;letter-spacing:-.7px;line-height:1.25;margin:0}.result-count{color:var(--muted);font:13px var(--mono)}.search{margin:20px 0}.search label{display:block;font-size:14px;color:var(--muted);margin-bottom:7px}.search-field{display:flex;align-items:center;gap:13px;background:white;border:1px solid #bcc8be;padding:7px 8px 7px 16px}.search-field>span{font-size:25px;line-height:1}.search input{min-width:0;flex:1;border:0;background:none;padding:5px;color:var(--ink);outline-offset:1px}.search button,.empty button{border:0;background:#20382b;color:#fff;padding:9px 20px;font-size:14px}.filters{display:flex;flex-wrap:wrap;gap:8px;margin:23px 0}.chip{padding:7px 15px;border:1px solid #c9d3ca;text-decoration:none;font-size:14px;background:transparent;border-radius:3px}.chip:hover{background:#e2e9e1}.chip[aria-current]{background:var(--ink);color:#fff;border-color:var(--ink)}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{padding:25px 25px 17px;background:#fff;border:1px solid var(--line);display:flex;flex-direction:column;position:relative;transition:border-color .15s}.card:hover{border-color:#6f8976}.card-meta{display:flex;justify-content:space-between;gap:10px;font:12px var(--mono);color:#627064}.card-meta span:first-child{color:#365f3e;font-weight:600}.card h3{font-size:23px;line-height:1.28;letter-spacing:-.55px;margin:23px 0 12px}.card h3 a{text-decoration:none}.card h3 a::after{content:"";position:absolute;inset:0}.card h3 a:focus-visible{outline:none}.card:focus-within{outline:3px solid #368022;outline-offset:3px}.card p{font-size:15px;color:var(--muted);line-height:1.65;margin:0 0 24px}.card-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #e4e9e4;margin-top:auto;padding-top:13px}.entry-number{font:12px var(--mono);color:#6c786f;letter-spacing:.7px}.card-bottom>span:last-child{font-size:22px}.footer{border-top:1px solid var(--line);padding:30px 0 38px;display:flex;gap:24px;align-items:center;font-size:14px}.footer>a:first-child{font-weight:600;text-decoration:none}.footer>span{color:var(--muted);margin-right:auto}.footer>a:last-child{white-space:nowrap}.topic{padding-top:36px}.topic>h1{font-size:60px;line-height:1.1;letter-spacing:-2px;margin:15px 0 0}.topic>.eyebrow{margin-top:30px}.topic .catalog{padding-top:28px}.topic .catalog-heading h2{font-size:22px}.back{font-size:14px;text-decoration:none;color:#4b6752}.back:hover{text-decoration:underline}.article-layout{display:grid;grid-template-columns:235px minmax(0,760px);gap:72px;padding:45px 0 70px;justify-content:space-between}.article-aside{font-size:14px}.toc{margin-top:48px;position:sticky;top:25px}.toc ol{padding:0;list-style:none}.toc li{border-left:1px solid var(--line);padding:7px 0 7px 17px;line-height:1.5}.toc a{color:#536457;text-decoration:none}.toc a:hover{color:#162622;text-decoration:underline}.aside-note{font:12px/1.8 var(--mono);letter-spacing:.7px;color:#6b7a6e;margin-top:38px}.article-header{border-bottom:1px solid var(--line);padding-bottom:28px;margin-bottom:30px}.article-meta{display:flex;align-items:center;gap:20px;font:13px var(--mono);color:var(--muted)}.tag{background:#e0ecd7;color:#355736;padding:5px 12px;text-decoration:none}.article h1{font-size:clamp(32px,4.4vw,51px);font-weight:650;letter-spacing:-1.6px;line-height:1.12;margin:23px 0 18px;overflow-wrap:anywhere}.lead{font-size:21px;color:var(--muted);line-height:1.5;margin:0}.prose{font-size:18px;line-height:1.85;overflow-wrap:anywhere}.prose p{margin:0 0 22px}.prose h2{font-size:28px;line-height:1.3;letter-spacing:-.6px;margin:38px 0 17px;color:var(--ink)}.prose :not(pre)>code{font: .88em var(--mono);background:#e6ece4;padding:2px 5px;border-radius:3px}.codeblock{margin:26px 0;background:#182a24;color:#eaf2e7;overflow:hidden}.code-label{font:12px var(--mono);color:#acbcae;padding:11px 20px;border-bottom:1px solid #384c3d}.codeblock pre{margin:0;padding:20px;overflow-x:auto;line-height:1.7;font:14px/1.7 var(--mono);tab-size:4;white-space:pre;overflow-wrap:normal}.tok-string{color:#d1ef9b}.tok-comment{color:#a4b5a4}.tok-number{color:#f0c78c}.source{border-left:3px solid #809e72;background:#e9efe5;padding:19px 23px;margin-top:36px;overflow-wrap:anywhere}.source h2{font:12px var(--mono);letter-spacing:1px;text-transform:uppercase;margin:0 0 8px}.source a{font-size:16px}.next-post{display:flex;flex-direction:column;gap:10px;text-decoration:none;border-top:1px solid var(--line);padding-top:26px;margin-top:38px}.next-post>span:last-child{font-size:23px;line-height:1.35;font-weight:600}.next-post:hover>span:last-child{text-decoration:underline}.simple{max-width:830px;padding:65px 0 80px}.simple h1{font-size:clamp(35px,5vw,58px);line-height:1.12;letter-spacing:-2px;margin:22px 0 32px}.simple .prose{max-width:700px}.primary-link{display:inline-block;background:var(--ink);color:white;text-decoration:none;padding:13px 22px;margin-top:20px}.error{min-height:65vh}.error>p:not(.eyebrow){font-size:18px;color:var(--muted)}.empty{padding:40px;text-align:center;border:1px dashed #b4c4b5;background:white}.empty h3{font-size:24px;margin:0 0 10px}.empty p{color:var(--muted)}
@media(min-width:1400px){.intro{gap:100px}.featured{margin:5px 0}}@media(max-width:1000px){.header-note{display:none}.nav{gap:3rem}.intro{gap:30px}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.article-layout{grid-template-columns:180px minmax(0,1fr);gap:35px}.featured{padding:24px}.footer{flex-wrap:wrap}.footer>span{order:3;width:100%}.footer>a:last-child{margin-left:auto}}
@media(max-width:700px){.wrap{width:calc(100% - 36px)}.nav{min-height:88px;gap:20px;justify-content:space-between}.brand{font-size:14px;gap:9px}.brand-mark{width:34px;height:36px;font-size:22px}.nav nav{gap:15px;font-size:14px}.intro{grid-template-columns:1fr;padding:34px 0;gap:28px}.intro .eyebrow{font-size:11px;letter-spacing:.9px}.intro h1{font-size:55px;letter-spacing:-2px}.intro-description{font-size:17px}.featured{gap:20px}.featured h2{font-size:25px}.terminal{font-size:14px}.catalog{padding:30px 0 40px}.catalog h2{font-size:26px}.search-field{gap:7px;padding-left:10px}.search button{padding:10px 13px}.search input{font-size:16px}.cards{grid-template-columns:1fr;gap:13px}.card{padding:22px}.card h3{margin-top:19px;font-size:24px}.chip{padding:6px 12px}.article-layout{display:block;padding:26px 0 45px}.toc,.aside-note{display:none}.article-aside{margin-bottom:26px}.article h1{font-size:37px;letter-spacing:-1.2px}.lead{font-size:19px}.prose{font-size:17px}.prose h2{font-size:26px}.simple{padding-top:36px}.simple h1{letter-spacing:-1px}.footer{gap:14px;font-size:13px}.topic>h1{font-size:48px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}@media print{body{background:white}.header,.footer,.article-aside,.next-post,.skip{display:none}.wrap{width:100%}.article-layout{display:block;padding:0}.article{max-width:none}.codeblock{break-inside:avoid;background:#eee;color:#111}.tok-string,.tok-comment,.tok-number{color:#222}.prose{font-size:12pt}.codeblock pre{white-space:pre-wrap}.article h1{font-size:28pt}}
