:root{color-scheme:light dark;--neutral-0: #ffffff;--neutral-50: #fafaf7;--neutral-100: #e8e6df;--neutral-200: #dcdcd5;--neutral-300: #a9a79f;--neutral-400: #8c8b84;--neutral-500: #74746c;--neutral-600: #5a5a56;--neutral-800: #2c2f2a;--neutral-900: #18181d;--neutral-950: #141613;--green-50: #e9f3ec;--green-400: #5edc8a;--green-500: #23cc5e;--green-700: #1b7039;--green-800: #165c2f;--green-950: #1c2a20;--red-300: #ff8a80;--red-700: #b42318;--color-bg: var(--neutral-50);--color-bg-raised: var(--neutral-50);--color-surface: var(--green-50);--color-text: var(--neutral-900);--color-text-muted: var(--neutral-600);--color-border: var(--neutral-200);--color-border-strong: var(--neutral-500);--color-accent: var(--green-500);--color-accent-strong: var(--green-700);--color-accent-strong-hover: var(--green-800);--color-on-accent: var(--neutral-0);--color-link: var(--green-700);--color-link-visited-decoration: var(--neutral-600);--color-focus: var(--green-700);--color-success: var(--green-700);--color-danger: var(--red-700);--color-disabled-bg: var(--neutral-200);--color-disabled-text: var(--neutral-600);--color-scrim: rgb(20 22 19 / .92);--logo-wordmark: var(--color-text);--logo-height: 2rem;--font-serif: "Literata", "Literata Fallback", Georgia, serif;--font-display: "Cabinet Grotesk", "Cabinet Grotesk Fallback", Arial, sans-serif;--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--weight-regular: 400;--weight-semibold: 600;--weight-bold: 700;--text-display: clamp(2.5rem, 1.9718rem + 2.2535vw, 4rem);--text-h1: clamp(2rem, 1.6479rem + 1.5023vw, 3rem);--text-h2: clamp(1.625rem, 1.4489rem + .7512vw, 2.125rem);--text-h3: clamp(1.375rem, 1.287rem + .3756vw, 1.625rem);--text-title: clamp(1.25rem, 1.206rem + .1878vw, 1.375rem);--text-h4: clamp(1.25rem, 1.206rem + .1878vw, 1.375rem);--text-body: clamp(1.125rem, 1.081rem + .1878vw, 1.25rem);--text-small: clamp(1rem, .978rem + .0939vw, 1.0625rem);--text-ui: clamp(.875rem, .853rem + .0939vw, .9375rem);--text-code: .9em;--leading-display: calc(var(--text-display) * 1.04);--leading-h1: calc(var(--text-h1) * 1.08);--leading-h2: calc(var(--text-h2) * 1.15);--leading-h3: calc(var(--text-h3) * 1.2);--leading-title: 1.5rem;--leading-h4: calc(var(--text-h4) * 1.3);--leading-body: 2rem;--leading-small: 1.5rem;--leading-ui: 1.25rem;--leading-ui-multi: 1.5rem;--leading-code: 1.5rem;--tracking-display: -.02em;--tracking-heading: -.01em;--tracking-normal: 0;--rhythm: 2rem;--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--space-9: 6rem;--space-section: var(--space-8);--grid-columns: 4;--grid-margin: var(--space-5);--grid-gutter: var(--space-4);--container-max: 70rem;--measure: 40rem;--rail: 16rem;--aside-max: 10rem;--header-height: 3.5rem;--scroll-offset: calc(var(--header-height) + var(--space-5));--target-min: 2.75rem;--toc-item-min: 3rem;--icon-size: 1.25rem;--avatar-byline: 2.5rem;--avatar-author: 4rem;--ratio-cover: 8 / 3;--ratio-cover-mobile: 2 / 1;--ratio-card: 16 / 9;--radius-sm: .25rem;--radius-md: .5rem;--radius-pill: 999px;--border-width: 1px;--border-width-strong: 2px;--bar-width: 4px;--focus-width: 2px;--focus-offset: 2px;--focus-ring: var(--focus-width) solid var(--color-focus);--shadow-overlay: 0 .5rem 1.5rem rgb(24 24 29 / .12);--underline-offset: .18em;--underline-thickness: 1px;--underline-thickness-hover: 2px;--duration-fast: .15s;--duration-base: .2s;--ease-standard: cubic-bezier(.2, 0, 0, 1);--z-sticky: 10;--z-header: 20;--z-overlay: 30;--z-skip: 40}@supports (width: round(up,1px,1px)){:root{--leading-display: round(up, var(--text-display) * 1.04 - .1px, .25rem);--leading-h1: round(up, var(--text-h1) * 1.08 - .1px, .25rem);--leading-h2: round(up, var(--text-h2) * 1.15 - .1px, .25rem);--leading-h3: round(up, var(--text-h3) * 1.2 - .1px, .25rem);--leading-h4: round(up, var(--text-h4) * 1.3 - .1px, .25rem)}}@media(min-width:48em){:root{--grid-columns: 8;--grid-margin: var(--space-6);--grid-gutter: var(--space-5);--header-height: 4rem;--leading-title: 1.75rem;--leading-small: 1.75rem;--scroll-offset: calc(var(--header-height) + var(--space-6))}}@media(min-width:64em){:root{--grid-columns: 12;--grid-gutter: var(--space-6);--space-section: var(--space-9)}}@media(prefers-reduced-motion:reduce){:root{--duration-fast: 0ms;--duration-base: 0ms}}:root[data-theme=light]{color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--color-bg: var(--neutral-950);--color-bg-raised: var(--green-950);--color-surface: var(--green-950);--color-text: var(--neutral-100);--color-text-muted: var(--neutral-300);--color-border: var(--neutral-800);--color-border-strong: var(--neutral-400);--color-accent: var(--green-500);--color-accent-strong: var(--green-500);--color-accent-strong-hover: var(--green-400);--color-on-accent: var(--neutral-950);--color-link: var(--green-500);--color-link-visited-decoration: var(--neutral-300);--color-focus: var(--green-500);--color-success: var(--green-500);--color-danger: var(--red-300);--color-disabled-bg: var(--neutral-800);--color-disabled-text: var(--neutral-300);--logo-wordmark: var(--color-text);--shadow-overlay: none}}:root[data-theme=dark]{color-scheme:dark;--color-bg: var(--neutral-950);--color-bg-raised: var(--green-950);--color-surface: var(--green-950);--color-text: var(--neutral-100);--color-text-muted: var(--neutral-300);--color-border: var(--neutral-800);--color-border-strong: var(--neutral-400);--color-accent: var(--green-500);--color-accent-strong: var(--green-500);--color-accent-strong-hover: var(--green-400);--color-on-accent: var(--neutral-950);--color-link: var(--green-500);--color-link-visited-decoration: var(--neutral-300);--color-focus: var(--green-500);--color-success: var(--green-500);--color-danger: var(--red-300);--color-disabled-bg: var(--neutral-800);--color-disabled-text: var(--neutral-300);--logo-wordmark: var(--color-text);--shadow-overlay: none}@font-face{font-family:Literata;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/literata-roman-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/literata-italic-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cabinet Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/cabinet-700.woff2) format("woff2")}@font-face{font-family:Literata Fallback;src:local("Georgia");size-adjust:106.88%;ascent-override:110.12%;descent-override:28.82%;line-gap-override:0%}@font-face{font-family:Literata Fallback;font-style:italic;src:local("Georgia Italic");size-adjust:98.96%;ascent-override:118.93%;descent-override:31.12%;line-gap-override:0%}@font-face{font-family:Cabinet Grotesk Fallback;font-weight:700;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:92.21%;ascent-override:94.35%;descent-override:30.36%;line-gap-override:9.76%}.site{position:relative;isolation:isolate;background:var(--color-bg);color:var(--color-text);font-family:var(--font-serif);font-size:var(--text-body);line-height:var(--leading-body);font-optical-sizing:auto;--gm: max(var(--grid-margin), env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px))}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--color-bg);color:var(--color-text)}img,svg{display:block;max-width:100%}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset);border-radius:var(--radius-sm)}.wrap{width:min(100% - 2 * var(--gm),var(--container-max));margin-inline:auto}.site a{color:var(--color-link);text-decoration-line:underline;text-decoration-thickness:var(--underline-thickness);text-underline-offset:var(--underline-offset);text-decoration-skip-ink:auto;transition:text-decoration-thickness var(--duration-fast) var(--ease-standard)}.site a:hover{text-decoration-thickness:var(--underline-thickness-hover)}.site a:visited{text-decoration-color:var(--color-link-visited-decoration)}.quiet{color:inherit!important;text-decoration-line:none!important}.quiet:hover{text-decoration-line:underline!important}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--target-min);white-space:nowrap;padding:calc(var(--space-3) - var(--border-width)) calc(var(--space-5) - var(--border-width));font:var(--weight-semibold) var(--text-ui) / var(--leading-ui) var(--font-ui);color:var(--color-text)!important;text-decoration:none!important;background:transparent;cursor:pointer;border:var(--border-width) solid var(--color-text);border-radius:var(--radius-pill);transition:background-color var(--duration-fast) var(--ease-standard)}.btn:hover,.btn:active{background:var(--color-surface)}.btn-primary{background:var(--color-accent-strong);border-color:var(--color-accent-strong);color:var(--color-on-accent)!important}.btn-primary:hover,.btn-primary:active{background:var(--color-accent-strong-hover);border-color:var(--color-accent-strong-hover)}.icon-btn{display:inline-grid;place-items:center;flex:none;width:var(--target-min);height:var(--target-min);padding:var(--space-3);color:var(--color-text);background:transparent;border:0;border-radius:var(--radius-pill);cursor:pointer;font:var(--weight-semibold) var(--text-ui) / var(--leading-ui) var(--font-ui)}.icon-btn:hover,.icon-btn[aria-expanded=true]{background:var(--color-surface)}.icon-btn.is-bordered{padding:calc(var(--space-3) - var(--border-width));border:var(--border-width) solid var(--color-border-strong)}.icon{width:var(--icon-size);height:var(--icon-size);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.rule-t,.rule-b{position:relative}.rule-t:before,.rule-b:after{content:"";position:absolute;inset-inline:0;height:var(--border-width);background:var(--color-border)}.rule-t:before{top:0}.rule-b:after{bottom:0}.skip{position:absolute;z-index:var(--z-skip);top:var(--space-4);left:var(--gm);transform:translateY(-200%);display:inline-flex;align-items:center;min-height:var(--target-min);padding:0 var(--space-5);font:var(--weight-semibold) var(--text-ui) / var(--leading-ui) var(--font-ui);background:var(--color-accent-strong);color:var(--color-on-accent)!important;text-decoration:none!important;border-radius:var(--radius-pill)}.skip:focus{transform:none}.hdr{position:sticky;top:env(safe-area-inset-top,0px);z-index:var(--z-header);background:var(--color-bg)}.hdr .btn.is-demoted{background:transparent;border-color:var(--color-text);color:var(--color-text)!important}.hdr .btn.is-demoted:hover{background:var(--color-surface)}.hdr-in{display:flex;align-items:center;justify-content:space-between;column-gap:var(--space-4);height:var(--header-height)}.logo{position:relative;display:block;flex:none;color:var(--color-text)}.logo:before{content:"";position:absolute;inset:calc((var(--logo-height) - var(--target-min)) / 2) 0}.logo svg{width:auto;height:var(--logo-height)}.nav-main,.act-full{display:none}.act-compact{display:flex;gap:var(--space-2)}@media(max-width:22.5em){.hdr{--logo-height: var(--space-5)}.act-compact{gap:0}}.nav-main ul{display:flex;margin:0;padding:0;list-style:none}.nav-link{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--target-min);padding:var(--space-3);font:var(--weight-semibold) var(--text-ui) / var(--leading-ui) var(--font-ui);color:var(--color-text)!important;text-decoration-line:none!important;background:transparent;border:0;cursor:pointer}.nav-link:hover{text-decoration-line:underline!important}.nav-link[aria-expanded=true] .chev{transform:rotate(180deg)}.chev{transition:transform var(--duration-base) var(--ease-standard)}.lang-btn{width:var(--target-min)}@media(min-width:74em){.hdr-in{display:grid;grid-template-columns:[rail-start] var(--rail) [rail-end text-start] minmax(0,1fr);column-gap:var(--space-6)}.act-compact{display:none}.hdr-text{display:flex;align-items:center;justify-content:space-between;min-width:0}.nav-main{display:block;margin-inline-start:calc(-1 * var(--space-3))}.act-full{display:flex;align-items:center;gap:var(--space-2);padding-inline-start:var(--space-6)}}.panel{position:absolute;z-index:var(--z-overlay);top:100%;left:0;right:0;background:var(--color-bg-raised);box-shadow:var(--shadow-overlay)}.nav-panel{padding-block:var(--space-5);max-height:calc(100dvh - var(--header-height));overflow:auto}.nav-panel ul{margin:0;padding:0;list-style:none}.nav-panel li a,.nav-panel li button{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--target-min);padding:var(--space-3) 0}.nav-panel .sub{padding-inline-start:var(--space-5)}.nav-panel-foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4);margin-top:var(--space-5)}.cat-panel{padding-block:var(--space-5)}.cat-panel ul{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--space-6);margin:0;padding:0;list-style:none}.cat-panel a,.nav-panel a{font:var(--weight-regular) var(--text-ui) / var(--leading-ui) var(--font-ui);display:flex;align-items:center;min-height:var(--target-min);padding-block:var(--space-3)}.lang-wrap{position:relative}.lang-panel{position:absolute;z-index:var(--z-overlay);top:100%;right:0;min-width:10rem;margin-top:var(--space-2);padding:var(--space-2) 0;background:var(--color-bg-raised);border-radius:var(--radius-md);box-shadow:var(--shadow-overlay);list-style:none}.lang-panel a{display:flex;align-items:center;min-height:var(--target-min);padding:var(--space-3) var(--space-4);font:var(--weight-regular) var(--text-ui) / var(--leading-ui) var(--font-ui)}.lang-panel a[aria-current]{font-weight:var(--weight-semibold)}.ftr{padding-block:var(--space-section) var(--space-6);font:var(--weight-regular) var(--text-ui) / var(--leading-ui) var(--font-ui)}.ftr-grid{display:grid;grid-template-columns:minmax(0,1fr)}.ftr-brand p{margin:var(--space-4) 0 0;font-size:var(--text-small);line-height:var(--leading-small);color:var(--color-text-muted)}.ftr-lists{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--grid-gutter);row-gap:var(--space-6);margin-top:var(--space-7)}.ftr-lists>*{min-width:0}.ftr h2{margin:0 0 var(--space-2);font:var(--weight-semibold) var(--text-ui) / var(--leading-ui) var(--font-ui);color:var(--color-text-muted)}.ftr ul{margin:0;padding:0;list-style:none}.ftr ul a{display:flex;align-items:center;min-height:var(--target-min);padding-block:var(--space-3);color:var(--color-text)!important;text-decoration-line:none!important}.ftr ul a:hover{text-decoration-line:underline!important}.ftr-bottom{margin-top:var(--space-8);padding-top:var(--space-5);color:var(--color-text-muted)}.ftr-bottom p{margin:0}@media(min-width:48em){.ftr-lists{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:74em){.ftr-grid{grid-template-columns:[rail-start] var(--rail) [rail-end text-start] minmax(0,1fr);column-gap:var(--space-6)}.ftr-lists{margin-top:0;grid-template-columns:repeat(4,minmax(0,calc(2 * (var(--container-max) - 11 * var(--grid-gutter)) / 12 + var(--grid-gutter))));column-gap:var(--grid-gutter)}}html:not(.js) .js-only{display:none!important}html.js .nojs-only{display:none!important}
