:root{--bg:#ffffff;--fg:#1a1a1a;--muted:#6b6b6b;--rule:#e2e2e2;--link:#000099;--link-visited:#5a2a8a;--code-bg:#f5f5f5;--serif:Georgia, "Times New Roman", Times, serif;--sans:Verdana, Geneva, "DejaVu Sans", Tahoma, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}@media(prefers-color-scheme:dark){:root{--bg:#151515;--fg:#dddddd;--muted:#9c9c9c;--rule:#343434;--link:#93b4ff;--link-visited:#c4a8f2;--code-bg:#1f1f1f}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.65 var(--sans)}.wrap{display:flex;align-items:flex-start;gap:48px;max-width:900px;padding:40px 32px 72px}.site-nav{flex:0 0 150px;position:sticky;top:40px}.site-name{display:block;margin:0 0 18px;font:700 17px/1.3 var(--serif);color:var(--fg);text-decoration:none;overflow-wrap:anywhere}.site-home{display:flex;width:fit-content;margin:0 0 14px;color:var(--fg)}.site-home:hover{color:var(--link)}.site-home svg{display:block}.site-nav nav a{display:block;font-size:13px;line-height:2;color:var(--link);text-decoration:none}.site-nav nav a:hover{text-decoration:underline}.site-nav nav a[aria-current]{color:var(--fg);font-weight:700}main{flex:auto;min-width:0;max-width:36em}h1{margin:0 0 6px;font:28px/1.25 var(--serif)}h2{margin:2em 0 .5em;font:700 19px/1.35 var(--serif)}h3{margin:1.6em 0 .4em;font:700 16px/1.4 var(--serif)}p,ul,ol,dl{margin:0 0 1.1em}li{margin-bottom:.3em}a{color:var(--link)}a:visited{color:var(--link-visited)}.muted{color:var(--muted)}.date{margin:0 0 28px;font-size:13px}.subtitle{margin:0 0 28px;font-size:14px;letter-spacing:.02em}.intro{margin:0 0 28px}blockquote{margin:0 0 1.1em;padding-left:16px;border-left:3px solid var(--rule);color:var(--muted)}hr{border:0;border-top:1px solid var(--rule);margin:2em 0}code{font:.88em/1.5 var(--mono);background:var(--code-bg);padding:.1em .3em;border-radius:3px}pre{overflow-x:auto;margin:0 0 1.2em;padding:12px 14px;background:var(--code-bg);border-radius:4px;font-size:13px;line-height:1.5}pre code{background:0 0;padding:0;font-size:inherit}table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:0 0 1.2em;font-size:14px}th,td{border:1px solid var(--rule);padding:6px 10px;text-align:left;vertical-align:top}.article-list{list-style:none;padding:0;margin:0}.article-list li{margin:0 0 14px}.article-list time{margin-left:6px;font-size:12px;white-space:nowrap}figure{margin:28px 0}figure a{display:block;cursor:zoom-in}main img{display:block;max-width:100%;height:auto;background:#fff;border:1px solid var(--rule);border-radius:3px}figcaption{margin-top:8px;font-size:13px;line-height:1.5;color:var(--muted)}.discuss{margin-top:2.5em;padding-top:1em;border-top:1px solid var(--rule);font-size:14px}@media(max-width:760px){.wrap{display:block;padding:0 16px 56px}.site-nav{position:static;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 16px;margin-bottom:24px;padding:14px 0;border-bottom:1px solid var(--rule)}.site-name,.site-home{margin:0}.site-nav nav{display:flex;gap:18px}.site-nav nav a{display:inline;font-size:14px;line-height:1.6}h1{font-size:25px}figure{margin:22px 0}}html:has(.zoom-dialog[open]){overflow:hidden}.zoom-dialog{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#0d0d0d;color:#eee;overflow:hidden}.zoom-dialog::backdrop{background:#0d0d0d}.zoom-stage{position:absolute;inset:0;display:flex;overflow:auto;overscroll-behavior:contain}.zoom-stage img{margin:auto;max-width:calc(100vw - 24px);max-height:calc(100dvh - 80px);width:auto;height:auto;background:#fff;border-radius:2px;cursor:zoom-in}.zoom-dialog.zoomed .zoom-stage img{max-width:none;max-height:none;width:var(--zoom-w,200vw);cursor:zoom-out}.zoom-close{position:fixed;top:10px;right:10px;z-index:2;width:44px;height:44px;border:0;border-radius:50%;background:rgba(45,45,45,.9);color:#fff;font:26px/44px var(--sans);cursor:pointer}.zoom-hint{position:fixed;left:0;right:0;bottom:12px;margin:0;text-align:center;font-size:12px;color:#a8a8a8;pointer-events:none}.zoom-dialog.zoomed .zoom-hint{display:none}