: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;--accent-fast-ink: #56b4e9;--accent-slow-ink: #e69f00;--infra-ink: #7583af;--loss-ink: #d96000;--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.17rem, .99rem + .74vw, 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;--radius-tile: 24px;--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);--panel-shadow-tile: inset 0 1.5px 0 rgba(255, 255, 255, .13), inset 0 -1.5px 0 rgba(0, 0, 0, .3), 0 8px 20px -10px rgba(0, 0, 0, .5);--panel-shadow-tile-hover: inset 0 1.5px 0 rgba(255, 255, 255, .18), inset 0 -1.5px 0 rgba(0, 0, 0, .3), 0 16px 32px -12px rgba(0, 0, 0, .58);--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;--dur-base: .2s}:root[data-theme=light]{--bg: #f6f1e6;--bg-panel: #ece5d3;--current-line: #d8cfba;--fg: #1c1d22;--comment: #5b5f66;--comment-faint: #968b78;--accent-fast-ink: #156d9e;--accent-slow-ink: #895f00;--infra-ink: #566595;--loss-ink: #a94b00;--ui-accent: #3b5bdb;--ui-accent-solid: #4263eb;--ui-accent-muted: #edf2ff;--ui-accent-contrast: #ffffff;--panel-shadow: inset 0 1px 0 rgba(93, 77, 52, .14), 0 1px 3px -1px rgba(60, 50, 30, .18);--panel-shadow-hover: inset 0 1px 0 rgba(93, 77, 52, .14), 0 2px 6px -3px rgba(60, 50, 30, .22);--panel-shadow-lift: inset 0 1px 0 rgba(93, 77, 52, .18), 0 4px 12px -4px rgba(60, 50, 30, .26);--panel-shadow-tile: inset 0 1.5px 0 rgba(255, 255, 255, .6), inset 0 -1.5px 0 rgba(93, 77, 52, .22), 0 8px 20px -10px rgba(60, 50, 30, .3);--panel-shadow-tile-hover: inset 0 1.5px 0 rgba(255, 255, 255, .8), inset 0 -1.5px 0 rgba(93, 77, 52, .22), 0 16px 32px -12px rgba(60, 50, 30, .35)}*,*: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}.prose>astro-island{display:block!important}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:not(.theme-toggle):hover svg{transform:translate(2px)}}.shell{max-width:1080px;margin-inline:auto;padding:2rem 1.25rem 6rem}.muted{color:var(--comment)}.kicker,.prose h2:before{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-dark,.theme-toggle .t-light{display:inline-flex;align-items:center}.theme-toggle .t-light{display:none}:root[data-theme=light] .theme-toggle .t-light{display:inline-flex}: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 var(--dur-fast) var(--ease-standard)}.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>.text:last-child{display:flex;flex-direction:column;gap:.3rem}.post-row .title{display:block;font-size:var(--fs-lg);margin:0}.post-row .dek{display:block;color:var(--comment);font-size:var(--fs-base);text-wrap:pretty}.series-name{margin:0}.series-header{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1.5rem;margin:2rem 0 .5rem}.read-combined{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--mono);font-size:var(--fs-apparatus);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--comment);text-decoration:none;margin-left:auto}.read-combined:hover{color:var(--ui-accent)}.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,.prose>astro-island{grid-column:1 / -1;max-width:min(var(--figure-column),100%);margin-inline:auto;width:100%}.prose>figure:not(.full){grid-column:2}.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;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 .heading-anchor{margin-left:.45em;font-family:var(--mono);font-size:.65em;font-weight:500;letter-spacing:0;color:var(--comment);text-decoration:none;opacity:0;transition:opacity var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.prose :is(h2,h3,h4):hover>.heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}.prose .heading-anchor:hover{color:var(--ui-accent)}.prose :is(h2,h3,h4){scroll-margin-top:2rem}.prose .marginnote{display:block;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}@media(max-width:640px){.svgfig-chart{overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain}.svgfig-chart svg{min-width:580px}}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}.data-table-scroll,.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}@media(max-width:480px){.table-scroll th,.table-scroll td{padding-right:.6rem}.table-scroll tr>:last-child{padding-right:0}}pre,code,kbd,samp{font-family:var(--mono);font-size-adjust:from-font}.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;overflow-wrap:break-word}.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:.4rem .5rem;margin:-.3rem -.2rem;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:var(--radius-panel);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:var(--panel-shadow)}.tldr strong{font-family:var(--mono);font-weight:500;font-size:.85em;color:var(--fg)}@media(max-width:640px){.tldr{font-size:var(--fs-sm);line-height:1.5}}@supports (animation-timeline: scroll()){.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) var(--ease-standard)}button:active,.theme-toggle:active{transform:scale(.93)}.post-row{transition:background var(--dur-fast) var(--ease-standard),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()){html.js .prose>:where(h2,h3,.was-h3,blockquote,.codeblock,.tldr,.bluf,ul,ol,.table-scroll,figure){animation:reveal-up var(--ease-emphasized);animation-timeline:view();animation-range:entry 0% entry 32%}html.js .prose>:where(h2,h3,.was-h3,blockquote,.codeblock,.tldr,.bluf,ul,ol,.table-scroll){--reveal-dy: 18px}html.js .prose>:where(figure){--reveal-dy: 28px}}}.scrub{position:relative;height:auto}.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 screen and (prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){.scrub{height:300vh;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 print,(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}}@keyframes scroll-cue-retire{0%{mask-size:100% 100%}to{mask-size:calc(100% + 3.5rem) 100%}}@media screen and (max-width:640px){@supports (animation-timeline: scroll()){.svgfig-chart,.svgfig-diagram,pre,.table-scroll,.data-table-scroll{mask-image:linear-gradient(to right,#000 calc(100% - 2.5rem),transparent);mask-repeat:no-repeat;mask-size:calc(100% + 3.5rem) 100%;animation:scroll-cue-retire linear both;animation-timeline:scroll(self inline)}html.js .prose>.table-scroll{animation:reveal-up var(--ease-emphasized),scroll-cue-retire linear both;animation-timeline:view(),scroll(self inline);animation-range:entry 0% entry 32%,normal}}}@media print,(prefers-reduced-motion:reduce){.svgfig-chart,.svgfig-diagram,pre,.table-scroll,.data-table-scroll{mask-image:none;animation:none}}.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%}.skip-link[data-astro-cid-5hce7sga]{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link[data-astro-cid-5hce7sga]:focus{width:auto;height:auto;overflow:visible;clip-path:none;top:1rem;left:1.25rem;z-index:100;font-family:var(--mono);font-size:var(--fs-sm);color:var(--ui-accent);background:var(--bg-panel);border:1px solid var(--current-line);border-radius:var(--radius-panel);box-shadow:var(--panel-shadow);padding:.5rem .9rem;text-decoration:none}.nav-icon-link[data-astro-cid-5hce7sga]{display:inline-flex;align-items:center;text-decoration:none;line-height:1;padding:.35rem;margin:-.35rem -.35rem -.35rem .65rem}.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;padding:.35rem;margin:-.35rem -.35rem -.35rem .65rem}.nav-text-link[data-astro-cid-5hce7sga]:hover{color:var(--ui-accent)}.theme-toggle[data-astro-cid-5hce7sga]{padding:.35rem .65rem;margin:-.35rem -.35rem -.35rem .65rem}.footer-author[data-astro-cid-5hce7sga]{margin:.6rem 0 0;font-family:var(--mono);font-size:var(--fs-apparatus);color:var(--comment)}.footer-author[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]{color:inherit;text-underline-offset:3px;padding:.35rem .2rem;margin:-.35rem -.2rem}.footer-author[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]:hover{color:var(--ui-accent)}
