:root{--bg:light-dark(#fff, #111);--fg:light-dark(#1a1a1a, #e8e8e8);--muted:light-dark(#6b6b6b, #8a8a8a);--font-ui:system-ui, -apple-system, "Segoe UI", sans-serif;--font-prose:"Iowan Old Style", Charter, "Bitstream Charter", "Sitka Text", Cambria, Georgia, serif;--step-0:clamp(1.0625rem, 1rem + 0.3vw, 1.1875rem);--step-1:calc(var(--step-0) * 1.25);--step-2:calc(var(--step-0) * 1.563);--step-3:calc(var(--step-0) * 1.953);--gap:0.75rem;--measure:45rem;--wide:72rem;color-scheme:light dark}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*{box-sizing:border-box}body{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);min-height:100dvh;margin:0;background:var(--bg);color:var(--fg);font:1rem/1.6 var(--font-ui)}a{color:inherit}img{max-width:100%;height:auto}.site-header,.site-footer,main{padding-inline:clamp(1rem,4vw,3rem)}.site-header{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;align-items:center;padding-block:2rem}.site-title{margin-right:auto}.site-title,.site-nav a{text-decoration:none;text-transform:uppercase;letter-spacing:.15em;font-size:.85rem}.site-title{font-weight:600}.logo{display:block;width:auto;height:2rem}.logo-dark,:root[data-theme=dark] .logo-light{display:none}:root[data-theme=dark] .logo-dark{display:block}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .logo-light{display:none}:root:not([data-theme=light]) .logo-dark{display:block}}.site-nav{display:flex;align-items:center;gap:1.5rem}.site-nav a{color:var(--muted)}.site-nav a:hover,.site-nav a[aria-current]{color:var(--fg)}.theme-toggle,.nav-toggle{display:flex;padding:0;background:0 0;border:0;color:var(--muted);cursor:pointer}.theme-toggle:hover,.nav-toggle:hover{color:var(--fg)}html:not(.js) .theme-toggle{display:none}.nav-toggle,.nav-toggle[aria-expanded=true] .icon-open,.nav-toggle[aria-expanded=false] .icon-close{display:none}@media(max-width:48rem){.js .nav-toggle{display:flex}.js .site-nav{display:none;order:1;flex-basis:100%;flex-direction:column;align-items:stretch;gap:0}.js .site-header:has([aria-expanded=true]) .site-nav{display:flex}.js .site-nav a{padding-block:.75rem;border-top:1px solid color-mix(in srgb,var(--fg) 10%,transparent)}}.site-footer{margin-top:5rem;padding-block:3rem 2rem;border-top:1px solid color-mix(in srgb,var(--fg) 12%,transparent);background:color-mix(in srgb,var(--fg) 4%,var(--bg));color:var(--muted);font-size:.8rem}.site-footer a{text-decoration:none}.site-footer a:hover{color:var(--fg)}.footer-nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,max-content));justify-content:space-between;gap:2rem 4rem;padding-bottom:2.5rem;margin-bottom:1.5rem;border-bottom:1px solid color-mix(in srgb,var(--fg) 10%,transparent)}.footer-section h2{margin:0 0 .75rem;color:var(--fg);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.15em}.footer-section ul{list-style:none;margin:0;padding:0}.footer-section li+li{margin-top:.4rem}.footer-section a{font-size:.85rem}.footer-bottom{display:flex;flex-wrap:wrap;gap:.5rem 2rem}.copyright{margin-left:auto}@media(max-width:48rem){.footer-nav{grid-template-columns:1fr;text-align:center}.footer-bottom{flex-direction:column;align-items:center;text-align:center}.copyright{margin-left:0}}.prose{max-width:var(--measure);margin-inline:auto}article.prose{font-family:var(--font-prose);font-size:var(--step-0);line-height:1.65;hyphens:auto;color:color-mix(in srgb,var(--fg) 82%,var(--bg))}.prose :is(strong,b){font-weight:700;color:light-dark(#000,#fff)}.prose p,.prose li{text-wrap:pretty}.prose :is(h1,h2,h3){color:var(--fg);font-family:var(--font-ui);line-height:1.2;letter-spacing:-.01em;text-wrap:balance}.prose h1{font-size:var(--step-3);font-weight:500;margin-bottom:.25rem}.prose h2{font-size:var(--step-2);font-weight:500;margin:2.5em 0 .5em}.prose h3{font-size:var(--step-1);font-weight:600;margin:2em 0 .4em}.prose a{text-decoration-thickness:1px;text-underline-offset:.2em;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent)}.prose a:hover{text-decoration-color:initial}.prose .gallery{margin-block:2rem}.meta{color:var(--muted);font-family:var(--font-ui);font-size:.85rem;font-variant-numeric:tabular-nums}.prose blockquote{margin:2rem 0;padding:.25rem 0 .25rem 1.25rem;border-left:3px solid color-mix(in srgb,var(--fg) 25%,transparent)}.prose blockquote>:first-child,.callout>:nth-child(2){margin-top:0}.prose blockquote>:last-child,.callout>:last-child{margin-bottom:0}.callout{--accent:light-dark(#0969da, #4493f8);margin:2rem 0;padding:1rem 1.25rem;border-left:3px solid var(--accent);border-radius:0 6px 6px 0;background:color-mix(in srgb,var(--accent) 8%,var(--bg));font-family:var(--font-ui);font-size:1rem}.callout-tip{--accent:light-dark(#1a7f37, #3fb950)}.callout-important{--accent:light-dark(#8250df, #ab7df8)}.callout-warning{--accent:light-dark(#9a6700, #d29922)}.callout-caution{--accent:light-dark(#cf222e, #f85149)}.callout-title{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem;color:var(--accent);font-weight:600}.prose figure{margin:2rem 0}.prose figure img{display:block;margin-inline:auto}@media(min-width:56rem){.post>:is(figure,.gallery){margin-inline:-5rem}}figcaption{margin-top:.5rem;text-align:center;font-family:var(--font-ui);font-size:.875rem;font-style:italic;color:var(--muted)}figcaption>*{margin:0}.post-list{list-style:none;padding:0;margin-top:0}.post-list li{padding-block:1rem;border-bottom:1px solid color-mix(in srgb,var(--fg) 10%,transparent)}.post-list a{text-decoration:none;font-size:1.15rem}.split{display:grid;gap:2rem 4rem;max-width:var(--wide);margin-inline:auto}.split-text{max-width:none;margin:0}.split-text>.visually-hidden+*{margin-top:0}.split-image{margin:0}.split-image img{display:block;width:100%}@media(min-width:48rem){.split{grid-template-columns:1fr 1fr;align-items:start}.split-image{position:sticky;top:2rem}}.listing{max-width:var(--wide)}.post-grid{display:grid;grid-template-columns:1fr;gap:2.5rem 2rem;list-style:none;padding:0;margin:2rem 0 0}@media(min-width:40rem){.post-grid{grid-template-columns:repeat(2,1fr)}}.card{display:block;text-decoration:none}.card img,.card-placeholder{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;transition:opacity .2s}.card-placeholder{background:color-mix(in srgb,var(--fg) 8%,transparent)}.card:hover img{opacity:.85}.card .meta{margin-top:.75rem}.card h3,.card p{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.card h3{-webkit-line-clamp:2;height:2lh;margin:.25rem 0 .5rem;font-size:1.15rem;font-weight:500;line-height:1.3}.card p{-webkit-line-clamp:3;height:3lh;margin:0;color:var(--muted);font-size:.9rem;line-height:1.5}.card:hover h3{text-decoration:underline;text-underline-offset:.15em}.pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;margin-top:3rem;font-size:.9rem}.pagination ol{display:flex;gap:.25rem;list-style:none;margin:0;padding:0}.pagination a,.pagination span[aria-current]{display:block;min-width:2.25rem;padding:.35rem .6rem;border-radius:6px;text-align:center;text-decoration:none}.pagination a{color:var(--muted)}.pagination a:hover{color:var(--fg);background:color-mix(in srgb,var(--fg) 8%,transparent)}.pagination span[aria-current]{background:var(--fg);color:var(--bg)}.pagination-step:first-child{justify-self:start}.pagination-step:last-child{justify-self:end}.tags{font-family:var(--font-ui);display:flex;flex-wrap:wrap;gap:.25rem 1rem;list-style:none;padding:0;color:var(--muted);font-size:.85rem}.tags a{color:inherit;text-decoration:none}.tags a:hover{color:var(--fg)}.tag-index{font-size:1rem;gap:.75rem 1.5rem}.tag-index a{color:var(--fg)}.tag-index a:hover{text-decoration:underline}.tag-index .count{margin-left:.25rem;padding:.05rem .5rem;border-radius:1rem;background:color-mix(in srgb,var(--fg) 8%,transparent);font-size:.75rem;font-variant-numeric:tabular-nums}.gallery img{display:block;width:100%;transition:opacity .2s}.gallery-masonry{columns:1;column-gap:var(--gap)}@media(min-width:40rem){.gallery-masonry{columns:2}}@media(min-width:75rem){.gallery-masonry{columns:3}}.gallery-masonry a{display:block;margin-bottom:var(--gap);break-inside:avoid}.gallery-rows{display:grid;gap:var(--gap)}.gallery-row{display:flex;gap:var(--gap)}.gallery-row a{flex:var(--ratio)1 0;min-width:0}@media(max-width:36rem){.gallery-row{flex-wrap:wrap}.gallery-row a{flex-basis:calc(var(--ratio) * 9rem)}}.gallery a:hover img{opacity:.85}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.to-top{position:fixed;right:clamp(1rem,4vw,3rem);bottom:2rem;z-index:1;display:grid;place-items:center;width:2.75rem;height:2.75rem;border:1px solid color-mix(in srgb,var(--fg) 15%,transparent);border-radius:50%;background:var(--bg);color:var(--muted);box-shadow:0 2px 8px rgb(0 0 0/.15);transition:opacity .3s,visibility .3s}.to-top:hover{color:var(--fg);border-color:color-mix(in srgb,var(--fg) 35%,transparent)}.js:not(.scrolled) .to-top{opacity:0;visibility:hidden}@media(min-width:48rem){.to-top{bottom:5rem}}.lightbox{width:100vw;height:100vh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgb(0 0 0/.95);color:#fff}.lightbox[open]{display:grid;place-items:center}.lightbox::backdrop{background:0 0}.lightbox img{max-width:calc(100vw - 2rem);max-height:calc(100vh - 2rem);object-fit:contain}.lightbox button{position:absolute;background:0 0;border:0;color:inherit;font-size:2.5rem;line-height:1;padding:1rem;cursor:pointer;opacity:.6}.lightbox button:hover,.lightbox button:focus-visible{opacity:1}.lb-prev{left:0;top:50%;translate:0 -50%}.lb-next{right:0;top:50%;translate:0 -50%}.lb-close{right:0;top:0}.lightbox.single [data-step]{display:none}[data-lightbox]{cursor:zoom-in}.search-form{display:flex;gap:.5rem;margin-block:1.5rem}.search-form input,.search-form button{padding:.5rem .75rem;font:inherit;color:inherit;border:1px solid color-mix(in srgb,var(--fg) 20%,transparent);border-radius:6px}.search-form input{flex:1;min-width:0;background:var(--bg)}.search-form input:focus{outline:none;border-color:var(--fg)}.search-form button{background:var(--fg);color:var(--bg);border-color:var(--fg);cursor:pointer}.search-form button:hover{opacity:.85}#tag-results h2{margin:0 0 .5rem;font-weight:400}#tag-results .tags{margin:0 0 1.5rem}#results p{margin:.25rem 0 0;color:var(--muted);font-size:.9rem}#results mark{background:color-mix(in srgb,var(--fg) 12%,transparent);color:var(--fg);border-radius:2px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}