:root{color-scheme:light;
--bg:#ffffff;--surface:#f4f6f9;--surface-2:#eaeff5;--ink:#141a23;--muted:#4a5565;--line:#d6dce4;--line-soft:#e4e8ee;
--accent:#0a58a8;--accent-hover:#08467f;--on-accent:#ffffff;--focus:#b35c00;
--rec-bg:#f5f0fb;--rec-line:#6a3d9e;--rec-ink:#5a3288;--notice-bg:#fff6e0;--notice-line:#8a5300;
--code-bg:#eef1f5;--code-ink:#1c2430;
--b-law:#0a58a8;--b-pending:#8a5300;--b-soft:#475569;--b-rec:#6a3d9e;
--brand:#15284b;--brand-hover:#0b1830;--brand-tint:#eef2f9;--radius:10px;--radius-lg:16px;
--box-tint:#f3f6fc;
--space-xs:.5rem;--space-s:1rem;--space-m:1.5rem;--space-l:clamp(2rem,1.25rem + 2vw,3rem);--space-xl:clamp(2.5rem,1.5rem + 3vw,4.5rem);
--max:96rem;--gutter:clamp(16px,4vw,72px);--measure:70ch;--wrap:var(--max);
--shadow-sm:0 1px 2px rgba(21,40,75,.06);--shadow:0 1px 2px rgba(21,40,75,.06),0 14px 36px -14px rgba(21,40,75,.22);
--sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
--serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,"Times New Roman",serif;
--mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}
/* Motion (owner, 2026-10-14): every duration, easing and distance in one place, to tune. Card lift on hover and keyboard
   focus, the "+" turning into a minus, a box's content opening, the flow arrows' nudge, and the homepage intro (the hero
   scale wobbles, holds balanced, then glides into the header logo, which settles). All of it is off under
   prefers-reduced-motion */
:root{--motion-fast:150ms;--motion-base:200ms;--motion-open:250ms;
--ease-out:cubic-bezier(.22,.61,.36,1);--ease-in-out:cubic-bezier(.45,0,.55,1);--ease-glide:cubic-bezier(.65,0,.35,1);
--lift:3px;--line-lift:#b4c2d8;--shadow-lift:0 2px 4px rgba(21,40,75,.08),0 16px 32px -14px rgba(21,40,75,.32);--brand-bright:#24457f;
--flow-nudge:.45rem;
--ease-rise:cubic-bezier(.4,0,.15,1);
--intro-in:300ms;--intro-wobble:2s;--intro-hold:350ms;--intro-glide:1100ms;--intro-settle:350ms;--intro-pulse:1.1;
--intro-size:clamp(4.9rem,14.25vw - 4.25rem,6rem)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:6rem}
body{margin:0;background:var(--bg);color:var(--ink);font:1rem/1.6 var(--sans)}
.wrap{width:100%;max-width:calc(var(--max) + 2 * var(--gutter));margin:0 auto;padding:0 var(--gutter)}
.prose>*{max-width:var(--measure)}
.prose>:is(.table-wrap,.grid,.stats,.plan,.jgroup,.plan-preview,.value-strip,.flow,.search-panel,.checks,.results,.cta-row,#timeline){max-width:none}
.prose>article.provision{max-width:54rem}
.prose.full>*{max-width:none}
a{color:var(--accent);text-underline-offset:.15em}
a:hover{color:var(--accent-hover)}
a:focus-visible,summary:focus-visible,.btn:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:-9999px;top:0}
.skip:focus{left:16px;top:8px;z-index:40;background:var(--bg);padding:8px 12px;border:2px solid var(--focus)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h1,h2,h3{line-height:1.15;margin:0 0 .5em;color:var(--ink)}
h1,h2{font-family:var(--serif);font-weight:500;letter-spacing:-.015em}
h1{font-size:clamp(2.1rem,1.2rem + 2.6vw,3.6rem);line-height:1.08}
h2{font-size:clamp(1.6rem,1.15rem + 1.3vw,2.5rem);margin-top:0}
h3{font-size:1.125rem;font-weight:650;line-height:1.3}
p,ul,ol{margin:0 0 1em}
li{margin:.25em 0}
code{font:.92em/1.4 var(--mono);background:var(--code-bg);color:var(--code-ink);padding:.1em .3em;border-radius:4px;overflow-wrap:anywhere}
pre{background:var(--code-bg);color:var(--code-ink);padding:14px 16px;border-radius:var(--radius);overflow-x:auto;margin:0 0 1.25em;border:1px solid var(--line)}
pre code{background:none;padding:0;overflow-wrap:normal;white-space:pre}
pre.changelog code{white-space:pre-wrap;overflow-wrap:anywhere}
header.site{position:sticky;top:0;z-index:30;border-bottom:1px solid var(--line-soft);background:rgba(255,255,255,.94);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px)}
.bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 2.25rem;padding-top:.85rem;padding-bottom:.85rem}
.brand{display:inline-flex;align-items:center;gap:.55rem;font-family:var(--serif);font-weight:500;font-size:1.5rem;line-height:1;color:var(--brand);text-decoration:none;letter-spacing:-.005em}
/* Owner, 2026-10-13 (round 5): the serif wordmark, "Twin" in the brand navy and "Ethos" in the accent blue; Logo A's mark unchanged */
.wordmark{white-space:nowrap}.wm-twin{color:var(--brand)}.wm-ethos{color:var(--accent)}
.brand-mark{display:block;height:2rem;width:auto}
.brand:hover{color:var(--brand)}
nav.primary{flex:1 1 auto}
@media (min-width:40.0625rem){.bar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);column-gap:2rem}
.bar>.brand{justify-self:start}.bar>nav.primary{justify-self:center}.bar>.bar-actions{justify-self:end}}
.bar-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-left:auto}
.bar-actions .btn{border-color:var(--brand)}
.bar-actions .btn-primary{background:var(--brand);color:var(--on-accent)}
.bar-actions .btn-primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:var(--on-accent)}
.bar-actions .btn[aria-current=page]{box-shadow:inset 0 -3px 0 var(--focus)}
nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem 1.1rem;margin:0;padding:0}
nav.primary ul{gap:.25rem 1.9rem}
nav.primary a{text-decoration:none;color:var(--brand);font-weight:500}
nav.primary a:hover{text-decoration:underline;color:var(--brand)}
nav.primary a[aria-current=page]{font-weight:700;text-decoration:underline;text-decoration-thickness:2px}
@media (max-width:40rem){nav.primary{flex-basis:100%;order:3}nav.primary ul{gap:.25rem .9rem}.bar{column-gap:.75rem}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45em;padding:.7em 1.25em;border-radius:8px;font-weight:650;text-decoration:none;border:1.5px solid var(--brand);line-height:1.2;transition:background-color .15s ease,color .15s ease,border-color .15s ease}
.btn-primary{background:var(--brand);color:var(--on-accent)}
.btn-primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:var(--on-accent)}
.btn-secondary{background:var(--bg);color:var(--brand)}
.btn-secondary:hover{color:var(--brand-hover);border-color:var(--brand-hover);background:var(--brand-tint)}
.btn-sm{padding:.45em .9em;font-size:.95rem}
.cta-row{display:flex;flex-wrap:wrap;gap:.75rem;margin:1.5em 0 1em}
main{display:block}
section{padding:clamp(2.5rem,4.5vw,4.5rem) 0;border-bottom:1px solid var(--line-soft)}
section:last-child{border-bottom:0}
.hero{padding:clamp(3rem,8vw,8rem) 0 clamp(2.5rem,6vw,6rem);background:linear-gradient(180deg,var(--brand-tint),var(--bg) 88%)}
/* the hero's column gap and headline size are tokens: the intro's scale is placed from them */
.hero{--hero-gap:clamp(2.5rem,6vw,7rem);--hero-h1:clamp(2.25rem,1rem + 3.5vw,4.75rem)}
.hero-grid{display:grid;gap:1.5rem var(--hero-gap)}
.hero h1{font-size:var(--hero-h1);line-height:1.04;letter-spacing:-.02em;margin:0;color:var(--brand)}
.hero-body>:last-child{margin-bottom:0}
.lede{font-size:clamp(1.08rem,1rem + .3vw,1.25rem);color:var(--ink);max-width:var(--measure)}
.fine{font-size:.9rem;color:var(--muted)}
.muted{color:var(--muted)}
.eyebrow{font-size:.85rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:.4em}
/* Owner, 2026-10-25: the homepage's first two explorer panels carry an "Example data" heading */
.example-label{margin:0 0 .5rem}
.page-head{padding:clamp(2.5rem,5vw,5rem) 0 clamp(1.75rem,3vw,3rem);border-bottom:1px solid var(--line-soft);background:linear-gradient(180deg,var(--brand-tint),var(--bg))}
.page-head h1{max-width:28ch}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:1rem}
.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px 20px;box-shadow:var(--shadow-sm)}
.card p:last-child{margin-bottom:0}
.card.rec{border-left:5px solid var(--rec-line)}
.card-stack{display:grid;gap:.75rem;margin:0 0 1.5rem}
.stat{font-size:1.9rem;font-weight:800;line-height:1.1;margin:.2em 0 .3em;font-variant-numeric:tabular-nums}
.notice{border-left:5px solid var(--notice-line);background:var(--notice-bg);padding:12px 16px;border-radius:0 var(--radius) var(--radius) 0;margin:0 0 1.25em}
.rec-panel{border-left:5px solid var(--rec-line);background:var(--rec-bg);padding:16px 18px;border-radius:0 var(--radius) var(--radius) 0;margin:0 0 1.25em}
.rec-label{display:inline-block;font-size:.8rem;font-weight:700;color:var(--rec-ink);border:1.5px solid var(--rec-line);border-radius:999px;padding:.1em .7em;margin-bottom:.6em}
.lane{display:inline-block;font-size:.78rem;font-weight:700;padding:.15em .65em;border-radius:999px;color:#fff;white-space:nowrap}
.binding_in_force{background:var(--b-law)}.binding_not_in_force{background:var(--b-pending)}
.soft_law_or_standard{background:var(--b-soft)}.recommended_guardrail{background:var(--b-rec)}
.table-wrap{overflow-x:auto;margin:0 0 1.25em;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg)}
table{border-collapse:collapse;width:100%;font-size:.95rem}
th,td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
tr:last-child td{border-bottom:0}
thead th{background:var(--surface);font-weight:700}
td.num,th.num{font-variant-numeric:tabular-nums;white-space:nowrap}
table.runs{min-width:58rem}
table.runs th[scope=rowgroup] code{white-space:nowrap;overflow-wrap:normal}
table.runs td.models{min-width:12rem}
.steps{counter-reset:step;list-style:none;padding:0}
.steps li{counter-increment:step;position:relative;padding-left:2.6rem;margin:0 0 1rem}
.steps li::before{content:counter(step);position:absolute;left:0;top:0;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--brand);color:var(--on-accent);font-weight:700;display:flex;align-items:center;justify-content:center}
.subnav{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:1.25rem 0 0}
.subnav a{display:inline-flex;align-items:center;min-height:2.25rem;padding:.2em .9em;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--brand);text-decoration:none;font-size:.93rem;font-weight:550}
.subnav a:hover{border-color:var(--brand);background:var(--brand-tint)}
.subnav a[aria-current=page]{background:var(--brand);border-color:var(--brand);color:var(--on-accent);font-weight:700}
.subnav a:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.toc{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 18px;margin:0 0 1.5rem}
.toc ol{margin:0;padding-left:1.25rem}
details{border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin:0 0 1rem}
summary{cursor:pointer;font-weight:650}
footer.site{border-top:1px solid var(--line);background:var(--surface);padding:clamp(2rem,4vw,3.5rem) 0;font-size:.95rem}
footer.site p{margin:0 0 .6em}
footer.site .disclosure{font-weight:650}
footer nav ul{gap:.25rem 1.25rem}
footer nav a{color:var(--accent);text-decoration:underline}
@media (min-width:64rem){footer.site .wrap{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);column-gap:clamp(2rem,6vw,7rem)}
footer.site nav{grid-column:2;grid-row:1/span 3}footer nav ul{display:grid;grid-template-columns:repeat(2,max-content);gap:.4rem 3rem}}
@media (max-width:40rem){pre{font-size:.82rem}.lede{font-size:1.08rem}}
@media print{header.site nav,.cta-row,.skip{display:none}header.site{position:static}}
.flow{--tf:1.05rem;--lines:2;--box-h:calc(6.85rem + 1.3 * var(--lines) * var(--tf));--aw:1.875rem;--ah:1.5rem;--gx:2.5rem;--gy:3rem;--pad-x:1.125rem;--pad-y:1.25rem;list-style:none;margin:var(--space-l) 0 var(--space-xl);padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gy) var(--gx);max-width:36rem;counter-reset:flow}
.flow>li{position:relative;margin:0;counter-increment:flow;min-width:0}
.flow details.step{background:var(--box-tint);border:1px solid var(--line);border-top:4px solid var(--brand);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
/* Owner, 2026-10-13 (round 5): the who label sits at the bottom of every box, so the labels line up across a row */
.flow details.step>summary{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;position:relative;padding:var(--pad-y) var(--pad-x);border-radius:var(--radius-lg)}
.step-head{display:flex;flex-direction:column;flex:1 1 auto;min-width:0}
.step-head::before{content:counter(flow);display:flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--brand);color:var(--on-accent);font-weight:700;font-size:.95rem;margin-bottom:.8rem}
.flow h3{font-size:var(--tf);line-height:1.3;margin:0;text-wrap:balance}
.flow .where{display:block;margin-top:auto;padding-top:.45rem;font-size:.75rem;line-height:1.5;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}
.flow details.step>summary::after{position:absolute;top:calc(var(--pad-y) + .35rem);right:var(--pad-x)}
.flow details.step>p{margin:0;padding:0 var(--pad-x) var(--pad-y);font-size:.93rem;color:var(--muted)}
.flow>li:not(:last-child)::after{content:"";position:absolute;width:var(--aw);height:var(--ah);background:var(--brand);clip-path:polygon(0 34%,56% 34%,56% 0,100% 50%,56% 100%,56% 66%,0 66%);left:50%;bottom:calc((var(--gy) + var(--ah)) / -2);transform:translateX(-50%) rotate(90deg)}
.flow details.step:not([open])>summary{min-height:var(--box-h)}
@media (min-width:60rem){.flow{--tf:1rem;max-width:none;grid-template-columns:repeat(3,minmax(0,1fr))}
.flow>li:not(:last-child)::after{left:auto;bottom:auto;top:calc(4px + (var(--box-h) - var(--ah)) / 2);right:calc((var(--gx) + var(--aw)) / -2);transform:none}}
@media (min-width:60rem) and (max-width:89.9375rem){.flow>li:nth-child(3)::after{content:none}}
@media (min-width:90rem){.flow{--lines:3;grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (forced-colors:active){.flow>li::after{forced-color-adjust:none;background:CanvasText}}
.value-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px clamp(14px,3vw,40px);margin:0}
.value-strip div{border-top:3px solid var(--brand);padding:12px 2px 0}
.value-strip strong{display:block;font-family:var(--serif);font-weight:500;font-size:clamp(1.5rem,1.2rem + 1vw,2.2rem);line-height:1.15;color:var(--brand)}
.value-strip span{font-size:.9rem;color:var(--muted)}
@media (max-width:72rem){.value-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:30rem){.value-strip{grid-template-columns:1fr}}
:root{--g-law:#0a58a8;--g-pending:#8a5300;--g-soft:#475569}
[hidden]{display:none!important}
.meta{font-size:.92rem;color:var(--muted);overflow-wrap:anywhere}
.tag{display:inline-block;font-size:.78rem;font-weight:650;padding:.1em .6em;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.kind{display:inline-block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-right:.5rem}
.search-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px 20px;margin:0 0 1.25rem}
.field{display:flex;flex-direction:column;gap:.25rem;min-width:0}
.field label{font-weight:650;font-size:.92rem}
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(10.5rem,1fr));gap:.75rem;margin-top:.75rem}
input[type=search],select{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--muted);border-radius:8px;padding:.5em .65em;width:100%;min-width:0}
input[type=search]{font-size:1.1rem;padding:.7em .85em}
input:focus-visible,select:focus-visible,button:focus-visible,ol:focus-visible,pre:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
button.btn{font:inherit;cursor:pointer;background:var(--bg);color:var(--brand)}
.results{list-style:none;padding:0;margin:0}
.results li{border-bottom:1px solid var(--line);padding:.8rem 0}
.results li p{margin:0 0 .3em}
.result-title{font-weight:650}
@media (min-width:64rem){#ex-results.results{display:grid;grid-template-columns:repeat(auto-fill,minmax(26rem,1fr));column-gap:clamp(2rem,4vw,4rem)}}
.provision{border-top:1px solid var(--line);padding:1.75rem 0 .5rem}
.provision:first-child{border-top:0;padding-top:0}
.guard{border-left:5px solid var(--accent);background:var(--surface);padding:12px 16px;border-radius:0 var(--radius) var(--radius) 0;margin:0 0 1.25rem;min-width:0}
.example pre{margin:0 0 .75rem}
fieldset{border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin:0 0 1rem;min-width:0;background:var(--bg)}
legend{font-weight:650;padding:0 .3rem}
.checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.35rem 1rem}
.checks label{display:flex;gap:.5rem;align-items:flex-start}
.checks input{margin-top:.35rem;flex:none}
.access-form{display:grid;gap:.9rem;max-width:36rem;margin:0 0 1.5rem}
.access-form input[type=text],.access-form input[type=email],.access-form textarea{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--muted);border-radius:8px;padding:.5em .65em;width:100%;min-width:0}
textarea:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.access-form .hint{font-size:.88rem;color:var(--muted);margin:0}
.access-form select{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--muted);border-radius:8px;padding:.45em .6em;width:100%;min-width:0}
.access-form fieldset.choices{border:1px solid var(--line);border-radius:8px;padding:.6rem .9rem .8rem;margin:0;min-width:0}
.access-form legend{font-weight:650;font-size:.92rem;padding:0 .3rem}
.access-form legend .hint{font-weight:400}
.choice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:.35rem 1rem}
.choice{display:flex;gap:.45rem;align-items:flex-start}
.choice input{margin-top:.3rem;flex:none}
.step-fold>summary h2{display:inline;margin:0}
.quick>details.step-fold{max-width:54rem;border-top:1px solid var(--line);padding:.6rem 0}
.quick>details.step-fold:last-child{border-bottom:1px solid var(--line)}
.access-form .req{color:var(--accent);font-weight:700;margin-left:.15em}
.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem}
@media (max-width:40rem){.field-row{grid-template-columns:1fr}}
.access-form{max-width:none}
pre.copy{cursor:copy;user-select:all;position:relative}
pre.copy.copied::after{content:"Copied";position:absolute;top:.4rem;right:.5rem;font:600 .78rem/1.4 system-ui,sans-serif;background:var(--accent);color:var(--on-accent);padding:.1rem .5rem;border-radius:6px;user-select:none}
/* Ask TwinEthos (tools/web/ask.js; docs/technical/ASK-TWINETHOS.md §8): a floating "Ask" button that opens a chat panel,
   bottom right on wide screens and a full-screen sheet on phones (40rem and narrower), where the page behind it stops
   scrolling. The button is hidden until the script runs, so without JavaScript there is nothing to press. */
.askw-launch{position:fixed;right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));z-index:50;display:inline-flex;align-items:center;gap:.5rem;min-height:48px;padding:.65rem 1.15rem .65rem .95rem;border:0;border-radius:999px;background:var(--brand);color:var(--on-accent);font:inherit;font-weight:650;cursor:pointer;box-shadow:var(--shadow-lift);transition:transform var(--motion-fast) var(--ease-out),background-color var(--motion-fast) var(--ease-out)}
.askw-launch:hover{background:var(--brand-bright);transform:translateY(-2px)}
.askw-launch:focus-visible,.askw-close:focus-visible,.askw-starter:focus-visible,.askw-a summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.askw-launch svg{width:22px;height:22px;flex:none}
.askw-open .askw-launch{display:none}
.askw-panel{position:fixed;right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));z-index:51;width:min(26rem,calc(100vw - 2rem));height:min(40rem,calc(100vh - 2rem));display:flex;flex-direction:column;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lift);overflow:hidden;animation:askw-in var(--motion-open) var(--ease-out)}
.askw-panel[hidden]{display:none!important}
@keyframes askw-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.askw-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem .6rem .6rem 1rem;background:var(--brand);color:var(--on-accent);flex:none}
.askw-head h2{font-size:1.05rem;margin:0;color:inherit;letter-spacing:0}
.askw-close{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:8px;background:transparent;color:inherit;cursor:pointer}
.askw-close:hover{background:var(--brand-bright)}
.askw-close svg{width:20px;height:20px}
.askw-disclosure{margin:0;padding:.55rem 1rem;background:var(--brand-tint);border-bottom:1px solid var(--line);font-size:.86rem;font-weight:650;flex:none}
.askw-log{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:.9rem 1rem;display:grid;align-content:start;gap:1rem;font-size:.95rem}
.askw-welcome p{margin:0 0 .5rem}
.askw-welcome .hint{font-size:.86rem;color:var(--muted)}
.askw-starters{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.45rem}
.askw-starter{font:inherit;font-size:.88rem;text-align:left;color:var(--brand);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:.4em .85em;min-height:40px;cursor:pointer;max-width:100%}
.askw-starter:hover{border-color:var(--brand);background:var(--brand-tint)}
.askw-turn{display:grid;gap:.5rem;min-width:0}
.askw-q{justify-self:end;max-width:85%;margin:0;padding:.5rem .8rem;background:var(--brand);color:var(--on-accent);border-radius:14px 14px 4px 14px;overflow-wrap:anywhere;white-space:pre-wrap}
.askw-a{min-width:0;padding:.65rem .8rem;background:var(--surface);border:1px solid var(--line-soft);border-radius:14px 14px 14px 4px;overflow-wrap:anywhere}
.askw-a>:last-child{margin-bottom:0}
.askw-a .ask-answer{margin:0 0 .5rem}
.askw-a .ask-count{font-weight:650;margin:0 0 .6rem}
.askw-a .ask-progress{color:var(--muted);margin:0}
.askw-a .ask-progress::after{content:"";display:inline-block;width:.8em;height:.8em;margin-left:.5em;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;vertical-align:-.1em;animation:ask-spin .9s linear infinite}
@keyframes ask-spin{to{transform:rotate(360deg)}}
.askw-a h3{font-size:.95rem;margin:.8rem 0 .2rem}
.askw-a h4{font-size:.88rem;margin:.6rem 0 .15rem;color:var(--muted)}
.askw-a ol,.askw-a ul{padding-left:1.1rem;margin:0 0 .5rem}
.askw-a li{margin:.3em 0}
.askw-a .fine{font-size:.84rem}
.askw-a .ask-where{font-weight:650}
.askw-a .ask-more{display:grid;gap:.5rem;justify-items:start;margin:.75rem 0 .25rem}
.askw-a .ask-more details{margin:0;width:100%;box-sizing:border-box;background:var(--bg);padding:8px 12px}
.askw-a .ask-conditions{font-size:.84rem;color:var(--muted);margin:.15em 0 .4em;padding-left:.9rem}
.askw-a .ask-conditions li{margin:.1em 0}
.askw-a .ask-template{margin:.4em 0 .6em}
.askw-a .ask-duty-title{font-size:1rem;margin:.8em 0 .15em}
.askw-a .ask-duty{margin:0 0 .3em}
.askw-a .ask-template-rules{margin:0 0 .3em}
.askw-a .ask-limits{font-size:.84rem;color:var(--muted);margin:.1em 0 .4em;padding-left:.9rem}
.askw-a .ask-links{margin:.5rem 0 0}
.askw-form{flex:none;display:flex;align-items:flex-end;gap:.5rem;padding:.65rem .75rem;border-top:1px solid var(--line);background:var(--bg)}
.askw-form textarea{flex:1 1 auto;min-width:0;font:inherit;font-size:1rem;line-height:1.4;color:var(--ink);background:var(--bg);border:1px solid var(--muted);border-radius:10px;padding:.55em .7em;resize:none;max-height:8.5rem;overflow-y:auto}
.askw-form .btn{flex:none;min-height:44px}
.askw-fine{flex:none;margin:0;padding:0 .9rem .6rem;font-size:.76rem;line-height:1.4;color:var(--muted);background:var(--bg)}
body.has-askw footer.site{padding-bottom:5.5rem}
/* owner, 2026-10-24: no chat on phones for now (40rem and narrower); /explore/ask/ says so there */
.askw-phone-note{display:none}
@media (max-width:40rem){.askw-launch,.askw-panel,.askw-wide-note{display:none!important}.askw-phone-note{display:block}body.has-askw footer.site{padding-bottom:0}}
@media (max-width:40rem){.askw-launch{padding:.65rem 1rem}.askw-launch .askw-brand{display:none}.askw-panel{inset:0;width:100%;height:100vh;height:100dvh;border:0;border-radius:0;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}html.askw-open,html.askw-open body{overflow:hidden}}
@media (prefers-reduced-motion:reduce){.askw-panel{animation:none}.askw-launch{transition:none}.askw-launch:hover{transform:none}}
@media print{.askw-launch,.askw-panel{display:none!important}}
.consent{display:flex;gap:.5rem;align-items:flex-start}
.consent input{margin-top:.35rem;flex:none}
.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
button.btn-primary{background:var(--brand);color:var(--on-accent)}
.plan{list-style:none;padding:0;margin:0 0 1.5rem;counter-reset:plan;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,24rem),1fr))}
.plan>li{counter-increment:plan;position:relative;margin:0;padding:16px 18px 16px 3.5rem;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);min-width:0}
.plan>li::before{content:counter(plan);position:absolute;left:16px;top:16px;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--brand-tint);color:var(--brand);font-weight:700;font-size:.9rem;display:flex;align-items:center;justify-content:center}
.plan h3{margin-bottom:.3rem;font-size:1.05rem}
.plan p{margin:0 0 .35em}
.timeline{list-style:none;padding:0;margin:0 0 1.75rem}
.timeline li{border-left:3px solid var(--line);padding:.3rem 0 .9rem 1rem;margin:0}
.timeline li p{margin:0 0 .3em}
.timeline time{font-weight:700;font-variant-numeric:tabular-nums}
@media (min-width:80rem){#timeline{columns:2;column-gap:4rem}#timeline .month{break-inside:avoid-column}}
.grade{display:inline-block;font-size:.85rem;font-weight:700;padding:.15em .7em;border-radius:999px;border:1.5px solid currentColor}
.trust{border:1px solid var(--line);border-left:5px solid var(--muted);background:var(--surface);border-radius:0 var(--radius) var(--radius) 0;padding:12px 16px;margin:0 0 1.25rem;min-width:0}
.trust h2{font-size:1.2rem;margin-bottom:.35rem}
details.trust summary{font-weight:400}
.trust-label{font-weight:700;margin-right:.35rem}
.trust-sum{color:var(--muted);font-size:.92rem}
.trust-list{margin:.5rem 0 0}
.trust-list>div{display:grid;grid-template-columns:9.5rem minmax(0,1fr);gap:.2rem 1rem;padding:.45rem 0;border-top:1px solid var(--line)}
.trust-list>div:first-child{border-top:0}
.trust-list dt{font-weight:650}
.trust-list dd{margin:0;min-width:0;overflow-wrap:anywhere}
.trust-list dd p,.trust-list dd ul{margin:0 0 .4em}
@media (max-width:40rem){.trust-list>div{grid-template-columns:1fr}}
.plan-preview{list-style:none;padding:0;margin:0 0 1rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.75rem}
.plan-preview li{margin:0}
.plan-preview a{display:block;height:100%;background:var(--bg);border:1px solid var(--line);border-left:5px solid var(--brand);border-radius:0 var(--radius) var(--radius) 0;padding:12px 16px;font-weight:650;text-decoration:none;color:var(--brand)}
.plan-preview a:hover{text-decoration:underline}
.plan-preview a:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.jgroup{columns:16rem;column-gap:2rem;padding-left:1.1rem}
.jgroup li{break-inside:avoid}
@media print{header.site,footer.site nav,.subnav,.search-panel,#plan-tools,#plan-more,.toc{display:none!important}
body{font-size:11pt;background:#fff;color:#000}section{padding:.75rem 0;border:0}.page-head{padding:0 0 .5rem;background:none}
.plan{display:block}.plan>li{box-shadow:none}
.plan>li,.trust-list>div,.provision{break-inside:avoid}a{color:inherit}.lane{color:#000;background:none;border:1px solid #000}}
.grade.law_in_force{color:var(--g-law)}.grade.related_law_in_force{color:var(--g-law)}.grade.law_coming{color:var(--g-pending)}.grade.related_law_coming{color:var(--g-pending)}.grade.standards{color:var(--g-soft)}.grade.ahead_of_law{color:var(--rec-ink)}
@media (max-width:30rem){.hero .cta-row .btn{flex:1 1 100%;text-align:center}}
.bands{list-style:none;padding:0;margin:1rem 0 0;display:grid;gap:.6rem}
.bands li{margin:0}
.band{display:flex;align-items:center;justify-content:center;gap:.6rem;padding:.8rem 1.1rem;border-radius:var(--radius);font-weight:700;line-height:1.3;text-decoration:none;text-align:center}
.band:hover{text-decoration:underline}
.band:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.band-law,.band-law:hover,.band-rec,.band-rec:hover{background:var(--surface);color:var(--brand);border:1px solid var(--line)}
.band-law,.band-law:hover{border-left:5px solid var(--brand)}
.band-rec,.band-rec:hover{border-left:5px solid var(--rec-line)}
/* Owner, 2026-10-14 (round 6): more room between the three groups; within each row the cards are equal height */
.stat-group{margin:var(--space-xl) 0 0}
.stat-group+.stat-group{margin-top:clamp(3.5rem,2rem + 4vw,6.5rem)}
.stat-group h3{font-size:1.15rem;margin-bottom:.25rem}
.stat-group>.fine{max-width:52rem}
.stat-group+p{margin-top:1.5rem}
@media (min-width:80rem){.stat-group{display:grid;grid-template-columns:minmax(0,19rem) minmax(0,1fr);grid-template-rows:auto 1fr;column-gap:clamp(2rem,4vw,5rem);align-items:start}
.stat-group>h3,.stat-group>.fine{grid-column:1}.stat-group>.stats{grid-column:2;grid-row:1/span 2;margin-top:0;grid-template-columns:repeat(6,minmax(0,1fr))}
.stat-group>.stats>li{grid-column:span 2}
.stat-group>.stats>li:nth-child(3n+1):nth-last-child(2){grid-column:2/span 2}
.stat-group>.stats>li:nth-child(3n+1):last-child{grid-column:3/span 2}}
.stats{list-style:none;padding:0;margin:.75rem 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:1rem}
.stat-card{margin:0;min-width:0;background:var(--bg);border:1px solid var(--line);border-top:4px solid var(--brand);border-radius:var(--radius-lg);padding:14px 18px;box-shadow:var(--shadow-sm)}
.stat-card p{margin:0 0 .5em}
.stat-card p:last-child{margin-bottom:0}
.stat-card .eyebrow{margin-bottom:.15em}
.stat-card .stat{font-size:clamp(1.9rem,1.5rem + 1.6vw,2.6rem);color:var(--brand);margin:.05em 0 .2em;overflow-wrap:anywhere}
.stat-card .stat.words{font-size:clamp(1.4rem,1.2rem + .8vw,1.75rem)}
.stat-list{list-style:none;padding:0;margin:0 0 .5em;font-variant-numeric:tabular-nums}
.stat-list li{margin:.15em 0}
section.folded{padding:1.4rem 0}
details.fold,details.more{border:0;border-radius:0;padding:0;margin:0}
details.fold>summary,details.more>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:44px}
details.fold>summary::-webkit-details-marker,details.more>summary::-webkit-details-marker{display:none}
details.fold>summary h2{margin:0}
details.fold>summary:hover h2,details.more>summary:hover .more-head{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.15em}
/* Owner, 2026-10-13 (round 3): every fold control is a plain, thick "+" (two 4px bars, no circle) that turns into a minus */
/* Motion (2026-10-14): the vertical bar is a stripe drawn at the angle --plus-turn, so it can turn: opening, it rotates
   90 degrees down onto the horizontal bar and the "+" becomes a minus. The round mask keeps the stripe one length
   while it turns. Where @property is not supported the bar switches at once */
@property --plus-turn{syntax:"<angle>";inherits:false;initial-value:90deg}
details.fold>summary::after,details.more>summary::after{content:"";flex:none;display:block;width:1.35rem;height:1.35rem;--plus-bar:var(--brand);--plus-turn:90deg;background-image:linear-gradient(var(--plus-bar),var(--plus-bar)),linear-gradient(var(--plus-turn),transparent calc(50% - 2px),var(--plus-bar) calc(50% - 2px),var(--plus-bar) calc(50% + 2px),transparent calc(50% + 2px));background-size:100% 4px,100% 100%;background-position:center;background-repeat:no-repeat;-webkit-mask-image:radial-gradient(circle closest-side,#000 calc(100% - .5px),transparent);mask-image:radial-gradient(circle closest-side,#000 calc(100% - .5px),transparent);transition:--plus-turn var(--motion-base) var(--ease-out)}
details.fold[open]>summary::after,details.more[open]>summary::after{--plus-turn:180deg}
details.more>summary::after{width:1.2rem;height:1.2rem}
@media (forced-colors:active){details.fold>summary::after,details.more>summary::after{forced-color-adjust:none;--plus-bar:CanvasText}}
.fold-body{padding-top:1.25rem}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media print{details.fold>summary::after,details.more>summary::after{display:none}}
.icon{display:block;flex:none}
.ih{display:flex;align-items:center;gap:.65rem}
h2.ih .icon{width:2rem;height:2rem}
h3.ih .icon{width:1.6rem;height:1.6rem}
.boxes{align-items:start}
details.box{padding:0;margin:0}
.grid.boxes{align-items:start}
details.box>summary{justify-content:flex-start;gap:.75rem;padding:14px 16px;min-height:5.9rem;box-sizing:border-box}
details.box>summary .icon{width:1.75rem;height:1.75rem}
details.box>summary h3{flex:1 1 auto;margin:0;font-size:1.05rem}
details.box>p{margin:0;padding:0 16px 16px}
.stats{align-items:stretch}
.stat-card{padding:0}
.stat-card>details>summary{align-items:flex-start;padding:16px 18px}
.stat-head{display:block;min-width:0}
.stat-head .eyebrow,.stat-head .stat,.stat-head .stat-who{display:block}
.stat-card .stat-head .stat{margin:.1em 0 .1em}
/* Owner, 2026-10-14 (round 7): every stat card has the same height, and within a row the labels, values and notes
   line up: each card spans four shared rows (label, value, note, and the details that open), through subgrids from
   the list down to the summary; the rows' minimums are the first row's tallest content */
@media (min-width:40.0625rem){@supports (grid-template-rows:subgrid){
.stats{grid-auto-rows:minmax(4.5rem,auto) minmax(5.25rem,auto) minmax(4.5rem,auto) auto;row-gap:0}
.stats>li.stat-card{display:grid;grid-row:span 4;grid-template-rows:subgrid;margin-bottom:1rem}
.stat-card>details.more{display:grid;grid-row:1/-1;grid-template-rows:subgrid;grid-template-columns:minmax(0,1fr)}
.stat-card>details.more>summary{display:grid;grid-row:1/span 3;grid-template-rows:subgrid;grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:1rem}
.stat-card .stat-head{display:contents}
.stat-card .stat-head>*{grid-column:1;margin:0}
.stat-card>details.more>summary::after{grid-column:2;grid-row:1}}}
/* between 80rem and 90rem the card columns are at their narrowest: the notes may take three lines and the numbers are a
   little smaller, so every card keeps the one height there too */
@media (min-width:80rem) and (max-width:89.9375rem){@supports (grid-template-rows:subgrid){
.stats{grid-auto-rows:minmax(4.5rem,auto) minmax(5.25rem,auto) minmax(5.95rem,auto) auto}
.stat-card .stat-head .stat:not(.words){font-size:2.2rem}}}
.stat-who{font-size:.92rem;font-weight:400;color:var(--muted)}
.stat-body{padding:0 18px 16px}
.hero-question{font-size:clamp(1.25rem,1rem + 1vw,1.75rem);font-family:var(--serif);font-weight:500;color:var(--accent);margin:0 0 .8em;line-height:1.3}
.hero-link{font-size:1.15rem;font-weight:650;margin:1.25em 0 1em}
.hero-link a{color:var(--brand);text-decoration-thickness:2px}
.hero-link a:hover{color:var(--brand-hover)}
.cmp{display:block;margin:.15em 0 .4em;font-variant-numeric:tabular-nums}
.cmp-line{display:block;padding:.05em 0 .05em .6rem;border-left:3px solid var(--line)}
.cmp-with{font-weight:700;color:var(--brand);border-left-color:var(--brand)}
.cmp-with .cmp-val{font-weight:800}
.cmp-who{display:block;font-weight:650;margin-top:.4em}
.stat.cmp-stat{font-size:1rem;font-weight:400;line-height:1.35;margin:.3em 0 .6em}
.cmp-stat .cmp-val{font-size:1.6rem}
.cmp-stat .cmp-with .cmp-val{font-weight:800}
table.runs tbody+tbody{border-top:2px solid var(--line)}
tr.arm-base>th[scope=row],tr.arm-base>td{border-bottom:1px dashed var(--line)}
tr.arm-with>th[scope=row],tr.arm-with>td{font-weight:700;color:var(--brand)}
tr.arm-with>th[scope=row]{box-shadow:inset 3px 0 0 var(--brand)}
th.arm{white-space:nowrap;font-weight:400}
tr.with-te>td{font-weight:700;color:var(--brand)}
.evidence,.tone{background:var(--surface)}
.cta{background:var(--brand-tint)}
section.feature{padding:clamp(3rem,7vw,7rem) 0}
.feature-grid{display:grid;gap:2.25rem clamp(2.5rem,6vw,7rem);align-items:center}
.feature-text,.feature-visual{min-width:0}
.feature-text>:last-child{margin-bottom:0}
.feature h2,.section-head h2,.cta h2{font-size:clamp(1.8rem,1.1rem + 2vw,3.1rem);line-height:1.1}
.feature.top .feature-grid{align-items:start}
.feature-text details.fold>summary{justify-content:flex-start;gap:1.25rem}
details.card.box{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--box-tint)}
.learn-row{margin:1.5rem 0 0}
.learn{display:inline-flex;align-items:center;gap:.4em;min-height:44px;font-weight:650;color:var(--brand);text-decoration:none;border-bottom:2px solid var(--brand);line-height:1.2}
.learn::after{content:"\2192";content:"\2192"/""}
.learn:hover{color:var(--brand-hover);border-bottom-color:var(--accent)}
.learn:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.section-head{display:grid;gap:.5rem clamp(2.5rem,6vw,7rem);margin:0 0 .5rem}
.section-head h2{margin:0}
.section-intro>:last-child{margin-bottom:0}
@media (min-width:64rem){
.hero-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:end}
.feature-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.feature.flip .feature-visual{order:-1}
.section-head{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}
.cta .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:clamp(2.5rem,6vw,7rem);align-items:start}
.cta .wrap>*{grid-column:2}.cta .wrap>h2{grid-column:1;grid-row:1/span 6}
}
@media (min-width:64rem){.feature-text .grid.boxes{grid-template-columns:1fr}}
@media (min-width:80rem){.feature-text .grid.boxes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:72rem){
.wrap.prose:has(>h2:first-child),.wrap.prose:has(>.toc:first-child){display:grid;grid-template-columns:minmax(0,17rem) minmax(0,1fr);column-gap:clamp(2.5rem,5vw,6rem);align-items:start}
.wrap.prose:has(>h2:first-child)>*,.wrap.prose:has(>.toc:first-child)>*{grid-column:2}
.wrap.prose>h2:first-child,.wrap.prose>.toc:first-child{grid-column:1;grid-row:1/span 400;position:sticky;top:6rem}
.wrap.prose>h2:first-child{font-size:clamp(1.5rem,1rem + 1vw,2.1rem)}
}
.hero-intro{font-family:var(--serif);font-weight:500;font-size:clamp(1.3rem,1.05rem + .9vw,1.9rem);line-height:1.25;color:var(--ink);margin:0 0 .75em}
.hero-head .hero-question{margin:1.1rem 0 0}
.value-strip+.fine{margin-top:var(--space-m)}
/* Owner, 2026-10-13 (round 5): room between the flow, the results, the four boxes and the bands, all from the --space-*
   scale. Round 6 (2026-10-14): on wide screens the four boxes and the two bands are larger, filling the left column, and
   the column is centred vertically against the provision panel beside it; the bands carry no arrow, and the "How it
   works in detail" link is gone with the detail page */
.how-what{margin-top:var(--space-xl);align-items:start}
.how-what .grid.boxes{gap:var(--space-m)}
.how-what .bands{margin-top:var(--space-m);gap:var(--space-m)}
@media (min-width:64rem){.how-what{align-items:center}
.how-what .grid.boxes{gap:var(--space-l) var(--space-m)}.how-what .bands{margin-top:var(--space-l);gap:var(--space-l)}
.how-what details.box>summary{min-height:11.5rem;padding:var(--space-m);gap:var(--space-s)}
.how-what details.box>summary .icon{width:2.25rem;height:2.25rem}
.how-what details.box>summary h3{font-size:clamp(1.05rem,.9rem + .35vw,1.22rem)}
.how-what details.box>p{padding:0 var(--space-m) var(--space-m);font-size:1rem}
.how-what .band{min-height:7rem;padding:var(--space-m);font-size:clamp(1.05rem,.95rem + .3vw,1.2rem)}}
.badges{display:flex;flex-wrap:wrap;gap:.35rem;margin:.15rem 0 .55rem}
.badge{display:inline-block;font-size:.78rem;font-weight:700;padding:.15em .65em;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:var(--bg)}
.badge-law{background:var(--b-law);border-color:var(--b-law);color:#fff}
.badge-rec{color:var(--rec-ink);border:1.5px solid var(--rec-line);background:var(--rec-bg)}
.guard-recs{list-style:none;margin:.65rem 0 0;padding:.55rem .85rem;border-left:4px solid var(--rec-line);background:var(--rec-bg);border-radius:0 8px 8px 0;font-size:.92rem}
.guard-recs li{margin:.35rem 0}.guard-recs li>a{display:block;margin-bottom:.2rem}.guard-recs .grade{font-size:.75rem}
.lane-target{display:block;height:0}
.lane-filter{margin:0 0 1.1rem}
.lane-filter a[href='#all'],#law:target~.lane-filter a[href='#law'],#rec:target~.lane-filter a[href='#rec']{background:var(--brand);border-color:var(--brand);color:var(--on-accent);font-weight:700}
#law:target~.lane-filter a[href='#all'],#rec:target~.lane-filter a[href='#all']{background:var(--bg);border-color:var(--line);color:var(--brand);font-weight:550}
#law:target~.guards>li:not(.has-law),#rec:target~.guards>li:not(.has-rec){display:none}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem .5rem;margin:0 0 1rem;padding:0;font-size:.92rem;color:var(--muted)}
.crumbs li{margin:0}
.crumbs li+li::before{content:"/";content:"/"/"";margin-right:.5rem}
.crumbs a{color:var(--brand)}
.head-grid{display:grid;gap:1.25rem clamp(2rem,5vw,5rem)}
.head-aside .notice{margin:0}
.subnav.compact a{font-size:.88rem}
.explore-grid{display:grid;gap:2.5rem clamp(2rem,4vw,4rem);margin:0 0 2.5rem}
.explore-grid>*{min-width:0}
@media (min-width:64rem){.head-grid{grid-template-columns:minmax(0,1fr) minmax(18rem,26rem);align-items:start}}
@media (min-width:80rem){.explore-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}#ex-results.results{grid-template-columns:minmax(0,1fr)}
.explore-filter fieldset:nth-of-type(2) .checks{max-height:22rem;overflow-y:auto;padding-right:.5rem}}
@media print{.explore-search,.explore-grid~h2,.explore-grid~.grid,#packs,#recommended-guardrails,#changelog{display:none!important}.explore-grid{display:block}}
.panel{margin:0;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;min-width:0}
.panel-bar{display:flex;align-items:center;gap:.6rem;padding:.6rem 1.1rem;border-bottom:1px solid var(--line-soft);background:var(--surface);font-size:.82rem;color:var(--muted);min-width:0}
.panel-bar::before{content:"";flex:none;width:.6rem;height:.6rem;border-radius:50%;background:var(--brand)}
.panel-app{flex:none;font-weight:700;color:var(--brand)}
.panel-path{font-family:var(--mono);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.panel-body{padding:1.15rem 1.35rem 1.25rem}
.panel-body>:last-child{margin-bottom:0}
.panel-body p{margin:0 0 .6rem}
.panel-cap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;padding:.7rem 1.35rem;border-top:1px solid var(--line-soft);font-size:.82rem;color:var(--muted)}
.panel-cap a{font-weight:650;color:var(--brand)}
.panel-title{font-family:var(--serif);font-size:clamp(1.2rem,1rem + .6vw,1.5rem);line-height:1.25;color:var(--ink)}
.panel-meta{font-size:.9rem;color:var(--muted);overflow-wrap:anywhere}
.panel-status{font-weight:650;color:var(--brand)}
.panel-k{display:block;font-size:.72rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin:0 0 .35rem}
.panel-guard{border-left:3px solid var(--accent);background:var(--surface);border-radius:0 8px 8px 0;padding:.65rem .9rem;margin:.85rem 0 1rem}
.panel-guard p{margin:0;font-size:.95rem}
.panel-rows{list-style:none;margin:0 0 .75rem;padding:0}
.panel-rows li{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .65rem;padding:.55rem 0;border-top:1px solid var(--line-soft);margin:0;font-size:.92rem}
.panel-cite{font-weight:650}
.panel-sub{font-size:.86rem;color:var(--muted)}
.panel-foot{font-size:.88rem;color:var(--muted)}
.panel-markets li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.3rem 1rem}
.panel-markets a{color:var(--ink);font-weight:600;text-decoration:none}
.panel-markets a:hover{text-decoration:underline}
.panel-num{font-size:.86rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.meter{grid-column:1/-1;display:block;height:6px;border-radius:99px;background:var(--line-soft);overflow:hidden}
.meter>span{display:block;height:100%;border-radius:99px;background:var(--brand)}
.m-1{width:10%}.m-2{width:20%}.m-3{width:30%}.m-4{width:40%}.m-5{width:50%}.m-6{width:60%}.m-7{width:70%}.m-8{width:80%}.m-9{width:90%}.m-10{width:100%}
.panel-plan{list-style:none;counter-reset:pp;margin:0 0 .75rem;padding:0}
.panel-plan li{counter-increment:pp;position:relative;margin:0;padding:.7rem 0 .7rem 2.4rem;border-top:1px solid var(--line-soft)}
.panel-plan li::before{content:counter(pp);position:absolute;left:0;top:.75rem;width:1.65rem;height:1.65rem;border-radius:50%;background:var(--brand);color:var(--on-accent);font-size:.82rem;font-weight:700;display:flex;align-items:center;justify-content:center}
.panel-plan a{font-weight:650;color:var(--brand)}
.panel-plan p{margin:.2rem 0 0;font-size:.92rem}
.panel-mcp .panel-body{padding:0}
.panel-code{margin:0;border:0;border-radius:0;background:#f7f9fc;padding:1.1rem 1.35rem;font-size:.8rem;line-height:1.6}
.panel-code code{white-space:pre-wrap;overflow-wrap:anywhere}
.t-user{color:var(--brand);font-weight:700}.t-call{color:var(--accent);font-weight:700}.t-key{color:#8a4b00}.t-str{color:#1b6136}.t-num{color:#5a3288}
.panel-guardrail{border-top:4px solid var(--rec-line)}
.law-layout{display:grid;gap:0 clamp(2rem,4vw,4.5rem);grid-template-columns:minmax(0,1fr)}
.law-main>*{max-width:54rem}
.law-side .toc{background:none;border:0;border-left:2px solid var(--line);border-radius:0;padding:.25rem 0 .25rem 1rem;font-size:.92rem}
.law-side .toc ol{padding-left:1.1rem}
.law-side .toc li{margin:.35em 0}
@media (min-width:64rem){
.law-layout{grid-template-columns:minmax(0,15rem) minmax(0,1fr);grid-template-areas:"top top" "side trust" "side main"}
.law-top{grid-area:top}.law-side{grid-area:side;position:sticky;top:6rem;max-height:calc(100vh - 7.5rem);overflow:auto}
.law-trust{grid-area:trust}.law-main{grid-area:main}
.law-layout.no-side{grid-template-columns:minmax(0,1fr);grid-template-areas:"top" "trust" "main"}
}
@media (min-width:110rem){
.law-layout{grid-template-columns:minmax(0,15rem) minmax(0,54rem) minmax(18rem,1fr);grid-template-areas:"top top top" "side main trust"}
.law-layout.no-side{grid-template-columns:minmax(0,54rem) minmax(18rem,1fr);grid-template-areas:"top top" "main trust"}
.law-trust{position:sticky;top:6rem;max-height:calc(100vh - 7.5rem);overflow:auto}
.law-trust .trust-list>div{grid-template-columns:1fr}
}
/* Owner, 2026-10-14 (round 6): the evidence page's sections further apart, and more room under each headline label.
   Round 8: the first two headline cards line up with each other (label, values and description at the same heights,
   through CSS subgrid) and their content is spaced centrally in the card: spacer rows above, between and below share
   the height the third card, which keeps its own top-down list, gives the row. No card has a large empty bottom */
section.ev{padding:clamp(3.5rem,2rem + 4vw,7rem) 0}
.grid.headline{align-items:stretch}
.headline-card .eyebrow{margin-bottom:var(--space-m)}
@media (min-width:64rem){@supports (grid-template-rows:subgrid){
.grid.headline{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:minmax(0,1fr) auto minmax(var(--space-m),1fr) auto minmax(var(--space-m),1fr) auto minmax(0,1fr);row-gap:0}
.headline-card{grid-row:1/-1}
.headline-card.paired{display:grid;grid-template-rows:subgrid}
.headline-card.paired>*{margin:0}
.headline-card.paired>.eyebrow{grid-row:2}.headline-card.paired>.stat{grid-row:4}.headline-card.paired>p:last-child{grid-row:6}}}
/* The Data page (/data/, owner, 2026-10-14): key figures (four cards and the wide sources card), inline SVG charts (presentation attributes only, no
   style attribute or element), tables by jurisdiction and sliced views */
section.data-section{padding:clamp(3rem,1.75rem + 3.5vw,6rem) 0}
.figures{list-style:none;padding:0;margin:0 0 var(--space-m);display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:var(--space-m) clamp(14px,3vw,40px)}
.figures li{margin:0;border-top:3px solid var(--brand);padding:14px 2px 0}
.figures strong{display:block;font-family:var(--serif);font-weight:500;font-size:clamp(2rem,1.4rem + 1.8vw,3.2rem);line-height:1.1;color:var(--brand);font-variant-numeric:tabular-nums}
.figures .fig-label{display:block;margin-top:.45rem;font-size:1.05rem;font-weight:650;color:var(--ink)}
.figures .fig-note{display:block;margin:.25rem 0 0;font-size:.95rem;color:var(--muted)}
.figures .fig-wide{grid-column:1/-1}.figures .fig-body>:first-child{margin-top:.45rem}
.figures .fig-kinds{margin:.5rem 0 0;font-size:.95rem;color:var(--ink);font-variant-numeric:tabular-nums}
.charts{display:grid;gap:var(--space-l) clamp(2rem,4vw,4.5rem);grid-template-columns:minmax(0,1fr)}
.chart{margin:0;min-width:0;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-m);box-shadow:var(--shadow-sm)}
.chart figcaption h3{margin:0 0 .25rem;font-size:1.2rem}
.chart figcaption .fine{margin:0 0 var(--space-s)}
.chart-scroll{overflow-x:auto}
.chart svg{display:block;width:100%;height:auto}
/* each chart is drawn twice (round 10): the wide layout, and in a chart box narrower than 32rem a narrow one, so no
   part of a chart is hidden in a side-scroll box or drawn too small (display:none also takes the copy not shown out of
   the accessibility tree) */
.chart-scroll{container-type:inline-size}.chart svg.chart-narrow{display:none}
@container (max-width:31.99rem){.chart svg.chart-wide{display:none}.chart svg.chart-narrow{display:block}}
.chart-more{margin:var(--space-s) 0 0}
/* each chart bar is a link into Explore (owner, 2026-10-14): a tint behind the row on hover, plus a navy ring on
   keyboard focus (in place of the outline, which an SVG link draws unevenly), and the bar's label underlined */
.chart svg a{cursor:pointer;outline:none}
.chart svg a .hit{fill:var(--brand-tint);fill-opacity:0;transition:fill-opacity var(--motion-fast) var(--ease-out)}
.chart svg a:hover .hit,.chart svg a:focus-visible .hit{fill-opacity:1}
.chart svg a:focus-visible .hit{stroke:var(--brand);stroke-width:3}
.chart svg a:hover .bar-label,.chart svg a:focus-visible .bar-label{text-decoration:underline;fill:var(--brand)}
.data-grid{display:grid;gap:var(--space-l) clamp(2rem,4vw,4.5rem);grid-template-columns:minmax(0,1fr)}
.data-grid>*{min-width:0}
.data-grid h3,#jurisdictions h3{margin-top:var(--space-l)}
.data-grid>* h3{margin-top:0}
table.data-table tr.total>*{font-weight:700;border-top:2px solid var(--line)}
table.data-table th,table.data-table td{padding:7px 12px}
table.data-table td.num,table.data-table thead th:not(:first-child){text-align:right}
table.data-table tfoot tr>*{background:var(--surface)}
.data-links{columns:22rem;column-gap:2rem;padding-left:1.1rem}
.data-links li{break-inside:avoid}
@media (min-width:64rem){.charts{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.charts>.chart-tall{grid-row:span 2}
.figures{grid-template-columns:repeat(4,minmax(0,1fr))}
.figures .fig-wide{display:grid;grid-template-columns:subgrid}.figures .fig-body{grid-column:2/-1}.figures .fig-body>:first-child{margin-top:0}
.data-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:63.99rem){header.site{position:static}html{scroll-padding-top:1rem}}
@media (max-width:40rem){
.hero{padding:1.75rem 0 1.75rem}.hero h1{font-size:2.05rem;line-height:1.12;margin-bottom:.25em}
.hero .lede{font-size:1.05rem;line-height:1.55}.hero .cta-row{margin:1.1rem 0 .75rem;gap:.6rem}.hero-link{font-size:1.05rem}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px}
nav.primary a,footer nav a{display:inline-flex;align-items:center;min-height:44px}nav.primary ul,footer nav ul{row-gap:0}
section{padding:1.75rem 0}section.folded{padding:.9rem 0}section.feature{padding:2rem 0}
h2{font-size:1.5rem}.feature h2,.section-head h2,.cta h2{font-size:1.6rem}h2.ih .icon{width:1.75rem;height:1.75rem}
.grid,.stats{grid-template-columns:1fr;gap:.75rem}
.feature-grid{gap:1.5rem}
.band{min-height:44px;padding:.75rem 1rem}
details:not(.fold):not(.more)>summary{padding:.6rem 0}
.stat-group{margin-top:1.4rem}.stat-card .stat-head .stat{font-size:2rem}.stat-card .stat-head .stat.words{font-size:1.4rem}
.brand{font-size:1.5rem;gap:.6rem}.brand-mark{height:2.9rem}
.bar-actions{gap:.4rem}.bar-actions .btn{padding:.4em .75em}
.hero .hero-question{font-size:1.25rem}
.panel-body{padding:1rem}.panel-cap{padding:.65rem 1rem}.panel-code{padding:1rem;font-size:.76rem}
.page-head{padding:1.75rem 0 1.25rem}.subnav a{min-height:44px}
section.ev,section.data-section{padding:2rem 0}.chart{padding:1rem}
}
/* Motion (owner, 2026-10-14). Timings and easings are the tokens at the top (--motion-*, --ease-*, --lift, --intro-*).
   Cards lift on hover and on keyboard focus (:focus-visible inside them), with a deeper shadow; the navy top accent
   brightens a touch where a card has one */
.flow details.step,details.card.box,.stat-card,.plan>li{transition:transform var(--motion-base) var(--ease-out),box-shadow var(--motion-base) var(--ease-out),border-color var(--motion-base) var(--ease-out)}
@media (hover:hover){.flow details.step:hover,details.card.box:hover,.stat-card:hover,.plan>li:hover{transform:translateY(calc(-1 * var(--lift)));box-shadow:var(--shadow-lift)}
.flow details.step:hover,.stat-card:hover{border-top-color:var(--brand-bright)}
details.card.box:hover,.plan>li:hover{border-color:var(--line-lift)}}
.flow details.step:has(>summary:focus-visible),details.card.box:has(>summary:focus-visible),.stat-card:has(summary:focus-visible),.plan>li:has(:focus-visible){transform:translateY(calc(-1 * var(--lift)));box-shadow:var(--shadow-lift)}
.flow details.step:has(>summary:focus-visible),.stat-card:has(summary:focus-visible){border-top-color:var(--brand-bright)}
details.card.box:has(>summary:focus-visible),.plan>li:has(:focus-visible){border-color:var(--line-lift)}
/* A box's content slides and fades open (height and opacity); browsers without ::details-content open it at once */
@supports selector(::details-content){
details.fold,details.more{interpolate-size:allow-keywords}
details.fold::details-content,details.more::details-content{block-size:0;opacity:0;overflow:clip;overflow-clip-margin:6px;transition:block-size var(--motion-open) var(--ease-out),opacity var(--motion-open) var(--ease-out),content-visibility var(--motion-open) allow-discrete}
details.fold[open]::details-content,details.more[open]::details-content{block-size:auto;opacity:1}
/* a flow box keeps its closed height while it opens: its summary gives up the reserved room as the content grows */
.flow details.step>summary{transition:min-height var(--motion-open) var(--ease-out)}.flow details.step[open]>summary{min-height:0}}
/* The flow's arrows nudge right one after another as the section scrolls into view (scroll-driven, where supported;
   still elsewhere). Wide layouts only, where the arrows point right */
@media (min-width:60rem) and (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){
.flow>li::after{animation-name:flow-nudge;animation-fill-mode:both;animation-timing-function:var(--ease-in-out);animation-timeline:view();animation-range:cover 14% cover 26%}
.flow>li:nth-child(2)::after{animation-range:cover 18% cover 30%}
.flow>li:nth-child(3)::after{animation-range:cover 22% cover 34%}
.flow>li:nth-child(4)::after{animation-range:cover 26% cover 38%}
.flow>li:nth-child(5)::after{animation-range:cover 30% cover 42%}}}
@keyframes flow-nudge{0%,100%{translate:0 0}45%{translate:var(--flow-nudge) 0}}
@media (prefers-reduced-motion:reduce){.flow details.step,details.card.box,.stat-card,.plan>li{transform:none!important}}
@media print{.intro-scale{display:none!important}}
/* The homepage intro (owner, 2026-10-14): wide screens only, and none under reduced motion. The pivot and the
   pans' hang points come from the logo (tools/generate_web.py logo_scales). Round 2: the scale sits in the open
   space right of the headline's first line (its base level with that line, its right edge 1.5rem short of the
   right column), stays navy and fades only as it reaches the shield; the glide arcs (the rise leads the sweep) */
.intro-scale{display:none}
@media (min-width:64rem) and (prefers-reduced-motion:no-preference){
.hero-head{position:relative}
.intro-scale{display:block;position:absolute;right:var(--intro-right,calc(1.5rem - var(--hero-gap)));left:var(--intro-left,auto);top:var(--intro-top,calc(.55 * var(--hero-h1) - .5 * var(--intro-size)));height:var(--intro-size);width:calc(var(--intro-size) * 42 / 37);overflow:visible;z-index:31;pointer-events:none;fill:var(--brand);transform-origin:0 0;animation:intro-in var(--intro-in) var(--ease-out) both,intro-fade var(--intro-glide) var(--ease-out) calc(var(--intro-wobble) + var(--intro-hold)) forwards}
.intro-scale g{transform-box:view-box}
.intro-beam{transform-origin:32px 28.2px;animation:intro-wobble var(--intro-wobble) var(--ease-in-out) both}
.intro-pan-l{transform-origin:19px 28.2px}.intro-pan-r{transform-origin:45px 28.2px}
.intro-pan{animation:intro-hang var(--intro-wobble) var(--ease-in-out) both}
.intro-glide .intro-scale{animation:intro-glide var(--intro-glide) var(--ease-glide) forwards,intro-rise var(--intro-glide) var(--ease-rise) forwards}
.intro-glide .brand-mark{animation:logo-settle var(--intro-settle) var(--ease-out) calc(var(--intro-glide) * .85) both}
.intro-wait .intro-scale,.intro-wait .intro-scale g{animation:none}}
@keyframes intro-in{from{opacity:0}to{opacity:1}}
@keyframes intro-fade{to{opacity:0}}
@keyframes intro-wobble{0%{transform:rotate(-14deg)}16.67%{transform:rotate(10deg)}33.33%{transform:rotate(-6.5deg)}50%{transform:rotate(3.5deg)}66.67%{transform:rotate(-1.5deg)}83.33%{transform:rotate(0.5deg)}100%{transform:rotate(0deg)}}
@keyframes intro-hang{0%{transform:rotate(14deg)}16.67%{transform:rotate(-10deg)}33.33%{transform:rotate(6.5deg)}50%{transform:rotate(-3.5deg)}66.67%{transform:rotate(1.5deg)}83.33%{transform:rotate(-0.5deg)}100%{transform:rotate(0deg)}}
@keyframes intro-glide{0%{transform:none;opacity:1}85%{opacity:1}100%{transform:translateX(var(--glide-x)) scale(var(--glide-s));opacity:0}}
@keyframes intro-rise{0%{translate:0 0}100%{translate:0 var(--glide-y)}}
@keyframes logo-settle{0%,100%{transform:scale(1)}45%{transform:scale(var(--intro-pulse))}}
