:root{color-scheme:light;--paper:#f5f5f0;--ink:#252a28;--muted:#686f68;--line:#dddfd6;--accent:#56684c}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}[hidden]{display:none!important}.site-shell{max-width:1120px;margin:auto;padding:0 48px}.site-header{height:106px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font-size:27px;letter-spacing:-1.5px;font-weight:650}.brand-dot{color:var(--accent)}.site-header nav{display:flex;gap:32px;font-size:13px}.site-header nav a{color:var(--muted)}.site-header nav a:hover,.site-header nav a[aria-current]{color:var(--ink)}.site-header nav a[aria-current]{text-decoration:underline;text-underline-offset:7px}.intro{display:grid;grid-template-columns:1.5fr 1fr;gap:55px;padding:83px 0 80px;align-items:center}.eyebrow,.post-kind{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px;letter-spacing:1.6px;font-weight:400;color:var(--muted)}.intro .eyebrow{margin:0 0 27px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(38px,4.6vw,56px);line-height:1.13;font-weight:450;letter-spacing:-2.7px;margin-bottom:25px}.intro h1 span{color:#727a7e}.intro-text{color:var(--muted);font-size:15px;line-height:1.9;margin-bottom:27px}.text-link{font-size:12px;border-bottom:1px solid #b4bcac;padding-bottom:6px;display:inline-flex;gap:24px}.ambient{height:293px;position:relative;overflow:hidden;background:linear-gradient(180deg,#e6e8df 0%,#d6dacb 47%,#c4cbbb 64%,#dfe1d7 100%)}.ambient:before{content:"";position:absolute;inset:20% -35% -10%;background:radial-gradient(ellipse at 60% 65%,#8b929455,transparent 45%),radial-gradient(ellipse at 30% 70%,#b4bcac,transparent 50%);filter:blur(20px);transform:rotate(-14deg)}.ambient:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(94deg,transparent 0 4px,#f5f5f035 5px,transparent 6px 10px);opacity:.65}.ambient-lines{position:absolute;inset:0;background:linear-gradient(0deg,#f5f5f044,transparent 70%);z-index:1}.ambient>span{position:absolute;bottom:17px;left:20px;font:9px ui-monospace,monospace;letter-spacing:2px;color:#47533e;z-index:2}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.section-heading h2{font-size:21px;letter-spacing:-.6px;font-weight:500;margin:0}.filters{display:flex;gap:8px;margin-bottom:12px}.filters button{font:inherit;font-size:12px;cursor:pointer;padding:7px 14px;border:1px solid transparent;border-radius:3px;color:var(--muted);background:transparent}.filters button[aria-pressed=true]{background:var(--accent);color:var(--paper)}.filters button:hover{border-color:#b4bcac}.post-row{display:grid;grid-template-columns:127px 1fr 25px;gap:24px;border-top:1px solid var(--line);padding:28px 0}.post-row time{font:11px ui-monospace,monospace;color:var(--muted);padding-top:3px}.post-kind{font-size:9px;letter-spacing:1.1px;margin-bottom:10px}.post-row h3{font-size:20px;font-weight:500;line-height:1.4;letter-spacing:-.45px;margin-bottom:9px}.post-summary{font-size:13px;line-height:1.8;color:var(--muted);max-width:640px;margin:0}.row-arrow{font-size:19px;color:#526c78;padding-top:23px}.lower-grid{border-top:1px solid var(--line);display:grid;grid-template-columns:1fr;gap:80px;padding:43px 0 64px;margin-top:28px}.lower-grid h2{font-size:23px;font-weight:450;letter-spacing:-.6px}.lower-grid p:not(.eyebrow){color:var(--muted);font-size:13px;line-height:1.85;max-width:380px;margin-bottom:22px}.site-footer{border-top:1px solid var(--line);padding:25px 0 30px;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:10px}.site-footer a{margin-left:18px}.page-heading{padding:70px 0 40px}.page-heading h1{font-size:44px;max-width:800px}.page-heading>p:not(.eyebrow){color:var(--muted);line-height:1.8}.topic-list{display:flex;flex-wrap:wrap;gap:9px;margin-top:28px}.topic-list span{border:1px solid var(--line);border-radius:3px;padding:7px 10px;font-size:11px;color:var(--muted)}.page-article{max-width:760px;margin:0 auto 70px}.page-article .page-heading h1{margin-top:25px}.prose{font-size:16px;line-height:1.9;overflow-wrap:anywhere}.prose h2{margin-top:40px;font-weight:550;line-height:1.4}.prose a{text-decoration:underline;text-underline-offset:4px}.prose li{margin-bottom:9px}.prose blockquote{border-left:2px solid #6ca5c4;margin:28px 0;padding:3px 0 3px 23px;color:var(--accent)}.prose blockquote p:last-child{margin-bottom:0}.prose pre{padding:20px;background:#0c2334;overflow:auto;font-size:13px;line-height:1.6}.prose code{font-family:ui-monospace,monospace;background:#0c2334}.prose img{max-width:100%;height:auto}.prose table{display:block;overflow:auto;border-collapse:collapse}.prose th,.prose td{padding:8px 14px;border:1px solid var(--line)}.back-link{margin-top:35px}.notes-empty{padding:30px 0 100px;border-top:1px solid var(--line)}.empty-mark{display:block;font-size:45px;color:#8eb9d1;margin-bottom:15px}.notes-empty h2{font-size:23px;font-weight:450}.notes-empty p,.empty-state{color:var(--muted);font-size:14px}.empty-state{padding:35px 0}.sr-only,.skip-link{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip-link:focus{width:auto;height:auto;clip-path:none;top:10px;left:10px;background:var(--paper);padding:12px;z-index:10}main{min-height:65vh}@media(min-width:1400px){.site-shell{max-width:1200px}.intro{gap:90px;padding-top:94px;padding-bottom:92px}.ambient{height:315px}}@media(max-width:700px){.site-shell{padding:0 24px}.site-header{height:84px}.site-header nav{gap:20px;font-size:12px}.wordmark{font-size:25px}.intro{grid-template-columns:1fr;gap:35px;padding:48px 0}.intro h1{font-size:43px;letter-spacing:-2px}.ambient{height:150px}.intro .eyebrow{margin-bottom:23px}.intro-text{font-size:14px}.section-heading>.eyebrow{font-size:8px;letter-spacing:1px}.post-row{grid-template-columns:1fr 20px;gap:12px;padding:24px 0}.post-row time{grid-column:1/-1}.post-row h3{font-size:19px}.row-arrow{padding-top:24px}.lower-grid{grid-template-columns:1fr;gap:36px;padding-top:32px}.lower-grid>div+div{padding-top:32px;border-top:1px solid var(--line)}.site-footer{flex-direction:column;gap:12px}.page-heading{padding-top:48px}.page-heading h1{font-size:36px;letter-spacing:-1.5px}.prose{font-size:15px}.desktop-break{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.prose h3{font-size:23px;font-weight:500;line-height:1.4;letter-spacing:-.4px;margin-top:42px;padding-top:28px;border-top:1px solid var(--line)}.prose h3+p{font-size:12px;color:var(--muted);letter-spacing:.2px}.prose h2{scroll-margin-top:30px}

.prose h4{font-size:17px;font-weight:600;line-height:1.5;margin:30px 0 12px;letter-spacing:-.15px}

.compile-explorer{border:1px solid var(--line);padding:24px;margin:35px 0;background:#e9ebe4}.compile-stages{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.compile-stages button,.copy-code{font:inherit;font-size:12px;background:transparent;border:1px solid #b4bcac;border-radius:3px;padding:10px 12px;cursor:pointer;color:var(--ink)}.compile-stages button[aria-pressed=true]{background:var(--accent);color:var(--paper)}.compile-explorer .stage-detail h3{border:0;margin:0;padding:0;font-size:22px}.stage-detail{min-height:330px}.compile-explorer .stage-detail p{font-size:14px;line-height:1.8;color:var(--ink);letter-spacing:normal}.explorer-caption{font-size:12px;line-height:1.7;color:var(--muted)}.math-demo{border-top:1px solid var(--line);padding-top:20px}.math-demo label{display:block;font-size:13px}.math-demo input{width:100%;accent-color:var(--accent);margin:18px 0}.math-demo>p:not(.explorer-caption){font-family:ui-monospace,monospace;font-size:12px}.notebook-actions{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0}.notebook-actions a{border:1px solid var(--line);padding:10px 15px;font-size:13px;text-decoration:none}.copy-code{display:block;margin-top:15px;padding:5px 10px}.prose .highlight pre{margin-top:6px}@media(max-width:700px){.compile-explorer{padding:16px}.stage-detail{min-height:390px}.compile-stages button{min-height:44px;flex:1 1 100px}}

.compiler-map{display:block;width:100%;margin:28px 0 30px;padding:26px;border:2px solid #aab3a3;background:#eef0e8;font-size:13px;line-height:1.6}.compiler-map figcaption{font-size:18px;font-weight:550;margin-bottom:24px}.compiler-map figcaption span{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:4px}.arch-node{display:block;margin:5px 0;border:2px solid #aab3a3;background:#e3e7dd;padding:14px 16px;border-radius:4px}.arch-node strong,.arch-node small{display:block!important}.arch-node small{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.6}.arch-node summary{cursor:pointer;font-weight:550;min-height:24px}.arch-node p{font-size:12px;line-height:1.7;margin:12px 0 0}.arch-arrow{text-align:center;color:var(--accent);padding:8px 0}.arch-arrow span{display:block;font-size:10px;color:var(--muted)}.arch-fork{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(180px,1fr);gap:22px;align-items:start;margin:10px 0}.arch-label{font:10px ui-monospace,monospace;letter-spacing:1px;color:var(--accent);margin:16px 0;text-align:center}.arch-reuse{display:flex;flex-direction:column;align-items:stretch}.arch-reuse-line{border-left:1px solid #b4bcac;height:38px;flex:0 0 38px;margin:15px auto 0;font-size:22px;line-height:1;color:var(--accent)}.arch-execute{border-color:var(--accent)}.compiler-map .arch-footnote{font-size:11px;line-height:1.8;color:var(--muted);margin:20px 0 0}@media(max-width:520px){.compiler-map{padding:14px}.arch-fork{grid-template-columns:1fr;gap:0}.arch-reuse{border-top:1px solid var(--line);padding-bottom:16px}.arch-reuse-line{height:26px;flex-basis:26px;margin-top:12px}.arch-node summary{min-height:30px}}

/* Make code references and syntax easier to scan in the muted green theme. */
.prose p code,.prose li code,.prose h1 code,.prose h2 code,.prose h3 code{color:#56684c;background:#e7eade;padding:.12em .32em;border-radius:3px}.prose .highlight{background:#e9ebe4;border-radius:3px}.prose .highlight pre{color:#303730}.prose .highlight .k,.prose .highlight .kd,.prose .highlight .kn,.prose .highlight .ow{color:#586b4b;font-weight:600}.prose .highlight .nf,.prose .highlight .nc,.prose .highlight .nn{color:#4d6c78}.prose .highlight .s,.prose .highlight .s1,.prose .highlight .s2,.prose .highlight .na{color:#795c40}.prose .highlight .mi,.prose .highlight .mf,.prose .highlight .mb,.prose .highlight .mh{color:#785f7e}.prose .highlight .c,.prose .highlight .c1,.prose .highlight .cm{color:#72796e;font-style:italic}
.prose :not(pre)>code{color:#56684c;background:#e7eade;padding:.12em .32em;border-radius:3px}.prose .highlight .n,.prose .highlight .p{color:#485a4a}.prose .highlight .o,.prose .highlight .ow,.prose .highlight .bp{color:#657a52}.prose .highlight .sh,.prose .highlight .dl{color:#795c40}

/* Keep runnable examples readable too; the interactive example is plain text,
   while fenced snippets use Rouge's token classes above. */
.prose pre:not(.highlight),.compile-explorer pre{padding:18px 20px;overflow-x:auto;background:#e9ebe4;border:1px solid #d2d8ca;border-left:3px solid #849876;border-radius:3px;color:#3d5d45}
.prose pre:not(.highlight) code,.compile-explorer pre code{color:inherit;background:transparent;padding:0}
.prose .highlight{padding:18px 20px;border:1px solid #d2d8ca;border-left:3px solid #849876}
.prose .highlight .n,.prose .highlight .p{color:#3d6545}
.prose .highlight .kn,.prose .highlight .k,.prose .highlight .kd,.prose .highlight .ow{color:#52713a}
.prose .highlight .nf,.prose .highlight .nc,.prose .highlight .nn{color:#35687d}
.prose .highlight .o,.prose .highlight .bp{color:#7b652f}
.prose .highlight pre{background:transparent;color:#354a36;padding:0;border:0}
.prose .highlight code{background:transparent;color:inherit}
.post-row{grid-template-columns:127px minmax(0,1fr) 25px}
.post-row>div{min-width:0}
.post-row h3,.post-summary{max-width:100%;overflow-wrap:anywhere}
@media(max-width:700px){.post-row{grid-template-columns:minmax(0,1fr) 20px}}
