*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:24px}body{background:var(--bg);min-height:100vh;color:var(--fg);font-family:var(--read);-webkit-font-smoothing:antialiased;transition:background-color .5s var(--ease), color .5s var(--ease);flex-direction:column;margin:0;display:flex;overflow-x:hidden}::selection{background:var(--accent);color:var(--bg)}a{color:inherit}.veil,.grain{pointer-events:none;position:fixed;inset:0}.veil{z-index:0;background:radial-gradient(45% 40% at 88% 0%, var(--glow-a), transparent 70%), radial-gradient(40% 40% at 0% 100%, var(--glow-b), transparent 70%)}.grain{z-index:50;opacity:var(--grain);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.bar{z-index:2;padding:clamp(18px, 3vw, 34px) var(--pad-x) 0;font:500 11.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;gap:16px;display:flex;position:relative}.brand{color:var(--fg);align-items:center;gap:10px;text-decoration:none;display:inline-flex}.brand svg{width:22px;height:22px;display:block}.brand .here{color:var(--faint)}.bar-right,.nav{align-items:center;gap:clamp(14px,2.6vw,32px);display:flex}.nav a{text-decoration:none;transition:color .2s}.nav a:hover,.nav a:focus-visible{color:var(--fg)}.nav a[aria-current=page]{color:var(--accent-ink)}@media (width<=640px){.bar{grid-template-columns:1fr auto;row-gap:14px;display:grid}.bar-right{display:contents}.brand{grid-area:1/1}.theme{grid-area:1/2}.nav{grid-area:2/1/3/3;justify-self:end;gap:18px}}.eyebrow{font:500 11.5px/1.3 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);align-items:center;gap:14px;margin:0;display:flex}.eyebrow:before{content:"";background:var(--accent);flex:none;width:32px;height:1px}.caret{background:var(--accent);width:.34em;height:.7em;margin-left:.1em;animation:1.05s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.tag{font:500 11.5px/1 var(--mono);letter-spacing:.04em;color:var(--accent-ink);text-decoration:none}.site-foot{z-index:1;padding:26px var(--pad-x) 34px;border-top:1px solid var(--line);font:400 11px/1.6 var(--mono);letter-spacing:.04em;color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:auto;display:flex;position:relative}.site-foot a{text-decoration:none}.site-foot a:hover{color:var(--fg)}.masthead{z-index:1;padding:clamp(48px, 10vh, 120px) var(--pad-x) clamp(32px, 6vh, 64px);position:relative}.ambient{z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;-webkit-mask-image:linear-gradient(90deg,#0000 25%,#000 70%);mask-image:linear-gradient(90deg,#0000 25%,#000 70%)}.display{font:800 clamp(64px, 13vw, 190px)/.86 var(--sans);letter-spacing:-.035em;margin:clamp(16px,3vh,28px) 0 0;font-stretch:125%}.lede{max-width:34em;color:var(--muted);margin:clamp(20px,3.5vh,32px) 0 0;font-size:clamp(16px,1.3vw,19px);line-height:1.8}.lede strong{color:var(--fg);font-weight:600}.stats{font:400 11.5px/1.6 var(--mono);color:var(--faint);letter-spacing:.04em;margin:14px 0 0}.filters{flex-wrap:wrap;gap:8px;margin-top:clamp(28px,5vh,44px);display:flex}.filters a{font:500 12px/1 var(--mono);letter-spacing:.04em;color:var(--muted);border:1px solid var(--line);background:0 0;border-radius:999px;padding:6px 12px;text-decoration:none;transition:color .2s,border-color .2s,background .2s}.filters a:hover{color:var(--fg);border-color:var(--muted)}.filters a[aria-current=page]{color:var(--bg);background:var(--accent-ink);border-color:var(--accent-ink)}.archive{z-index:1;padding:0 var(--pad-x) clamp(64px, 10vh, 120px);position:relative}.year{grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:0 32px;display:grid}.year[hidden]{display:none}.year-label{font:800 clamp(40px, 5vw, 72px)/1 var(--sans);letter-spacing:-.03em;color:#0000;-webkit-text-stroke:1px var(--faint);align-self:start;margin:0;padding-top:22px;font-stretch:125%;position:sticky;top:24px}.posts{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.year+.year{margin-top:clamp(40px,6vh,64px)}.post[hidden]{display:none}.post a{isolation:isolate;border-bottom:1px solid var(--line);outline:none;grid-template-columns:5.5ch minmax(0,1fr) auto;align-items:start;gap:0 24px;padding:26px 8px 26px 4px;text-decoration:none;display:grid;position:relative}.post a:before{content:"";z-index:-1;background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 12%, transparent), transparent 80%);transform-origin:0;transition:transform .5s var(--ease);position:absolute;inset:0;transform:scaleX(0)}.post a:hover:before,.post a:focus-visible:before{transform:scaleX(1)}.post a:focus-visible{box-shadow:inset 2px 0 0 var(--accent)}.post time{font:500 12px/1 var(--mono);letter-spacing:.04em;color:var(--faint);font-variant-numeric:tabular-nums;padding-top:.45em}.post h3{font:600 clamp(19px, 1.7vw, 24px)/1.45 var(--read);letter-spacing:.01em;color:var(--fg);transition:transform .5s var(--ease);margin:0}.post a:hover h3,.post a:focus-visible h3{transform:translate(6px)}.post p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:10px 0 0;font-size:15px;line-height:1.8;display:-webkit-box;overflow:hidden}.post-meta{font:400 11.5px/1 var(--mono);color:var(--faint);flex-wrap:wrap;gap:6px 14px;margin-top:14px;display:flex}.post .arrow{width:16px;height:16px;color:var(--faint);transition:transform .5s var(--ease), color .2s;margin-top:.4em}.post a:hover .arrow,.post a:focus-visible .arrow{color:var(--accent-ink);transform:translate(3px,-3px)}@media (width<=900px){.year{grid-template-columns:1fr}.year-label{padding:0 0 14px;position:static}}@media (width<=560px){.post a{grid-template-columns:minmax(0,1fr);gap:10px;padding:22px 4px}.post time{padding-top:0}.post .arrow{display:none}}.progress{z-index:60;background:var(--accent);height:2px;transform:scaleX(var(--p,0));transform-origin:0;position:fixed;top:0;left:0;right:0}.article-wrap{z-index:1;padding:clamp(40px, 8vh, 96px) var(--gutter) clamp(64px, 10vh, 120px);grid-template-columns:minmax(0,1fr) minmax(0,42rem) minmax(0,1fr);display:grid;position:relative}.article-wrap>article{grid-column:2;min-width:0}.crumb{font:400 12px/1.4 var(--mono);color:var(--faint);letter-spacing:.02em;margin:0}.crumb a{color:var(--muted);text-decoration:none}.crumb a:hover{color:var(--accent-ink)}.post-head h1{font:700 clamp(28px, 4.2vw, 42px)/1.35 var(--read);letter-spacing:.01em;color:var(--fg);text-wrap:balance;margin:18px 0 0}.dek{color:var(--muted);margin:16px 0 0;font-size:clamp(16px,1.25vw,18px);line-height:1.8}.post-info{border-bottom:1px solid var(--line);font:400 12px/1.4 var(--mono);color:var(--faint);letter-spacing:.03em;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:22px 0 0;padding-bottom:28px;display:flex}.prose{font-family:var(--read);letter-spacing:.02em;color:var(--text);text-align:justify;line-break:strict;overflow-wrap:break-word;hanging-punctuation:allow-end;text-autospace:ideograph-alpha ideograph-numeric;text-spacing-trim:normal;counter-reset:h2;margin-top:36px;font-size:clamp(16.5px,.95rem + .3vw,18px);line-height:1.9}.prose>*{margin:0 0 1.25em}.prose h2,.prose h3{color:var(--fg);text-align:left;letter-spacing:.01em;text-wrap:balance}.prose h2{counter-increment:h2;margin:2.6em 0 .9em;font-size:1.42em;font-weight:700;line-height:1.45}.prose h2:before{content:counter(h2, decimal-leading-zero);font:500 12px/1 var(--mono);letter-spacing:.14em;color:var(--accent-ink);margin-bottom:.5em;display:block}.prose h3{margin:2em 0 .7em;font-size:1.15em;font-weight:700;line-height:1.5}.prose a{color:var(--accent-ink);text-underline-offset:.25em;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent)}.prose a:hover{text-decoration-color:currentColor}.prose strong{color:var(--fg);font-weight:600}.prose em{text-emphasis:dot;text-emphasis-color:var(--old);-webkit-text-emphasis:dot;text-emphasis-position:under;-webkit-text-emphasis-color:var(--old);font-style:normal;-webkit-text-emphasis-position:under}.prose em:lang(en),.prose [lang=en] em{font-style:italic;-webkit-text-emphasis:none;text-emphasis:none}.prose ruby rt{color:var(--muted);letter-spacing:0;font-size:.5em}.prose ul,.prose ol{padding-left:1.6em}.prose li{margin:.45em 0}.prose li::marker{color:var(--accent-ink);font-family:var(--mono);font-size:.85em}.prose blockquote{border-left:2px solid var(--accent);color:var(--muted);margin-left:0;margin-right:0;padding:.2em 0 .2em 1.3em}.prose blockquote>:last-child{margin-bottom:0}.prose hr{text-align:center;border:0;margin:2.4em 0}.prose hr:after{content:"＊　＊　＊";color:var(--faint);letter-spacing:.4em}.prose code{font:.86em/1 var(--mono);letter-spacing:0;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:.12em .38em}.prose pre{text-align:left;font:13.5px/1.75 var(--mono);letter-spacing:0;color:var(--fg);background:var(--surface);border:1px solid var(--line);tab-size:4;border-radius:10px;padding:20px 22px;position:relative;overflow-x:auto}.prose pre code{font:inherit;background:0 0;border:0;padding:0}.prose pre[data-language]:before{content:attr(data-language);font:500 10.5px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);position:absolute;top:10px;right:14px}.table-wrap{overflow-x:auto}.prose table{border-collapse:collapse;text-align:left;width:100%;font-size:.9em;line-height:1.6}.prose th,.prose td{border-bottom:1px solid var(--line);padding:.7em .9em}.prose th{color:var(--fg);border-bottom-color:var(--muted);white-space:nowrap;font-weight:600}.prose td.num,.prose th.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:0}.prose td .up{color:var(--accent-ink)}.prose figure{margin:2em 0}.prose figure svg{width:100%;height:auto;display:block}.prose figcaption{color:var(--muted);text-align:center;margin-top:.8em;font-size:.82em;line-height:1.6}.note{color:var(--muted);background:color-mix(in srgb, var(--old) 7%, transparent);border:1px solid color-mix(in srgb, var(--old) 30%, transparent);border-radius:8px;padding:14px 18px;font-size:.9em;line-height:1.75}.footnotes{border-top:1px solid var(--line);color:var(--muted);margin-top:3em;padding-top:1.4em;font-size:.85em}.footnotes ol{padding-left:1.4em}.prose sup a{font-family:var(--mono);padding:0 .1em;font-size:.8em;text-decoration:none}.post-end{grid-template-columns:1fr 1fr;gap:12px;margin-top:56px;display:grid}.post-end a{border:1px solid var(--line);border-radius:10px;padding:18px 20px;text-decoration:none;transition:border-color .2s,background .2s;display:block}.post-end a:hover{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, transparent)}.post-end small{font:500 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);display:block}.post-end span{color:var(--fg);margin-top:10px;font-size:15px;line-height:1.6;display:block}.post-end .next{text-align:right}@media (width<=560px){.post-end{grid-template-columns:1fr}.post-end .next{text-align:left}}.toc{display:none}@media (width>=1200px){.toc{grid-area:1/3;place-self:start;width:min(240px,100%);margin-top:220px;margin-left:56px;font-size:13px;line-height:1.6;display:block;position:sticky;top:40px}.toc p{font:500 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:0 0 14px}.toc ol{border-left:1px solid var(--line);margin:0;padding:0;list-style:none}.toc a{color:var(--muted);border-left:1px solid #0000;margin-left:-1px;padding:6px 0 6px 14px;text-decoration:none;transition:color .2s,border-color .2s;display:block}.toc a:hover{color:var(--fg)}.toc a.active{color:var(--accent-ink);border-left-color:var(--accent)}}@media (prefers-reduced-motion:reduce){.caret{animation:none}.post a:before,.post h3,.post .arrow{transition:none}}.prose .astro-code,.prose .astro-code span{color:var(--shiki-dark)}:root[data-theme=light] .prose .astro-code,:root[data-theme=light] .prose .astro-code span{color:var(--shiki-light)}.prose .astro-code{background:var(--surface)}.prose pre[data-language=plaintext]:before{content:none}.prose:lang(en){text-align:left;letter-spacing:0;hyphens:auto}@media (width<=640px){.prose table{display:block;overflow-x:auto}}.prose details{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:4px 18px}.prose details[open]{padding-bottom:18px}.prose summary{cursor:pointer;color:var(--fg);margin:0 -18px;padding:12px 18px;font-weight:600;list-style-position:inside}.prose summary::marker{color:var(--accent-ink)}.prose details>:not(summary){margin:0 0 1.25em}.prose h4,.prose h5,.prose h6{color:var(--fg);text-align:left;margin:1.6em 0 .6em;font-size:1em;line-height:1.5}.prose section[data-footnotes]{border-top:1px solid var(--line);color:var(--muted);margin-top:3em;padding-top:1.4em;font-size:.85em}.prose section[data-footnotes] ol{padding-left:1.4em}.prose [data-footnote-backref]{text-decoration:none}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.prose h2.sr-only:before{content:none}.lede .accent{color:var(--accent-ink)}.pager{font:500 12px/1 var(--mono);letter-spacing:.06em;color:var(--faint);justify-content:space-between;align-items:center;gap:16px;margin-top:36px;display:flex}.pager a,.pager span.off{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:10px 14px;text-decoration:none;transition:color .2s,border-color .2s}.pager a:hover{color:var(--fg);border-color:var(--accent)}.pager span.off{opacity:.4}.pager ol{gap:6px;margin:0;padding:0;list-style:none;display:flex}.pager ol a,.pager ol span{text-align:center;border:0;min-width:2.4em;padding:8px 0;display:inline-block}.pager ol [aria-current=page]{color:var(--accent-ink)}.lost{z-index:1;padding:clamp(64px, 14vh, 160px) var(--pad-x);position:relative}.lost .display{color:var(--faint)}.lost p{max-width:32em;color:var(--muted);margin:24px 0 0;font-size:17px;line-height:1.8}.lost a{color:var(--accent-ink)}.post-head h1,.crumb,.post h3,.post-end span,.toc a{overflow-wrap:anywhere}@media (width<=640px){.prose{text-align:left}}
