:root{--bg: #181410;--bg-panel: #211c16;--current-line: #383025;--fg: #e9e1cf;--comment: #a89c86;--comment-faint: #776c5a;--accent-fast: #56b4e9;--accent-slow: #e69f00;--infra: #6272a4;--loss: #d55e00;--ui-accent: #91a7ff;--ui-accent-solid: #5c7cfa;--ui-accent-muted: #272d4f;--ui-accent-contrast: #ffffff;--body: "Source Serif 4", "Source Serif 4 Fallback", Georgia, Cambria, "Times New Roman", serif;--font-display: "Fraunces", "Fraunces Fallback", "Source Serif 4", Georgia, serif;--mono: "Fira Code", "Fira Code Fallback", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--measure: 46rem;--figure-column: 58rem;--media-column: 55rem;--leading: 1.62;--fs-apparatus: .76rem;--fs-sm: clamp(.98rem, .93rem + .25vw, 1.1rem);--fs-base: clamp(1.28rem, 1.19rem + .45vw, 1.5rem);--fs-lg: clamp(1.55rem, 1.38rem + .65vw, 1.85rem);--fs-xl: clamp(1.9rem, 1.68rem + .95vw, 2.35rem);--fs-2xl: clamp(2.32rem, 2rem + 1.35vw, 2.95rem);--fs-3xl: clamp(2.62rem, 2.2rem + 1.75vw, 3.45rem);--radius: 6px;--radius-panel: 12px;--panel-shadow: inset 0 1px 0 rgba(255, 255, 255, .06), 0 1px 3px -1px rgba(0, 0, 0, .25);--panel-shadow-hover: inset 0 1px 0 rgba(255, 255, 255, .06), 0 2px 6px -3px rgba(0, 0, 0, .3);--panel-shadow-lift: inset 0 1px 0 rgba(255, 255, 255, .08), 0 4px 12px -4px rgba(0, 0, 0, .35);--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-emphasized: cubic-bezier(.05, .7, .1, 1);--ease-set-piece: cubic-bezier(.15, .75, .35, 1);--dur-fast: .12s}:root[data-theme=light]{--bg: #f6f1e6;--bg-panel: #ece5d3;--current-line: #d8cfba;--fg: #1c1d22;--comment: #5b5f66;--comment-faint: #968b78;--ui-accent: #3b5bdb;--ui-accent-solid: #4263eb;--ui-accent-muted: #edf2ff;--ui-accent-contrast: #ffffff}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--body);font-size:var(--fs-base);line-height:var(--leading);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em;font-feature-settings:"pnum" 1,"lnum" 1,"liga" 1;font-synthesis:none}img,svg,video{max-width:100%;height:auto;display:block}a{color:var(--ui-accent);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--ui-accent);outline-offset:2px;border-radius:2px}:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion:no-preference){a svg,button svg{transition:transform var(--dur-fast) var(--ease-standard)}a:hover svg{transform:translate(3px)}button:hover svg{transform:translate(2px)}}.shell{max-width:1080px;margin-inline:auto;padding:2rem 1.25rem 6rem}.muted{color:var(--comment)}.kicker{font-family:var(--mono);font-size:var(--fs-apparatus);font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--comment)}::selection{background:color-mix(in srgb,var(--ui-accent) 25%,transparent)}.prose>p:first-of-type:first-letter{float:left;font-family:var(--font-display);font-style:italic;font-size:3.1em;line-height:.82;padding:.04em .14em 0 0;color:var(--ui-accent);font-weight:500}.masthead{display:flex;align-items:center;gap:1rem;margin-bottom:2.5rem;flex-wrap:wrap;background:var(--bg-panel);border-radius:var(--radius-panel);padding:.6rem 1rem;box-shadow:var(--panel-shadow)}.status-dot:after{content:"";width:7px;height:7px;border-radius:50%;background:var(--ui-accent);box-shadow:0 0 6px -1px color-mix(in srgb,var(--ui-accent) 70%,transparent)}.wordmark:after{margin-left:.1rem}.wordmark{display:flex;align-items:center;gap:.55rem;font-family:var(--mono);font-weight:700;font-size:var(--fs-lg);color:var(--fg);text-decoration:none}.wordmark .mark{flex:0 0 auto;width:1.6rem;height:1.6rem}.masthead .spacer{flex:1}.masthead nav a{color:var(--comment);margin-left:1rem;font-size:var(--fs-sm)}@media(max-width:480px){.wordmark span{display:none}.wordmark{font-size:var(--fs-base)}}.theme-toggle{background:none;border:0;cursor:pointer;color:var(--comment);font-size:1rem;padding:0 .3rem;margin-left:1rem;line-height:1;vertical-align:middle}.theme-toggle:hover{color:var(--ui-accent)}.theme-toggle .t-light{display:none}:root[data-theme=light] .theme-toggle .t-light{display:inline}:root[data-theme=light] .theme-toggle .t-dark{display:none}.post-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.post-list li+li{border-top:1px solid var(--current-line)}.post-row{display:grid;grid-template-columns:3.5rem 1fr auto;gap:1rem;padding:1.1rem .5rem;border-radius:var(--radius);text-decoration:none;color:inherit;align-items:baseline;transition:background .12s ease}.post-row .date{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--comment);white-space:nowrap;justify-self:end}@media(max-width:560px){.post-row{grid-template-columns:3.5rem 1fr}.post-row .date{grid-column:2;justify-self:start;margin-top:.2rem}}.post-row:hover{background:var(--bg-panel);box-shadow:var(--panel-shadow-hover)}.post-row .num{color:var(--ui-accent);font-weight:700}.post-row>span:last-child{display:flex;flex-direction:column;gap:.3rem}.post-row .title{display:block;font-size:var(--fs-lg)}.post-row .dek{display:block;color:var(--comment);font-size:var(--fs-base);text-wrap:pretty}.article{container-type:inline-size}.article h1{font-size:var(--fs-3xl);line-height:1.15;text-wrap:wrap;margin:0 0 .5rem;font-style:italic;font-weight:500}.article .byline{color:var(--comment);font-size:var(--fs-base);margin-bottom:2.5rem}.prose{display:grid;grid-template-columns:1fr min(var(--measure),100%) 1fr;column-gap:0}.prose>*{grid-column:2}.prose>figure,.prose>.full,.prose>.codeblock,.prose>.scrub{grid-column:1 / -1;max-width:min(var(--figure-column),100%);margin-inline:auto;width:100%}.prose>.scrub{max-width:none}.prose>.full.media{grid-column:1 / -1;max-width:var(--media-column);margin-inline:auto}.prose p,.prose li,.prose blockquote{text-wrap:pretty}.prose h2{font-size:var(--fs-xl);margin:2.5rem 0 .75rem;color:var(--fg)}.prose{counter-reset:section}.prose h2{counter-increment:section}.prose h2:before{content:"Section " counter(section,decimal-leading-zero);display:block;font-family:var(--mono);font-size:var(--fs-apparatus);font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--comment);margin-bottom:.7rem}.prose h3{font-size:var(--fs-lg);margin:2rem 0 .5rem}.article h1,.prose h2,.prose h3,.post-row .title{font-family:var(--font-display);letter-spacing:-.015em}.prose h2,.prose h3,.post-row .title{font-weight:600}.prose .marginnote{color:var(--comment);font-size:var(--fs-sm);line-height:1.5;border-left:3px solid var(--ui-accent-muted);padding:.3rem 0 .3rem 1rem;margin:1.5rem 0}figure{margin:2rem 0}figure img{width:100%;height:auto;display:block;border-radius:var(--radius)}.svgfig{border-radius:var(--radius)}.svgfig-chart{overflow:hidden}.svgfig-chart svg{width:100%!important;height:auto!important;display:block}.svgfig-diagram{max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain}.svgfig-diagram svg{width:auto!important;height:auto!important;max-width:none!important;display:block;margin-inline:auto}figure figcaption{color:var(--comment);font-size:var(--fs-base);font-style:italic;line-height:1.4;margin-top:.6rem}.data-table{color:var(--comment);font-size:var(--fs-sm)}.data-table summary{cursor:pointer}.data-table table{border-collapse:collapse;margin-top:.5rem}.data-table th,.data-table td{border:1px solid var(--current-line);padding:.25rem .6rem;text-align:left}.table-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}.table-scroll table{border-collapse:collapse;width:100%;font-size:1rem;line-height:1.45;font-variant-numeric:tabular-nums}.table-scroll table code{font-size:.85em}.table-scroll th{border-bottom:2px solid var(--comment);text-align:left;padding:.35rem .9rem .35rem 0;font-weight:600}.table-scroll td{border-bottom:1px solid var(--current-line);text-align:left;padding:.35rem .9rem .35rem 0;vertical-align:top}.table-scroll tr>:last-child{padding-right:0}pre,code,kbd,samp{font-family:var(--mono)}.astro-code,.astro-code span{color:var(--shiki-dark);background-color:transparent!important}:root[data-theme=light] .astro-code,:root[data-theme=light] .astro-code span{color:var(--shiki-light)}pre{background:var(--bg-panel)!important;padding:1rem 1.1rem;border-radius:var(--radius);overflow-x:auto;overscroll-behavior-x:contain;font-size:1rem;line-height:1.55}:not(pre)>code{background:var(--bg-panel);padding:.1rem .35rem;border-radius:4px;font-size:.88em}.codeblock{max-width:100%;margin:1.5rem 0;border:1px solid var(--current-line);border-radius:var(--radius);background:var(--bg-panel);overflow:hidden}.codeblock-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.4rem .8rem;font-family:var(--mono);font-size:var(--fs-apparatus);background:color-mix(in srgb,var(--current-line) 45%,var(--bg-panel));border-bottom:1px solid var(--current-line)}.codeblock-head .lang{color:var(--comment);text-transform:uppercase;letter-spacing:.07em}.codeblock>pre{margin:0;border:0;border-radius:0}.copy-btn{display:inline-flex;align-items:center;gap:.3rem;background:none;border:0;cursor:pointer;color:var(--comment);font-family:var(--mono);font-size:var(--fs-apparatus);padding:.1rem .3rem;border-radius:4px}.copy-btn:hover{color:var(--ui-accent)}.copy-btn.copied{color:var(--ui-accent-solid)}.copy-btn svg{width:14px;height:14px;flex:0 0 auto}.tldr{border:1px solid var(--ui-accent-solid);border-radius:10px;padding:1rem 1.2rem;margin:1.5rem 0 2.5rem;background:color-mix(in srgb,var(--ui-accent-solid) 8%,var(--bg));max-width:100%;box-shadow:inset 0 1px #ffffff12,0 2px 5px -3px #0000004d}.tldr strong{color:var(--ui-accent-solid)}.progress{position:fixed;top:0;left:0;height:3px;width:100%;transform-origin:0 50%;background:var(--ui-accent);z-index:50;animation:grow-progress linear;animation-timeline:scroll(root block)}@keyframes grow-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media(prefers-reduced-motion:reduce){.progress{display:none}}footer.site{margin-top:3.5rem;color:var(--comment);font-size:var(--fs-sm);border-top:1px solid var(--current-line);padding-top:1.5rem}@media(prefers-reduced-motion:no-preference){button,.theme-toggle{transition:transform .09s var(--ease-standard),color var(--dur-fast) ease}button:active,.theme-toggle:active{transform:scale(.93)}.post-row{transition:background var(--dur-fast) ease,transform .09s var(--ease-standard)}.post-row:active{transform:scale(.994)}}@keyframes reveal-up{0%{opacity:0;transform:translateY(var(--reveal-dy, 18px))}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){.prose>:where(h2,h3,blockquote,.codeblock,.tldr,ul,ol,table){--reveal-dy: 18px;animation:reveal-up var(--ease-emphasized) both;animation-timeline:view();animation-range:entry 0% entry 32%}.prose>:where(figure){--reveal-dy: 28px;animation:reveal-up var(--ease-emphasized) both;animation-timeline:view();animation-range:entry 0% entry 32%}}}.scrub{position:relative;height:300vh}.scrub .stage{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;overflow:hidden}.scrub .headline{font-size:var(--fs-2xl);text-align:center;max-width:22ch;text-wrap:balance}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){.scrub{view-timeline-name:--scrub;view-timeline-axis:block}.scrub .comb{animation:comb-out var(--ease-set-piece) both;animation-timeline:--scrub;animation-range:cover 22% cover 55%}.scrub .spike{animation:spike-in var(--ease-set-piece) both;animation-timeline:--scrub;animation-range:cover 40% cover 78%}.scrub .headline{animation:head-swap var(--ease-set-piece) both;animation-timeline:--scrub;animation-range:cover 45% cover 72%}}}@media(prefers-reduced-motion:reduce){.reveal,.prose>*,.scrub .comb,.scrub .spike,.scrub .headline{animation:none!important;transform:none!important;opacity:1!important}}@keyframes comb-out{0%{opacity:1;transform:scaleX(1)}to{opacity:.12;transform:scaleX(.4)}}@keyframes spike-in{0%{opacity:0;transform:scaleY(.2)}to{opacity:1;transform:scaleY(1)}}@keyframes head-swap{0%{opacity:1}40%{opacity:0}60%{opacity:0}to{opacity:1}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@font-face{font-family:"Source Serif 4";src:url(/fonts/SourceSerif4-Variable.woff2) format("woff2");font-weight:200 900;font-display:swap}@font-face{font-family:Fraunces;src:url(/fonts/Fraunces-Variable.woff2) format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Fira Code;src:url(/fonts/FiraCode-Variable.woff2) format("woff2");font-weight:300 700;font-display:swap}@font-face{font-family:Fraunces;src:url(/fonts/Fraunces-Italic-Variable.woff2) format("woff2");font-weight:100 900;font-style:italic;font-display:swap}@font-face{font-family:"Source Serif 4";src:url(/fonts/SourceSerif4-Italic-Variable.woff2) format("woff2");font-weight:200 900;font-style:italic;font-display:swap}@font-face{font-family:"Source Serif 4 Fallback";src:local("Times New Roman");ascent-override:80.96%;descent-override:26.18%;line-gap-override:0%;size-adjust:127.97%}@font-face{font-family:Fraunces Fallback;src:local("Times New Roman");ascent-override:65.02%;descent-override:16.95%;line-gap-override:0%;size-adjust:150.42%}@font-face{font-family:Fira Code Fallback;src:local("Courier New");ascent-override:98.28%;descent-override:31.97%;line-gap-override:0%;size-adjust:100.73%}.nav-icon-link[data-astro-cid-5hce7sga]{display:inline-flex;align-items:center;text-decoration:none;line-height:1}.nav-icon-link[data-astro-cid-5hce7sga]:hover{color:var(--ui-accent)}.nav-text-link[data-astro-cid-5hce7sga]{display:inline-flex;align-items:center;text-decoration:none;line-height:1;color:inherit}.nav-text-link[data-astro-cid-5hce7sga]:hover{color:var(--ui-accent)}
