:root{--paper:#f8fafd;--surface:#fdfeff;--sunk:#f0f3f8;--line:#dce0e6;--line-strong:#bfc4cd;--ink:#171f2e;--ink-2:#464d5b;--ink-3:#5e636e;--primary:#171f2e;--primary-hover:#2c3648;--on-primary:#f8fafd;--accent:#2858cd;--accent-ink:#1a48bc;--accent-wash:#ecf3ff;--accent-line:#bacef6;--brand:#ff1a1f;--ok:#156f41;--ok-wash:#e4f9ea;--warn:#8d5406;--warn-wash:#fff3da;--warn-line:#e9cd9d;--danger:#b7262b;--danger-hover:#9e141e;--danger-wash:#fff0ee;--danger-line:#f3bfba;--scrim:#171f2e5c;--series-1:#2858cd;--series-2:#7297e2;--series-3:#adc1e9;--code-key:#262e3d;--code-str:#1a48bc;--code-num:#00703e;--code-flag:#993b29;--f-display:"Iowan Old Style", "Charter", "Palatino Linotype", "Book Antiqua", Georgia, serif;--f-text:"Avenir Next", "Avenir", "Segoe UI Variable Text", "Segoe UI", "Helvetica Neue", sans-serif;--f-mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-16:16px;--fs-20:20px;--fs-24:24px;--fs-32:clamp(26px, 2.4vw, 32px);--fs-48:clamp(34px, 3.6vw, 48px);--fs-hero:clamp(42px, 5.2vw, 68px);--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-12:48px;--r-1:4px;--r-2:8px;--r-3:12px;--r-pill:999px;--cols:12;--gutter:24px;--page-max:1200px;--page-pad:32px;--ease:cubic-bezier(.2, .7, .2, 1)}@supports (color:lab(0% 0 0)){:root{--paper:lab(98.2523% -.330776 -1.47091);--surface:lab(99.6482% -.166625 -.736165);--sunk:lab(95.6892% -.451118 -2.60154);--line:lab(88.9554% -.572771 -3.34075);--line-strong:lab(79.0832% -.804335 -4.81286);--ink:lab(11.6682% -.113927 -10.842);--ink-2:lab(32.6125% -.619635 -8.84594);--ink-3:lab(41.926% -.583276 -6.68637);--primary:lab(11.6682% -.113927 -10.842);--primary-hover:lab(22.0921% -.352606 -12.7095);--on-primary:lab(98.2523% -.330776 -1.47091);--accent:lab(39.7474% 18.676 -66.9226);--accent-ink:lab(33.7367% 21.6735 -66.8785);--accent-wash:lab(95.4964% -.543475 -8.2488);--accent-line:lab(82.2886% -.595093 -22.1047);--ok:lab(41.1017% -35.2513 18.2014);--ok-wash:lab(95.9976% -9.29073 4.75961);--warn:lab(41.6375% 20.833 48.6247);--warn-wash:lab(96.4278% 1.50314 15.521);--warn-line:lab(83.882% 5.45716 27.6439);--danger:lab(41.3325% 57.0013 35.7415);--danger-hover:lab(34.4625% 53.9261 34.7284);--danger-wash:lab(95.8904% 5.50774 2.96448);--danger-line:lab(82.0388% 18.4908 10.0508);--scrim:lab(11.6682% -.113927 -10.842/.36);--series-1:lab(39.7474% 18.676 -66.9226);--series-2:lab(62.0133% 3.00822 -43.0849);--series-3:lab(77.6448% -.528753 -22.0802);--code-key:lab(18.6423% -.361845 -10.9117);--code-str:lab(33.7367% 21.6735 -66.8785);--code-num:lab(41.2239% -38.6305 19.9727);--code-flag:lab(38.5199% 39.2343 32.1884)}}@media (max-width:1024px){:root{--cols:8;--page-pad:24px}}@media (max-width:640px){:root{--cols:4;--gutter:16px;--page-pad:16px}}
*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:var(--s-6)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--paper);color:var(--ink);font:400 var(--fs-14)/1.55 var(--f-text);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3{color:var(--ink);margin:0}h1,h2{font-family:var(--f-display);letter-spacing:-.012em;font-weight:500}p{margin:0}a{color:var(--accent-ink);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}code,pre{font-family:var(--f-mono);font-size:var(--fs-13)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-1)}img,svg{max-width:100%}.num{font-variant-numeric:tabular-nums}.serif{font-family:var(--f-display);font-weight:500}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{left:var(--s-4);z-index:50;padding:var(--s-2) var(--s-4);border-radius:var(--r-2);background:var(--primary);color:var(--on-primary);position:absolute;top:-100px}.skip:focus{top:var(--s-4)}.page{max-width:var(--page-max);padding-inline:var(--page-pad);margin-inline:auto}.grid{grid-template-columns:repeat(var(--cols), minmax(0, 1fr));column-gap:var(--gutter);display:grid}
