:root{--bg:#08090a;--bg-surface:#0f1113;--bg-elevated:#141719;--text:#c6cdd4;--text-bright:#e2e8ee;--text-muted:#5e6870;--accent:#6cb8dc;--accent-dim:#5a9ec4;--border:#1e2228;--border-strong:#2b3038;--font-body:'Merriweather', serif;--font-heading:'Libre Baskerville', serif;--font-mono:'JetBrains Mono', monospace;--measure:72ch;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--sidenote-width:220px;--sidenote-gap:24px;--text-xs:0.75rem;--text-sm:0.8125rem;--text-base:0.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.75rem;--text-4xl:2rem;--text-5xl:4rem;--text-6xl:6rem;--lh-tight:1.3;--lh-snug:1.6;--lh-base:1.75;--lh-none:1;--radius:2px;--transition:0.15s ease;--ease-out:cubic-bezier(0.2, 0.7, 0.2, 1);--z-raised:1;--z-tooltip:100;--z-bar:1000;--text-emphasis:#a0a8b0;--chart-pos:#5fae84;--chart-neg:#d4766a;--chart-hl:#d2a95c;--chart-grid:var(--border);--chart-axis:var(--border-strong);--chart-label:var(--text-muted);--chart-ink:var(--text)}[data-theme=light]{--bg:#f5f8fa;--bg-surface:#e8eef2;--bg-elevated:#dce4ea;--text:#303840;--text-bright:#121820;--text-muted:#7c8890;--accent:#3878a0;--accent-dim:#2c6088;--border:#d0d8e0;--border-strong:#bcc6d0;--chart-pos:#25754b;--chart-neg:#b13a2c;--chart-hl:#8f6e2a;--text-emphasis:#4a5058}.bg{color:#e6edf3;background-color:var(--bg-elevated)}.chroma{color:#e6edf3;background-color:var(--bg-elevated);-webkit-text-size-adjust:none}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{color:#79c0ff}.chroma .vg{color:#79c0ff}.chroma .vi{color:#79c0ff}.chroma .vm{color:#79c0ff}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{color:#d2a8ff;font-weight:700}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}[data-theme=light] .bg{color:#1f2328;background-color:var(--bg-elevated)}[data-theme=light] .chroma{color:#1f2328;background-color:var(--bg-elevated);-webkit-text-size-adjust:none}[data-theme=light] .chroma .err{color:#f6f8fa;background-color:#82071e}[data-theme=light] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=light] .chroma .hl{background-color:#dedede}[data-theme=light] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-theme=light] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-theme=light] .chroma .line{display:flex}[data-theme=light] .chroma .k{color:#cf222e}[data-theme=light] .chroma .kc{color:#cf222e}[data-theme=light] .chroma .kd{color:#cf222e}[data-theme=light] .chroma .kn{color:#cf222e}[data-theme=light] .chroma .kp{color:#cf222e}[data-theme=light] .chroma .kr{color:#cf222e}[data-theme=light] .chroma .kt{color:#cf222e}[data-theme=light] .chroma .na{color:#1f2328}[data-theme=light] .chroma .nc{color:#1f2328}[data-theme=light] .chroma .no{color:#0550ae}[data-theme=light] .chroma .nd{color:#0550ae}[data-theme=light] .chroma .ni{color:#6639ba}[data-theme=light] .chroma .nl{color:#900;font-weight:700}[data-theme=light] .chroma .nn{color:#24292e}[data-theme=light] .chroma .nx{color:#1f2328}[data-theme=light] .chroma .nt{color:#0550ae}[data-theme=light] .chroma .nb{color:#6639ba}[data-theme=light] .chroma .bp{color:#6a737d}[data-theme=light] .chroma .nv{color:#953800}[data-theme=light] .chroma .vc{color:#953800}[data-theme=light] .chroma .vg{color:#953800}[data-theme=light] .chroma .vi{color:#953800}[data-theme=light] .chroma .vm{color:#953800}[data-theme=light] .chroma .nf{color:#6639ba}[data-theme=light] .chroma .fm{color:#6639ba}[data-theme=light] .chroma .s{color:#0a3069}[data-theme=light] .chroma .sa{color:#0a3069}[data-theme=light] .chroma .sb{color:#0a3069}[data-theme=light] .chroma .sc{color:#0a3069}[data-theme=light] .chroma .dl{color:#0a3069}[data-theme=light] .chroma .sd{color:#0a3069}[data-theme=light] .chroma .s2{color:#0a3069}[data-theme=light] .chroma .se{color:#0a3069}[data-theme=light] .chroma .sh{color:#0a3069}[data-theme=light] .chroma .si{color:#0a3069}[data-theme=light] .chroma .sx{color:#0a3069}[data-theme=light] .chroma .sr{color:#0a3069}[data-theme=light] .chroma .s1{color:#0a3069}[data-theme=light] .chroma .ss{color:#032f62}[data-theme=light] .chroma .m{color:#0550ae}[data-theme=light] .chroma .mb{color:#0550ae}[data-theme=light] .chroma .mf{color:#0550ae}[data-theme=light] .chroma .mh{color:#0550ae}[data-theme=light] .chroma .mi{color:#0550ae}[data-theme=light] .chroma .il{color:#0550ae}[data-theme=light] .chroma .mo{color:#0550ae}[data-theme=light] .chroma .o{color:#0550ae}[data-theme=light] .chroma .ow{color:#0550ae}[data-theme=light] .chroma .p{color:#1f2328}[data-theme=light] .chroma .c{color:#57606a}[data-theme=light] .chroma .ch{color:#57606a}[data-theme=light] .chroma .cm{color:#57606a}[data-theme=light] .chroma .c1{color:#57606a}[data-theme=light] .chroma .cs{color:#57606a}[data-theme=light] .chroma .cp{color:#57606a}[data-theme=light] .chroma .cpf{color:#57606a}[data-theme=light] .chroma .gd{color:#82071e;background-color:#ffebe9}[data-theme=light] .chroma .ge{color:#1f2328}[data-theme=light] .chroma .gi{color:#116329;background-color:#dafbe1}[data-theme=light] .chroma .go{color:#1f2328}[data-theme=light] .chroma .gl{text-decoration:underline}[data-theme=light] .chroma .w{color:#fff}*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}html{font-size:100%;scroll-behavior:smooth;scrollbar-color:var(--border-strong)var(--bg)}body{font-family:var(--font-body);background:var(--bg);color:var(--text);font-size:var(--text-md);line-height:var(--lh-base);letter-spacing:.01em;max-width:var(--measure);margin:0 auto;padding:var(--space-xl)var(--space-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(min-width:1100px){body{max-width:calc(var(--measure) + var(--sidenote-width) + var(--sidenote-gap));padding-right:calc(var(--space-md) + var(--sidenote-width) + var(--sidenote-gap))}}::selection{background:var(--accent);color:var(--bg)}a{color:var(--accent);text-decoration:none;transition:color var(--transition),background-color var(--transition)}a:visited{color:var(--accent)}a:hover{background:var(--accent);color:var(--bg)}.progress-bar{position:fixed;top:0;left:0;width:100%;height:2px;background:0 0;z-index:var(--z-bar)}.progress-bar::after{content:'';position:fixed;top:0;left:0;height:2px;width:0%;background:var(--accent);animation:progress linear;animation-timeline:scroll()}@keyframes progress{to{width:100%}}.site-header{padding-bottom:var(--space-md);display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.site-title{display:flex;align-items:center;gap:var(--space-sm)}.site-header h1{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:700;letter-spacing:-.02em}.site-header h1 a{color:var(--accent);text-decoration:none}.site-header h1 a:hover{background:0 0;color:var(--text-bright)}.title-accent{color:var(--text-bright);font-weight:400;transition:color var(--transition)}.site-header h1 a:hover .title-accent{color:var(--accent)}.site-nav{display:flex;gap:var(--space-md);font-family:var(--font-body);font-size:var(--text-md);letter-spacing:.02em}.site-nav a,.site-nav a:visited{color:var(--text-muted);text-transform:lowercase;padding:2px 0}.site-nav a:hover{color:var(--accent);background:0 0}.stats{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);margin-bottom:var(--space-md);padding:var(--space-sm)0;display:flex;gap:var(--space-lg);overflow-x:auto;white-space:nowrap}.stats span::before{content:'';display:inline-block;width:6px;height:6px;background:var(--accent);margin-right:var(--space-sm);vertical-align:middle}.site-description{font-size:var(--text-lg);color:var(--text);margin-bottom:var(--space-xl);line-height:var(--lh-snug)}h2{font-family:var(--font-heading);font-size:var(--text-3xl);font-weight:400;letter-spacing:-.01em;color:var(--text-bright)}h3{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:400;margin:var(--space-lg)0 var(--space-sm);color:var(--text-bright)}h4{font-family:var(--font-heading);font-size:var(--text-lg);font-weight:400;margin:var(--space-lg)0 var(--space-sm);color:var(--text)}p{margin-bottom:var(--space-md)}ul,ol{margin-bottom:var(--space-md);padding-left:20px}li{margin-bottom:0}.post-list{list-style:none;padding-left:0}.post-list li{display:flex;gap:var(--space-md);padding:var(--space-xs)0;align-items:baseline}.post-list .date{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap;min-width:90px;flex-shrink:0}.post-list a{font-size:var(--text-md);color:var(--accent)}.post-list a:hover{text-decoration:underline;background:0 0}.project-list{list-style:none;padding-left:0}.project-list li{margin-bottom:0;padding:var(--space-xs)0}.project-list .desc{color:var(--text-muted);margin-left:var(--space-xs);font-size:var(--text-base)}.project-list a{color:var(--accent)}.project-list a:hover{text-decoration:underline;background:0 0}hr{border:none;border-top:1px solid var(--border);margin:var(--space-xl)0}.article-title{font-family:var(--font-heading);font-size:var(--text-4xl);font-weight:400;line-height:var(--lh-tight);color:var(--text-bright);margin-bottom:var(--space-sm)}.article-meta{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);margin-bottom:var(--space-md);display:flex;flex-wrap:wrap;gap:var(--space-sm)}.article-meta .separator{color:var(--border-strong)}.article-meta a{color:var(--text-muted)}.article-meta a:hover{color:var(--accent);background:0 0}.toc{font-family:var(--font-body);font-size:var(--text-sm);margin-bottom:var(--space-lg)}.toc-heading{cursor:pointer;color:var(--text-muted);font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;list-style:none;user-select:none;transition:color var(--transition)}.toc-heading::-webkit-details-marker{display:none}.toc-heading::after{content:' [-]';color:var(--accent);letter-spacing:normal}.toc:not([open])>.toc-heading::after{content:' [+]'}.toc-heading:hover{color:var(--accent)}.toc #TableOfContents{margin-top:var(--space-md);counter-reset:toc-section}.toc #TableOfContents ul{list-style:none;padding-left:0;margin-bottom:0}.toc #TableOfContents>ul>li{counter-increment:toc-section;margin-bottom:6px}.toc #TableOfContents>ul>li>a::before{content:counter(toc-section,decimal-leading-zero)'\00a0\00a0';color:var(--accent-dim)}.toc #TableOfContents ul ul{padding-left:calc(3ch + 4px);margin-top:4px}.toc #TableOfContents ul ul li{margin-bottom:4px}.toc #TableOfContents ul ul a::before{content:'— ';color:var(--border-strong)}.toc #TableOfContents li{line-height:var(--lh-base)}.toc #TableOfContents a{color:var(--text);transition:color var(--transition)}.toc #TableOfContents a:hover{color:var(--accent);background:0 0}.toc #TableOfContents a.toc-active{color:var(--accent)}.toc #TableOfContents a.toc-active::before{color:var(--accent)}.article-body a{color:var(--accent)}.article-body a:hover{text-decoration:underline;background:0 0}.article-body strong{color:var(--text-bright)}.article-body em{color:var(--text-emphasis)}.article-body blockquote{margin:var(--space-lg)0;padding:var(--space-md)var(--space-lg);border-left:2px solid var(--accent);background:var(--bg-surface);color:var(--text);font-style:italic}.article-body blockquote p{margin-bottom:0}.article-body code{font-family:var(--font-mono);background:var(--bg-elevated);padding:2px 6px;font-size:var(--text-base);border-radius:var(--radius);color:var(--text-bright)}.article-body pre{background:var(--bg-elevated);border:1px solid var(--border);padding:var(--space-md)var(--space-lg);margin:var(--space-lg)0;overflow-x:auto;font-size:var(--text-sm);line-height:var(--lh-snug);position:relative}.article-body pre code{background:0 0;padding:0;border-radius:0;color:inherit}.highlight{position:relative}.copy-btn{position:absolute;top:0;right:0;background:var(--bg-surface);border:1px solid var(--border);border-top:none;border-right:none;color:var(--text-muted);font-family:var(--font-body);font-size:var(--text-xs);padding:4px 10px;cursor:pointer;transition:color var(--transition),border-color var(--transition);z-index:var(--z-raised);line-height:var(--lh-none)}.copy-btn:hover{color:var(--accent);border-color:var(--accent)}.copy-btn[data-copied=true]{color:var(--accent)}.copy-btn:focus-visible{outline:1px solid var(--accent);outline-offset:-1px}.article-body h2{font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:400;text-transform:none;letter-spacing:-.01em;color:var(--text-bright);margin:var(--space-md)0 var(--space-sm)}.article-body h3{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:400;margin:var(--space-md)0 var(--space-sm);color:var(--text-bright)}.article-body img{max-width:100%;height:auto;border:1px solid var(--border);margin:var(--space-lg)0;display:block}.article-body figure{margin:var(--space-lg)0}.article-body figcaption{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--space-sm)}.sidenote{float:right;clear:right;width:var(--sidenote-width);margin-right:calc(-1 * (var(--sidenote-width) + var(--sidenote-gap)));padding-left:var(--space-sm);border-left:1px dashed var(--border);font-family:var(--font-body);font-size:var(--text-xs);line-height:var(--lh-snug);color:var(--text-muted)}.sidenote code{font-size:var(--text-xs);background:var(--bg-elevated);padding:2px 6px;color:var(--text)}.sidenote-number{font-family:var(--font-body);font-size:var(--text-xs);color:var(--accent);vertical-align:super;line-height:0;cursor:pointer}.sidenote-toggle{display:none}.sidenote-number:hover+.sidenote-toggle+.sidenote,.sidenote:hover{border-color:var(--accent-dim);color:var(--text)}.sidenote>.sidenote-number{vertical-align:baseline;margin-right:4px}@media(max-width:1099px){.sidenote{display:none;float:none;width:100%;margin-top:var(--space-sm);font-family:var(--font-body);font-size:var(--text-xs);line-height:var(--lh-snug);color:var(--text-muted);border:none}.sidenote-toggle:checked+.sidenote{display:block}}.video-container{margin:var(--space-lg)0}.video-container video{max-width:100%;border:1px solid var(--border);display:block}.video-container .caption{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--space-sm)}.article-subtitle{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:400;color:var(--text);margin-bottom:var(--space-sm);letter-spacing:-.01em}.post-subtitle{display:block;font-size:var(--text-base);color:var(--text-muted)}.series-pager{margin-top:var(--space-lg);display:flex;justify-content:space-between;font-family:var(--font-body);font-size:var(--text-base)}.series-pager a{color:var(--text-muted)}.series-pager a:hover{color:var(--accent);background:0 0}.series-pager-next{margin-left:auto}.view-all{display:inline-block;margin-top:var(--space-sm);font-family:var(--font-body);font-size:var(--text-sm)}.site-footer{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid var(--border);font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-md)}.site-footer a{color:var(--text-muted);font-size:var(--text-xs)}.site-footer a:hover{color:var(--accent);background:0 0}.colophon{color:var(--border-strong)}.footer-social{display:flex;gap:var(--space-sm);align-items:center}.footer-social a{display:inline-flex;align-items:center}.footer-social svg{width:18px;height:18px}.theme-toggle{background:0 0;border:none;color:var(--text-muted);padding:2px;cursor:pointer;line-height:0;display:inline-flex;align-items:center;transition:color var(--transition)}.theme-toggle:hover{color:var(--accent)}.theme-toggle svg{width:18px;height:18px;display:block}.theme-toggle .icon-moon{display:none}[data-theme=light] .theme-toggle .icon-sun{display:none}[data-theme=light] .theme-toggle .icon-moon{display:block}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important;animation-delay:.01ms !important;transition-delay:.01ms !important}}.error-page{text-align:center;padding:var(--space-2xl)0}.error-code{font-family:var(--font-body);font-size:var(--text-6xl);font-weight:700;color:var(--text-bright);line-height:var(--lh-none);display:block;margin-bottom:var(--space-md)}.error-message{font-family:var(--font-body);font-size:var(--text-md);color:var(--text-muted);margin-bottom:var(--space-sm)}.error-path{font-family:var(--font-body);font-size:var(--text-sm);color:var(--border-strong);margin-bottom:var(--space-lg)}.chart{margin:var(--space-lg)0;border:1px solid var(--border);background:var(--bg-surface);padding:var(--space-md)}.chart-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-md);font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);padding-bottom:var(--space-sm);margin-bottom:var(--space-sm);border-bottom:1px solid var(--border)}.chart-head span:last-child:not(:first-child){color:var(--text-muted);opacity:.7;text-align:right;flex-shrink:0}.chart .chart-canvas{overflow-x:auto}.chart .chart-canvas svg{display:block;width:100%;height:auto}.chart svg text{font-family:var(--font-body)}.chart .pos{fill:var(--chart-pos)}.chart .neg{fill:var(--chart-neg)}.chart .hl{fill:var(--chart-hl)}.chart .muted{fill:color-mix(in srgb,var(--text) 35%,transparent)}.chart .line-pos{fill:none;stroke:var(--chart-pos)}.chart .line-neg{fill:none;stroke:var(--chart-neg)}.chart .area-pos{fill:color-mix(in srgb,var(--chart-pos) 10%,transparent)}.chart .area-neg{fill:color-mix(in srgb,var(--chart-neg) 14%,transparent)}.chart .gridline{stroke:var(--chart-grid);stroke-dasharray:1 4}.chart .axis-zero{stroke:var(--chart-axis)}.chart .dot{fill:var(--bg);stroke:var(--chart-ink)}.chart .leader{stroke:var(--chart-ink);stroke-dasharray:2 2}.chart .tick{font-size:var(--text-xs);fill:var(--chart-label)}.chart .barlbl{font-size:var(--text-xs);font-weight:700;fill:var(--text-bright)}.chart .barlbl2{font-size:var(--text-xs);fill:var(--chart-label)}.chart .anno{font-size:var(--text-xs);fill:var(--chart-ink)}.chart .anno-s{font-size:var(--text-xs);fill:var(--chart-label)}.chart figcaption{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);border-top:1px solid var(--border);padding-top:var(--space-sm);margin-top:var(--space-sm)}.chart-tip{position:fixed;z-index:var(--z-tooltip);pointer-events:none;background:var(--bg-elevated);border:1px solid var(--border-strong);font-family:var(--font-body);font-size:var(--text-xs);line-height:var(--lh-snug);color:var(--text-bright);padding:7px 10px;max-width:280px;opacity:0;transition:opacity var(--transition)}.chart-tip.on{opacity:1}.chart-tip .tl{display:block;font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:2px}.chart svg [data-tip]{cursor:crosshair}.chart svg rect[data-tip]:hover{filter:brightness(1.25)}.chart .cell[data-tip]{cursor:crosshair}.chart .cell[data-tip]:hover{filter:brightness(1.18)}.chart .xover{cursor:crosshair}.chart .xhair{stroke:var(--chart-ink);stroke-width:1;stroke-dasharray:2 3}.chart .xdot{fill:var(--bg);stroke:var(--chart-hl);stroke-width:1.6}.chart table{width:100%;border-collapse:collapse;font-size:var(--text-base)}.chart th{font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;font-weight:400;color:var(--text-muted);text-align:left;padding:var(--space-sm);border-bottom:1px solid var(--border-strong)}.chart td{padding:var(--space-sm);border-bottom:1px solid var(--border);white-space:nowrap}.chart td.num{font-family:var(--font-body);font-size:var(--text-sm)}.chart .pos-t{color:var(--chart-pos)}.chart .neg-t{color:var(--chart-neg)}.chart .dim-t{color:var(--text-muted)}.chart .cell{display:inline-block;min-width:60px;padding:var(--space-xs)var(--space-sm);border-radius:var(--radius);font-family:var(--font-body);font-size:var(--text-xs);text-align:center}.chart .cell.pos-c{background:color-mix(in srgb,var(--chart-pos) calc(var(--a) * 100%),transparent)}.chart .cell.neg-c{background:color-mix(in srgb,var(--chart-neg) calc(var(--a) * 100%),transparent)}.chart .cell.strong{color:var(--bg)}.chart .grow{transform:scaleY(0);transform-origin:bottom;transform-box:fill-box;transition:transform .6s var(--ease-out)}.chart svg.in .grow{transform:scaleY(1)}.chart .groww{transform:scaleX(0);transform-origin:left;transform-box:fill-box;transition:transform .7s var(--ease-out)}.chart svg.in .groww{transform:scaleX(1)}.chart .draw{transition:stroke-dashoffset 1.6s cubic-bezier(.4,.1,.2,1)}.chart .fadein{opacity:0;transition:opacity .6s ease .6s}.chart svg.in .fadein{opacity:1}.article-body .chart-wide{width:min(1100px,100vw - 32px);margin-left:calc(50% - min(550px,50vw - 16px));clear:right}@media(max-width:600px){.article-body .chart-wide{width:min(1100px,100vw - 64px);margin-left:calc(50% - min(550px,50vw - 32px))}.chart{padding:var(--space-sm)}body{padding:var(--space-md)}.site-header{flex-direction:column;gap:var(--space-sm)}.site-nav{width:100%;justify-content:space-between;gap:var(--space-md)}.site-header h1{font-size:var(--text-xl)}.article-title{font-size:var(--text-3xl)}.post-list li{flex-direction:column;gap:2px}.post-list .date{min-width:auto}.site-footer{flex-direction:row}.error-code{font-size:var(--text-5xl)}}