.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/manrope-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/manrope-latin-ext-400-normal.woff2)format("woff2");unicode-range:U+100-24F,U+259,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/manrope-latin-500-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/manrope-latin-700-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/manrope-latin-ext-700-normal.woff2)format("woff2");unicode-range:U+100-24F,U+259,U+1E??,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:EB Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/eb-garamond-latin-600-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#d1cdb7;--surface:#dcd8c0;--grid:#ccc8b1;--ink:#3f3d36;--ink-2:#4f4c44;--ink-3:#57534a;--ink-4:#6b665c;--inverse:#57544a;--inverse-ink:#f7f0d3;--alert:#cd664d;--accent:#d35c31;--line:#3f3d3638;--line-strong:#3f3d3675;--shadow-hard:6px 4px 0 #3f3d362e;--font-ui:"Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--font-logo:"EB Garamond", "Songti SC", "Noto Serif SC", Georgia, serif;--font-mono:ui-monospace, "SF Mono", "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;--fs-body:18px;--lh-body:1.78;--measure:38em;--wide:1120px;--gutter:clamp(20px, 5vw, 72px);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--s12:48px;--s16:64px;--s24:96px;--ease-out:cubic-bezier(.2, 0, 0, 1);--ease-swipe:cubic-bezier(.2, 0, 0, 1);--dur-fast:.12s;--dur:.2s}*,:before,:after{box-sizing:border-box}html{background:var(--paper);-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body:before{content:"";z-index:-1;pointer-events:none;background-color:var(--paper);background-image:radial-gradient(120% 100% at 50% 45%, transparent 55%, #3f3d3624 100%), linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-repeat:no-repeat,repeat,repeat;background-size:100% 100%,30px 30px,30px 30px;position:fixed;inset:0}body:after{content:"";z-index:1;pointer-events:none;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");position:fixed;inset:0}body{font-family:var(--font-ui);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-spacing-trim:space-first;min-height:100vh;margin:0;font-weight:400}h1,h2,h3,h4,h5{font-family:var(--font-ui);letter-spacing:0;color:var(--ink);text-wrap:balance;margin:0;font-weight:700;line-height:1.3}p{margin:0}ul,ol{margin:0;padding:0}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-decoration:none}::selection{background:var(--inverse);color:var(--inverse-ink)}:focus-visible{outline:1px solid var(--alert);outline-offset:3px}.dlabel{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);font-variant-numeric:tabular-nums;align-items:baseline;gap:.45em;font-size:10px;font-weight:500;display:inline-flex}.dlabel .k{color:var(--ink-3)}.dlabel .colon{color:var(--ink-4);letter-spacing:0}.dlabel .v{color:var(--ink);font-weight:600}.segbar{background:var(--line);height:4px;position:relative;overflow:hidden}.segbar:after{content:"";background-image:repeating-linear-gradient(90deg, transparent 0 6px, var(--paper) 6px 8px);position:absolute;inset:0}.segbar .fill{background:var(--ink-2);transform-origin:0;height:100%;transition:transform var(--dur) linear;display:block;transform:scaleX(0)}.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}.skip-link{z-index:100;background:var(--inverse);color:var(--inverse-ink);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;padding:10px 16px;font-size:11px;position:absolute;top:0;left:-9999px}.skip-link:focus{top:12px;left:12px}.masthead{z-index:40;background:var(--paper);border-bottom:1px solid var(--line-strong);box-shadow:0 3px 0 -2px var(--line);view-transition-name:masthead;position:sticky;top:0}.masthead-inner{max-width:none;padding:13px var(--gutter);justify-content:space-between;align-items:center;gap:var(--s6);margin:0 auto;display:flex}.brand{align-items:center;min-width:0;display:flex}.brand-title{font-family:var(--font-logo);letter-spacing:.2em;white-space:nowrap;color:var(--ink);transition:color var(--dur-fast) var(--ease-out);font-size:21px;font-weight:600;line-height:1.05}.brand:hover .brand-title{color:var(--accent)}.nav{padding-left:var(--s4);border-left:1px solid var(--line);align-items:stretch;gap:0;display:flex}.nav a{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);transition:background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);align-items:baseline;gap:6px;padding:9px 13px;font-size:10.5px;display:inline-flex;position:relative}.nav a .n{letter-spacing:.1em;color:var(--ink-3);transition:color var(--dur-fast) var(--ease-out);font-size:8.5px}.nav a .lbl{position:relative}.nav a .lbl:after{content:"";background:var(--ink);transform-origin:0;height:1px;transition:transform var(--dur) var(--ease-out);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.nav a:hover{background:var(--surface);color:var(--ink)}.nav a:hover .lbl:after{transform:scaleX(1)}.nav a.current{background:var(--inverse);color:var(--inverse-ink)}.nav a.current .n{color:var(--inverse-ink);opacity:.65}.nav a.current .lbl:after{display:none}.nav a.current:before{content:"";background:var(--alert);width:2px;position:absolute;top:0;bottom:0;left:0}.nav-status{margin-left:var(--s3);padding-left:var(--s3);border-left:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:6px;font-size:8.5px;display:inline-flex}.nav-status .dot{background:var(--ink-2);width:4px;height:4px;animation:pulse 2.6s var(--ease-out) infinite;border-radius:50%}.main{padding:var(--s12) var(--gutter) var(--s16)}.main-inner{max-width:var(--wide);margin:0 auto}.post-grid{grid-template-columns:168px minmax(0,1fr);gap:clamp(24px,4vw,56px);display:grid}.post-aside{align-self:start;gap:var(--s6);flex-direction:column;padding-top:4px;display:flex;position:sticky;top:96px}.aside-progress{background:var(--line);width:1px;height:96px;position:relative}.aside-progress .fill{background:var(--alert);transform-origin:top;position:absolute;inset:0;transform:scaleY(0)}.aside-meta{gap:var(--s4);flex-direction:column;display:flex}.aside-block{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);flex-direction:column;gap:3px;font-size:9px;display:flex}.aside-block .val{font-family:var(--font-ui);letter-spacing:.02em;color:var(--ink);text-transform:none;font-variant-numeric:tabular-nums;font-size:12px}@media (width<=900px){.post-grid{grid-template-columns:minmax(0,1fr);gap:0}.post-aside{align-items:center;gap:var(--s4) var(--s6);padding:0 0 var(--s4);border-bottom:1px solid var(--line);margin-bottom:var(--s6);flex-flow:wrap;position:static}.aside-progress{display:none}.aside-meta{gap:var(--s2) var(--s6);flex-flow:wrap}}.site-foot{margin-top:var(--s24);padding-top:var(--s3);border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:var(--s2) var(--s6);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);flex-wrap:wrap;font-size:9.5px;display:flex}.site-foot a{color:var(--ink-3);transition:color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);border-bottom:1px solid #0000}.site-foot a:hover{color:var(--accent);border-bottom-color:var(--accent)}.site-foot .foot-right{align-items:center;gap:var(--s4);display:flex}.site-foot .status{align-items:center;gap:6px;display:inline-flex}.site-foot .status .dot{background:var(--ink-3);width:5px;height:5px;animation:pulse 2.6s var(--ease-out) infinite;border-radius:50%}@media (width<=760px){.masthead-inner{gap:var(--s3);padding:10px 18px}.brand-title{letter-spacing:.14em;font-size:17px}.nav a{letter-spacing:.06em;min-height:44px;padding:0 10px;font-size:10px}.nav a .n,.nav-status{display:none}.main{padding:28px 18px 56px}}.icon{vertical-align:-.125em;flex:none;line-height:0;display:inline-block}.icon svg{fill:currentColor;width:100%;height:100%}.read-progress{z-index:60;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.read-progress .fill{background:var(--alert);transform-origin:0;height:100%;display:block;transform:scaleX(0)}.cover{padding:var(--s2) 0 var(--s12);border-bottom:1px solid var(--line-strong);grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:clamp(24px,5vw,64px);display:grid}.cover-lead{gap:var(--s3);flex-direction:column;min-width:0;display:flex}.cover-meta{align-items:center;gap:var(--s3);display:flex}.cover-meta .sep{color:var(--ink-4);font-size:12px;line-height:1}.cover-title{font-family:var(--font-ui);letter-spacing:-.015em;max-width:20em;font-size:clamp(30px,4.4vw,52px);font-weight:700;line-height:1.28}.cover-title .mark{background:var(--inverse);color:var(--inverse-ink);box-decoration-break:clone;padding:0 .14em .04em}@media (width<=760px){.cover-title{font-size:clamp(26px,8vw,34px);line-height:1.38}}.cover-sub{max-width:46ch;color:var(--ink-2);align-items:baseline;gap:8px;font-size:.95em;display:flex}.caret{background:var(--alert);flex:none;width:2px;height:.92em;animation:1.2s step-end infinite caret-blink;display:inline-block;transform:translateY(.08em)}@keyframes caret-blink{0%,49%{opacity:1}50%,to{opacity:0}}.hud{border:1px solid var(--line-strong);background:var(--surface);padding:var(--s3) var(--s4) var(--s4);gap:var(--s3);flex-direction:column;display:flex}.hud .hud-head{justify-content:space-between;align-items:baseline;gap:var(--s2);padding-bottom:var(--s2);border-bottom:1px solid var(--line);display:flex}.hud .hud-row{justify-content:space-between;align-items:baseline;gap:var(--s3);font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);font-size:9.5px;display:flex}.hud .hud-row .num{font-family:var(--font-ui);letter-spacing:.02em;color:var(--ink);font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.hud .hud-bars{padding-top:var(--s1);flex-direction:column;gap:5px;display:flex}.hud .hud-bar{gap:var(--s2);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);grid-template-columns:54px 1fr;align-items:center;font-size:8.5px;display:grid}@media (width<=900px){.cover{gap:var(--s6);grid-template-columns:1fr}.hud{max-width:340px}}.section-head{justify-content:space-between;align-items:baseline;gap:var(--s4);padding:var(--s3) 0 var(--s2);border-bottom:1px solid var(--line-strong);flex-wrap:wrap;display:flex}.records{flex-direction:column;display:flex}.record{gap:var(--s4);padding:var(--s6) var(--s3);border-bottom:1px solid var(--line);transition:background-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out);grid-template-columns:56px minmax(0,1fr) 96px;display:grid;position:relative}.record:before{content:"";background:linear-gradient(90deg, var(--alert) 0 2px, transparent 2px 4px, var(--alert) 4px 5px, transparent 5px);width:6px;height:0;transition:height var(--dur) var(--ease-out);position:absolute;top:50%;left:0;transform:translateY(-50%)}.record:hover{background:var(--inverse);color:var(--inverse-ink)}.record:hover:before{height:34px}.record:hover .record-title,.record:hover .record-no,.record:hover .record-desc,.record:hover .record-tags,.record:hover .record-date{color:var(--inverse-ink)}.record:hover .record-desc,.record:hover .record-tags,.record:hover .record-date{opacity:.78}.record:hover .record-arrow{opacity:1;transform:none}.record-no{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-3);font-variant-numeric:tabular-nums;transition:color var(--dur-fast) var(--ease-out);padding-top:7px;font-size:10.5px}.record-body{min-width:0}.record-title{letter-spacing:-.005em;font-size:1.24em;font-weight:700;line-height:1.45}.record-desc{margin-top:var(--s2);max-width:62ch;color:var(--ink-2);-webkit-line-clamp:2;line-clamp:2;transition:color var(--dur-fast) var(--ease-out);-webkit-box-orient:vertical;font-size:.9em;line-height:1.7;display:-webkit-box;overflow:hidden}.record-tags{margin-top:var(--s2);gap:var(--s3);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);transition:color var(--dur-fast) var(--ease-out);flex-wrap:wrap;font-size:9px;display:flex}.record-date{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-3);font-variant-numeric:tabular-nums;text-align:right;transition:color var(--dur-fast) var(--ease-out);padding-top:8px;font-size:10px}.record-arrow{right:14px;bottom:var(--s4);font-family:var(--font-mono);color:var(--alert);opacity:0;transition:opacity var(--dur) var(--ease-out), transform var(--dur) var(--ease-out);font-size:10px;position:absolute;transform:translate(-6px)}@media (width<=760px){.record{gap:var(--s3);padding:var(--s4) var(--s2);grid-template-columns:36px minmax(0,1fr)}.record-date{text-align:left;grid-column:2;padding-top:0}.record-arrow{display:none}}.chip{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-2);border:1px solid var(--line);transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);align-items:baseline;gap:6px;padding:2px 8px 3px;font-size:9.5px;display:inline-flex}.chip:hover{color:var(--inverse-ink);background:var(--inverse);border-color:var(--inverse)}.tag-cloud{gap:var(--s2);flex-wrap:wrap;display:flex}.tag-cloud a{align-items:center;gap:var(--s2);border:1px solid var(--line);transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);padding:7px 12px;font-size:.95em;display:inline-flex}.tag-cloud a .n{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-3);font-size:9px}.tag-cloud a .bulk{background:var(--line);width:24px;height:3px;display:block;position:relative}.tag-cloud a .bulk:after{content:"";background:var(--ink-2);transform:scaleX(var(--w,.2));transform-origin:0;position:absolute;inset:0}.tag-cloud a:hover{color:var(--inverse-ink);background:var(--inverse);border-color:var(--inverse)}.tag-cloud a:hover .n{color:var(--inverse-ink);opacity:.7}.tag-cloud a:hover .bulk{background:#f7f0d34d}.tag-cloud a:hover .bulk:after{background:var(--inverse-ink)}.pager{margin-top:var(--s6);justify-content:space-between;align-items:center;gap:var(--s4);font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);font-size:10px;display:flex}.btn{align-items:center;gap:var(--s2);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink);border:1px solid var(--line-strong);transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);background:0 0;padding:8px 14px;font-size:10px;display:inline-flex}.btn:hover{color:var(--inverse-ink);background:var(--inverse);border-color:var(--inverse)}.btn.primary{box-shadow:var(--shadow-hard)}.btn.primary:active{transform:translate(3px,2px);box-shadow:3px 2px #3f3d362e}.post-head{gap:var(--s4);padding-bottom:var(--s6);flex-direction:column;display:flex}.post-title{letter-spacing:-.012em;font-size:clamp(26px,3.6vw,40px);font-weight:700;line-height:1.34}.post-dek{max-width:52ch;color:var(--ink-2);font-size:1em}.post-stat{gap:var(--s2) var(--s8);padding:var(--s3) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(96px,auto));display:grid}.post-stat .cell{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);flex-direction:column;gap:2px;font-size:8.5px;display:flex}.post-stat .val{font-family:var(--font-ui);letter-spacing:.02em;text-transform:none;color:var(--ink);font-variant-numeric:tabular-nums;font-size:13px;font-weight:500}.prose{max-width:var(--measure);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}.prose>*+*{margin-top:1.15em}.prose p{text-wrap:pretty}.prose h2{border-top:1px solid var(--line);letter-spacing:-.005em;margin-top:2.4em;padding-top:.7em;scroll-margin-top:96px;font-size:1.45em;font-weight:700}.prose h3{margin-top:2em;scroll-margin-top:96px;font-size:1.18em}.prose h4{color:var(--ink-2);margin-top:1.7em;scroll-margin-top:96px;font-size:1em}.prose a{color:var(--ink);border-bottom:1px solid var(--line-strong);transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);padding-bottom:1px}.prose a:hover{color:var(--inverse-ink);background:var(--inverse);border-bottom-color:var(--inverse)}.prose strong{color:var(--ink);font-weight:700}.prose ul,.prose ol{padding-left:1.35em}.prose li+li{margin-top:.4em}.prose ul>li::marker{content:"▪  ";color:var(--ink-3);font-size:.72em}.prose ol>li::marker{font-family:var(--font-mono);color:var(--ink-3);font-size:.85em}.prose blockquote{padding:var(--s3) var(--s4);border-left:2px solid var(--alert);background:var(--surface);color:var(--ink-2);margin:1.7em 0}.prose blockquote p+p{margin-top:.7em}.prose :not(pre)>code{font-family:var(--font-mono);color:var(--ink);background:var(--surface);border:1px solid var(--line);padding:.12em .36em;font-size:.85em}.prose figure{margin:1.8em 0}.prose img{border:1px solid var(--line)}.prose hr{border:0;border-top:1px solid var(--line);height:0;margin:2.6em 0}.prose table{border-collapse:collapse;width:100%;font-size:.9em;display:block;overflow-x:auto}.prose figure[data-rehype-pretty-code-figure]{max-width:100%}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:.6em .75em}.prose th{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);border-bottom-color:var(--line-strong);font-size:.76em;font-weight:500}figure[data-rehype-pretty-code-figure]{border:1px solid var(--line-strong);background:var(--surface);margin:1.8em 0;position:relative}figure[data-rehype-pretty-code-figure] pre{padding:var(--s3) var(--s4);margin:0;font-size:13.5px;line-height:1.7;overflow-x:auto}figure[data-rehype-pretty-code-figure] pre:before{content:attr(data-language);width:max-content;font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px;font-size:9px;display:block;position:sticky;left:0}figure[data-rehype-pretty-code-figure] pre::-webkit-scrollbar{height:8px}figure[data-rehype-pretty-code-figure] pre::-webkit-scrollbar-thumb{background:var(--line-strong)}figure[data-rehype-pretty-code-figure] code{font-family:var(--font-mono);color:inherit;background:0 0;border:0;padding:0}figure[data-rehype-pretty-code-figure] .copy-btn{z-index:3;min-height:24px;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);transition:color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);align-items:center;padding:3px 9px;font-size:9px;display:inline-flex;position:absolute;top:3px;right:3px}figure[data-rehype-pretty-code-figure] .copy-btn:hover,figure[data-rehype-pretty-code-figure] .copy-btn.copied{color:var(--inverse-ink);background:var(--inverse);border-color:var(--inverse)}figure[data-rehype-pretty-code-figure]:after{content:"";border:1px solid var(--ink-3);pointer-events:none;z-index:2;border-top:0;border-left:0;width:7px;height:7px;position:absolute;bottom:-1px;right:-1px}code[data-line-numbers]{counter-reset:line}code[data-line-numbers]>[data-line]:before{counter-increment:line;content:counter(line);text-align:right;width:1.4rem;color:var(--ink-3);user-select:none;margin-right:1.2rem;display:inline-block}code[data-line-numbers-max-digits="2"]>[data-line]:before{width:2rem}code[data-line-numbers-max-digits="3"]>[data-line]:before{width:2.8rem}.toc{margin:0 0 var(--s8);border:1px solid var(--line);background:var(--surface)}.toc .toc-head{justify-content:space-between;align-items:baseline;gap:var(--s3);border-bottom:1px solid var(--line);padding:8px 12px;display:flex}.toc ul{columns:2;column-gap:24px;padding:8px 12px 10px;list-style:none}@media (width<=700px){.toc ul{columns:1}}.toc li+li{margin-top:3px}.toc li{break-inside:avoid;line-height:1.5}.toc a{color:var(--ink-2);transition:color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);padding:1px 0;font-size:.86em;line-height:1.5;display:inline-block}.toc a:hover{color:var(--ink);transform:translate(3px)}.toc a.active{color:var(--ink);border-left:2px solid var(--alert);margin-left:-12px;padding-left:10px;font-weight:600;transform:none}.post-adjacent{margin-top:var(--s12);border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.post-adjacent a{padding:var(--s4) var(--s4) var(--s6);transition:background-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out);flex-direction:column;gap:6px;display:flex}.post-adjacent a .dir{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);font-size:8.5px}.post-adjacent a .to{font-size:.98em;font-weight:600;line-height:1.45}.post-adjacent a:hover{background:var(--inverse);color:var(--inverse-ink)}.post-adjacent a:hover .dir{color:var(--inverse-ink);opacity:.7}.post-adjacent .next{text-align:right;border-left:1px solid var(--line);align-items:flex-end}.related{margin-top:var(--s8)}.related .related-head{justify-content:space-between;align-items:baseline;gap:var(--s4);padding-bottom:var(--s2);border-bottom:1px solid var(--line);display:flex}.related ul{list-style:none}.related li{border-bottom:1px solid var(--line)}.related a{justify-content:space-between;align-items:baseline;gap:var(--s4);padding:var(--s3) 4px;transition:background-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out);display:flex}.related a .t{font-weight:600}.related a .d{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:9.5px}.related a:hover{background:var(--inverse);color:var(--inverse-ink)}.related a:hover .d{color:var(--inverse-ink);opacity:.7}@media (width<=640px){.post-adjacent{grid-template-columns:1fr}.post-adjacent .next{text-align:left;border-left:0;border-top:1px solid var(--line);align-items:flex-start}}.log{flex-direction:column;display:flex}.log-year{gap:var(--s6);padding:var(--s4) 0 var(--s6);border-bottom:1px solid var(--line);grid-template-columns:132px minmax(0,1fr);display:grid}.log-year:last-child{border-bottom:0}.log-year-no{letter-spacing:-.01em;color:var(--ink-2);font-variant-numeric:tabular-nums;align-self:start;font-size:30px;font-weight:700;line-height:1;position:sticky;top:88px}.log-list{list-style:none}.log-list li{align-items:baseline;gap:var(--s4);padding:5px 0;display:flex}.log-date{width:46px;font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-3);font-variant-numeric:tabular-nums;flex:none;font-size:10px}.log-title{transition:background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);padding:1px 3px;font-size:1em;font-weight:600;line-height:1.6}.log-title:hover{background:var(--inverse);color:var(--inverse-ink)}@media (width<=760px){.log-year{gap:var(--s2);grid-template-columns:1fr}.log-year-no{font-size:22px;position:static}}.notfound{gap:var(--s4);flex-direction:column;padding:6vh 0;display:flex}.notfound-code{letter-spacing:-.03em;color:var(--ink-2);font-size:clamp(72px,13vw,132px);font-weight:700;line-height:.9}.notfound p{max-width:44ch;color:var(--ink-2)}.notfound .btn{align-self:flex-start}.boot{display:none}html.is-booting .boot{z-index:90;background:var(--paper);animation:boot-out .42s var(--ease-swipe) 1.32s both;place-items:center;display:grid;position:fixed;inset:0}html.is-booting .boot:before{content:"";background-image:radial-gradient(120% 100% at 50% 45%, transparent 50%, #3f3d362e 100%), linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);pointer-events:none;background-size:100% 100%,30px 30px,30px 30px;position:absolute;inset:0}.boot-inner{gap:var(--s3);flex-direction:column;width:min(360px,76vw);display:flex;position:relative}.boot-mark{font-family:var(--font-logo);letter-spacing:.28em;color:var(--ink);font-size:24px;font-weight:600}.boot-log{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);flex-direction:column;gap:4px;font-size:9.5px;list-style:none;display:flex}.boot-log li{justify-content:space-between;gap:var(--s3);opacity:0;animation:boot-line .24s var(--ease-out) forwards;display:flex}.boot-log li .ok{color:var(--ink)}.boot-log li:first-child{animation-delay:80ms}.boot-log li:nth-child(2){animation-delay:.2s}.boot-log li:nth-child(3){animation-delay:.32s}.boot-log li:nth-child(4){animation-delay:.44s}.boot-bar{background:var(--line);height:2px;overflow:hidden}.boot-bar:after{content:"";background:var(--ink);transform-origin:0;height:100%;animation:boot-fill 1.05s var(--ease-out) .12s both;display:block;transform:scaleX(0)}.boot-hint{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);font-size:8.5px}@keyframes boot-line{0%{opacity:0;transform:translate(-6px)}to{opacity:1;transform:none}}@keyframes boot-fill{to{transform:scaleX(1)}}@keyframes boot-out{to{transform:translateY(-101%)}}.toast{z-index:80;background:var(--inverse);color:var(--inverse-ink);font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;opacity:0;pointer-events:none;transition:opacity var(--dur) var(--ease-out), transform var(--dur) var(--ease-out);box-shadow:var(--shadow-hard);padding:8px 16px;font-size:10px;position:fixed;bottom:24px;left:50%;transform:translate(-50%,12px)}.toast.show{opacity:1;transform:translate(-50%)}::view-transition-group(root){animation:none}@keyframes page-out-left{to{transform:translate(-100%)}}@keyframes page-in-right{0%{transform:translate(100%)}}@keyframes page-out-right{to{transform:translate(100%)}}@keyframes page-in-left{0%{transform:translate(-100%)}}::view-transition-old(root){animation:page-out-left .68s var(--ease-swipe) both}::view-transition-new(root){animation:page-in-right .68s var(--ease-swipe) both}html[data-astro-transition=back]::view-transition-old(root){animation-name:page-out-right}html[data-astro-transition=back]::view-transition-new(root){animation-name:page-in-left}::view-transition-group(masthead){animation-duration:1ms}::view-transition-old(masthead){opacity:0;animation:none}::view-transition-new(masthead){opacity:1;animation:none}.vt-seam{z-index:-2;background:var(--alert);view-transition-name:seam;width:2px;position:fixed;top:0;bottom:0;left:0}::view-transition-group(seam){animation-duration:.68s}::view-transition-old(seam){opacity:0;animation:none}::view-transition-new(seam){animation:seam-sweep .68s var(--ease-swipe) both}@keyframes seam-sweep{0%{transform:translate(100vw)}to{transform:translate(0,0)}}html[data-astro-transition=back]::view-transition-new(seam){animation-name:seam-sweep-back}@keyframes seam-sweep-back{0%{transform:translate(0,0)}to{transform:translate(100vw)}}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}}.cover-lead,.hud,.section-head,.post-head,.post-stat,.toc,.prose,.post-adjacent,.related{animation:rise-in .52s var(--ease-out) both}.hud{animation-delay:80ms}.section-head,.post-stat{animation-delay:60ms}.toc{animation-delay:.1s}.prose{animation-delay:.14s}.post-adjacent,.related{animation-delay:.18s}.record{animation:rise-in .48s var(--ease-out) both}.record:first-child{animation-delay:40ms}.record:nth-child(2){animation-delay:80ms}.record:nth-child(3){animation-delay:.12s}.record:nth-child(4){animation-delay:.16s}.record:nth-child(5){animation-delay:.2s}.record:nth-child(6){animation-delay:.24s}.record:nth-child(n+7){animation-delay:.28s}.log-year{animation:rise-in .48s var(--ease-out) both}.log-year:first-child{animation-delay:40ms}.log-year:nth-child(2){animation-delay:80ms}.log-year:nth-child(3){animation-delay:.12s}.log-year:nth-child(n+4){animation-delay:.16s}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}@media (prefers-reduced-motion:reduce){::view-transition-group(root),::view-transition-old(root),::view-transition-new(root),::view-transition-group(masthead),::view-transition-old(masthead),::view-transition-new(masthead),::view-transition-group(seam),::view-transition-old(seam),::view-transition-new(seam){animation:none!important}.vt-seam{display:none}.cover-lead,.hud,.section-head,.post-head,.post-stat,.toc,.prose,.post-adjacent,.related,.record,.log-year,.boot-log li{opacity:1!important;animation:none!important;transform:none!important}.boot-bar:after{transform:scaleX(1);animation:none!important}html.is-booting .boot{display:none}.site-foot .status .dot{animation:none}}
