/* Design tokens, generated by build.py from design-system/project/tokens.json. Do not edit here. */
:root {
  --font-display: "Science Gothic", "Arial Black", system-ui, sans-serif;
  --font-text: "Commissioner", "Segoe UI", system-ui, sans-serif;
  --font-mono: "Lilex", ui-monospace, "SF Mono", Consolas, monospace;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;
  --space-16: 64px;
  --space-24: 96px;
  --space-32: 128px;
  --radius-0: 0px;
  --radius-1: 2px;
  --border-hairline: 1px;
  --border-rule: 2px;
  --border-control: 1.5px;
  --border-button: 2px;
  --layout-container: 1200px;
  --layout-gutter: 24px;
  --layout-measure: 68ch;
  --layout-header: 80px;
  --ground: #ebe8e1;
  --ground-alt: #dedcd6;
  --surface: #f6f5f2;
  --ink: #15202b;
  --ink-muted: #555a5e;
  --line: #c9c8c4;
  --line-strong: #76797a;
  --band: #15202b;
  --on-band: #ebe8e1;
  --on-band-muted: #afb0ae;
  --line-on-band: #485057;
  --accent: #8c2b2b;
  --on-accent: #ebe8e1;
  --accent-ink: #8c2b2b;
  --accent-on-band: #e0897d;
  --error: #b3261e;
  --strata-1: #d8d6d1;
  --strata-2: #c7c6c2;
  --strata-3: #abacaa;
  --focus-ring: 0 0 0 2px #ebe8e1, 0 0 0 4px #8c2b2b;
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ground: #0f161d;
    --ground-alt: #20272d;
    --surface: #1a2027;
    --ink: #e9e6df;
    --ink-muted: #9f9f9d;
    --line: #3b4044;
    --line-strong: #717474;
    --band: #1b2733;
    --on-band: #e9e6df;
    --on-band-muted: #afb1af;
    --line-on-band: #4c555c;
    --accent: #e0897d;
    --on-accent: #0f161d;
    --accent-ink: #e0897d;
    --accent-on-band: #e0897d;
    --error: #f2998d;
    --strata-1: #23292e;
    --strata-2: #34393e;
    --strata-3: #505457;
    --focus-ring: 0 0 0 2px #0f161d, 0 0 0 4px #e0897d;
  color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --ground: #0f161d;
  --ground-alt: #20272d;
  --surface: #1a2027;
  --ink: #e9e6df;
  --ink-muted: #9f9f9d;
  --line: #3b4044;
  --line-strong: #717474;
  --band: #1b2733;
  --on-band: #e9e6df;
  --on-band-muted: #afb1af;
  --line-on-band: #4c555c;
  --accent: #e0897d;
  --on-accent: #0f161d;
  --accent-ink: #e0897d;
  --accent-on-band: #e0897d;
  --error: #f2998d;
  --strata-1: #23292e;
  --strata-2: #34393e;
  --strata-3: #505457;
  --focus-ring: 0 0 0 2px #0f161d, 0 0 0 4px #e0897d;
  color-scheme: dark;
}

/* Aspatium website.
   Colours, spacing, radii and font stacks come from the design system tokens, compiled above this line by build.py.
   No inline styles anywhere: every variant is a class or a data- attribute, so the CSP can forbid 'unsafe-inline'. */

@font-face { font-family: "Science Gothic"; src: url("fonts/science-gothic-w130-560-latin.woff2") format("woff2"); font-weight: 560; font-stretch: 130%; font-style: normal; font-display: swap; unicode-range: U+0020-007E, U+00A0-00FF, U+2010-2027, U+2122, U+2248; }
@font-face { font-family: "Commissioner"; src: url("fonts/commissioner-latin.woff2") format("woff2"); font-weight: 300 700; font-style: oblique 0deg 12deg; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Commissioner"; src: url("fonts/commissioner-cyrillic.woff2") format("woff2"); font-weight: 300 700; font-style: oblique 0deg 12deg; font-display: swap; unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Lilex"; src: url("fonts/lilex-400-latin.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* ===== Base ===== */
:root { --t-bg: var(--ground); --t-fg: var(--ink); --t-fg2: var(--ink-muted); --t-ln: var(--line); --t-link: var(--accent-ink); --gutter: max(16px, 3vw); }
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { margin: 0; background: var(--ground); color: var(--ink); font: 400 17px/26px var(--font-text); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; font-kerning: normal; }
img, svg { max-width: 100%; }
a { color: inherit; text-underline-offset: .22em; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--t-link); outline-offset: 3px; }
::selection { background: var(--ink); color: var(--ground); }
p { margin: 0; }
h1, h2, h3 { margin: 0; }
i, em { font-style: oblique 10deg; }
b, strong { font-weight: 600; }
code { font: 400 .9em/1 var(--font-mono); }
.as-skip { position: absolute; left: 8px; top: -120px; z-index: 20; background: var(--ink); color: var(--ground); padding: 10px 16px; border-radius: var(--radius-1); font-weight: 600; text-decoration: none; }
.as-skip:focus { top: 8px; }
.as-vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.as-wrap { max-width: var(--layout-container); margin-inline: auto; padding-left: max(var(--gutter), env(safe-area-inset-left, 0px)); padding-right: max(var(--gutter), env(safe-area-inset-right, 0px)); box-sizing: content-box; }

/* ===== Tones ===== */
.as-alt { --t-bg: var(--ground-alt); }
.as-band { --t-bg: var(--band); --t-fg: var(--on-band); --t-fg2: var(--on-band-muted); --t-ln: var(--line-on-band); --t-link: var(--accent-on-band); }
.as-section { background: var(--t-bg); color: var(--t-fg); padding-block: var(--space-24); }
.as-section:not(.as-band):not(.as-alt) + .as-section:not(.as-band):not(.as-alt) { border-top: var(--border-hairline) solid var(--line); }
.as-muted { color: var(--t-fg2); }
.as-head { display: grid; gap: 18px; max-width: 56rem; margin-bottom: clamp(36px, 5vw, 64px); }
.as-head .as-lead { color: var(--t-fg2); }
@media (max-width: 760px) { .as-section { padding-block: var(--space-16); } }

/* ===== Type ===== */
.as-display, .as-h1, .as-h2, .as-h3, .as-legend { font-family: var(--font-display); font-weight: 560; font-stretch: 130%; text-transform: uppercase; text-wrap: balance; margin: 0; }
.as-display { font-size: clamp(40px, 6vw, 76px); line-height: 1; letter-spacing: -.005em; }
.as-h1 { font-size: clamp(28px, 3.2vw, 38px); line-height: 1.08; }
.as-h2 { font-size: clamp(23px, 2.2vw, 29px); line-height: 1.12; }
.as-h3 { font-size: clamp(18px, 1.6vw, 22px); line-height: 1.22; letter-spacing: .03em; }
.as-lead { font-size: 21px; line-height: 30px; max-width: 34em; text-wrap: pretty; }
.as-small { font-size: 15px; line-height: 23px; }
.as-caption { font: 400 13px/19px var(--font-mono); color: var(--t-fg2); }
.as-data { font: 400 14.5px/22px var(--font-mono); font-variant-numeric: tabular-nums; }
@media (max-width: 760px) { .as-lead { font-size: 19px; line-height: 27px; } }

/* ===== Buttons: outline primary, quiet secondary ===== */
.as-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 20px; border: var(--border-button) solid var(--t-fg); box-shadow: inset 0 0 0 1px var(--t-fg); border-radius: var(--radius-1); background: transparent; color: var(--t-fg); font: 600 16px/1.1 var(--font-text); text-decoration: none; cursor: pointer; transition: background-color .12s, color .12s; }
.as-btn:hover { background: var(--t-fg); color: var(--t-bg); }
.as-btn--quiet { border-color: transparent; box-shadow: none; padding: 0 4px; text-decoration: underline; text-decoration-thickness: 1px; }
.as-btn--quiet:hover { background: none; color: var(--t-fg); text-decoration-thickness: 2px; }
.as-btn--sm { min-height: 42px; font-size: 14.5px; padding: 0 16px; }
.as-btn:disabled { color: var(--t-fg2); border-color: var(--t-ln); box-shadow: none; cursor: default; background: none; }
.as-ctas { display: flex; flex-wrap: wrap; gap: 14px 18px; align-items: center; }
@media (prefers-reduced-motion: reduce) { .as-btn { transition: none; } }

/* ===== Claims: facts upright, plans oblique, every claim with its status word ===== */
.as-tense { font-style: oblique 10deg; }
.as-status { font-style: oblique 10deg; color: var(--t-fg2); font-size: 14.5px; white-space: nowrap; }
.as-pending { border: 1.5px dashed var(--line-strong); border-radius: var(--radius-1); padding: 16px 18px; color: var(--t-fg2); max-width: var(--layout-measure); }
.as-pending b { color: var(--t-fg); }

/* ===== Header ===== */
.as-header { background: var(--ground); color: var(--ink); border-bottom: var(--border-hairline) solid var(--line); }
.as-header__in { display: flex; align-items: center; gap: var(--space-8); min-height: var(--layout-header); }
.as-brand { display: inline-flex; align-items: center; color: inherit; text-decoration: none; flex: none; }
.as-lockup { display: block; height: 22px; width: auto; fill: currentColor; }
.as-mark { display: block; width: 32px; height: 32px; fill: currentColor; }
.as-nav { display: flex; gap: 28px; margin-left: auto; font-size: 15.5px; }
.as-nav a { text-decoration: none; padding-block: 6px; }
.as-nav a:hover { text-decoration: underline; }
.as-nav a[aria-current="page"] { text-decoration: underline; text-decoration-thickness: 2px; text-decoration-color: var(--accent-ink); }
@media (max-width: 880px) {
  .as-header__in { flex-wrap: wrap; gap: 4px 16px; padding-block: 14px 8px; min-height: 0; }
  .as-header .as-btn { margin-left: auto; }
  .as-nav { order: 3; flex-basis: 100%; margin-left: 0; gap: 4px 18px; flex-wrap: wrap; font-size: 15px; }
}

/* ===== Home: poster opening with the Strata device ===== */
.as-hero { position: relative; overflow: hidden; background: var(--t-bg); color: var(--t-fg); padding-block: clamp(48px, 7vw, 112px) calc(clamp(56px, 11vw, 150px) + 56px); }
.as-hero > .as-wrap { position: relative; z-index: 1; }
.as-hero__row { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: var(--layout-gutter); margin-top: clamp(32px, 5vw, 80px); align-items: start; }
.as-hero__status { grid-column: 1 / span 4; display: grid; gap: 12px; font-size: 15px; line-height: 23px; color: var(--t-fg2); }
.as-hero__body { grid-column: 6 / -1; display: grid; gap: 28px; }
@media (max-width: 880px) { .as-hero__status, .as-hero__body { grid-column: 1 / -1; } .as-hero__status { order: 2; } }
.as-strata { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; height: clamp(56px, 11vw, 150px); display: block; }
.as-strata .s1 { fill: var(--strata-1); } .as-strata .s2 { fill: var(--strata-2); } .as-strata .s3 { fill: var(--strata-3); } .as-strata .s4 { fill: var(--accent-ink); } .as-strata .s5 { fill: var(--ink); }
.as-strata-tex { position: absolute; left: 0; right: 0; bottom: 0; height: calc(clamp(56px, 11vw, 150px) * .8); pointer-events: none; opacity: .5; background-image: radial-gradient(color-mix(in srgb, var(--ground) 70%, transparent) .8px, transparent 1.3px), radial-gradient(color-mix(in srgb, var(--ink) 60%, transparent) .7px, transparent 1.2px); background-size: 9px 11px, 13px 7px; background-position: 0 0, 4px 3px; }

/* ===== Inner page head ===== */
.as-pagehead { background: var(--ground); padding-block: clamp(48px, 6vw, 96px) clamp(36px, 4vw, 56px); border-bottom: var(--border-rule) solid var(--ink); }
.as-pagehead .as-wrap { display: grid; gap: 20px; }
.as-pagehead .as-lead { color: var(--ink-muted); }

/* ===== Two-column sections: heading left, content right ===== */
.as-split { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 24px clamp(32px, 5vw, 72px); align-items: start; }
.as-split > :first-child { display: grid; gap: 12px; align-content: start; }
@media (max-width: 880px) { .as-split { grid-template-columns: minmax(0, 1fr); } }
.as-prose { display: grid; gap: 16px; max-width: var(--layout-measure); }
.as-prose ul, .as-prose ol { margin: 0; padding-left: 1.2em; display: grid; gap: 8px; }
.as-prose h3 { margin-top: 12px; }

/* ===== Pillars: quadrants ===== */
.as-quad { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.as-quad__cell { padding: clamp(24px, 4vw, 56px); display: grid; gap: 16px; align-content: start; }
.as-quad__cell:nth-child(1), .as-quad__cell:nth-child(4) { background: var(--ground-alt); }
.as-proof { display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: baseline; font-size: 14.5px; color: var(--t-fg2); }
.as-proof a { color: var(--t-fg); }
@media (max-width: 760px) { .as-quad { grid-template-columns: minmax(0, 1fr); } .as-quad__cell:nth-child(4) { background: none; } .as-quad__cell:nth-child(3) { background: var(--ground-alt); } }

/* ===== Spec sheet ===== */
.as-sheet { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 4vw, 72px); align-items: start; }
.as-sheet__intro { display: grid; gap: 18px; }
.as-facts { list-style: none; padding: 0; margin: 10px 0 0; display: grid; }
.as-facts li { padding-block: 12px; border-top: var(--border-hairline) solid var(--t-ln); }
.as-facts li:first-child { border-top: var(--border-rule) solid var(--t-fg); }
.as-spec { width: 100%; border-collapse: collapse; font-size: 15.5px; }
.as-spec caption { text-align: left; font-weight: 700; padding-bottom: 10px; }
.as-spec th, .as-spec td { text-align: left; padding: 12px 16px 12px 0; border-bottom: var(--border-hairline) solid var(--t-ln); vertical-align: top; }
.as-spec th { font-weight: 500; color: var(--t-fg2); width: 42%; }
.as-spec td { font: 400 14.5px/22px var(--font-mono); font-variant-numeric: tabular-nums; }
.as-src { font: 400 13px/19px var(--font-mono); color: var(--t-fg2); margin-top: 12px; }
.as-scroll { overflow-x: auto; }
@media (max-width: 880px) { .as-sheet { grid-template-columns: minmax(0, 1fr); } }

/* ===== Claims table ===== */
.as-table { width: 100%; border-collapse: collapse; }
.as-table th, .as-table td { text-align: left; padding: 14px 18px 14px 0; border-bottom: var(--border-hairline) solid var(--t-ln); vertical-align: baseline; }
.as-table thead th { font-size: 13px; font-weight: 600; color: var(--t-fg2); border-bottom: var(--border-rule) solid var(--t-fg); }
.as-table tbody th { font-weight: 500; color: var(--t-fg2); width: 22%; }
.as-table td:last-child { width: 9em; }
@media (max-width: 640px) {
  .as-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .as-table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 16px; padding-block: 14px; border-bottom: var(--border-hairline) solid var(--t-ln); }
  .as-table tbody th, .as-table td { padding: 0; border: 0; width: auto; }
  .as-table tbody th { grid-column: 1 / -1; font-size: 14px; }
  .as-table td:last-child { width: auto; text-align: right; }
}

/* ===== Claim lists inside a split section ===== */
.as-claims { list-style: none; padding: 0; margin: 0; display: grid; max-width: var(--layout-measure); }
.as-claims li { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 4px 20px; padding-block: 12px; border-top: var(--border-hairline) solid var(--t-ln); }
.as-claims li:last-child { border-bottom: var(--border-hairline) solid var(--t-ln); }

/* ===== Steps and paths (true sequences) ===== */
.as-steps-t { font-weight: 700; margin: 0 0 8px; }
.as-path { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 18px; position: relative; margin: 8px 0 56px; }
.as-path::before { content: ""; position: absolute; top: 8px; left: 0; right: 0; height: 2px; background: var(--t-ln); }
.as-path li { position: relative; padding-top: 34px; display: grid; gap: 4px; align-content: start; }
.as-path li::before { content: ""; position: absolute; top: 2px; left: 0; width: 14px; height: 14px; background: var(--t-bg); border: 2px solid var(--t-fg); border-radius: var(--radius-1); }
.as-path li:first-child::before { background: var(--t-link); border-color: var(--t-link); }
.as-path span { color: var(--t-fg2); font-size: 15px; }
.as-who3 { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.as-who3 li { display: grid; gap: 6px; align-content: start; }
@media (max-width: 820px) { .as-path { grid-template-columns: minmax(0, 1fr); gap: 22px; } .as-path::before { top: 0; bottom: 0; left: 7px; right: auto; width: 2px; height: auto; } .as-path li { padding: 0 0 0 34px; } .as-path li::before { top: 4px; } .as-who3 { grid-template-columns: minmax(0, 1fr); } }
.as-steps { list-style: none; padding: 0; margin: 0; display: grid; max-width: var(--layout-measure); counter-reset: step; }
.as-steps li { display: grid; grid-template-columns: 2.4em minmax(0, 1fr); gap: 12px; padding-block: 14px; border-top: var(--border-hairline) solid var(--t-ln); counter-increment: step; }
.as-steps li::before { content: counter(step); font-family: var(--font-display); font-weight: 560; font-stretch: 130%; color: var(--t-link); font-variant-numeric: tabular-nums; }
.as-steps li:last-child { border-bottom: var(--border-hairline) solid var(--t-ln); }
.as-steps b { display: block; }
.as-steps span { color: var(--t-fg2); }

/* ===== Services ===== */
.as-service + .as-service { margin-top: clamp(36px, 5vw, 56px); padding-top: clamp(36px, 5vw, 56px); border-top: var(--border-hairline) solid var(--t-ln); }

/* ===== Contact ===== */
.as-contacts { margin: 0; display: grid; max-width: 44rem; }
.as-contacts div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 24px; padding-block: 16px; border-top: var(--border-hairline) solid var(--line); align-items: baseline; }
.as-contacts div:last-child { border-bottom: var(--border-hairline) solid var(--line); }
.as-contacts dt { color: var(--ink-muted); }
.as-contacts dd { margin: 0; font: 400 15.5px/24px var(--font-mono); }
@media (max-width: 640px) { .as-contacts div { grid-template-columns: minmax(0, 1fr); } }

/* ===== Closing request: ruled, in the band ===== */
.as-close { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 28px 48px; align-items: end; border-top: var(--border-rule) solid var(--t-fg); padding-top: clamp(28px, 4vw, 56px); }
.as-close__side { display: grid; gap: 24px; justify-items: start; }
@media (max-width: 820px) { .as-close { grid-template-columns: minmax(0, 1fr); } }

/* ===== Footer ===== */
.as-footer { background: var(--ground-alt); color: var(--ink); padding-block: 56px 40px; font-size: 14.5px; }
.as-footer__grid { display: grid; grid-template-columns: minmax(0, 4fr) repeat(3, minmax(0, 2fr)); gap: 32px; }
.as-footer__brand { display: grid; gap: 14px; align-content: start; justify-items: start; }
.as-footer h2 { font: 700 14.5px/1.4 var(--font-text); margin: 0 0 12px; }
.as-footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 7px; }
.as-footer a { text-decoration: none; }
.as-footer a:hover { text-decoration: underline; }
.as-footer__base { margin-top: 48px; padding-top: 20px; border-top: var(--border-hairline) solid var(--line); display: grid; gap: 8px; color: var(--ink-muted); font-size: 13px; }
@media (max-width: 880px) { .as-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .as-footer__grid { grid-template-columns: minmax(0, 1fr); } }

/* ===== Forms ===== */
.as-req { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.as-req > div:first-child { display: grid; gap: 32px; align-content: start; }
@media (max-width: 960px) { .as-req { grid-template-columns: minmax(0, 1fr); } }
.as-form { display: grid; gap: 44px; }
.as-fieldset { border: 0; padding: 0; margin: 0; display: grid; gap: 22px; min-width: 0; }
.as-legend { display: block; width: 100%; font-size: 22px; line-height: 27px; letter-spacing: .03em; padding: 0 0 12px; margin-bottom: 22px; border-bottom: var(--border-rule) solid var(--ink); }
.as-field { display: grid; gap: 8px; align-content: start; min-width: 0; border: 0; padding: 0; margin: 0; }
.as-label { font-weight: 600; font-size: 15.5px; padding: 0; }
.as-opt { font-weight: 400; color: var(--ink-muted); }
.as-hint { color: var(--ink-muted); font-size: 14px; line-height: 20px; }
.as-input { font: inherit; font-size: 16px; color: var(--ink); background: var(--surface); border: var(--border-control) solid var(--line-strong); border-radius: var(--radius-1); padding: 12px 14px; width: 100%; min-height: 50px; }
textarea.as-input { min-height: 140px; resize: vertical; }
.as-input[aria-invalid="true"] { border-color: var(--error); box-shadow: inset 0 0 0 1px var(--error); }
.as-err { color: var(--error); font-weight: 600; font-size: 14.5px; }
.as-err::before { content: "! "; font-weight: 800; }
.as-check { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; align-items: start; cursor: pointer; }
.as-check input { width: 22px; height: 22px; margin: 2px 0 0; accent-color: var(--ink); }
.as-check input[aria-invalid="true"] { outline: 2px solid var(--error); outline-offset: 2px; }
.as-choices { display: flex; flex-wrap: wrap; gap: 10px; }
.as-choice { display: inline-flex; align-items: center; gap: 8px; border: var(--border-control) solid var(--line-strong); border-radius: var(--radius-1); padding: 10px 14px; min-height: 46px; cursor: pointer; background: var(--surface); }
.as-choice input { accent-color: var(--ink); width: 18px; height: 18px; margin: 0; }
.is-invalid .as-choice { border-color: var(--error); }
legend.as-label { margin-bottom: 8px; }
.as-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
@media (max-width: 700px) { .as-two { grid-template-columns: minmax(0, 1fr); } }
.as-hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.as-notice { border: var(--border-rule) solid var(--ink); border-radius: var(--radius-1); padding: 20px 22px; display: grid; gap: 8px; background: var(--surface); }
.as-notice--error { border-color: var(--error); }
.as-notice h2 { font: 560 22px/27px var(--font-display); font-stretch: 130%; text-transform: uppercase; letter-spacing: .03em; margin: 0; }
.as-notice ul { margin: 0; padding-left: 1.2em; }
.as-notice .as-caption { color: var(--ink-muted); }
.as-aside { display: grid; gap: 14px; padding: 22px; background: var(--surface); border-top: var(--border-rule) solid var(--ink); }
@media (min-width: 961px) { .as-aside { position: sticky; top: 24px; } }
.as-formfoot { display: grid; gap: 16px; justify-items: start; }
.as-notice:focus, .as-req [tabindex="-1"]:focus { outline: none; }
.as-notice:focus-visible { outline: 3px solid var(--accent-ink); outline-offset: 3px; }
.as-aside ol { margin: 0; padding: 0; list-style: none; display: grid; gap: 10px; counter-reset: next; }
.as-aside li { display: grid; grid-template-columns: 1.6em minmax(0, 1fr); gap: 8px; counter-increment: next; }
.as-aside li::before { content: counter(next); font-weight: 700; color: var(--accent-ink); font-variant-numeric: tabular-nums; }

/* ===== Legal reading template ===== */
.as-legal { max-width: var(--layout-measure); display: grid; gap: 18px; }
.as-legal h2 { margin-top: 18px; }
.as-legal ul { margin: 0; padding-left: 1.2em; display: grid; gap: 6px; }
.as-legal ul.as-cols { display: block; columns: 3 15ch; column-gap: 32px; }
.as-cols li { break-inside: avoid; margin-bottom: 6px; }
.as-dl { margin: 0; display: grid; }
.as-dl div { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 4px 24px; padding-block: 12px; border-top: var(--border-hairline) solid var(--line); }
.as-dl div:last-child { border-bottom: var(--border-hairline) solid var(--line); }
.as-dl dt { color: var(--ink-muted); }
.as-dl dd { margin: 0; }
@media (max-width: 640px) { .as-dl div { grid-template-columns: minmax(0, 1fr); } }

/* ===== 404 ===== */
.as-404 { min-height: 60vh; display: grid; place-items: center; text-align: center; padding-block: 96px; }
.as-404 > div { display: grid; gap: 20px; justify-items: center; }
.as-404 .as-mark { width: 64px; height: 64px; }

/* ===== Small layout helpers ===== */
.as-titlerow { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; }
.as-stack { display: grid; gap: clamp(40px, 6vw, 72px); }
main:focus { outline: none; }

/* ===== Review marks: preview and staging builds only. `build.py --strict` refuses any page that still has one. ===== */
.as-tbc { text-decoration-line: underline; text-decoration-style: dashed; text-decoration-color: var(--t-link); text-decoration-thickness: 1.5px; text-underline-offset: .22em; }
.as-tbc::after { content: attr(data-q); display: inline-block; margin-left: 4px; padding: 0 3px; border: 1px solid currentColor; border-radius: var(--radius-1); font: 600 10px/13px var(--font-mono); font-stretch: 100%; letter-spacing: 0; text-transform: none; vertical-align: 2px; color: var(--t-link); }
.as-preview { --t-fg: var(--on-band); --t-fg2: var(--on-band-muted); --t-ln: var(--line-on-band); --t-link: var(--accent-on-band); background: var(--band); color: var(--on-band); font-size: 13.5px; line-height: 20px; border-bottom: var(--border-hairline) solid var(--line-on-band); }
.as-preview__in { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 24px; padding-block: 9px; }
.as-preview b { font-weight: 600; }
.as-preview summary { cursor: pointer; text-decoration: underline; text-underline-offset: .2em; }
.as-preview details[open] { flex-basis: 100%; }
.as-preview ul { list-style: none; padding: 10px 0 4px; margin: 0; display: flex; flex-wrap: wrap; gap: 6px 20px; }
.as-preview a { color: var(--on-band); }
.as-preview a[aria-current="page"] { color: var(--accent-on-band); }

@media print {
  .as-header nav, .as-header .as-btn, .as-strata, .as-strata-tex, .as-skip { display: none; }
  .as-band { --t-bg: #fff; --t-fg: #000; --t-fg2: #333; --t-ln: #999; }
}
