@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-wght-normal.DLoelf7F.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:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-ext-wght-normal.B5bTHO_g.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:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-wght-normal.BbzFLZTg.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}:root{--paper:#f3f5f7;--surface:#fff;--sunken:#e9edf1;--ink:#141b24;--steel:#5b6878;--rule:#d6dce3;--cobalt:#2b4bee;--cobalt-ink:#1e37c2;--on-cobalt:#fff;--marker:#ffd23f;--marker-soft:#fff3c2;--ok:#17845a;--danger:#c2412d;--checker-a:#e3e8ee;--checker-b:#fff;--shadow:0 1px 0 #141b240a, 0 12px 32px -12px #141b242e;--footer-bg:#141b24;--footer-fg:#f3f5f7;--display:"Bricolage Grotesque Variable", "Arial Narrow", system-ui, sans-serif;--text:"Instrument Sans Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--code:ui-monospace, "SFMono-Regular", "Cascadia Code", Menlo, Consolas, monospace;--step--1:.875rem;--step-0:1.0625rem;--step-1:1.25rem;--step-2:1.625rem;--step-3:clamp(1.9rem, 3.2vw, 2.4rem);--step-4:clamp(2.4rem, 5.5vw, 3.6rem);--step-5:clamp(2.9rem, 8.4vw, 6.4rem);--gutter:clamp(1rem, 4vw, 2.5rem);--measure:66ch;--wide:78rem;--r-panel:22px;--r-ctl:999px;--r-small:10px;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--footer-bg:#0a0e13;--footer-fg:#e8edf2;--paper:#0f141b;--surface:#171e27;--sunken:#1e2732;--ink:#e8edf2;--steel:#9aa7b5;--rule:#2a3441;--cobalt:#8da0ff;--cobalt-ink:#b5c2ff;--on-cobalt:#0f141b;--marker-soft:#3b3416;--ok:#45c08b;--danger:#ff8a73;--checker-a:#222b36;--checker-b:#171e27;--shadow:0 1px 0 #0000004d, 0 16px 40px -16px #0009;color-scheme:dark}}:root[data-theme=dark]{--footer-bg:#0a0e13;--footer-fg:#e8edf2;--paper:#0f141b;--surface:#171e27;--sunken:#1e2732;--ink:#e8edf2;--steel:#9aa7b5;--rule:#2a3441;--cobalt:#8da0ff;--cobalt-ink:#b5c2ff;--on-cobalt:#0f141b;--marker-soft:#3b3416;--ok:#45c08b;--danger:#ff8a73;--checker-a:#222b36;--checker-b:#171e27;--shadow:0 1px 0 #0000004d, 0 16px 40px -16px #0009;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--text);font-size:var(--step-0);-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}img,canvas,video{max-width:100%;height:auto}a{color:var(--cobalt);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{color:var(--cobalt-ink);text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--cobalt);outline-offset:3px}::selection{background:var(--marker);color:#141b24}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.02em;text-wrap:balance;margin:0;font-weight:700;line-height:1.08}p{margin:0 0 1em}code,kbd{font-family:var(--code);font-size:.92em}kbd{border:1px solid var(--rule);background:var(--surface);border-bottom-width:2px;border-radius:6px;padding:.05em .4em}.wrap{max-width:var(--wide);padding-inline:var(--gutter);margin-inline:auto}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.skip{background:var(--ink);color:var(--paper);z-index:50;border-radius:8px;padding:.5rem 1rem;position:absolute;top:-4rem;left:1rem}.skip:focus{top:1rem}[hidden]{display:none!important}.site-header{z-index:5;position:relative}.site-header .wrap{align-items:center;gap:1.5rem;min-height:4.5rem;display:flex}.brand{font-family:var(--display);letter-spacing:-.035em;color:var(--ink);align-items:center;gap:.55rem;font-size:1.3rem;font-weight:800;text-decoration:none;display:inline-flex}.brand:hover{color:var(--ink)}.brand svg{flex:none;width:1.75rem;height:1.75rem}.nav{align-items:center;gap:clamp(.9rem,2.4vw,1.75rem);margin-left:auto;font-weight:550;display:flex}.nav a{color:var(--ink);text-decoration:none}.nav a:hover,.nav a[aria-current=page]{text-underline-offset:.35em;text-decoration:underline 2px}@media (width<=34rem){.nav .nav-optional{display:none}}.theme-toggle{background:var(--surface);border:1px solid var(--rule);color:var(--ink);cursor:pointer;border-radius:999px;place-items:center;width:2.4rem;height:2.4rem;display:grid}.theme-toggle:hover{border-color:var(--ink)}.theme-toggle svg{width:1.1rem;height:1.1rem}.site-footer{background:var(--footer-bg);color:var(--footer-fg);border-top:1px solid var(--rule);margin-top:7rem}.site-footer a{color:var(--footer-fg);text-decoration:none}.site-footer a:hover{color:var(--footer-fg);text-decoration:underline}.footer-grid{grid-template-columns:1fr;gap:2.5rem;padding-block:3.5rem 2.5rem;display:grid}@media (width>=48rem){.footer-grid{grid-template-columns:1.4fr 1fr 1fr}}.footer-claim{font-family:var(--display);font-weight:700;font-size:var(--step-2);letter-spacing:-.02em;max-width:18ch;margin:0 0 .75rem;line-height:1.15}.footer-note{color:color-mix(in srgb, var(--footer-fg) 70%, transparent);max-width:36ch;font-size:var(--step--1)}.footer-h{font-family:var(--display);margin:0 0 .6rem;font-weight:700}.footer-list{gap:.4rem;margin:0;padding:0;font-size:.98rem;list-style:none;display:grid}.footer-base{font-size:var(--step--1);color:color-mix(in srgb, var(--footer-fg) 65%, transparent);background:linear-gradient(color-mix(in srgb, var(--footer-fg) 18%, transparent), color-mix(in srgb, var(--footer-fg) 18%, transparent)) center top / min(calc(100% - 2 * var(--gutter)), calc(var(--wide) - 2 * var(--gutter))) 1px no-repeat;flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;padding-block:1.25rem 2rem;display:flex}.btn{--bg:var(--ink);--fg:var(--paper);border-radius:var(--r-ctl);background:var(--bg);min-height:2.9rem;color:var(--fg);border:1.5px solid var(--bg);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:.5rem;padding:.6rem 1.35rem;font-size:1rem;font-weight:650;line-height:1.1;text-decoration:none;transition:transform .12s,background-color .12s;display:inline-flex}.btn:hover{color:var(--fg);filter:brightness(1.08)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed;filter:none;transform:none}.btn-primary{--bg:var(--cobalt);--fg:var(--on-cobalt)}.btn-quiet{--bg:transparent;--fg:var(--ink);border-color:var(--rule)}.btn-quiet:hover{border-color:var(--ink);filter:none}.btn svg{width:1.1rem;height:1.1rem}.field{gap:.35rem;display:grid}.field>span,.field>label{font-size:.95rem;font-weight:600}.field small{color:var(--steel);font-size:var(--step--1)}.input,select.input,textarea.input{width:100%;font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--rule);border-radius:var(--r-small);min-height:2.75rem;padding:.6rem .8rem}.input:focus{border-color:var(--cobalt);box-shadow:0 0 0 3px color-mix(in srgb, var(--cobalt) 25%, transparent);outline:none}input[type=range]{accent-color:var(--cobalt);width:100%}input[type=checkbox],input[type=radio]{accent-color:var(--cobalt);width:1.1rem;height:1.1rem}.segmented{background:var(--sunken);border-radius:var(--r-ctl);flex-wrap:wrap;gap:2px;padding:4px;display:inline-flex}.segmented label{position:relative}.segmented input{opacity:0;cursor:pointer;position:absolute;inset:0}.segmented span{border-radius:var(--r-ctl);color:var(--steel);padding:.45rem 1rem;font-size:.95rem;font-weight:600;display:block}.segmented input:checked+span{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000001f}.segmented input:focus-visible+span{outline:3px solid var(--cobalt);outline-offset:1px}.status{color:var(--steel);align-items:center;gap:.75rem;min-height:1.5rem;font-size:.95rem;display:flex}.status[data-tone=error]{color:var(--danger);font-weight:600}.status[data-tone=ok]{color:var(--ok);font-weight:600}.meter{background:var(--sunken);border-radius:999px;height:8px;overflow:hidden}.meter>i{background:var(--cobalt);border-radius:inherit;width:0;height:100%;transition:width .2s;display:block}.meter[data-indeterminate]>i{width:35%;animation:1.1s ease-in-out infinite slide}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(290%)}}.spinner{border:2px solid var(--rule);border-top-color:var(--cobalt);border-radius:50%;flex:none;width:1rem;height:1rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.checker{background-color:var(--checker-b);background-image:conic-gradient(var(--checker-a) 25%, transparent 0 50%, var(--checker-a) 0 75%, transparent 0);background-size:20px 20px}.prose{max-width:var(--measure)}.prose h2{font-size:var(--step-2);margin:2.5rem 0 .75rem}.prose h3{font-size:var(--step-1);margin:1.75rem 0 .5rem}.prose ul,.prose ol{margin:0 0 1em;padding-left:1.25rem}.prose li{margin-bottom:.4rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
