:root{--ink: #171717;--muted: #66645f;--faint: #a3a099;--line: #deddd8;--paper: #ffffff;--wash: #f5f4ef;--acid: #d8ff45;--blue: #2347d9;--serif: Charter, "Bitstream Charter", "Sitka Text", Cambria, Georgia, serif;--sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;--shell: min(1180px, calc(100% - 48px) )}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);scroll-behavior:smooth}body{min-width:320px;margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}img,svg,canvas{display:block;max-width:100%}button,input,textarea,select{font:inherit}::selection{color:var(--ink);background:var(--acid)}:focus-visible{outline:2px solid var(--blue);outline-offset:4px}.site-header{position:relative;z-index:20;border-bottom:1px solid var(--line);background:#fffffff0}.nav-shell{width:var(--shell);min-height:74px;margin:auto;display:flex;align-items:center;justify-content:space-between}.wordmark{font-family:var(--serif);font-size:1.45rem;font-weight:700;letter-spacing:-.04em}.wordmark span{color:var(--blue)}.nav-shell nav{display:flex;gap:clamp(1.5rem,4vw,2.75rem)}.nav-shell nav a{position:relative;color:var(--muted);font-size:.82rem;font-weight:600}.nav-shell nav a:hover,.nav-shell nav a[aria-current=page]{color:var(--ink)}.nav-shell nav a[aria-current=page]:after{content:"";position:absolute;right:0;bottom:-27px;left:0;height:2px;background:var(--ink)}main{min-height:calc(100vh - 230px)}.site-footer{width:var(--shell);margin:0 auto;padding:42px 0 52px;border-top:1px solid var(--line);display:flex;align-items:end;justify-content:space-between;gap:2rem;color:var(--muted);font-size:.76rem}.site-footer .wordmark{color:var(--ink)}.site-footer p{max-width:390px;margin:.4rem 0 0}.shell{width:var(--shell);margin-inline:auto}.narrow{width:min(760px,calc(100% - 48px));margin-inline:auto}.eyebrow{margin:0 0 1rem;color:var(--blue);font-family:var(--mono);font-size:.68rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.page-heading{padding:clamp(70px,10vw,130px) 0 clamp(50px,7vw,90px);border-bottom:1px solid var(--line)}.page-heading h1{max-width:900px;margin:0;font-family:var(--serif);font-size:clamp(3.2rem,8vw,7.5rem);font-weight:500;line-height:.94;letter-spacing:-.065em}.page-heading p:last-child{max-width:600px;margin:1.6rem 0 0;color:var(--muted);font-family:var(--serif);font-size:clamp(1.05rem,2vw,1.35rem)}.tags{display:flex;flex-wrap:wrap;gap:.45rem}.tag{padding:.25rem .6rem;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-family:var(--mono);font-size:.61rem;letter-spacing:.03em}.prose{color:#33322f;font-family:var(--serif);font-size:clamp(1.08rem,2vw,1.24rem);line-height:1.82}.prose h2,.prose h3{color:var(--ink);font-family:var(--sans);line-height:1.2}.prose h2{margin:3.5rem 0 1rem;font-size:1.65rem;letter-spacing:-.035em}.prose h3{margin:2.5rem 0 .8rem;font-size:1.2rem}.prose p{margin:0 0 1.5rem}.prose strong{color:var(--ink)}.prose a{color:var(--blue);text-decoration:underline;text-underline-offset:.18em}.prose blockquote{margin:2rem 0;padding-left:1.5rem;border-left:3px solid var(--ink);font-style:italic}.prose pre{margin:2rem 0;padding:1.4rem;overflow-x:auto;border-radius:4px;background:#181917;color:#f7f7f2;font-family:var(--mono);font-size:.83rem;line-height:1.65}.prose :not(pre)>code{padding:.12rem .3rem;background:var(--wash);font-family:var(--mono);font-size:.85em}.katex-display{margin:2rem 0;padding:1.4rem;overflow-x:auto;border:1px solid var(--line);background:var(--wash)}.article-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:var(--muted);font-size:.75rem}@media(max-width:700px){:root{--shell: min(100% - 32px, 1180px)}.narrow{width:min(100% - 32px,760px)}.nav-shell{min-height:64px}.nav-shell nav{gap:1.2rem}.nav-shell nav a[aria-current=page]:after{bottom:-22px}.site-footer{align-items:start;flex-direction:column}.page-heading{padding-top:64px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
