:root{--ink:#0B1220;--text-secondary:#414E63;--text-tertiary:#5A697F;--surface:#F5F7FA;--surface-raised:#FFFFFF;--surface-sunken:#EDF1F6;--hairline:#DEE4EC;--hairline-strong:#C6D0DC;--accent-verified:#0B7A5A;--accent-verified-hover:#07553E;--accent-halt:#9A5B0A;--accent-danger:#B3261E;--link-visited:#574FB0;--focus-ring:#2563EB;--inset-bg:#0B1220;--inset-raised:#131C2C;--inset-text:#E2E8F0;--inset-ok:#34D399;--inset-warn:#FBBF24;--inset-border:#1E293B;--font-display:"Avenir Next","Segoe UI",-apple-system,BlinkMacSystemFont,sans-serif;--font-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--text-2xs:0.6875rem;--text-xs:0.8125rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.25rem;--text-xl:1.5625rem;--text-2xl:1.953rem;--text-3xl:2.441rem;--text-4xl:3.052rem;--text-5xl:3.815rem;--leading-tight:1.12;--leading-snug:1.3;--leading-body:1.6;--tracking-tight:-0.02em;--tracking-wide:0.14em;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:2.5rem;--space-8:3rem;--space-9:4rem;--space-10:5rem;--space-section:clamp(4.5rem,9vw,7.5rem);--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--radius-pill:9999px;--elevation-1:0 1px 2px rgba(11,18,32,0.05);--elevation-2:0 8px 24px rgba(11,18,32,0.07);--dur-1:150ms;--dur-2:200ms;--dur-3:250ms;--ease-out:cubic-bezier(0.2,0.7,0.2,1);--ground:var(--surface);--panel:var(--surface-raised);--ink-2:var(--text-secondary);--ink-3:var(--text-tertiary);--rule:var(--ink);--hairline-dotted:var(--hairline-strong);--accent:var(--accent-verified);--accent-hover:var(--accent-verified-hover);--link-underline:color-mix(in srgb,var(--accent-verified) 58%,transparent);--link-visited-underline:color-mix(in srgb,var(--link-visited) 58%,transparent);color-scheme:light;--ink:#111a24;--muted:#4f5a67;--paper:#ffffff;--film:#edf2f5;--line:#dde3e9;--accent:#1f4fbf;--accent-hover:#1a43a3;--accent-ink:#ffffff;--accent-wash:#eef3fc;--font:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--gutter:clamp(16px,5vw,80px);--measure:68ch;--ok:#0b7a5a;--ok-strong:#07553e;--ok-tint:#e8f3ee;--halt:#9a5b0a;--halt-strong:#7a4706;--halt-tint:#fcf3e6;--raised:#ffffff;--ground:#f6f8fa;--bench:#edf2f5;--sunken:#edf2f5;--hair:#dde3e9;--hair-strong:#c6d0dc;--text-2:#4f5a67;--text-3:#4f5a67;--on-ink:#ffffff;--focus:#1f4fbf;--sans:var(--font);--serif:var(--font);--r-sm:8px;--r-md:10px;--r-lg:14px}@font-face{font-family:Public Sans;src:url(/fonts/PublicSans-Variable.woff2) format("woff2");font-weight:100 900;font-display:swap}*,:after,:before{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:17px;line-height:1.55;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;overflow-x:hidden}@media (min-width:641px){body{font-size:18px}}img,svg,video{display:block;max-width:100%}img,video{height:auto}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}a:hover{text-decoration-thickness:2px}p{margin:0 0 1em;text-wrap:pretty}h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.02em;text-wrap:balance}h1{font-size:clamp(32px,4.2vw,50px);line-height:1.1}h2{font-size:27px;line-height:1.18}h3{font-size:20px;line-height:1.3;letter-spacing:-.01em}@media (min-width:641px){h2{font-size:32px;line-height:1.15}}ol,ul{margin:0 0 1em;padding-left:1.25em}li{margin:0 0 .4em}b,strong{font-weight:650}code{font-family:var(--mono);font-size:.9em}:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:4px}video:focus{outline:none}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip{position:absolute;left:12px;top:-60px;z-index:50;background:var(--ink);color:#fff;padding:10px 16px;border-radius:var(--r-sm)}.skip:focus{top:12px}.wrap{width:100%;max-width:1280px;margin:0 auto;padding:0 var(--gutter)}.nw{white-space:nowrap}.muted{color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 24px;border:0;border-radius:8px;background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:18px;text-decoration:none;white-space:nowrap;cursor:pointer}.btn:hover{background:var(--accent-hover)}.btn:focus-visible{box-shadow:0 0 0 3px #fff}.btn-sm{min-height:40px;padding:0 16px;font-size:16px}.btn-line{background:var(--paper);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.btn-line:hover{background:var(--accent-wash)}.btn-text{background:none;border:0;padding:0;color:var(--accent);font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.ctl{min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:6px;background:var(--paper);font-size:15px;cursor:pointer}.ctl:hover{border-color:var(--muted)}.seg{display:flex;flex-wrap:wrap;gap:8px}.seg button{min-height:44px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;background:var(--paper);font-size:16px;text-align:left;cursor:pointer}.seg button:hover{border-color:var(--accent)}.seg button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-wash);box-shadow:inset 0 0 0 1px var(--accent)}.site-header{border-bottom:1px solid var(--line);background:var(--paper)}.header-inner{height:64px;display:flex;align-items:center;gap:24px}.wordmark{font-weight:700;font-size:20px;letter-spacing:-.01em;text-decoration:none;margin-right:auto}.mobile-nav ul,.site-nav ul{list-style:none;margin:0;padding:0}.site-nav{display:none}.site-nav ul{display:flex;gap:22px}.mobile-nav li,.site-nav li{margin:0}.site-nav a{font-size:16px;font-weight:500;text-decoration:none;color:var(--muted)}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--ink);text-decoration:underline}.header-cta,.header-signin{display:none}.header-signin.btn{color:var(--ink)}.header-signin.btn,.menu-btn{background:var(--paper);border:1px solid var(--line)}.menu-btn{min-height:40px;padding:0 14px;border-radius:8px;font-weight:600;font-size:16px;cursor:pointer}.mobile-nav{border-top:1px solid var(--line);padding:8px var(--gutter) 16px}.mobile-nav a{display:block;padding:10px 0;font-weight:600;text-decoration:none}@media (min-width:1100px){.header-cta,.site-nav{display:block}.header-cta,.header-signin{display:inline-flex}.menu-btn,.mobile-nav{display:none!important}}@media (max-width:640px){.header-inner{height:52px}.wordmark{font-size:18px}}.site-footer{margin-top:0;border-top:1px solid var(--line);padding:40px 0 32px;font-size:15px;color:var(--muted)}.foot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:28px 24px;gap:28px 24px}@media (min-width:760px){.foot-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1100px){.foot-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}.foot-grid h2{font-size:14px;letter-spacing:0;color:var(--ink);margin:0 0 10px}.foot-grid ul{list-style:none;padding:0;margin:0}.foot-grid li{margin:0 0 6px}.foot-grid a{color:var(--muted);text-decoration:none}.foot-grid a:hover{color:var(--ink);text-decoration:underline}.foot-line{margin-top:32px;padding-top:18px;border-top:1px solid var(--line);font-size:14px}.foot-line p{margin:0 0 6px;max-width:90ch}.film{display:grid;grid-gap:10px;gap:10px;margin:0}.frame{position:relative;aspect-ratio:16/9;border:1px solid var(--line);border-radius:14px;overflow:hidden}.frame,.frame img,.frame video{width:100%;background:var(--film)}.frame img,.frame video{position:absolute;inset:0;height:100%;object-fit:contain;display:block}.frame video{cursor:pointer}.frame:has(video:focus-visible){outline:3px solid var(--accent);outline-offset:3px}.film figcaption,.note{font-size:14px;line-height:1.45;color:var(--muted)}.still .frame{aspect-ratio:auto}.still .frame img{position:static;height:auto}@media (max-width:640px){.frame.can-tall{aspect-ratio:4/5}}.page-top{padding:28px 0 8px}.crumbs{font-size:15px;color:var(--muted);margin:0 0 14px}.crumbs ol{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:4px 8px}.crumbs li{margin:0}.crumbs li+li:before{content:"›";margin-right:8px}.answer,.crumbs a{color:var(--muted)}.answer{margin:16px 0 0;font-size:20px;line-height:1.5;max-width:60ch}@media (max-width:640px){.answer{font-size:17px}}.top-actions{display:flex;flex-wrap:wrap;gap:16px 20px;align-items:center;margin-top:24px}.top-film{margin-top:28px;max-width:1000px}.sec{padding:48px 0;border-top:1px solid var(--line)}.sec:first-of-type{border-top:0}@media (min-width:641px){.sec{padding:64px 0}}.sec>.wrap>h2{max-width:30ch;margin-bottom:18px}.prose{max-width:var(--measure)}.prose>:last-child{margin-bottom:0}.prose h3{margin:28px 0 10px}.blocks>*+*,.prose h3:first-child{margin-top:0}.blocks>.bform,.blocks>.callout,.blocks>.cards,.blocks>.cite,.blocks>.cmd,.blocks>.compare-grid,.blocks>.datamap,.blocks>.faq,.blocks>.film,.blocks>.fit,.blocks>.stat-row,.blocks>.table-wrap{margin:24px 0}.blocks>:first-child{margin-top:0}.blocks>h3,.blocks>ol,.blocks>p,.blocks>ul:not(.cards):not(.stat-row){max-width:var(--measure)}.blocks>h3{margin:28px 0 10px}.split{display:grid;grid-gap:32px;gap:32px;align-items:start}@media (min-width:1100px){.split{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:56px}}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-wrap table{width:100%;min-width:560px;border-collapse:collapse;font-size:16px;line-height:1.4}.table-wrap caption{text-align:left;font-size:14px;color:var(--muted);caption-side:bottom;padding-top:10px}.table-wrap td,.table-wrap th{text-align:left;vertical-align:top;padding:10px 12px 10px 0;border-bottom:1px solid var(--line)}.table-wrap thead th{font-weight:700;border-bottom:2px solid var(--ink)}.table-wrap .oa,.table-wrap tbody th{font-weight:600}.table-wrap thead th.oa{color:var(--accent)}.cards{display:grid;grid-gap:16px;gap:16px;list-style:none;padding:0}@media (min-width:760px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1100px){.cards.three{grid-template-columns:repeat(3,minmax(0,1fr))}}.card{margin:0;padding:20px;border:1px solid var(--line);border-radius:12px;background:var(--paper);display:flex;flex-direction:column;gap:8px}.card h3{font-size:19px}.card h3 a{text-decoration:none}.card h3 a:hover{text-decoration:underline}.card p{margin:0;font-size:16px;color:var(--muted)}.card .more{margin-top:auto;padding-top:6px;font-size:16px;font-weight:600;color:var(--accent)}.status{display:inline-block;align-self:flex-start;font-size:13px;font-weight:650;letter-spacing:.01em;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:var(--ground)}.status.tested{color:var(--ok-strong);background:var(--ok-tint);border-color:#cfe5da}.status.stop{color:var(--halt-strong);background:var(--halt-tint);border-color:#f0dcc0}.callout{max-width:var(--measure);padding:16px 18px;border-left:3px solid var(--accent);background:var(--accent-wash);border-radius:0 10px 10px 0}.callout p:last-child{margin-bottom:0}.callout.status-line{border-left-color:var(--muted);background:var(--ground)}.stat-row{display:grid;grid-gap:16px;gap:16px;list-style:none;padding:0}@media (min-width:760px){.stat-row{grid-template-columns:repeat(3,minmax(0,1fr))}}.stat-row li{margin:0;padding:16px 18px;border:1px solid var(--line);border-radius:12px}.stat-row b{display:block;font-size:28px;letter-spacing:-.02em}.stat-row span{font-size:15px;color:var(--muted)}.faq{max-width:var(--measure)}.faq h3{font-size:19px;margin:24px 0 8px}.faq h3:first-child{margin-top:0}.faq p{margin:0 0 8px}details.tech{max-width:var(--measure);margin:24px 0 0;border:1px solid var(--line);border-radius:10px;padding:0 18px}details.tech>summary{cursor:pointer;font-weight:650;padding:14px 0}details.tech[open]>summary{border-bottom:1px solid var(--line);margin-bottom:14px}details.tech>:last-child{margin-bottom:16px}.sources{font-size:15px;color:var(--muted);max-width:90ch;margin-top:18px;padding-left:1.4em}.sources li{margin-bottom:8px}.sources a{word-break:break-word}.cmd{display:flex;gap:12px;align-items:center;justify-content:space-between;max-width:var(--measure);padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--ground);overflow-x:auto}.cmd code{white-space:pre}.cite pre{max-width:var(--measure);margin:0;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--ground);font-size:14px;white-space:pre-wrap;word-break:break-word}.bridge{border-top:1px solid var(--line);padding:56px 0 64px;text-align:center}.bridge h2{margin:0 auto}.bridge p{margin:12px auto 24px;max-width:52ch;color:var(--muted)}.bridge .links{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px 24px}@media (max-width:640px){.bridge .btn{width:100%}}.fit{max-width:760px;border:1px solid var(--line);border-radius:12px;padding:20px;display:grid;grid-gap:18px;gap:18px}.fit-ql{font-weight:650;margin:0 0 8px}.fit-ql span{display:inline-grid;place-items:center;width:26px;height:26px;margin-right:8px;border-radius:6px;background:var(--ground);font-size:14px}.fit-out{border-top:1px solid var(--line);padding-top:16px}.fit-out p{font-size:16px;color:var(--muted)}.fit-h{font-size:21px;font-weight:700;color:var(--ink)!important;margin:0 0 6px}.fit-wait{margin:0}.fit-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center}.bform{max-width:760px;display:grid;grid-gap:14px;gap:14px;padding:20px;border:1px solid var(--line);border-radius:12px}@media (min-width:760px){.bform{grid-template-columns:1fr 1fr;padding:24px}.bf-wide{grid-column:1/-1}}.bf-row{display:grid;grid-gap:6px;gap:6px}.bf-row label{font-weight:650;font-size:16px}.bf-row input{min-height:48px;padding:10px 12px;border:1px solid #8d97a3;border-radius:8px;background:var(--paper)}.bf-row input[aria-invalid=true]{border-color:#b3261e;box-shadow:inset 0 0 0 1px #b3261e}.req{font-weight:400;font-size:14px}.bf-note,.req{color:var(--muted)}.bf-note{margin:0;font-size:15px}.bf-check{display:flex;gap:10px;align-items:flex-start;font-size:16px}.bf-check input{width:20px;height:20px;margin-top:3px}.bf-send{display:flex;flex-wrap:wrap;gap:12px 16px;align-items:center}.bf-err{margin:0;color:#b3261e;font-size:15px}.bthanks{max-width:760px;padding:20px;border:1px solid var(--line);border-radius:12px}.bthanks .h3{font-size:21px;font-weight:700}.datamap{border:1px solid var(--line);border-radius:14px;padding:20px;background:var(--paper)}.datamap-cols{display:grid;grid-gap:20px;gap:20px}@media (min-width:1100px){.datamap-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}}.datamap h3{font-size:18px;margin:0 0 12px}.dm-zone{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0 0 10px}.dm-zone.inside{border:2px solid var(--ink)}.dm-zone h4{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 8px}.dm-zone ol{list-style:none;padding:0;margin:0}.dm-zone li{margin:0 0 8px;padding:0 0 8px;border-bottom:1px dashed var(--line);font-size:15px}.dm-zone li:last-child{border-bottom:0;padding-bottom:0;margin-bottom:0}.dm-zone li b{display:block;font-size:16px}.dm-tag{display:inline-block;font-size:12px;font-weight:700;padding:1px 6px;border-radius:4px;margin-left:6px;background:var(--ink);color:#fff;vertical-align:2px}.dm-tag.none{background:var(--ground);color:var(--muted);border:1px solid var(--line)}.datamap figcaption{margin-top:12px}@media print{.bridge,.site-footer,.site-header,.skip,.top-actions,video{display:none!important}.sec{padding:16px 0;page-break-inside:avoid;break-inside:avoid-page}body{font-size:12pt}a{text-decoration:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;transition-property:opacity,color,background-color,border-color!important;transition-duration:.15s!important}}.gh-stats{gap:10px;font-size:14px;font-weight:600}.gh-stats,.gh-stats a{display:inline-flex;align-items:center}.gh-stats a{gap:6px;color:var(--ink);text-decoration:none}.gh-stats a:hover{text-decoration:underline}.gh-count{color:var(--muted)!important;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.gh-icon{flex:none}@media (max-width:640px){.gh-header .gh-forks{display:none}}.dl-charts{display:grid;grid-gap:28px;gap:28px}.dl-chart{margin:0;padding:20px;border:1px solid var(--line);border-radius:12px;background:var(--paper);display:grid;grid-gap:14px;gap:14px}.dl-chart-head{margin:0;display:grid;grid-gap:2px;gap:2px}.dl-chart-head b{font-size:28px;line-height:1.1}.dl-chart-head span{font-size:15px;color:var(--muted)}.dl-chart-plot{display:grid;grid-template-columns:auto 1fr;grid-gap:10px;gap:10px}.dl-chart-y{display:flex;flex-direction:column;justify-content:space-between;text-align:right;font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding-bottom:24px;margin-top:-7px}.dl-chart-area svg{display:block;width:100%;height:clamp(160px,32vw,280px);overflow:visible}.dl-chart-area .grid{stroke:var(--line);stroke-dasharray:4 4;vector-effect:non-scaling-stroke}.dl-chart-area .axis{stroke:var(--line);vector-effect:non-scaling-stroke}.dl-chart-area .stroke{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round;vector-effect:non-scaling-stroke}.dl-chart-area .fill{fill:var(--accent);opacity:.08}.dl-chart-x{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:8px}@media (max-width:520px){.dl-chart-x .dl-chart-x-mid{display:none}}.dl-chart-cap{margin:0;font-size:14px;line-height:1.45;color:var(--muted)}html:has([data-home=light]) .site-header{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:rgba(255,255,255,.8);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);border-bottom-color:rgba(11,13,18,.07)}html:has([data-home=light]) .wordmark{font-size:17px;letter-spacing:-.02em}html:has([data-home=light]) .site-nav a{font-size:14px}html:has([data-home=light]) .site-nav a:hover{text-decoration:none;color:#0b0d12}html:has([data-home=light]) .header-cta{background:#0b0d12;border-color:#0b0d12;color:#fff}html:has([data-home=light]) .header-signin.btn{background:#fff;border:1px solid rgba(11,13,18,.18);color:#0b0d12}