@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-vietnamese-wght-normal.XAtsl5Q_.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-latin-ext-wght-normal.C4zznr8T.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-latin-wght-normal.E0tuGl4L.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#efeeea;--surface:#fff;--sunk:#e8e7e1;--sunk-2:#dbd9d1;--ink:#14161a;--ink-2:#3c4249;--ink-3:#5f666e;--ink-inv:#fff;--line:#d6d4cc;--line-2:#bebbb1;--line-3:#a6a29a;--brand:#10425f;--brand-hi:#0b3149;--brand-lo:#082436;--brand-lift:#57a6c9;--brand-tint:#e4ebef;--brand-tint-2:#c7d8e2;--face:#14181c;--face-2:#1e242a;--face-3:#29313a;--face-line:#313a43;--face-ink:#eceeec;--face-ink-2:#98a2ab;--danger:#9c2b20;--danger-tint:#fbebe8;--ok:#1c6146;--ok-tint:#e4f0ea;--warn:#7f5300;--warn-tint:#fbf1de;--focus:#10425f;--focus-inv:#7cc0de;--font-display:"Archivo Variable", ui-sans-serif, system-ui, sans-serif;--font-body:"IBM Plex Sans Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", "Cascadia Mono", monospace;--t-display:clamp(2.75rem, 1.55rem + 5vw, 5.75rem);--t-h1:clamp(1.9375rem, 1.6rem + 1.6vw, 2.75rem);--t-h2:clamp(1.3125rem, 1.22rem + .42vw, 1.5625rem);--t-h3:1.0625rem;--t-lede:clamp(1.0625rem, 1.01rem + .26vw, 1.1875rem);--t-body:1.0625rem;--t-ui:1rem;--t-help:.9375rem;--t-spec:.8125rem;--t-mark:.75rem;--s1:.25rem;--s2:.5rem;--s3:.75rem;--s4:1rem;--s5:1.25rem;--s6:1.5rem;--s7:2rem;--s8:2.5rem;--s9:3.5rem;--s10:4.5rem;--s11:6rem;--r-sm:3px;--r:5px;--r-lg:8px;--lift-1:0 1px 0 #14161a0a;--lift-2:0 1px 2px #14161a0f, 0 14px 34px -22px #14161a66;--lift-face:0 1px 0 #ffffff0d inset;--module-size:3px;--module-run:repeating-linear-gradient(90deg, currentColor 0 var(--module-size), transparent var(--module-size) calc(var(--module-size) * 2));--w-page:74rem;--w-tool:60rem;--w-prose:38rem;--dur:.15s;--dur-slow:.26s;--ease:cubic-bezier(.32, .72, .28, 1)}@media (prefers-reduced-motion:reduce){:root{--dur:0s;--dur-slow:0s}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}body{background:var(--paper);min-height:100svh;color:var(--ink-2);font-family:var(--font-body);font-size:var(--t-body);font-synthesis-weight:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.62;overflow-x:hidden}img,svg,canvas,video{max-width:100%;display:block}[hidden]{display:none!important}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink);letter-spacing:-.025em;text-wrap:balance;font-weight:700;line-height:1.1}h1{font-size:var(--t-h1);letter-spacing:-.035em;font-weight:800}h2{font-size:var(--t-h2);letter-spacing:-.028em}h3{font-size:var(--t-h3);letter-spacing:-.012em;line-height:1.3}p{text-wrap:pretty}code,kbd,samp{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.92em}a{color:var(--brand);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--brand-hi)}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}::selection{background:var(--brand-tint-2);color:var(--brand-lo)}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--s4);top:var(--s4);z-index:60;background:var(--ink);color:var(--ink-inv);padding:var(--s2) var(--s4);border-radius:var(--r-sm);font-size:var(--t-help);transition:transform var(--dur) var(--ease);font-weight:600;text-decoration:none;position:absolute;transform:translateY(-250%)}.skip-link:focus-visible{color:var(--ink-inv);transform:translateY(0)}.wrap{width:100%;max-width:var(--w-page);padding-inline:var(--s5);margin-inline:auto}@media (min-width:48rem){.wrap{padding-inline:var(--s7)}}.wrap--tool{max-width:var(--w-tool)}.stack>*+*{margin-top:var(--s5)}.section{padding-block:var(--s9)}.section--tight{padding-block:var(--s8)}.section+.section{padding-top:0}.rule{height:var(--module-size);color:var(--line-2);background-image:var(--module-run);border:0;margin:0}.rule--wide{color:var(--line)}.mark{align-items:center;gap:var(--s3);font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);font-weight:500;line-height:1.4;display:flex}.mark:before{content:"";width:21px;height:var(--module-size);background-image:var(--module-run);color:var(--brand);flex:none}.mark--bare:before{display:none}.lede{font-size:var(--t-lede);color:var(--ink-2);max-width:56ch;line-height:1.55}.help{font-size:var(--t-help);color:var(--ink-3);line-height:1.55}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-2);font-size:.94em}.io{align-items:baseline;gap:var(--s2);font-family:var(--font-mono);font-size:var(--t-spec);color:var(--ink-3);flex-wrap:wrap;line-height:1.5;display:flex}.io b{color:var(--ink-2);font-weight:500}.io i{color:var(--brand);font-style:normal}.sectionhead{gap:var(--s3);margin-bottom:var(--s6);max-width:60ch;display:grid}.masthead{z-index:10;background:var(--face);color:var(--face-ink);position:relative}.masthead__bar{justify-content:space-between;align-items:center;gap:var(--s5);min-height:56px;display:flex}.brand{align-items:center;gap:var(--s3);color:inherit;text-decoration:none;display:flex}.brand__mark{flex:none}.brand__name{font-family:var(--font-display);letter-spacing:-.03em;color:inherit;font-size:1.1875rem;font-weight:800}.brand__sub{padding-left:var(--s3);border-left:1px solid var(--face-line);font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.09em;text-transform:uppercase;color:var(--face-ink-2);font-weight:400;display:none}@media (min-width:34rem){.brand__sub{display:inline-block}}.navlinks{align-items:center;gap:var(--s2);display:flex}.navlinks a{padding:var(--s2) var(--s3);border-radius:var(--r-sm);font-size:var(--t-help);color:var(--face-ink-2);transition:color var(--dur) var(--ease);font-weight:500;text-decoration:none}.navlinks a:hover{color:var(--face-ink)}.navlinks a[aria-current=page]{color:var(--face-ink);box-shadow:inset 0 -2px 0 var(--brand-lift)}.masthead :focus-visible,.footer :focus-visible{outline-color:var(--focus-inv)}.footer{margin-top:var(--s10);padding-block:var(--s9) var(--s7);background:var(--face);color:var(--face-ink-2);font-size:var(--t-help)}.footer__grid{gap:var(--s8);display:grid}@media (min-width:46rem){.footer__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:62rem){.footer__grid{gap:var(--s7);grid-template-columns:1.4fr repeat(3,minmax(0,1fr))}}.footer__about .brand{margin-bottom:var(--s4)}.footer__about p{color:var(--face-ink-2);max-width:34ch}.footer h2{font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.09em;text-transform:uppercase;color:var(--face-ink-2);margin-bottom:var(--s4);padding-bottom:var(--s3);border-bottom:1px solid var(--face-line);font-weight:500}.footer ul{gap:var(--s3);padding:0;list-style:none;display:grid}.footer a{color:var(--face-ink);text-decoration:none}.footer a:hover{color:#fff;text-decoration:underline}.footer__base{gap:var(--s4) var(--s6);margin-top:var(--s8);padding-top:var(--s5);border-top:1px solid var(--face-line);font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.05em;flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.footer__legal{gap:var(--s5);flex-wrap:wrap;display:flex}.btn{justify-content:center;align-items:center;gap:var(--s2);min-height:44px;padding:var(--s3) var(--s5);border-radius:var(--r);font-family:var(--font-body);font-size:var(--t-ui);letter-spacing:-.006em;white-space:nowrap;transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease), transform var(--dur) var(--ease);border:1px solid #0000;font-weight:600;text-decoration:none;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;transform:none}.btn svg{flex:none}.btn--primary{background:var(--brand);color:var(--ink-inv)}.btn--primary:hover:not(:disabled){background:var(--brand-hi);color:var(--ink-inv)}.btn--outline{background:var(--surface);border-color:var(--line-2);color:var(--ink)}.btn--outline:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}.btn--quiet{color:var(--ink-2);padding-inline:var(--s3);background:0 0}.btn--quiet:hover:not(:disabled){background:var(--sunk-2);color:var(--ink)}.btn--sm{min-height:38px;padding:var(--s2) var(--s4);font-size:var(--t-help)}.btn--block{width:100%}.btnrow{gap:var(--s3);flex-wrap:wrap;display:flex}.field{gap:var(--s2);display:grid}.field+.field,.field+.btnrow,.field+.check,.check+.field{margin-top:var(--s5)}.field>label,.fieldlabel{justify-content:space-between;align-items:baseline;gap:var(--s3);font-size:var(--t-help);color:var(--ink);flex-wrap:wrap;font-weight:600;display:flex}.input,.textarea,.select{width:100%;min-height:44px;padding:var(--s3) var(--s4);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);color:var(--ink);font-size:var(--t-ui);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease)}.textarea{min-height:108px;padding:var(--s3) var(--s4);font-family:var(--font-mono);font-size:var(--t-help);resize:vertical;line-height:1.6}.input::placeholder,.textarea::placeholder{color:var(--ink-3)}.input:hover,.textarea:hover,.select:hover{border-color:var(--line-3)}.input:focus-visible,.textarea:focus-visible,.select:focus-visible{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint-2);outline:none}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.select{appearance:none;padding-right:var(--s8);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%233c4249' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--s4) center}.grid2{gap:var(--s5);display:grid}@media (min-width:26rem){.grid2{grid-template-columns:repeat(2,minmax(0,1fr))}}.range{--pct:50%;appearance:none;background:0 0;width:100%;height:28px;margin:0}.range::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--brand) 0 var(--pct), var(--sunk-2) var(--pct) 100%);border-radius:1px;height:4px}.range::-moz-range-track{background:var(--sunk-2);border-radius:1px;height:4px}.range::-moz-range-progress{background:var(--brand);border-radius:1px;height:4px}.range::-webkit-slider-thumb{appearance:none;background:var(--surface);border:2px solid var(--brand);border-radius:2px;width:12px;height:22px;margin-top:-9px}.range::-moz-range-thumb{background:var(--surface);border:2px solid var(--brand);border-radius:2px;width:10px;height:20px}.range:focus-visible{outline:none}.range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--brand-tint-2)}.range:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px var(--brand-tint-2)}.check{align-items:flex-start;gap:var(--s3);cursor:pointer;display:flex}.check input{width:20px;height:20px;accent-color:var(--brand);flex:none;margin-top:1px}.check span{font-size:var(--t-help);color:var(--ink-2)}.seg{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);display:flex;overflow:clip}@media (max-width:26rem){.seg{flex-wrap:wrap}.seg button{flex:100%}.seg button+button{border-left:0;border-top:1px solid var(--line-2)}}.seg button{white-space:nowrap;min-height:42px;padding-inline:var(--s4);color:var(--ink-2);font-family:var(--font-body);font-size:var(--t-help);transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:0;flex:auto;font-weight:600}.seg button+button{border-left:1px solid var(--line-2)}.seg button:hover{background:var(--sunk);color:var(--ink)}.seg button[aria-selected=true]{background:var(--brand);color:var(--ink-inv)}.bench{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-lg);box-shadow:var(--lift-2);overflow:clip}.bench__plate{align-items:center;gap:var(--s3) var(--s5);padding:var(--s3) var(--s5);background:var(--face);color:var(--face-ink);font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.09em;text-transform:uppercase;flex-wrap:wrap;display:flex}.bench__plate:before{content:"";width:21px;height:var(--module-size);background-image:var(--module-run);color:var(--brand-lift);flex:none}.bench__title{margin-right:auto;font-weight:500}.bench__io{gap:var(--s2);color:var(--face-ink-2);flex-wrap:wrap;display:flex}.bench__io b{color:var(--face-ink-2);opacity:.72;font-weight:400}.bench__io i{color:var(--brand-lift);font-style:normal}.bench__body{padding:var(--s5)}@media (min-width:40rem){.bench__body{padding:var(--s6)}}.bench__body>*+*{margin-top:var(--s6)}.bench__split{gap:var(--s6);display:grid}@media (min-width:52rem){.bench__split{gap:var(--s7);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.bench__split--wide-rig{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}}.rig{padding:var(--s5);background:var(--sunk);border:1px solid var(--line);border-radius:var(--r)}.rig>*+*{margin-top:var(--s5)}.rig__head{justify-content:space-between;align-items:baseline;gap:var(--s3);padding-bottom:var(--s3);margin-bottom:var(--s4);border-bottom:1px solid var(--line);display:flex}.stage{gap:var(--s4);align-content:start;display:grid}.bench__foot{padding:var(--s3) var(--s5);border-top:1px solid var(--line);background:var(--sunk)}.bench__foot .note{font-size:var(--t-help);align-items:center}.bench__foot .note svg{margin-top:0}.stage__head{justify-content:space-between;align-items:center;gap:var(--s3);padding-bottom:var(--s3);border-bottom:1px solid var(--line);display:flex}.catalogue{gap:var(--s5);padding-top:var(--s5);border-top:1px solid var(--line);display:grid}.catalogue__col{gap:var(--s3);display:grid}.drop{place-items:center;gap:var(--s3);padding:var(--s8) var(--s5);text-align:center;background:var(--sunk);border:1px dashed var(--line-3);border-radius:var(--r);transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease);display:grid;position:relative}.drop:hover,.drop.is-over{background:var(--brand-tint);border-color:var(--brand)}.drop.is-over{border-style:solid}.drop__icon{border-radius:var(--r-sm);background:var(--surface);border:1px solid var(--line-2);width:42px;height:42px;color:var(--brand);place-items:center;display:grid}.drop__icon svg{width:20px;height:20px}.drop__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);font-size:1.0625rem;font-weight:700}.drop input[type=file]{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.drop input[type=file]:focus-visible{outline:2px solid var(--focus);outline-offset:-4px;border-radius:var(--r)}.preview{min-height:240px;padding:var(--s6);border:1px solid var(--line);border-radius:var(--r);background-color:var(--sunk);place-items:center;display:grid;position:relative;overflow:hidden}.preview:before,.preview:after{content:"";border:1px solid var(--line-3);pointer-events:none;width:11px;height:11px;position:absolute}.preview:before{border-bottom:0;border-right:0;top:7px;left:7px}.preview:after{border-top:0;border-left:0;bottom:7px;right:7px}.preview img,.preview canvas,.preview svg{object-fit:contain;max-width:100%;height:auto;max-height:320px}.preview img{background-color:var(--surface);background-image:linear-gradient(45deg, var(--sunk-2) 25%, transparent 25%), linear-gradient(-45deg, var(--sunk-2) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--sunk-2) 75%), linear-gradient(-45deg, transparent 75%, var(--sunk-2) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.preview__empty{gap:var(--s3);color:var(--ink-3);font-size:var(--t-help);text-align:center;padding:var(--s5);justify-items:center;max-width:34ch;display:grid}.preview__empty svg{opacity:.5;width:24px;height:24px}.preview--code{background-color:var(--sunk)}.preview--code img,.preview--code canvas{image-rendering:pixelated;padding:var(--s4);border:1px solid var(--line);border-radius:var(--r-sm);background:#fff}.readout{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);animation:reveal var(--dur-slow) var(--ease);overflow:clip}@keyframes reveal{0%{opacity:0;transform:translateY(3px)}}.readout__top{justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);background:var(--sunk);border-bottom:1px solid var(--line);display:flex}.readout__main{padding:var(--s5) var(--s4) var(--s4);gap:var(--s4);display:grid}.readout__pair{align-items:baseline;gap:var(--s2) var(--s3);font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.readout__from{font-size:var(--t-ui);color:var(--ink-3);text-decoration:line-through;text-decoration-thickness:1px}.readout__arrow{color:var(--line-3)}.readout__to{color:var(--ink);letter-spacing:-.02em;font-size:1.5rem;font-weight:500}.readout__delta{padding:2px var(--s2);border-radius:var(--r-sm);background:var(--ok-tint);color:var(--ok);font-size:var(--t-spec);margin-left:auto;font-weight:500}.readout__delta[data-dir=up]{background:var(--warn-tint);color:var(--warn)}.readout__bar{background:var(--sunk-2);border-radius:1px;height:6px;overflow:hidden}.readout__bar>span{background:var(--brand);height:100%;transition:width var(--dur-slow) var(--ease);display:block}.readout__meta{gap:var(--s1) var(--s7);padding:var(--s4);border-top:1px solid var(--line);background:var(--surface);grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));margin:0;display:grid}.readout__meta div{justify-content:space-between;align-items:baseline;gap:var(--s3);padding-block:var(--s1);display:flex}.readout__meta dt{font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.readout__meta dd{font-family:var(--font-mono);font-size:var(--t-spec);font-variant-numeric:tabular-nums;color:var(--ink);text-align:right;margin:0}.filelist{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.filerow{align-items:center;gap:var(--s3);padding:var(--s2) var(--s3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);display:flex}.filerow__index{background:var(--brand-tint);width:26px;height:26px;color:var(--brand);font-family:var(--font-mono);font-size:var(--t-mark);border-radius:2px;flex:none;place-items:center;font-weight:500;display:grid}.filerow__thumb{object-fit:cover;background:var(--sunk);border:1px solid var(--line);border-radius:2px;flex:none;width:34px;height:34px}.filerow__name{flex:auto;min-width:0;display:grid}.filerow__name strong{font-size:var(--t-help);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.filerow__name span{font-family:var(--font-mono);font-size:var(--t-mark);color:var(--ink-3)}.filerow__actions{gap:var(--s1);flex:none;display:flex}@media (max-width:30rem){.filerow{flex-wrap:wrap}.filerow__name{flex-basis:calc(100% - 3.5rem)}.filerow__actions{margin-left:auto}}.iconbtn{border-radius:var(--r-sm);width:36px;height:36px;color:var(--ink-3);transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);background:0 0;border:1px solid #0000;place-items:center;display:grid}.iconbtn svg{width:17px;height:17px}.iconbtn:hover:not(:disabled){background:var(--sunk);border-color:var(--line);color:var(--ink)}.iconbtn:disabled{opacity:.3;cursor:not-allowed}.iconbtn--danger:hover:not(:disabled){background:var(--danger-tint);border-color:var(--danger);color:var(--danger)}.alert{align-items:flex-start;gap:var(--s3);padding:var(--s3) var(--s4);border:1px solid var(--line-2);border-radius:var(--r-sm);font-size:var(--t-help);animation:reveal var(--dur) var(--ease);border-left-width:3px;line-height:1.5;display:flex}.alert--error{background:var(--danger-tint);border-color:var(--danger);color:var(--danger)}.alert--ok{background:var(--ok-tint);border-color:var(--ok);color:var(--ok)}.alert--warn{background:var(--warn-tint);border-color:var(--warn);color:var(--warn)}.note{align-items:flex-start;gap:var(--s3);font-size:var(--t-help);color:var(--ink-3);display:flex}.note svg{width:17px;height:17px;color:var(--brand);flex:none;margin-top:2px}.busy{align-items:center;gap:var(--s2);display:inline-flex}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:15px;height:15px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(1turn)}}.tag{align-items:center;gap:var(--s1);padding:3px var(--s2);border:1px solid var(--line-2);background:var(--surface);font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.05em;color:var(--ink-2);white-space:nowrap;border-radius:2px;display:inline-flex}.tag--brand{border-color:var(--brand-tint-2);background:var(--brand-tint);color:var(--brand)}.taglist{gap:var(--s2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.console{background:var(--face);color:var(--face-ink);padding-block:var(--s8) var(--s8)}@media (min-width:52rem){.console{padding-block:var(--s9) var(--s8)}}.console__grid{gap:var(--s6);align-items:end;display:grid}@media (min-width:52rem){.console__grid{gap:var(--s9);grid-template-columns:minmax(0,1fr) auto}}.console .mark{color:var(--face-ink-2)}.console .mark:before{color:var(--brand-lift)}.console__split{gap:var(--s5);margin-top:var(--s5);display:grid}@media (min-width:64rem){.console__split{gap:var(--s8);grid-template-columns:auto minmax(0,32ch);align-items:end}}.console__h1{font-size:var(--t-display);letter-spacing:-.045em;color:var(--face-ink);text-wrap:balance;font-weight:800;line-height:.98}.console__h1 em{color:var(--brand-lift);font-style:normal}.console__sub{max-width:46ch;font-size:var(--t-lede);color:var(--face-ink-2);line-height:1.55}@media (min-width:64rem){.console__sub{padding-bottom:.5em}}.chip{align-items:center;gap:var(--s4);padding:var(--s3);background:var(--face-2);border:1px solid var(--face-line);border-radius:var(--r);margin:0;display:flex}.artifact__code{background:#fff;border-radius:2px;flex:none;width:84px;height:84px;padding:6px}.artifact__code svg{width:100%;height:100%;image-rendering:pixelated}.chip__cap{gap:var(--s1);font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.07em;color:var(--face-ink-2);min-width:0;display:grid}.chip__cap strong{letter-spacing:.11em;text-transform:uppercase;color:var(--face-ink);font-weight:500}.chip__cap span{text-overflow:ellipsis;overflow:hidden}@media (min-width:52rem){.chip{align-items:stretch;gap:var(--s3);padding:var(--s4);flex-direction:column}.artifact__code{width:172px;height:172px;padding:10px}.chip__cap{padding-top:var(--s3);border-top:1px solid var(--face-line)}}.finder{margin-top:var(--s7)}.finder__box{align-items:center;gap:var(--s3);padding:var(--s2) var(--s3) var(--s2) var(--s4);background:var(--face-2);border:1px solid var(--face-line);border-radius:var(--r);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);display:flex}.finder__box:focus-within{border-color:var(--brand-lift);box-shadow:0 0 0 3px #57a6c938}.finder__box>svg{width:19px;height:19px;color:var(--face-ink-2);flex:none}.finder__input{min-width:0;min-height:44px;color:var(--face-ink);font-size:var(--t-lede);background:0 0;border:0;flex:auto;padding:0;font-weight:500}@media (max-width:30rem){.finder__input{font-size:var(--t-ui)}}.finder__input::placeholder{color:var(--face-ink-2);font-weight:400}.finder__input:focus-visible{outline:none}.finder__count{padding:var(--s2) var(--s3);border-radius:var(--r-sm);background:var(--face-3);font-family:var(--font-mono);font-size:var(--t-mark);font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--face-ink-2);white-space:nowrap;flex:none}.finder__hint{margin-top:var(--s3);color:var(--face-ink-2);display:none}@media (min-width:40rem){.finder__hint{display:flex}}.finder__hint kbd{border:1px solid var(--face-line);background:var(--face-2);color:var(--face-ink);border-radius:2px;padding:1px 5px;font-size:.95em}.index__head{justify-content:space-between;align-items:baseline;gap:var(--s3) var(--s5);padding-bottom:var(--s4);border-bottom:1px solid var(--line-2);margin-bottom:var(--s6);flex-wrap:wrap;display:flex}.index__group+.index__group{margin-top:var(--s7)}.index__grouphead{align-items:center;gap:var(--s4);margin-bottom:var(--s4);display:flex}.index__grouphead .mark{flex:none}.index__grouphead:after{content:"";background:var(--line);flex:auto;height:1px}.tiles{gap:var(--s5);display:grid}@media (min-width:46rem){.tiles{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}}.tile{gap:var(--s5);padding:var(--s5);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);color:inherit;transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease);align-content:center;text-decoration:none;display:grid}.tile:hover{border-color:var(--brand);box-shadow:var(--lift-2);transform:translateY(-1px)}@media (min-width:46rem){.tile--lead{align-items:center;gap:var(--s6);padding:var(--s6);grid-template-columns:auto minmax(0,1fr)}}.tile__art{gap:var(--s5);padding:var(--s5) var(--s4);border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;align-content:center;justify-items:center;display:grid}.spec--dm{width:128px;height:128px}.spec--qr{width:112px;height:112px}.spec--bars{width:172px;height:44px}@media (max-width:26rem){.spec--dm{width:104px;height:104px}.spec--qr{width:96px;height:96px}.spec--bars{width:148px;height:40px}}.tile--flat{align-items:center;gap:var(--s5);grid-template-columns:auto minmax(0,1fr)}.tile__body{gap:var(--s3);align-content:start;display:grid}.tile__name{align-items:center;gap:var(--s3);font-family:var(--font-display);letter-spacing:-.028em;color:var(--ink);font-size:1.375rem;font-weight:700;display:flex}.tile--lead .tile__name{font-size:1.625rem}.tile__body p{font-size:var(--t-help);color:var(--ink-2)}.tile__go{align-items:center;gap:var(--s2);font-size:var(--t-help);color:var(--brand);font-weight:600;display:inline-flex}.tile__go svg{transition:transform var(--dur) var(--ease)}.tile:hover .tile__go svg{transform:translate(3px)}.plate{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);margin:0;padding:0;list-style:none;overflow:clip}.plate>li+li{border-top:1px solid var(--line)}.row{align-items:center;gap:var(--s2) var(--s5);padding:var(--s4) var(--s5);color:inherit;transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease);border-left:3px solid #0000;grid-template-columns:minmax(0,1fr) auto;text-decoration:none;display:grid}@media (min-width:46rem){.row{grid-template-columns:minmax(0,18rem) minmax(0,1fr) auto}}.row:hover{background:var(--brand-tint);border-left-color:var(--brand)}.row__name{align-items:center;gap:var(--s3);font-family:var(--font-display);letter-spacing:-.022em;color:var(--ink);font-size:1.125rem;font-weight:700;display:flex}.row__name svg{color:var(--ink-3);flex:none}.row:hover .row__name svg{color:var(--brand)}.row__io{grid-column:1/-1}@media (min-width:46rem){.row__io{grid-column:auto}}.row__go{color:var(--brand);display:none}@media (min-width:46rem){.row__go{display:block}}.row__go svg{transition:transform var(--dur) var(--ease)}.row:hover .row__go svg{transform:translate(3px)}.index__empty{padding:var(--s8) var(--s5);text-align:center;border:1px dashed var(--line-2);border-radius:var(--r);color:var(--ink-3)}.index__empty strong{font-family:var(--font-display);color:var(--ink);margin-bottom:var(--s2);font-size:1.125rem;display:block}.claims{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);margin:0;overflow:clip}.claim{gap:var(--s2) var(--s6);padding:var(--s5);display:grid}@media (min-width:46rem){.claim{padding:var(--s5) var(--s6);grid-template-columns:minmax(0,17rem) minmax(0,1fr);align-items:baseline}}.claim+.claim{border-top:1px solid var(--line)}.claim dt{align-items:center;gap:var(--s3);font-family:var(--font-display);letter-spacing:-.018em;color:var(--ink);font-size:1.0625rem;font-weight:700;display:flex}.claim dt svg{color:var(--brand);flex:none}.claim dd{font-size:var(--t-help);color:var(--ink-2);margin:0}.aside__note{margin-top:var(--s5);padding-top:var(--s4);border-top:1px solid var(--line);font-size:var(--t-help);color:var(--ink-3)}.crumbs{align-items:center;gap:var(--s2);padding:var(--s5) 0 0;font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.05em;color:var(--ink-3);flex-wrap:wrap;margin:0;list-style:none;display:flex}.crumbs a{color:var(--ink-3);text-decoration:none}.crumbs a:hover{color:var(--brand);text-decoration:underline}.crumbs li[aria-current=page]{color:var(--ink)}.toolhead{gap:var(--s6);padding-block:var(--s6) var(--s7);align-items:end;display:grid}@media (min-width:52rem){.toolhead{gap:var(--s8);grid-template-columns:minmax(0,1fr) auto}}.toolhead h1{max-width:20ch}.toolhead .lede{margin-top:var(--s4);max-width:52ch}.spec{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);gap:0;min-width:min(100%,17rem);margin:0;display:grid;overflow:clip}.spec div{justify-content:space-between;align-items:baseline;gap:var(--s4);padding:var(--s3) var(--s4);display:flex}.spec div+div{border-top:1px solid var(--line)}.spec dt{font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3)}.spec dd{font-family:var(--font-mono);font-size:var(--t-spec);color:var(--ink);text-align:right;margin:0}.prose{max-width:var(--w-prose)}.prose h2{margin-bottom:var(--s4)}.prose h2+p,.prose h3+p{margin-top:0}.prose h3{margin-top:var(--s6);margin-bottom:var(--s2)}.prose p,.prose ul,.prose ol{margin-top:var(--s4)}.prose ul,.prose ol{padding-left:var(--s5)}.prose li{margin-top:var(--s2)}.prose li::marker{color:var(--line-3)}.prose strong{color:var(--ink);font-weight:600}.prose--legal h2{margin-top:var(--s8);padding-top:var(--s5);border-top:1px solid var(--line)}.prose--legal>h2:first-child{border-top:0;margin-top:0;padding-top:0}.article{gap:var(--s7);display:grid}@media (min-width:56rem){.article{gap:var(--s9);grid-template-columns:minmax(0,1fr) minmax(0,20rem);align-items:start}}.aside{padding:var(--s5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}.aside h2{font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin-bottom:var(--s4);font-weight:500}.aside ul{gap:var(--s3);font-size:var(--t-help);margin:0;padding:0;list-style:none;display:grid}.aside li{gap:var(--s3);color:var(--ink-2);display:flex}.aside li svg{width:15px;height:15px;color:var(--brand);flex:none;margin-top:3px}.steps{counter-reset:step;border-top:1px solid var(--line);gap:0;margin:0;padding:0;list-style:none;display:grid}.steps li{counter-increment:step;gap:var(--s3) var(--s5);padding:var(--s5) 0;border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,1fr);display:grid}.steps li:before{content:counter(step, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--t-spec);color:var(--brand);padding-top:2px;font-weight:500}.steps li strong{font-family:var(--font-display);letter-spacing:-.018em;color:var(--ink);grid-column:2;font-size:1.0625rem;font-weight:700}.steps li span{font-size:var(--t-help);color:var(--ink-2);grid-column:2}.cases{gap:var(--s3);margin:0;padding:0;list-style:none;display:grid}@media (min-width:40rem){.cases{gap:var(--s3) var(--s6);grid-template-columns:repeat(2,minmax(0,1fr))}}.cases li{gap:var(--s3);font-size:var(--t-help);color:var(--ink-2);display:flex}.cases li svg{width:15px;height:15px;color:var(--brand);flex:none;margin-top:3px}.faq{border-top:1px solid var(--line-2)}.faq details{border-bottom:1px solid var(--line)}.faq summary{justify-content:space-between;align-items:baseline;gap:var(--s5);padding:var(--s5) 0;cursor:pointer;font-family:var(--font-display);letter-spacing:-.018em;color:var(--ink);font-size:1.0625rem;font-weight:700;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";font-family:var(--font-mono);color:var(--brand);transition:transform var(--dur) var(--ease);flex:none;font-size:1.125rem;font-weight:400}.faq details[open] summary:after{content:"–"}.faq summary:hover{color:var(--brand)}.faq details>div{padding-bottom:var(--s5);max-width:68ch}.faq details>div p{font-size:var(--t-help);color:var(--ink-2)}.notfound{padding-block:var(--s10) var(--s8);gap:var(--s5);justify-items:start;display:grid}.notfound__code{font-family:var(--font-mono);font-size:var(--t-mark);letter-spacing:.14em;color:var(--danger)}
