:root{--bg:#f7f5f0;--surface:#ffffff;--ink:#1b1a17;--muted:#6b675e;--line:#e3dfd5;--accent:#c2410c;--accent-ink:#ffffff;--radius:14px;--shadow:0 1px 2px rgb(0 0 0 / .04), 0 8px 24px -12px rgb(0 0 0 / .12);--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, ui-serif, serif;--sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--max:1080px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg:#141311;--surface:#1d1c19;--ink:#eeebe4;--muted:#a19c90;--line:#2e2c27;--accent:#fb923c;--accent-ink:#1b1a17;--shadow:0 1px 2px rgb(0 0 0 / .3), 0 8px 24px -12px rgb(0 0 0 / .6)}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 var(--sans);display:flex;flex-direction:column;min-height:100vh}main{flex:1;padding-block:3rem 5rem}a{color:inherit;text-decoration-color:color-mix(in srgb,var(--accent) 60%,transparent);text-underline-offset:3px}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}img{max-width:100%;height:auto;display:block}h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.15;letter-spacing:-.01em;margin:0 0 .5em}h1{font-size:clamp(2.2rem,5vw,3.4rem)}h2{font-size:1.6rem}h3{font-size:1.25rem}.wrap{width:min(100% - 2.5rem,var(--max));margin-inline:auto}.skip{position:absolute;left:-999px;top:.5rem;background:var(--accent);color:var(--accent-ink);padding:.5rem 1rem;border-radius:8px;z-index:10}.skip:focus{left:.5rem}.site-header{border-bottom:1px solid var(--line)}.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-block:1.1rem}.brand{font-family:var(--serif);font-weight:600;font-size:1.2rem;text-decoration:none}nav{display:flex;gap:1.5rem}nav a{text-decoration:none;color:var(--muted);font-size:.95rem}nav a[aria-current=page]{color:var(--ink);box-shadow:inset 0 -2px var(--accent)}.site-footer{border-top:1px solid var(--line);color:var(--muted);font-size:.9rem}.site-footer p{margin:0}.social{list-style:none;display:flex;gap:1.25rem;padding:0;margin:0}.social a{text-decoration:none}.hero{padding-block:2rem 4rem;max-width:46rem}.hero h1 span{color:var(--accent);display:block}.lede{font-size:1.2rem;color:var(--muted);margin-bottom:1.5rem}.lede p{margin:0 0 1em}.hero .social a{font-weight:500}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--line);padding-bottom:.75rem;margin-bottom:2rem}.section-head h2{margin:0}.more{color:var(--muted);text-decoration:none;font-size:.95rem;white-space:nowrap}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:1.75rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.card[hidden]{display:none}.card-link{text-decoration:none;color:inherit;flex:1}.card-link:hover{color:inherit}.card-link:hover h3{color:var(--accent)}.card .cover{aspect-ratio:8/5;width:100%;object-fit:cover;border-bottom:1px solid var(--line)}.card-body{padding:1.25rem 1.25rem .5rem}.card-body h3{margin-bottom:.35rem;transition:color .15s}.card-body p{margin:0;color:var(--muted);font-size:.95rem}.card .chips{padding:.75rem 1.25rem 1.25rem}.cover.placeholder{display:grid;place-items:center;background:radial-gradient(circle at 25% 20%,hsl(var(--hue) 70% 72%/.9),transparent 55%),radial-gradient(circle at 80% 85%,hsl(calc(var(--hue) + 40) 65% 55%/.9),transparent 60%),hsl(calc(var(--hue) + 20) 45% 40%)}.cover.placeholder span{font-family:var(--serif);font-size:clamp(3rem,8vw,5rem);color:rgb(255 255 255/.85)}.chips{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;padding:0;margin:0}.chips li{font:500 .75rem/1 var(--mono);padding:.4rem .6rem;border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--ink)}.btn{display:inline-block;padding:.65rem 1.1rem;border-radius:10px;border:1px solid var(--line);text-decoration:none;font-weight:500;font-size:.95rem;background:var(--surface)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{color:var(--accent-ink);filter:brightness(1.08)}.page-head{max-width:46rem;margin-bottom:2.5rem}.page-head p{color:var(--muted);font-size:1.1rem}.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}.filters[hidden]{display:none}.filters button{font:inherit;font-size:.85rem;cursor:pointer;padding:.4rem .9rem;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted)}.filters button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.empty{color:var(--muted)}.project{max-width:50rem;margin-inline:auto}.back{display:inline-block;color:var(--muted);text-decoration:none;font-size:.9rem;margin-bottom:2rem}.project-head .lede{margin-top:-.25rem}.meta{display:flex;flex-wrap:wrap;gap:2.5rem;margin:1.5rem 0}.meta dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.meta dd{margin:0;font-weight:500}.actions{display:flex;flex-wrap:wrap;gap:.75rem}.hero-cover{margin:2.5rem 0}.hero-cover .cover{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line)}.stack{border-top:1px solid var(--line);margin-top:3rem;padding-top:2rem}.stack h2{font-size:1.1rem}.tags{color:var(--muted);font-size:.9rem;margin-top:1.5rem}.pager{display:flex;justify-content:space-between;gap:1rem;border-top:1px solid var(--line);margin-top:3rem;padding-top:1.5rem}.pager a{text-decoration:none;color:var(--muted)}.prose{max-width:42rem}.prose h2{margin-top:2.2em}.prose h3{margin-top:1.8em}.prose img{border-radius:10px;margin:2rem 0}.prose blockquote{margin:1.5rem 0;padding:1rem 1.25rem;background:color-mix(in srgb,var(--ink) 4%,transparent);border-radius:10px;color:var(--muted);font-style:italic}.prose code{font:.88em var(--mono);background:color-mix(in srgb,var(--ink) 7%,transparent);padding:.15em .35em;border-radius:5px}.prose pre{padding:1rem 1.25rem;border-radius:10px;overflow-x:auto;font-size:.88rem}.prose pre code{background:0 0;padding:0}.term-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.75rem}.term-list a{text-decoration:none}.term-list span{color:var(--muted);font-size:.85rem}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}}