/* Static site base stylesheet — hot-keys template.
   Structure only: layout, responsive behavior, components. The token block
   below is a NEUTRAL PLACEHOLDER — replace its values with this site's
   visual tokens from the approved visual system (e.g. 02-design/.../visual-r3/
   tokens_*.css) and add any per-site visual rules after the tokens block.
   Class hooks consumed by check-geo.mjs / capture.cjs must survive. */

:root{
  /* ==== Heroes' Vow: Three Kingdoms — ink-gold dark theme ====
     Source: 02-design/20260924-heroes-vow-three-kingdoms/tokens_Heroes-Vow-Three-Kingdoms.css
     Values copied verbatim; the engine-hook aliases below map the generic
     class hooks used by base.css/build.mjs onto these site tokens. */
  --surface-page: #14120f;
  --surface-raised: #1e1a16;
  --surface-sunken: #0c0b09;
  --ink-primary: #f2ead9;
  --ink-secondary: #cbbca4;
  --ink-muted: #9a8f7d;
  --brand: #c9a227;
  --brand-hover: #dcb948;
  --brand-ink: #20180a;
  --brand-text: #e0c073;
  --accent: #c4482f;
  --state-verified: #7fb894;
  --state-pending: #d9a441;
  --state-absent: #a09585;
  --border-strong: #7d6e54;
  --border: #3a3228;
  --font-display: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
  --font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  --fs-hero: clamp(2.35rem, 7.4vw, 5.25rem);
  --fs-h1: clamp(1.95rem, 4.6vw, 3rem);
  --fs-h2: clamp(1.35rem, 2.5vw, 1.75rem);
  --fs-h3: 1.15rem;
  --fs-body: 1rem;
  --fs-sm: 0.9rem;
  --fs-xs: 0.8rem;
  --fs-eyebrow: 0.78rem;
  --lh-hero: 1.04;
  --lh-h1: 1.12;
  --lh-body: 1.72;
  --ls-eyebrow: 0.16em;
  --ls-tight: -0.012em;
  --sp-1: 0.25rem; --sp-2: 0.5rem; --sp-3: 0.75rem; --sp-4: 1rem;
  --sp-5: 1.5rem; --sp-6: 2rem; --sp-7: 3rem; --sp-8: 4.5rem;
  --width-prose: 44rem;
  --width-shell: 76rem;
  --width-wide: 88rem;
  --radius-sm: 3px;
  --radius-md: 6px;
  --radius-pill: 999px;
  --tap-min: 44px;
  --rule: 1px solid var(--border);
  --shadow-panel: 0 1px 0 0 #00000066, 0 12px 32px -18px #000000cc;
  /* ==== engine hooks ==== */
  --bg: var(--surface-page);
  --surface: var(--surface-raised);
  --ink: var(--ink-primary);
  --container: var(--width-shell);
  --radius: var(--radius-md);
  --space-section: var(--sp-8);
  /* ==== end token placeholder ==== */
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 var(--font-body)}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}a:focus-visible,summary:focus-visible,.table-wrap:focus-visible{outline:3px solid var(--brand);outline-offset:3px}img{max-width:100%}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--brand);color:var(--brand-ink);padding:10px 16px;z-index:99}.skip-link:focus{left:12px;top:12px}
header{max-width:var(--container);margin:auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:24px 0;border-bottom:1px solid var(--border)}.brand{font-weight:800;line-height:1.1;font-size:20px}.brand small{display:block;font-weight:500;font-size:10px;letter-spacing:3px;margin-top:6px}nav{display:flex;gap:28px;font-size:13px;font-weight:600}nav a{padding:10px 0}
header [data-language-switcher]{flex-basis:100%;justify-content:flex-end;gap:12px;flex-wrap:wrap}header [data-language-switcher] [aria-current="page"]{text-decoration:underline}
.wrap{max-width:var(--container);margin:auto}

/* ---- home ---- */
.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:center;padding:48px 0}.eyebrow{font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase}.hero h1{font:800 clamp(48px,6vw,88px)/1.02 var(--font-display);letter-spacing:-3px;margin:22px 0}.hero p{max-width:510px;line-height:1.75;color:var(--ink-muted);margin:22px 0}.buttons{display:flex;flex-wrap:wrap;gap:10px}.btn{display:inline-flex;min-height:48px;align-items:center;padding:12px 20px;border:1px solid var(--brand);border-radius:8px;font-size:13px;font-weight:700}.btn.primary{background:var(--brand);color:var(--brand-ink)}.btn:hover{transform:translateY(-1px);text-decoration:none}
.section{padding:var(--space-section) 0}.heading{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:32px}h2{font-size:34px;letter-spacing:-1.2px;line-height:1.15;margin:10px 0 0}h3{font-size:22px;margin:12px 0 10px}.tasks{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.task{display:block;border-top:2px solid var(--brand);padding:24px 0 0}.task:hover{text-decoration:none}.task:hover h3{text-decoration:underline}.task-num{font:12px var(--font-mono);color:var(--ink-muted)}.task p{font-size:14px;color:var(--ink-muted);max-width:310px}.task .arrow{display:block;font-size:26px;margin-top:20px}
details{border-bottom:1px solid var(--border);padding:20px 0}summary{font-size:18px;font-weight:700;cursor:pointer;min-height:44px;list-style:none;display:flex;gap:20px;align-items:center;justify-content:space-between}summary:after{content:'+';font-size:26px}details[open] summary:after{content:'−'}details p{max-width:850px;color:var(--ink-muted)}

/* ---- footer ---- */
footer{margin-top:40px;background:var(--ink);color:var(--surface);padding:50px 0}footer .wrap{display:grid;grid-template-columns:1.5fr 1fr;gap:80px}footer p{font-size:12px;max-width:580px}footer nav{flex-wrap:wrap;gap:12px 24px}footer a{text-decoration:underline}

/* ---- article pages ---- */
.article{max-width:1000px;margin:auto;padding:50px 0 80px}.crumb{font-size:12px}.article h1{font-size:52px;line-height:1.08;letter-spacing:-2px;max-width:750px;margin:28px 0}.article .lead{font-size:21px;max-width:760px;line-height:1.55}.byline{font-size:12px;color:var(--ink-muted);margin:20px 0 8px}.article h2{font-size:28px;margin:42px 0 20px}.article h3{font-size:21px;margin:30px 0 12px}.article p{max-width:760px}.article ol,.article ul{max-width:720px}.article li{margin:8px 0}
.table-wrap{overflow-x:auto;border-bottom:1px solid var(--border)}table{border-collapse:collapse;width:100%;min-width:620px;text-align:left;font-size:15px}th{font-size:11px;text-transform:uppercase;letter-spacing:1px;background:var(--surface-sunken);position:sticky;top:0}td,th{padding:20px 16px;border-bottom:1px solid var(--border);vertical-align:top}td{font-variant-numeric:tabular-nums}
.scroll-hint{display:none}
.related{border-top:1px solid var(--border);margin-top:48px;padding-top:24px}.related h2{font-size:22px;margin:0 0 14px}.related ul{list-style:none;padding:0;margin:0;display:grid;gap:10px}.related a{display:inline-block;border-top:2px solid var(--brand);padding-top:10px;min-height:44px;font-weight:700}
.sources{margin-top:28px;font-size:13px}.sources h2{font-size:13px;letter-spacing:1px;text-transform:uppercase;margin:0 0 10px}.sources ul{margin:0;padding-left:18px}.sources li{margin:4px 0}.sources a{text-decoration:underline}
.article.trust{max-width:780px}.article.trust h1{font-size:44px}
blockquote.callout{margin:28px 0;padding:18px 20px;border-left:4px solid var(--brand);border-radius:var(--radius);background:var(--surface-sunken);max-width:760px}

/* ---- consent choices entry point + section ---- */
.consent-settings-button{margin-top:16px;padding:12px 18px;min-height:48px;border:1px solid var(--border);border-radius:8px;background:transparent;color:inherit;font:600 13px var(--font-body);cursor:pointer}
footer .consent-settings-button{width:100%;text-align:left}
.consent-choices{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin:28px 0 34px;padding:22px 24px}
.consent-choices h2{font-size:20px;margin:0 0 8px}
.consent-choices p{font-size:14px;color:var(--ink-muted);margin:0}

/* ---- mandatory-choice page lock (site-ads.md §6) ----
   tarteaucitron's own overlay blocks pointer events; these rules additionally
   stop the background from scrolling (wheel, touch and keyboard) until the
   visitor has picked accept or reject. */
html.consent-choice-required,
body.consent-choice-required {
  overflow: hidden !important;
  overscroll-behavior: none;
}
body.consent-choice-required{
  position:fixed;
  inset:0;
  width:100%;
}

/* ---- self-hosted consent dialog ---- */
html body #tarteaucitronRoot #tarteaucitronAlertBig{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--ink);box-shadow:0 24px 90px rgba(0,0,0,.45);font-family:var(--font-body)}
html body #tarteaucitronRoot.tarteaucitronSize-middle.tarteaucitronBeforeVisible::before{background:rgba(8,10,12,.82) !important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);pointer-events:auto}
html body #tarteaucitronRoot.tarteaucitronSize-middle #tarteaucitronAlertBig{box-sizing:border-box !important;width:min(700px,calc(100% - 48px)) !important;min-width:0 !important;max-width:700px !important;max-height:calc(100dvh - 48px);padding:clamp(30px,4.6vw,48px) !important;overflow-y:auto;border-radius:var(--radius)}
html body #tarteaucitronRoot.tarteaucitronSize-middle #tarteaucitronAlertBig::before{display:block;margin-bottom:18px;color:var(--ink);font-family:var(--font-display);font-size:clamp(29px,4.4vw,42px);font-weight:800;line-height:1.05;letter-spacing:-1px;text-align:center}
html body #tarteaucitronRoot.tarteaucitronSize-middle #tarteaucitronDisclaimerAlert{display:block;max-width:58ch;margin:0 auto 26px;padding:0;color:var(--ink);font-size:18px;line-height:1.6;text-align:center}
html body #tarteaucitronRoot #tarteaucitronAlertBig button.tarteaucitronCTAButton{min-height:48px;padding:13px 18px !important;border-radius:8px;border:1px solid var(--brand);background:var(--brand);color:var(--brand-ink);font:700 15px/1.3 var(--font-body);cursor:pointer}
html body #tarteaucitronRoot #tarteaucitronAlertBig #tarteaucitronAllDenied2{border:1px solid var(--border);background:var(--surface-sunken);color:var(--ink)}
/* Pre-script fallback: the Personalize control is removed at runtime and the
   privacy control is replaced by a real link, so neither can flash as a
   third button. */
html body #tarteaucitronRoot #tarteaucitronCloseAlert,
html body #tarteaucitronRoot #tarteaucitronPersonalize,
html body #tarteaucitronRoot #tarteaucitronPrivacyUrl,
html body #tarteaucitronRoot #tarteaucitronPrivacyUrlDialog{display:none !important}
html body #tarteaucitronRoot [data-consent-privacy-link]{display:block;width:fit-content;margin:16px auto 0;color:var(--ink-muted);font-size:13px;line-height:1.4;text-align:center;text-decoration:underline;text-underline-offset:3px}
html body #tarteaucitronRoot [data-consent-privacy-link]:focus-visible{outline:3px solid var(--brand);outline-offset:3px}

/* ---- inert advertising placeholder (site-ads.md §4) ----
   Fixed min-height in both breakpoints, never wider than the viewport, and
   wrapping ids/urls/status copy so a blocked or empty ad keeps the layout
   stable. */
.ad-slot{--ad-slot-height:120px;display:grid;place-items:center;gap:6px;min-height:var(--ad-slot-height);margin:32px 0;padding:14px;overflow:hidden;border:1px dashed var(--border);border-radius:var(--radius);background:var(--surface-sunken);color:var(--ink-muted);text-align:center}
.ad-slot--banner{--ad-slot-height:96px;width:100%}
.ad-slot--rectangle{--ad-slot-height:280px;width:min(100%,360px);margin-right:auto;margin-left:auto}
.ad-slot-label{font:700 11px/1.4 var(--font-mono);letter-spacing:2px;text-transform:uppercase}
.ad-consent-note{margin:0;max-width:38ch;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.ad-slot-body{width:100%;overflow-wrap:anywhere}
.ad-slot-body iframe,.ad-slot-body img,.ad-slot-body ins{max-width:100%}
/* The "Ad" marker always stays visible; only the status copy is retired once
   the network script has actually loaded. No creative is ever claimed. */
.ad-slot[data-ad-state="loaded"] > .ad-consent-note{display:none}
.ad-slot[data-ad-state="error"]{border-style:solid;border-color:var(--border)}

/* ---- responsive ---- */
@media(max-width:1260px){.wrap,header{margin-left:28px;margin-right:28px}.article{margin:0 40px}}
@media(max-width:760px){
  html body #tarteaucitronRoot.tarteaucitronSize-middle #tarteaucitronAlertBig{width:calc(100% - 20px) !important;max-height:calc(100dvh - 20px);padding:26px 14px 20px !important}
  html body #tarteaucitronRoot.tarteaucitronSize-middle #tarteaucitronAlertBig::before{margin-bottom:14px;font-size:clamp(25px,8vw,34px)}
  html body #tarteaucitronRoot.tarteaucitronSize-middle #tarteaucitronDisclaimerAlert{margin-bottom:20px;font-size:16px;line-height:1.5}
  html body #tarteaucitronRoot.tarteaucitronSize-middle #tarteaucitronAlertBig button{width:100% !important;margin:0 0 10px !important}
  .ad-slot{margin:26px 0;padding:12px}
  .ad-slot--rectangle{--ad-slot-height:250px}
}
@media(max-width:700px){
  header{display:block;padding:16px 0 8px}header nav{display:flex;max-width:none;justify-content:space-between;gap:8px;margin-top:15px;flex-wrap:wrap}header [data-language-switcher]{justify-content:flex-start}header nav a{min-height:44px;padding:11px 0}
  .wrap,header{margin-left:20px;margin-right:20px}
  .hero{grid-template-columns:1fr;gap:30px;padding:36px 0}.hero h1{font-size:44px}
  .section{padding:52px 0}h2{font-size:28px}.tasks{grid-template-columns:1fr;gap:22px}.task p{max-width:none}
  footer .wrap{grid-template-columns:1fr;gap:20px}footer nav{max-width:none;justify-content:start}
  .article{margin:0 20px;padding-top:30px}.article h1{font-size:36px}.article .lead{font-size:18px}.article h2{font-size:25px}.scroll-hint{display:block;font-size:12px}
  .article.trust h1{font-size:34px}
}

/* ==========================================================================
   Per-site visual rules — Heroes' Vow: Three Kingdoms (ink-gold).
   Appended after the token block; engine structural rules above are unchanged.
   ========================================================================== */

/* ---- masthead / footer on the dark surface ---- */
header{border-bottom-color:var(--border)}
.brand{font-family:var(--font-display);letter-spacing:.01em}
footer{background:var(--surface-sunken);color:var(--ink-secondary);border-top:1px solid var(--border)}
footer a{color:var(--ink-primary)}

/* ---- hero (centred, per the approved preview) ---- */
.hero{display:block;text-align:center;padding:var(--sp-8) 0 var(--sp-7)}
.hero .eyebrow{display:flex;justify-content:center;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin:0 0 var(--sp-5);color:var(--brand-text)}
/* The engine's `.hero h1{font:800 clamp(48px,6vw,88px)/1.02 ...}` shorthand sets
   a 48px floor. Left alone it wins over the token, and at 390px the second
   display line ("Three Kingdoms") wraps to two lines — the exact defect the
   approved token file records and fixes with --fs-hero's 2.35rem lower bound. */
.hero h1{font-family:var(--font-display);font-size:var(--fs-hero);line-height:var(--lh-hero);font-weight:700;letter-spacing:var(--ls-tight);margin:0;max-width:none}
.hero__title span{display:block}
.hero__title-em{background-image:linear-gradient(96deg,var(--brand-text) 0%,var(--brand) 46%,var(--accent) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{max-width:var(--width-prose);margin:var(--sp-5) auto 0;color:var(--ink-secondary);font-size:1.0625rem}
.buttons{justify-content:center;margin-top:var(--sp-6)}
.eyebrow__item{white-space:nowrap}
.eyebrow__dia{color:var(--brand);font-size:.6rem}
.vstamp{margin:var(--sp-4) 0 0;font:600 var(--fs-xs)/1.3 var(--font-mono);letter-spacing:.02em;color:var(--ink-muted)}

/* ---- buttons ---- */
.btn{border-radius:var(--radius-pill);border-color:var(--border-strong);color:var(--brand-text)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}
.btn.primary:hover{background:var(--brand-hover)}

/* ---- facts strip ---- */
.facts{background:var(--surface-raised);border:var(--rule);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);margin-top:var(--sp-7)}
.facts__grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--border)}
.facts__cell{background:var(--surface-raised);padding:var(--sp-4) var(--sp-4) var(--sp-5)}
.facts__value{display:block;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:1.3rem;line-height:1.25;color:var(--ink-primary)}
.facts__label{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-2);font:600 var(--fs-xs)/1.3 var(--font-mono);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--ink-muted)}
.facts__unit{white-space:nowrap}
.facts__srcs{display:flex;flex-wrap:wrap;gap:var(--sp-4);margin-top:var(--sp-2);font-size:var(--fs-xs)}
.facts__srcs a{color:var(--brand-text);text-decoration:underline}
.facts__asof{margin:var(--sp-3) 0 0;font-size:var(--fs-xs);color:var(--ink-muted)}

/* ---- overview cards ---- */
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-5)}
.card{background:var(--surface-raised);border:var(--rule);border-radius:var(--radius-md);padding:var(--sp-5)}
.card__n{font:600 var(--fs-xs)/1 var(--font-mono);letter-spacing:var(--ls-eyebrow);color:var(--brand);text-transform:uppercase}
.card__t{margin:var(--sp-3) 0 var(--sp-2);font:600 var(--fs-h3)/1.3 var(--font-body);color:var(--ink-primary)}
.card p{margin:0;font-size:var(--fs-sm);color:var(--ink-secondary)}

/* ---- about module (sunken well, per the approved preview) ---- */
.about{background:var(--surface-sunken);border:var(--rule);border-radius:var(--radius-md);padding:var(--sp-6)}
.about__title{margin:0 0 var(--sp-5);font:650 var(--fs-h2)/1.25 var(--font-body);color:var(--ink-primary)}
.about__grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--sp-6);align-items:start}
.about__body{min-width:0}
.about__p{margin:0 0 var(--sp-4);max-width:var(--width-prose);font-size:var(--fs-sm);color:var(--ink-secondary)}
.about__p:last-child{margin-bottom:0}
.spec{list-style:none;margin:0;padding:0;border-top:var(--rule)}
.spec li{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-4);padding:var(--sp-3) 0;border-bottom:var(--rule)}
.spec__k{font:600 var(--fs-xs)/1.3 var(--font-mono);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--ink-muted)}
.spec__v{min-width:0;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-primary);text-align:right;overflow-wrap:anywhere}
.about__note{margin:var(--sp-5) 0 0;font-size:var(--fs-xs);color:var(--ink-muted)}
.about__cta{margin:var(--sp-4) 0 0;font:600 var(--fs-sm)/1.5 var(--font-body)}
.about__cta a{color:var(--brand-text);text-decoration:underline}

/* ---- status: verdict + issues ---- */
.verdict{background:var(--surface-raised);border-left:4px solid var(--brand);border-radius:var(--radius-md);padding:var(--sp-5)}
.verdict__line{margin:0;font-family:var(--font-display);font-size:clamp(1.25rem,2.4vw,1.7rem);line-height:1.32;color:var(--ink-primary);max-width:30ch}
.verdict__detail{margin:var(--sp-4) 0 0;font-size:var(--fs-sm);color:var(--ink-secondary)}
.issues{list-style:none;margin:var(--sp-5) 0 0;padding:0;display:grid;gap:var(--sp-4)}
.issue{background:var(--surface-raised);border:var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius-sm);padding:var(--sp-5)}
.issue--lead{grid-column:1/-1}
.issue--verified{border-left-color:var(--state-verified)}
.issue--pending{border-left-color:var(--state-pending)}
.issue--absent{border-left-color:var(--state-absent)}
.issue__head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2) var(--sp-3);margin:0}
.issue__t{margin:0;font-weight:600;font-size:var(--fs-h3);color:var(--ink-primary)}
.issue__meta{margin:var(--sp-2) 0 0;font-size:var(--fs-sm);color:var(--ink-secondary)}
.trigger{margin:var(--sp-3) 0 0;border-left:2px solid var(--accent);background:var(--surface-sunken);padding:var(--sp-3) var(--sp-4);color:var(--ink-secondary);font-size:var(--fs-sm)}
.trigger__key{display:block;font:600 var(--fs-xs)/1.2 var(--font-mono);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--accent);margin-bottom:var(--sp-1)}
.stamp{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:1px solid currentColor;border-radius:var(--radius-sm);font:500 .75rem/1 var(--font-mono);letter-spacing:.04em}
.stamp>span{white-space:nowrap}
.stamp--verified{color:var(--state-verified)}
.stamp--pending{color:var(--state-pending)}
.stamp--absent{color:var(--state-absent)}
.nowrap{white-space:nowrap}

/* ---- publisher / footer link groups ---- */
.publisher__list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.publisher__list li{min-width:0}

/* ---- article pages ---- */
.article h1{font-family:var(--font-display);font-weight:700;max-width:none}
.article .lead{color:var(--ink-secondary)}
.byline{color:var(--ink-muted)}
thead th{background:var(--surface-sunken);color:var(--ink-secondary)}
td,th{border-bottom-color:var(--border)}
code{font-family:var(--font-mono);font-size:.9em;color:var(--brand-text)}

@media (max-width:1023px){
  .about__grid{grid-template-columns:minmax(0,1fr)}
  .cards{grid-template-columns:minmax(0,1fr)}
  .facts__grid{grid-template-columns:repeat(2,1fr)}
  .facts__cell:last-child{grid-column:1/-1}
}
@media (max-width:767px){
  .hero{padding:var(--sp-7) 0 var(--sp-6)}
  .hero__title{letter-spacing:0}
  .eyebrow__dia{display:none}
  .about{padding:var(--sp-5)}
  .spec li{flex-direction:column;gap:var(--sp-1)}
  .spec__v{text-align:left}
  .publisher__list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--sp-4)}
  .stamp{flex-wrap:wrap}
}


/* ---- home: shell, section headings, masthead brand, FAQ, publisher ---- */
.wrap{padding:0 var(--sp-5)}
.brand{display:inline-flex;align-items:center;gap:var(--sp-3)}
.brand__seal{width:34px;height:34px;flex:none;color:var(--brand)}
.brand__txt{font-family:var(--font-mono);font-size:14px;font-weight:600;letter-spacing:.01em}
.brand__txt small{display:block;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted);margin-top:3px}
.sec__h2{margin:0 0 var(--sp-4);font:650 var(--fs-h2)/1.25 var(--font-body);letter-spacing:-.005em;color:var(--ink-primary)}
.section .eyebrow{margin:0 0 var(--sp-3)}
.section .lead{max-width:var(--width-prose);font-size:1.0625rem;color:var(--ink-secondary)}
.stamp__src{color:inherit;text-decoration:underline}
.faq details>p{padding-left:calc(1em + var(--sp-3))}
.faq__date{font:500 var(--fs-xs)/1 var(--font-mono);color:var(--ink-muted);white-space:nowrap}
.faq summary span:first-child{min-width:0}
footer.publisher .wrap{display:block;padding:0 var(--sp-5)}
.publisher__grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:var(--sp-6)}
.publisher h2{font:600 var(--fs-xs)/1.3 var(--font-mono);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--ink-muted);margin:0 0 var(--sp-3)}
.publisher strong{display:block;margin:0 0 var(--sp-3);font-family:var(--font-display);font-size:var(--fs-h3);color:var(--ink-primary)}
.publisher p{margin:0 0 var(--sp-3);font-size:var(--fs-sm);color:var(--ink-secondary)}
.publisher ul{list-style:none;margin:0;padding:0}
.publisher li{font-size:var(--fs-sm);min-width:0}
.publisher__list a{color:var(--ink-primary)}

@media (max-width:1023px){
  .publisher__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:767px){
  .cards{grid-template-columns:minmax(0,1fr)}
  .publisher__grid{grid-template-columns:minmax(0,1fr)}
  .faq__date{display:block;margin-top:var(--sp-1)}
}
