@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-400.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-500.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/jetbrains-mono-700.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-400.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-500.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-600.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic-400.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic-500.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/jetbrains-mono-cyrillic-700.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-cyrillic-400.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-cyrillic-500.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-cyrillic-600.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}:root{--canvas:#0a0a0c;--canvas-deep:#060607;--rule:#1c1c20;--rule-soft:#131316;--text-primary:#f4f4f5;--text-secondary:#a1a1aa;--text-muted:#71717a;--text-faint:#52525b;--panel:#0000004d;--selection:#27272a;--prose:#ececee;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", "IBM Plex Mono", "Hiragino Sans", "Yu Gothic UI", "Noto Sans CJK JP", monospace;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "Hiragino Sans", "Yu Gothic UI", "Noto Sans CJK JP", sans-serif;color-scheme:dark}:root[data-theme=light]{--canvas:#eceae5;--canvas-deep:#f7f6f3;--rule:#cfccc4;--rule-soft:#e0ddd6;--text-primary:#1a1a1d;--text-secondary:#44444a;--text-muted:#6b6b72;--text-faint:#9b9aa0;--panel:#14141909;--selection:#d8d5cd;--prose:#44444a;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{background:var(--canvas);color:var(--text-secondary);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;min-height:100vh;font-size:14px;transition:background-color .35s,color .35s}::selection{background:var(--selection)}a{color:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:1px solid var(--text-muted);outline-offset:3px}.wrap{max-width:72ch;margin:0 auto;padding:0 20px}.mast{border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:26px 0 16px;display:flex}.brand{letter-spacing:.02em;color:var(--text-primary);white-space:nowrap;font-size:15px;font-weight:700;text-decoration:none}.brand .dim{color:var(--text-faint);font-weight:500}.mast-right{align-items:center;gap:10px;display:flex}.plink,.toggle{font-family:var(--font-mono);letter-spacing:.18em;color:var(--text-muted);border:1px solid var(--rule);background:var(--panel);cursor:pointer;white-space:nowrap;border-radius:2px;padding:6px 10px;font-size:10px;text-decoration:none;transition:color .2s,border-color .2s}.plink:hover,.toggle:hover{color:var(--text-primary);border-color:var(--text-faint)}.langs{gap:4px;display:flex}.lang{font-family:var(--font-mono);letter-spacing:.14em;color:var(--text-faint);border:1px solid var(--rule-soft);border-radius:2px;padding:6px 7px;font-size:10px;text-decoration:none;transition:color .2s,border-color .2s}a.lang:hover{color:var(--text-primary);border-color:var(--text-faint)}.lang.cur{color:var(--text-primary);border-color:var(--text-faint);background:var(--panel)}.chips{border-bottom:1px solid var(--rule-soft);letter-spacing:.18em;flex-wrap:wrap;gap:8px 18px;padding:14px 0;font-size:10.5px;display:flex}.chip{color:var(--text-muted);white-space:nowrap;text-decoration:none}a.chip:hover{color:var(--text-primary);text-underline-offset:4px;text-decoration:underline}.chip .d{color:var(--acc)}.chip .n{color:var(--text-muted)}.chip.off{color:var(--text-faint);opacity:.5}.year{color:var(--text-muted);letter-spacing:.24em;align-items:center;gap:12px;margin:28px 0 4px;font-size:10px;display:flex}.year:before{content:"";border-top:1px dashed var(--rule);width:26px}.year:after{content:"";border-top:1px dashed var(--rule);flex:1}.row{border-bottom:1px solid var(--rule-soft);padding:16px 0 18px;text-decoration:none;display:block}.meta{letter-spacing:.2em;color:var(--text-muted);text-transform:uppercase;font-size:10px}.meta .sep{opacity:.6;padding:0 2px}.ds{color:var(--acc)}.row .title{letter-spacing:-.01em;color:var(--text-primary);text-wrap:balance;margin:7px 0 5px;font-size:17px;font-weight:700;line-height:1.35}.row:hover .title{text-underline-offset:4px;text-decoration:underline}.row .sum{font-family:var(--font-sans);color:var(--text-muted);max-width:64ch;font-size:14px;line-height:1.55}.empty{letter-spacing:.18em;color:var(--text-faint);text-transform:uppercase;margin:34px 0;font-size:11px}.dhead{margin:30px 0 4px}.dhead .lab{letter-spacing:.2em;color:var(--text-secondary);text-transform:uppercase;font-size:11px}.dhead .lab .d{color:var(--acc)}.dhead .drule{background:var(--acc);height:2px;margin-top:10px}.backrow{letter-spacing:.18em;margin-top:18px;font-size:10.5px}.backrow a{color:var(--text-muted);text-underline-offset:4px;text-decoration:underline}.backrow a:hover{color:var(--text-primary)}.kicker{letter-spacing:.2em;color:var(--text-muted);text-transform:uppercase;margin-top:30px;font-size:10px}.kicker a{color:var(--text-muted);text-decoration:none}.kicker a:hover{color:var(--text-secondary);text-underline-offset:4px;text-decoration:underline}.kicker a.ds{color:var(--acc)}.kicker .sep{opacity:.6;padding:0 2px}.ptitle{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--text-primary);text-wrap:balance;margin:12px 0 4px;font-size:26px;font-weight:700;line-height:1.3}.linksrow{letter-spacing:.18em;text-transform:uppercase;margin-top:10px;font-size:10.5px}.linksrow a{color:var(--text-muted);text-underline-offset:4px;margin-right:16px;text-decoration:underline}.linksrow a:hover{color:var(--text-primary)}article{animation:.42s cubic-bezier(.16,1,.3,1) fadeUp}.prose{font-family:var(--font-sans);color:var(--prose);margin-top:28px;font-size:16.5px;line-height:1.75}.prose p{margin:0 0 1.45em}.prose em{color:var(--text-primary)}.prose strong{color:var(--text-primary);font-weight:600}.prose a{color:var(--text-primary);text-underline-offset:4px;text-decoration:underline;text-decoration-color:var(--text-faint)}.prose a:hover{text-decoration-color:var(--text-primary)}.prose h2,.prose h3{font-family:var(--font-mono);color:var(--text-primary);letter-spacing:0;text-wrap:balance;margin:2.1em 0 .8em;font-weight:700}.prose h2{font-size:17px}.prose h3{font-size:15px}.prose h2:before,.prose h3:before{content:"// ";color:var(--text-faint);font-weight:500}.prose ul,.prose ol{margin:0 0 1.45em;padding-left:1.4em}.prose li{margin-bottom:.4em}.prose li::marker{color:var(--text-faint)}.prose code{font-family:var(--font-mono);background:var(--panel);border:1px solid var(--rule-soft);border-radius:2px;padding:1px 5px;font-size:.82em}.prose blockquote{border-left:2px solid var(--acc,var(--rule));color:var(--text-secondary);margin:0 0 1.45em;padding:2px 0 2px 18px}.prose hr{border:none;border-top:1px dashed var(--rule);margin:2.2em 0}.prose img{border:1px solid var(--rule-soft);border-radius:2px;max-width:100%;height:auto;display:block}.prose figure{margin:0 0 1.45em}figure.fig-light{display:none}:root[data-theme=light] figure.fig-light{display:block}:root[data-theme=light] figure.fig-dark{display:none}.prose figcaption{font-family:var(--font-mono);letter-spacing:.06em;color:var(--text-muted);margin-top:8px;font-size:11px}.prose .katex-display{color:var(--text-primary);margin:1.7em 0;padding:2px 0;overflow:auto hidden}.prose .katex{font-size:1.08em}.codewrap{position:relative}.copy{font-family:var(--font-mono);letter-spacing:.18em;color:var(--text-muted);background:var(--canvas);border:1px solid var(--rule);cursor:pointer;border-radius:2px;padding:3px 8px;font-size:9px;position:absolute;top:9px;right:9px}.copy:hover{color:var(--text-primary);border-color:var(--text-faint)}.prose pre.astro-code{background:var(--panel);border:1px solid var(--rule);border-radius:2px;margin:0 0 1.45em;padding:16px 18px;font-size:13.5px;line-height:1.62;overflow-x:auto}.prose pre.astro-code,.prose pre.astro-code span{color:var(--shiki-dark)}:root[data-theme=light] .prose pre.astro-code,:root[data-theme=light] .prose pre.astro-code span{color:var(--shiki-light)}.prose pre.astro-code code{font-size:inherit;background:0 0;border:none;padding:0}.tblwrap{margin:0 0 1.45em;overflow-x:auto}.prose table{border-collapse:collapse;font-family:var(--font-mono);font-variant-numeric:tabular-nums;min-width:60%;margin:0 0 1.45em;font-size:13px}.tblwrap table{margin:0}.prose th{letter-spacing:.18em;color:var(--text-faint);text-transform:uppercase;text-align:left;border-bottom:1px solid var(--rule);padding:8px 28px 8px 0;font-size:10px;font-weight:500}.prose td{border-bottom:1px solid var(--rule-soft);color:var(--text-secondary);padding:9px 28px 9px 0}.prose th:last-child,.prose td:last-child{padding-right:0}.prose details{border-left:2px solid var(--acc,var(--rule));background:var(--panel);margin:0 0 1.45em;padding:12px 18px}.prose summary{font-family:var(--font-mono);letter-spacing:.18em;color:var(--text-secondary);cursor:pointer;text-transform:uppercase;font-size:10.5px}.prose details[open] summary{margin-bottom:10px}.pnav{border-top:1px solid var(--rule);letter-spacing:.18em;text-transform:uppercase;justify-content:space-between;gap:12px;margin-top:40px;padding-top:16px;font-size:10.5px;display:flex}.pnav a{color:var(--text-muted);text-decoration:none}.pnav a:hover{color:var(--text-primary);text-underline-offset:4px;text-decoration:underline}.pnav .dead{color:var(--text-faint);opacity:.5}.pnav .pn-side{text-overflow:ellipsis;white-space:nowrap;max-width:40%;overflow:hidden}.foot{border-top:1px solid var(--rule);letter-spacing:.2em;color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:48px;padding:18px 0 40px;font-size:10px;display:flex}.foot a{color:var(--text-muted);text-decoration:none}.foot a:hover{color:var(--text-secondary)}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.mast,.chips,.row,.year,.foot,.pnav,.dhead .drule,.prose pre.astro-code,.prose details,.prose code,.prose th,.prose td{transition:background-color .35s,color .35s,border-color .35s}@media (prefers-reduced-motion:reduce){article{animation:none}body,.plink,.toggle,.mast,.chips,.row,.year,.foot,.pnav,.dhead .drule,.prose pre.astro-code,.prose details,.prose code,.prose th,.prose td{transition:none}}@media print{:root,:root[data-theme=light]{--canvas:#fff;--canvas-deep:#fff;--rule:#999;--rule-soft:#ccc;--text-primary:#000;--text-secondary:#222;--text-muted:#444;--text-faint:#666;--panel:transparent;--prose:#111}.mast-right,.chips,.pnav,.foot,.copy,figure.fig-dark{display:none!important}figure.fig-light{display:block!important}.prose pre.astro-code,.prose pre.astro-code span{color:var(--shiki-light)}body,article{transition:none;animation:none}}
