:root{--ink: #17201c;--muted: #667069;--accent: #176b4d;--paper: #f4f1e8;--surface: #fbfaf5;--line: #ccd1ca;--dark: #122019;--lime: #c9ff67;--page-gutter: clamp(1.1rem, 3vw, 2rem);--shell: 1240px;--content: 720px;--radius: 14px;--type-h1: clamp(2rem, 4vw, 3.5rem);--type-h2: clamp(1.25rem, 2.5vw, 1.75rem);--type-h3: clamp(1.125rem, 2vw, 1.4rem);--type-h4: 1rem;--type-h5: 0.925rem;--type-h6: 0.875rem;--sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans", "Yu Gothic UI", Meiryo, sans-serif;--mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5.5rem}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);line-height:1.7;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{line-break:strict;overflow-wrap:anywhere}h1{font-size:var(--type-h1)}h2{font-size:var(--type-h2)}h3{font-size:var(--type-h3)}h4{font-size:var(--type-h4)}h5{font-size:var(--type-h5)}h6{font-size:var(--type-h6)}img,svg{display:block;max-width:100%}a{color:inherit;text-underline-offset:.2em}button,input,summary{font:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}::selection{color:var(--dark);background:var(--lime)}.shell{width:min(100% - var(--page-gutter)*2,var(--shell));margin-inline:auto}.skip-link{position:fixed;z-index:100;top:.75rem;left:.75rem;padding:.55rem .9rem;color:#fff;background:var(--accent);border-radius:999px;font-weight:700;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-header{position:sticky;z-index:20;top:0;background:rgba(244,241,232,.9);border-bottom:1px solid rgba(23,32,28,.12);backdrop-filter:blur(16px)}.header-inner{min-height:4.25rem;display:flex;align-items:center;justify-content:space-between;gap:2rem}.brand{display:inline-flex;align-items:center;gap:.7rem;text-decoration:none}.brand-mark{width:2.25rem;aspect-ratio:1;display:grid;place-items:center;color:var(--lime);background:var(--dark);border-radius:50%;font-size:.8rem;font-weight:900}.brand strong{letter-spacing:-.03em}.site-nav{display:flex;gap:clamp(1rem,3vw,2.25rem)}.site-nav a{padding-block:.7rem;text-decoration:none;font-family:var(--mono);font-size:.72rem;font-weight:700;text-transform:uppercase}.site-nav a:hover{color:var(--accent)}.site-main{min-height:calc(100vh - 4.25rem)}.home-latest{width:min(100% - var(--page-gutter)*2,960px);padding-block:clamp(3rem,6vw,5rem)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:1.5rem;margin-bottom:1.25rem}.section-heading h1{margin:0;letter-spacing:-.03em;line-height:1}.section-heading>a{min-height:2rem;display:inline-flex;align-items:center;color:var(--muted);font-size:.8rem;font-weight:700;white-space:nowrap}.post-list{border-top:1px solid var(--ink)}.post-row{position:relative;min-height:5.75rem;display:grid;grid-template-columns:8.5rem minmax(0, 1fr) 1.5rem;gap:1.25rem;align-items:center;border-bottom:1px solid var(--line)}.post-row time,.article-header time{color:var(--muted);font-family:var(--mono);font-size:.75rem}.post-row h2{margin:0;letter-spacing:-.015em;line-height:1.35}.post-row h2 a{text-decoration:none}.post-row h2 a::after{position:absolute;inset:0;content:""}.post-row>span{color:var(--accent);font-size:1.1rem;transition:transform 160ms ease}.post-row:hover h2{color:var(--accent)}.post-row:hover>span{transform:translate(2px, -2px)}.article-header,.article-layout,.article-navigation{width:min(100% - var(--page-gutter)*2,960px)}.article-header{position:relative;padding-block:clamp(3rem,6vw,3rem)}.article-header::after{position:absolute;bottom:0;left:50%;width:100%;height:1px;background:var(--line);content:"";transform:translateX(-50%)}.back-link{min-height:2rem;display:inline-flex;align-items:center;gap:.5rem;color:var(--muted);text-decoration:none;font-family:var(--mono);font-size:.75rem;font-weight:700;text-transform:uppercase}.back-link:hover{color:var(--accent)}.article-header h1{max-width:24ch;margin:clamp(2rem,4vw,3.5rem) 0 .9rem;letter-spacing:-.02em;line-height:1.2}.article-layout{display:grid;grid-template-columns:minmax(0, var(--content)) minmax(0, 12rem);gap:clamp(1.75rem,4vw,3rem);padding-block:clamp(2.5rem,6vw,3rem)}.article-content{grid-column:1;grid-row:1}.toc{position:sticky;grid-column:2;grid-row:1;top:6.5rem;align-self:start;max-height:calc(100vh - 8rem);overflow:auto;padding:0 .25rem 0}.toc>p{margin:0 0 .75rem;color:var(--muted);font-family:var(--mono);font-size:.75rem;font-weight:700}.toc ul{display:grid;gap:.4rem;margin:0;padding:0;list-style:none}.toc ul ul{margin-top:.5rem;padding-left:.75rem;border-left:1px solid var(--line)}.toc a{display:block;padding-block:.15rem;color:var(--muted);text-decoration:none;font-size:.8125rem;line-height:1.55}.toc a:hover{color:var(--accent)}.toc a:focus-visible{outline-offset:2px}.article-content{min-width:0;font-size:clamp(1rem,1.2vw,1.075rem);line-height:1.95;overflow-wrap:anywhere}.article-content>:first-child{margin-top:0}.article-content>:last-child{margin-bottom:0}.article-content p{margin:1.1em 0}.article-content h2,.article-content h3,.article-content h4,.article-content h5,.article-content h6{scroll-margin-top:6rem;letter-spacing:-.015em;line-height:1.35}.article-content h2{margin:2.5em 0 .8em;padding-bottom:.55em;border-bottom:1px solid var(--line)}.article-content h3{margin:2em 0 .7em}.article-content h4{margin:1.7em 0 .5em;color:var(--accent);font-family:var(--mono)}.article-content a{color:var(--accent);font-weight:700;overflow-wrap:anywhere}.article-content mark{margin-inline:-.1em;padding-inline:.1em;color:inherit;background:linear-gradient(rgba(0,0,0,0) 45%, rgba(201,255,103,.8) 45%)}.article-content kbd{display:inline-block;min-width:1.8em;padding:.05em .4em;background:var(--surface);border:1px solid var(--line);border-bottom-width:3px;border-radius:5px;font-family:var(--mono);font-size:.78em;line-height:1.5;text-align:center}.article-content code{padding:.16em .38em;color:#0f6547;background:rgba(23,107,77,.08);border:1px solid rgba(23,107,77,.12);border-radius:5px;font-family:var(--mono);font-size:.84em;overflow-wrap:anywhere}.article-content pre{max-width:100%;overflow-x:auto;margin:1.5rem 0;padding:clamp(1.2rem,3vw,1.7rem);color:#e7eee9;background:var(--dark) !important;border-radius:var(--radius);line-height:1.7;tab-size:2}.article-content pre code{padding:0;color:inherit;background:rgba(0,0,0,0);border:0;font-size:.875rem;overflow-wrap:normal}.article-content blockquote{margin:1.5rem 0;padding:.25rem 0 .25rem clamp(1rem,2vw,1.5rem);color:var(--muted);background:rgba(0,0,0,0);border-left:2px solid var(--accent);font-size:1em;font-weight:400}.article-content blockquote p{margin:0}.article-content blockquote p+p{margin-top:.75rem;color:var(--muted);font-size:.88em}.article-content ul,.article-content ol{margin:1.1rem 0;padding-left:1.4rem}.article-content li{margin:.4rem 0;padding-left:.3rem}.article-content li::marker{color:var(--accent);font-weight:800}.article-content li>ul,.article-content li>ol{margin-block:.4rem}.article-content input[type=checkbox]{width:1rem;height:1rem;margin:0 .5rem 0 -.1rem;accent-color:var(--accent);vertical-align:-.13em}.article-content table{width:100%;display:block;overflow-x:auto;margin:1.5rem 0;border-collapse:collapse;white-space:nowrap;-webkit-overflow-scrolling:touch}.article-content th,.article-content td{padding:.8rem 1rem;border-bottom:1px solid var(--line);text-align:left}.article-content th{color:#fff;background:var(--dark);font-family:var(--mono);font-size:.75rem}.article-content tbody tr:nth-child(even){background:rgba(255,255,255,.42)}.article-content figure{width:100%;margin:2rem 0}.article-content img{display:block;max-width:100%;height:auto}.article-content figure img{width:100%;border-radius:var(--radius)}.article-content figcaption{margin-top:.75rem;color:var(--muted);font-family:var(--mono);font-size:.75rem;line-height:1.55}.article-content hr{width:4rem;height:2px;margin:3rem auto;background:var(--line);border:0}.article-content details{margin:1.5rem 0;padding:1.1rem 1.25rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.article-content summary{cursor:pointer;font-weight:700}.article-content details p:last-child{margin-bottom:0}.footnote-definition{position:relative;margin-top:2rem;padding:1rem 1rem 1rem 3rem;color:var(--muted);border-left:3px solid var(--accent);font-size:.85rem}.footnote-definition-label{position:absolute;top:1rem;left:1rem;color:var(--accent);font-family:var(--mono);font-weight:800}.footnote-definition p{margin:0}.article-navigation{margin-bottom:clamp(3rem,6vw,5rem);padding-top:1.25rem;border-top:1px solid var(--line)}.article-navigation a{min-height:2rem;display:inline-flex;align-items:center;color:var(--muted);font-size:.8rem;font-weight:700}.article-navigation a:hover{color:var(--accent)}@media (max-width: 1100px){.article-layout{grid-template-columns:minmax(0, 1fr);gap:1.5rem}.article-content{grid-column:1;grid-row:auto;width:min(100%,var(--content));margin-inline:auto}.toc{position:static;grid-column:1;grid-row:auto;width:min(100%,var(--content));max-height:none;margin-inline:auto;padding:.875rem .25rem 0;background:rgba(0,0,0,0);border:0;border-radius:0}.toc>ul{grid-template-columns:repeat(2, minmax(0, 1fr));column-gap:1.5rem}}@media (max-width: 600px){:root{--page-gutter: 1.1rem;--radius: 11px}.header-inner{min-height:4.25rem;gap:1rem}.brand-mark{width:2rem}.site-nav{gap:.8rem}.site-nav a{font-size:.7rem}.home-latest{padding-block:2.75rem}.section-heading{align-items:start;flex-direction:column;gap:1rem}.post-row{min-height:6.75rem;grid-template-columns:minmax(0, 1fr) 1.25rem;grid-template-rows:auto auto;gap:.4rem 1rem;align-content:center}.post-row time{grid-column:1}.post-row h2{grid-column:1}.post-row>span{grid-column:2;grid-row:1/3;align-self:center}.article-header{padding-block:2.5rem}.article-header h1{margin-top:2rem}.article-layout{padding-block:2.5rem}.toc>ul{grid-template-columns:1fr}.article-content{line-height:1.85}.article-content h2{margin-top:2.4em}.article-content pre{margin-inline:calc(var(--page-gutter)*-.4)}.article-content th,.article-content td{padding:.7rem .8rem}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*::before,*::after{transition-duration:.01ms !important}}