@font-face{font-family:"Playfair Display";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/playfair-display-700.woff2") format("woff2")}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/source-serif-4-400.woff2") format("woff2")}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/source-serif-4-600.woff2") format("woff2")}@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:400;font-display:swap;src:url("../fonts/source-serif-4-400-italic.woff2") format("woff2")}@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-mono-400.woff2") format("woff2")}:root{--paper: #f7f3ec;--paper-2: #efe9df;--paper-3: #e2dacd;--ink: #1e1c19;--ink-soft: #6d675e;--rule: #d8d0c2;--clay: #b08d4f;--clay-deep: #8a6a33;--amber: #c9a86a;--engine-blue: #5d7186;--engine-green: #7f9384;--engine-orange: #a8543a;--engine-purple: #8a7f93;--font-display: "Playfair Display", Georgia, serif;--font-body: "Source Serif 4", Georgia, serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, monospace;--measure: 60ch;--measure-tight: 44ch;--page-max: 1220px;--page-pad: 32px;--rail: 220px;--gap: 64px}@media(prefers-color-scheme: dark){:root:not([data-theme=light]){--paper: #1c1e21;--paper-2: #25282c;--paper-3: #323639;--ink: #f2eee6;--ink-soft: #a8a297;--rule: #3c4045;--clay: #c9a86a;--clay-deep: #dcc08a;--amber: #d8bc86;--engine-blue: #8ea3b8;--engine-green: #9db3a4;--engine-orange: #c9765a;--engine-purple: #a99fb2}}:root[data-theme=dark]{--paper: #1c1e21;--paper-2: #25282c;--paper-3: #323639;--ink: #f2eee6;--ink-soft: #a8a297;--rule: #3c4045;--clay: #c9a86a;--clay-deep: #dcc08a;--amber: #d8bc86;--engine-blue: #8ea3b8;--engine-green: #9db3a4;--engine-orange: #c9765a;--engine-purple: #a99fb2}*,*::before,*::after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--font-display);letter-spacing:-0.022em;text-wrap:balance;margin:0 0 .4em}h1{font-size:clamp(2.6rem,6vw,4.125rem);line-height:1.02;letter-spacing:-0.028em;font-weight:700;text-transform:uppercase}h2{font-size:clamp(1.8rem,3.2vw,2.375rem);margin-top:2.2em}h3{font-size:1.5rem;letter-spacing:-0.015em;margin-top:1.6em}p,ul,ol{max-width:none}a{color:var(--clay-deep);text-decoration:none}a:hover{color:var(--clay);text-decoration:underline;text-underline-offset:3px}:focus-visible{outline:2px solid var(--clay);outline-offset:2px}::selection{background:rgba(181,98,58,.22)}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.85em}button{font-family:inherit}img{max-width:100%;height:auto}table{border-collapse:collapse;width:100%;font-size:.95rem}th,td{text-align:left;padding:12px 12px 12px 0;border-bottom:1px solid var(--rule)}th{font-weight:650;border-bottom:2px solid var(--ink)}figure{margin:0 0 2.5rem}figcaption{margin-top:12px;font-size:.9rem;color:var(--ink-soft);max-width:64ch;line-height:1.5}@media(prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}}.kicker{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--clay);margin-bottom:1rem}.standfirst{font-size:1.28rem;line-height:1.5;color:var(--ink-soft);max-width:var(--measure-tight);text-wrap:pretty;margin:0 0 2.2rem}.btn-search{display:flex;align-items:center;gap:8px;background:var(--paper-2);border:1px solid var(--rule);border-radius:2px;padding:6px 10px;color:var(--ink-soft);font-size:.875rem;cursor:pointer}.btn-search:hover{border-color:var(--clay);color:var(--ink)}.btn-search__key{font-family:var(--font-mono);font-size:.7rem;opacity:.7}.btn-icon{background:none;border:1px solid var(--rule);border-radius:2px;width:32px;height:32px;cursor:pointer;color:var(--ink-soft);font-size:.875rem}.btn-icon:hover{border-color:var(--clay);color:var(--clay)}.highlight{position:relative;background:var(--paper-2);border-left:3px solid var(--clay);padding:20px 24px;margin:0 0 1.4rem;overflow-x:auto;max-width:660px}.highlight pre,.highlight code{background:none;padding:0;font-size:.9rem;line-height:1.85}.copy-btn{position:absolute;top:12px;right:12px;background:var(--paper);border:1px solid var(--rule);border-radius:2px;font-size:.75rem;padding:4px 9px;color:var(--ink-soft);cursor:pointer}.copy-btn:hover{border-color:var(--clay);color:var(--clay)}.admonition{border-left:3px solid var(--rule);padding:4px 0 4px 20px;margin:0 0 1.6rem;max-width:var(--measure)}.admonition__title{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;margin:0 0 .4rem;color:var(--ink-soft)}.admonition__body>:last-child{margin-bottom:0}.admonition--warning{border-left-color:var(--engine-orange)}.admonition--warning .admonition__title{color:var(--engine-orange)}.admonition--caution{border-left-color:var(--clay)}.admonition--caution .admonition__title{color:var(--clay-deep)}.tabs{display:flex;flex-wrap:wrap;margin:0 0 1.6rem;max-width:660px}.tabs__radio{position:absolute;opacity:0;pointer-events:none}.tabs__label{order:-1;padding:7px 14px;font-size:.85rem;cursor:pointer;color:var(--ink-soft);border-bottom:2px solid rgba(0,0,0,0)}.tabs__panel{display:none;width:100%}.tabs__radio:checked+.tabs__label{color:var(--ink);border-bottom-color:var(--clay)}.tabs__radio:checked+.tabs__label+.tabs__panel{display:block}.tabs__radio:focus-visible+.tabs__label{outline:2px solid var(--clay);outline-offset:2px}.table-scroll{overflow-x:auto;margin:0 0 1rem;max-width:100%}.benchmark{font-size:.85rem}.benchmark th,.benchmark td{padding:10px 8px 10px 0}.benchmark__num{padding-left:10px;text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.benchmark th[scope=row]{font-weight:400;white-space:nowrap;border-bottom:1px solid var(--rule)}.benchmark .is-best{font-weight:700;color:var(--ink)}.benchmark .is-ceiling{color:var(--ink-soft);font-style:italic}.benchmark__summary th,.benchmark__summary td{font-weight:650;border-top:2px solid var(--ink)}.benchmark__ref{color:var(--clay)}.benchmark__caption{font-size:.8rem;color:var(--ink-soft);max-width:var(--measure)}.figure{margin:0 0 2.6rem}.figure img{display:block;width:100%;border:1px solid var(--rule);background:var(--paper-2)}.figure--themed .figure__dark{display:none}@media(prefers-color-scheme: dark){:root:not([data-theme=light]) .figure--themed .figure__light{display:none}:root:not([data-theme=light]) .figure--themed .figure__dark{display:block}}:root[data-theme=dark] .figure--themed .figure__light{display:none}:root[data-theme=dark] .figure--themed .figure__dark{display:block}:root[data-theme=light] .figure--themed .figure__light{display:block}:root[data-theme=light] .figure--themed .figure__dark{display:none}.lightbox{display:block}.lightbox img{display:block;max-width:100%;height:auto;border:1px solid var(--rule);background:var(--paper-2)}.lightbox:hover img{border-color:var(--clay)}.lightbox:focus-visible{outline:2px solid var(--clay);outline-offset:3px}.lightbox-overlay{position:fixed;inset:0;z-index:70;background:rgba(58,35,24,.82);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:4vh 4vw;cursor:zoom-out}.lightbox-overlay[hidden]{display:none}.lightbox-overlay__inner{display:flex;flex-direction:column;align-items:center;gap:12px;max-height:100%}.lightbox-overlay img{max-width:100%;max-height:82vh;object-fit:contain;background:var(--paper)}.lightbox-overlay__caption{margin:0;font-family:var(--font-mono);font-size:.78rem;line-height:1.5;text-align:center;color:rgba(255,255,255,.82);max-width:var(--measure-tight)}.search{position:fixed;inset:0;z-index:60;background:rgba(58,35,24,.42);display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}.search[hidden]{display:none}.search__panel{width:min(660px,92vw);background:var(--paper);border:1px solid var(--rule);border-radius:2px;box-shadow:0 24px 64px rgba(58,35,24,.28);overflow:hidden}.search__input{width:100%;border:none;border-bottom:1px solid var(--rule);background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:1.15rem;padding:18px 22px;outline:none}.search__results{max-height:52vh;overflow:auto}.search__hit{display:block;padding:14px 22px;border-bottom:1px solid var(--rule);color:var(--ink)}.search__hit:hover{background:var(--paper-2);text-decoration:none}.search__section{display:block;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--clay);margin-bottom:3px}.search__title{display:block;font-size:1.05rem;font-weight:600}.search__empty{padding:18px 22px;margin:0;color:var(--ink-soft)}.search__foot{padding:10px 22px;font-size:.78rem;color:var(--ink-soft);display:flex;justify-content:space-between}.masthead__nav.is-open{display:flex;position:absolute;inset:100% 0 auto;flex-direction:column;gap:10px;padding:12px var(--page-pad) 20px;background:var(--paper-2);border-top:1px solid var(--rule)}.breadcrumbs{margin:0 0 1.4rem;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;color:var(--ink-soft)}.breadcrumbs ol{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}.breadcrumbs li+li::before{content:"/";margin-right:.5rem;color:var(--rule)}.breadcrumbs a{color:var(--ink-soft);text-decoration:none}.breadcrumbs a:hover{color:var(--clay-deep);text-decoration:underline}.breadcrumbs [aria-current=page]{color:var(--ink)}.masthead{position:sticky;top:0;z-index:40;background:var(--paper);border-bottom:1px solid var(--rule)}.masthead__inner{max-width:var(--page-max);margin:0 auto;padding:14px var(--page-pad);display:flex;align-items:center;gap:28px}.masthead__brand{display:flex;align-items:baseline;gap:10px;flex:none;color:var(--ink)}.masthead__brand:hover{color:var(--ink);text-decoration:none}.masthead__name{font-size:1.3rem;font-weight:700;letter-spacing:-0.015em}.masthead__version{font-family:var(--font-mono);font-size:.7rem;color:var(--clay);letter-spacing:.06em}.masthead__nav{display:flex;gap:22px;flex:1;align-items:center}.masthead__nav a{font-size:.97rem;color:var(--ink-soft);padding:4px 0;white-space:nowrap}.masthead__nav a:hover{color:var(--clay-deep);text-decoration:none}.masthead__nav a[aria-current=page]{color:var(--ink);font-weight:600}.masthead__tools{display:flex;align-items:center;gap:8px;flex:none}.masthead__repo{font-size:.875rem;color:var(--ink-soft);white-space:nowrap}.page{max-width:var(--page-max);margin:0 auto;padding:0 var(--page-pad);display:grid;grid-template-columns:minmax(0, 1fr) var(--rail);gap:var(--gap);align-items:start}.page__body{min-width:0;padding:56px 0 96px;animation:fadeup .4s ease both}.rail{position:sticky;top:96px;padding-top:60px;font-size:.9rem}.rail__label{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}.rail ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.rail li ul{margin-top:10px;padding-left:14px}.rail a{color:var(--ink-soft);line-height:1.35}.rail a:hover{color:var(--clay-deep);text-decoration:none}.rail__foot{margin-top:34px;padding-top:20px;border-top:1px solid var(--rule);font-size:.875rem}.footer{border-top:1px solid var(--rule);margin-top:40px}.footer__inner{max-width:var(--page-max);margin:0 auto;padding:36px var(--page-pad) 56px;display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap}.footer__blurb{font-size:.9rem;color:var(--ink-soft);max-width:46ch;line-height:1.5;margin:0}.footer__links{display:flex;gap:28px;font-size:.9rem}.grid.cards{display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:44px 56px;margin:3rem 0;padding:0;list-style:none}.grid.cards>ul{display:contents;list-style:none}.grid.cards li{list-style:none}.grid.cards li>p{max-width:none;font-size:1rem;line-height:1.55;color:var(--ink-soft)}.grid.cards li>p:first-child{font-family:var(--font-display);font-size:1.4rem;letter-spacing:-0.015em;margin:0 0 .4rem;color:var(--ink)}.hero-figure img{width:100%;border:1px solid var(--rule)}@keyframes fadeup{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(width <= 1000px){.masthead__nav{display:none}.page{grid-template-columns:minmax(0, 1fr);gap:0}.rail{display:none}}@media(width > 1000px){[data-menu-toggle]{display:none}}