/* ============================================================
   LocSignal — shared stylesheet for the pSEO content pages.
   Generated pages (market / hub / manager / explainer) all reference this
   ONE cacheable file. Tokens + shared devices are lifted byte-for-byte from
   index.html's inline <style> so the content pages read as the same instrument;
   the content-page components below (breadcrumb, rule rows, facts strip, hub
   list, freshness line, CTA blocks) extend that vocabulary — they never
   redefine a token.

   FONTS — self-hosted OFL-1.1 woff2 under /fonts/ (same set the homepage uses):
     Barlow Semi Condensed (display) · IBM Plex Sans (body) · IBM Plex Mono (labels/figures).
   Content pages carry ZERO external JS (the only inline script is the theme
   toggle) — the language switcher is a real <a href>, not a script.
   ============================================================ */

/* ---- self-hosted fonts (root-absolute so they resolve from every /fr/*, /en/* depth) ---- */
@font-face{font-family:"Barlow Semi Condensed";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/barlow-semicondensed-600.woff2") format("woff2")}
@font-face{font-family:"Barlow Semi Condensed";font-style:normal;font-weight:700;font-display:swap;src:url("/fonts/barlow-semicondensed-700.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/ibm-plex-sans-400.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/ibm-plex-sans-600.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/ibm-plex-mono-400.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/ibm-plex-mono-600.woff2") format("woff2")}

/* ---- reset-ish (identical to homepage) ---- */
*,*::before,*::after{box-sizing:border-box}
html{ -webkit-text-size-adjust:100%; overflow-x:clip }
body{margin:0}
img,svg{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
a{color:inherit}
:where(h1,h2,h3,h4,p,ul,ol,figure,blockquote){margin:0}

/* ---- tokens: light default; dark via media + [data-theme] (identical to homepage) ---- */
:root{
  --ground:#EBF0EE; --ground-2:#F5F8F6; --ground-3:#DDE6E2;
  --hair:#CAD7D2; --hair-2:#B2C4BE;
  --ink:#0C1618; --ink-2:#3B4F4C; --ink-3:#586A66;
  --signal:#0A7A63; --signal-2:#086B52; --signal-dim:rgba(10,122,99,.10); --signal-ink:#FFFFFF;
  --moved:#7E560B; --moved-dim:rgba(126,86,11,.12);
  --stable:#4E7A5C;
  --sh-panel:0 1px 2px rgba(12,22,24,.05), 0 18px 40px -28px rgba(12,22,24,.30);
  --sh-lift:0 2px 4px rgba(12,22,24,.06), 0 30px 60px -30px rgba(12,22,24,.28);
  --f-display:"Barlow Semi Condensed","Bahnschrift","DIN Condensed","Segoe UI Semibold",system-ui,sans-serif;
  --f-body:"IBM Plex Sans","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --f-mono:"IBM Plex Mono","Consolas","SF Mono","JetBrains Mono",ui-monospace,"Liberation Mono",monospace;
  --s1:.25rem;--s2:.5rem;--s3:.75rem;--s4:1rem;--s5:1.5rem;--s6:2rem;--s7:3rem;--s8:4rem;--s9:6rem;--s10:8rem;
  --maxw:1120px; --readw:66ch;
  --ease:cubic-bezier(.2,.75,.15,1);
  --z-nav:50;
}
@media (prefers-color-scheme:dark){
  :root{
    --ground:#0C1618; --ground-2:#122225; --ground-3:#081113;
    --hair:#1E3438; --hair-2:#2C484D;
    --ink:#E7EEEC; --ink-2:#A2B5B2; --ink-3:#7A908C;
    --signal:#3FD9B6; --signal-2:#5FE6C8; --signal-dim:rgba(63,217,182,.13); --signal-ink:#062018;
    --moved:#E7B24E; --moved-dim:rgba(231,178,78,.13);
    --stable:#82AC8C;
    --sh-panel:inset 0 1px 0 rgba(255,255,255,.04), 0 2px 6px rgba(0,0,0,.4), 0 30px 60px -34px rgba(0,0,0,.7);
    --sh-lift:inset 0 1px 0 rgba(255,255,255,.05), 0 3px 8px rgba(0,0,0,.5), 0 40px 80px -34px rgba(0,0,0,.75);
  }
}
:root[data-theme="light"]{
  --ground:#EBF0EE; --ground-2:#F5F8F6; --ground-3:#DDE6E2;
  --hair:#CAD7D2; --hair-2:#B2C4BE;
  --ink:#0C1618; --ink-2:#3B4F4C; --ink-3:#586A66;
  --signal:#0A7A63; --signal-2:#086B52; --signal-dim:rgba(10,122,99,.10); --signal-ink:#FFFFFF;
  --moved:#7E560B; --moved-dim:rgba(126,86,11,.12); --stable:#4E7A5C;
  --sh-panel:0 1px 2px rgba(12,22,24,.05), 0 18px 40px -28px rgba(12,22,24,.30);
  --sh-lift:0 2px 4px rgba(12,22,24,.06), 0 30px 60px -30px rgba(12,22,24,.28);
}
:root[data-theme="dark"]{
  --ground:#0C1618; --ground-2:#122225; --ground-3:#081113;
  --hair:#1E3438; --hair-2:#2C484D;
  --ink:#E7EEEC; --ink-2:#A2B5B2; --ink-3:#7A908C;
  --signal:#3FD9B6; --signal-2:#5FE6C8; --signal-dim:rgba(63,217,182,.13); --signal-ink:#062018;
  --moved:#E7B24E; --moved-dim:rgba(231,178,78,.13); --stable:#82AC8C;
  --sh-panel:inset 0 1px 0 rgba(255,255,255,.04), 0 2px 6px rgba(0,0,0,.4), 0 30px 60px -34px rgba(0,0,0,.7);
  --sh-lift:inset 0 1px 0 rgba(255,255,255,.05), 0 3px 8px rgba(0,0,0,.5), 0 40px 80px -34px rgba(0,0,0,.75);
}

body{
  font-family:var(--f-body);
  background:var(--ground);
  color:var(--ink);
  line-height:1.65;
  font-size:1.0625rem;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
/* faint instrument grid on the ground (identical to homepage) */
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(120% 80% at 78% -5%, var(--signal-dim), transparent 55%),
    linear-gradient(to bottom, transparent, var(--ground-3) 140%);
  opacity:.9;
}

.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--s5)}
@media(min-width:720px){ .wrap{padding-inline:var(--s6)} }

/* ---- shared type devices (identical to homepage) ---- */
.eyebrow{
  font-family:var(--f-mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--signal);font-weight:600;display:inline-flex;align-items:center;gap:.55em;
}
.eyebrow .mark{width:1.6rem;height:1px;background:currentColor;opacity:.5}
h1,h2,h3{font-family:var(--f-display);font-weight:700;line-height:1.03;letter-spacing:-.01em;text-wrap:balance}
h1{font-size:clamp(2.15rem,5.4vw,3.5rem);letter-spacing:-.022em;line-height:1.02;overflow-wrap:anywhere;min-width:0}
h2{font-size:clamp(1.5rem,3.1vw,2.15rem);overflow-wrap:anywhere;min-width:0}
h3{font-size:1.18rem;letter-spacing:0}
.lead{font-size:clamp(1.08rem,2.1vw,1.24rem);color:var(--ink-2);max-width:var(--readw);line-height:1.55}
.body-w{max-width:var(--readw)}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.tnum{font-variant-numeric:tabular-nums}

/* focus (identical to homepage) */
:where(a,button,.card,[tabindex]):focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:6px}

/* ============================================================ NAV */
.nav{
  position:sticky;top:0;z-index:var(--z-nav);
  background:color-mix(in srgb,var(--ground) 82%,transparent);
  backdrop-filter:saturate(1.4) blur(14px);
  border-bottom:1px solid var(--hair);
}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);height:64px}
.brand{display:flex;align-items:center;gap:.6rem;font-family:var(--f-display);font-weight:700;font-size:1.18rem;letter-spacing:.01em;text-decoration:none;color:var(--ink);white-space:nowrap;flex:none}
.brand .dot{position:relative;width:11px;height:11px;flex:none}
.brand .dot i{position:absolute;inset:0;border-radius:50%;background:var(--signal)}
.brand .dot i::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:1px solid var(--signal);opacity:.5;animation:ping 2.8s var(--ease) infinite}
@keyframes ping{0%{transform:scale(.6);opacity:.7}70%,100%{transform:scale(1.5);opacity:0}}
.brand b{font-weight:700}
.brand span{color:var(--signal)}
.nav-tools{display:flex;align-items:center;gap:var(--s3)}
.nav-links{display:none;align-items:center;gap:var(--s5);margin-left:auto}
.nav-links a{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.05em;color:var(--ink-2);text-decoration:none;white-space:nowrap}
.nav-links a:hover{color:var(--signal)}
.nav-links a[aria-current="page"]{color:var(--ink);border-bottom:1px solid var(--signal)}
@media(min-width:860px){.nav-links{display:flex}}

/* language switcher — REAL links to the hreflang counterpart (crawlable; no JS) */
.lang{display:inline-flex;padding:3px;border:1px solid var(--hair-2);border-radius:999px;background:var(--ground-2);font-family:var(--f-mono)}
.lang a{position:relative;padding:.32rem .72rem;font-size:.76rem;letter-spacing:.06em;font-weight:600;border-radius:999px;color:var(--ink-3);text-decoration:none;transition:color .2s var(--ease),background .2s var(--ease)}
/* expand the tap target to >=44px tall without changing the compact pill visually (a11y — WCAG 2.5.5; vertical-only so the adjacent FR/EN links never overlap) */
.lang a::after{content:"";position:absolute;inset:-7px 0}
.lang a:hover{color:var(--ink)}
.lang a[aria-current="page"]{color:var(--signal-ink);background:var(--signal);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.iconbtn{position:relative;width:34px;height:34px;border-radius:8px;border:1px solid var(--hair-2);display:grid;place-items:center;color:var(--ink-2);background:var(--ground-2);transition:border-color .2s var(--ease),color .2s var(--ease)}
.iconbtn::after{content:"";position:absolute;inset:-5px}
.iconbtn:hover{color:var(--ink);border-color:var(--signal)}
.iconbtn svg{width:16px;height:16px}
.theme-moon{display:none}
@media(prefers-color-scheme:dark){ .theme-sun{display:none} .theme-moon{display:block} }
:root[data-theme="light"] .theme-sun{display:block} :root[data-theme="light"] .theme-moon{display:none}
:root[data-theme="dark"] .theme-sun{display:none} :root[data-theme="dark"] .theme-moon{display:block}

/* ============================================================ PAGE SHELL */
main{display:block}
.page{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--s5)}
@media(min-width:720px){ .page{padding-inline:var(--s6)} }
/* market pages are text-dominant: a deliberate document column (narrower than the
   1120 shell the homepage's balanced grids fill) so a reading measure + evidence
   rail fill it edge-to-edge with no right-hand void. */
.page-market{max-width:54rem}

/* breadcrumb (visible + BreadcrumbList schema mirror) */
.crumbs{padding-top:var(--s5);font-family:var(--f-mono);font-size:.76rem;color:var(--ink-3);display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .5rem;letter-spacing:.02em}
.crumbs a{color:var(--ink-3);text-decoration:none;border-bottom:1px solid transparent}
.crumbs a:hover{color:var(--signal);border-bottom-color:color-mix(in srgb,var(--signal) 40%,transparent)}
.crumbs .sep{opacity:.6}
.crumbs [aria-current="page"]{color:var(--ink-2)}

/* page header block */
.page-head{padding-top:var(--s6);padding-bottom:var(--s6);border-bottom:1px solid var(--hair)}
.page-head h1{margin-top:var(--s4)}
.page-head .subhead{margin-top:var(--s4);font-family:var(--f-mono);font-size:.82rem;letter-spacing:.02em;color:var(--ink-3);display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .75rem}
.page-head .subhead .dot{width:6px;height:6px;border-radius:50%;background:var(--signal);flex:none}
.page-head .subhead .sh-lead{display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap}
@media(max-width:420px){.page-head .subhead .sh-lead{white-space:normal;min-width:0}}
.page-head .lead{margin-top:var(--s5)}

/* two-column header: reading intro (left) + Snapshot instrument panel (right rail).
   Stacks to one column below 720px. The rail width matches the rule-card evidence
   rail so a single "evidence margin" runs down the page's right edge. */
.head-grid{margin-top:var(--s6);display:grid;grid-template-columns:1fr;gap:var(--s6)}
.head-lead .lead{margin-top:0}
@media(min-width:720px){ .head-grid{grid-template-columns:minmax(0,1fr) 15rem;gap:var(--s7);align-items:start} }

/* freshness / how-to-read line — the trust signal */
.freshness{margin-top:var(--s5);font-size:.92rem;line-height:1.6;color:var(--ink-2);
  border-left:2px solid var(--signal);padding:.6rem 0 .6rem var(--s4);background:linear-gradient(90deg,var(--signal-dim),transparent 60%);border-radius:0 8px 8px 0;max-width:var(--readw)}
.freshness strong{color:var(--ink);font-weight:600}
.market-evidence-state{margin-top:var(--s3);padding-top:var(--s3);border-top:1px solid var(--hair);
  font-family:var(--f-mono);font-size:.74rem;line-height:1.55;color:var(--ink-3)}

/* facts panel — mechanical, data-derived instrument readout (topics · sources · verified).
   One bordered panel with a captioned header + hairline-separated key/value rows; sits in
   the header's right rail on wide screens, full-width below the intro on mobile. */
.facts{display:flex;flex-direction:column;margin:0;border:1px solid var(--hair);border-radius:14px;background:var(--ground-2);box-shadow:var(--sh-panel);overflow:hidden;align-self:start}
.facts-cap{font-family:var(--f-mono);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);padding:var(--s3) var(--s5);border-bottom:1px solid var(--hair);background:color-mix(in srgb,var(--signal-dim) 45%,transparent)}
.fact{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);padding:var(--s3) var(--s5);border-bottom:1px solid var(--hair);min-width:0}
.fact:last-child{border-bottom:0}
.fact .k{font-family:var(--f-mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.fact .v{font-family:var(--f-display);font-weight:700;font-size:1.5rem;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}
.fact .v.facts-date{font-size:.95rem}
.fact .v small{font-family:var(--f-mono);font-weight:400;font-size:.78rem;color:var(--ink-2);letter-spacing:0}

/* section rhythm on content pages */
.section{padding-top:var(--s8);padding-bottom:var(--s2)}
.section > .sec-eyebrow{margin-bottom:var(--s4)}
.section h2{max-width:24ch}

/* ---- the rule list (data-dominant: this is most of a market page) ----
   Each rule is a two-column card: the plain-language rule fills the reading column
   (left); an evidence rail (right) carries the index stamp, official source, and
   verified-on date — a scannable citation margin, not dead space. Stacks to one
   column below 720px, where the rail drops under the prose. */
.rules{list-style:none;padding:0;margin:var(--s6) 0 0;display:flex;flex-direction:column;gap:var(--s4)}
.rule{border:1px solid var(--hair);border-radius:14px;background:var(--ground-2);padding:var(--s5);display:grid;grid-template-columns:1fr;gap:var(--s4)}
@media(min-width:720px){ .rule{grid-template-columns:minmax(0,1fr) 15rem;gap:var(--s6);align-items:start;padding:var(--s6)} }
.rule-main{min-width:0}
.rule-main h3{font-size:1.28rem;letter-spacing:0;line-height:1.15}
.rule-main p{margin-top:var(--s3);color:var(--ink-2);font-size:1rem;line-height:1.62}

.rule-side{display:flex;flex-direction:column;gap:var(--s3);min-width:0;padding-top:var(--s3);border-top:1px dashed var(--hair-2)}
@media(min-width:720px){ .rule-side{padding-top:0;border-top:0;padding-left:var(--s5);border-left:1px solid var(--hair)} }
.rule-side .idx{font-family:var(--f-mono);font-size:1.6rem;font-weight:600;color:var(--signal);letter-spacing:.03em;line-height:1;font-variant-numeric:tabular-nums}
.rule-side .cite{display:flex;flex-direction:column;gap:.45rem;font-family:var(--f-mono);font-size:.76rem;color:var(--ink-3);line-height:1.4}
.rule-side .cite .lbl{font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.rule-side .cite a{align-self:flex-start;color:var(--signal);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--signal) 40%,transparent);word-break:break-word}
.rule-side .cite a:hover{border-bottom-color:var(--signal)}
.rule-side .cite .verified{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.4rem;color:var(--ink-2)}
.rule-side .cite .vdate{white-space:nowrap}
.rule-side .cite .verified .d{width:6px;height:6px;border-radius:50%;background:var(--stable);flex:none}

/* internal-link neighbourhood (explainers / changes / related markets) */
.links-block{margin-top:var(--s7);border-top:1px solid var(--hair);padding-top:var(--s6)}
.links-block h2{font-size:1.5rem}
.link-row{display:flex;flex-direction:column;gap:var(--s3);margin-top:var(--s5)}
@media(min-width:720px){ .link-row{flex-direction:row;flex-wrap:wrap} }
.chip-link{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--hair-2);border-radius:10px;padding:.6rem .85rem;background:var(--ground-2);text-decoration:none;color:var(--ink);font-size:.92rem;transition:border-color .2s var(--ease),transform .14s var(--ease)}
.chip-link:hover{border-color:var(--signal);transform:translateY(-1px)}
.chip-link .arrow{color:var(--signal);transition:transform .2s var(--ease)}
.chip-link:hover .arrow{transform:translateX(3px)}
.chip-link .meta{font-family:var(--f-mono);font-size:.72rem;color:var(--ink-3)}

/* recently-changed empty state (honest — changes queue is 0 today).
   Horizontal status strip: the "Stable" tag sits left of the note so the block reads
   as an instrument status line and fills the column instead of hugging left. */
.empty-note{margin-top:var(--s5);border:1px dashed var(--hair-2);border-radius:12px;background:var(--ground-2);padding:var(--s5);color:var(--ink-2);font-size:.95rem;line-height:1.6;display:flex;gap:var(--s4);align-items:flex-start;flex-wrap:wrap}
.empty-note .tag{font-family:var(--f-mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--stable);display:inline-flex;align-items:center;gap:.4rem;flex:none;white-space:nowrap;padding-top:.15rem}
.empty-note .tag .d{width:7px;height:7px;border-radius:50%;background:var(--stable)}

/* ---- hub market list ---- */
.market-list{list-style:none;padding:0;margin:var(--s6) 0 0;display:grid;grid-template-columns:1fr;gap:var(--s4)}
@media(min-width:720px){ .market-list{grid-template-columns:repeat(2,minmax(0,1fr))} }
.market-card{display:flex;flex-direction:column;gap:var(--s3);border:1px solid var(--hair);border-radius:14px;background:var(--ground-2);padding:var(--s5);text-decoration:none;color:var(--ink);transition:border-color .2s var(--ease),transform .14s var(--ease),box-shadow .2s var(--ease)}
.market-card:hover{border-color:var(--signal);transform:translateY(-2px);box-shadow:var(--sh-panel)}
.market-card .mc-top{display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}
.market-card .mc-name{font-family:var(--f-display);font-weight:700;font-size:1.5rem;line-height:1}
.market-card .mc-go{color:var(--signal);transition:transform .2s var(--ease)}
.market-card:hover .mc-go{transform:translateX(3px)}
.market-card .mc-meta{font-family:var(--f-mono);font-size:.74rem;color:var(--ink-3);display:flex;flex-wrap:wrap;gap:.3rem .8rem}
.market-card .mc-record{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.3rem var(--s3);padding:.55rem .7rem;border-left:2px solid var(--hair-2);background:color-mix(in srgb,var(--ground) 62%,transparent);font-family:var(--f-mono);font-size:.68rem;line-height:1.45;color:var(--ink-3)}
.market-card .mc-record-label{display:inline-flex;align-items:center;gap:.45rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2)}
.market-card .mc-record .d{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.market-card .mc-record-recorded{border-left-color:var(--signal)}
.market-card .mc-record-recorded .mc-record-label{color:var(--signal)}
.market-card .mc-record-partial{border-left-color:var(--moved)}
.market-card .mc-record-partial .mc-record-label{color:var(--moved)}
.market-card .mc-topics{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.15rem}
.market-card .mc-topic{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.03em;color:var(--ink-2);border:1px solid var(--hair-2);border-radius:6px;padding:.15rem .45rem;background:var(--ground)}
.coming{margin-top:var(--s6);font-family:var(--f-mono);font-size:.82rem;color:var(--ink-3);line-height:1.6}
.coming strong{color:var(--ink-2);font-weight:600}

/* ---- manager landing sections ---- */
.mgr-sections{display:grid;grid-template-columns:1fr;gap:var(--s6);margin-top:var(--s6)}
@media(min-width:820px){ .mgr-sections{grid-template-columns:repeat(2,minmax(0,1fr))} }
.mgr-card{border:1px solid var(--hair);border-radius:14px;background:var(--ground-2);padding:var(--s5)}
.mgr-card h2{font-size:1.4rem;margin-bottom:var(--s3)}
.mgr-card p{color:var(--ink-2);font-size:.98rem;line-height:1.62}

/* ---- explainer prose ---- */
.prose{max-width:var(--readw)}
.prose > * + *{margin-top:var(--s4)}
.prose p{color:var(--ink-2);font-size:1.05rem;line-height:1.68}
.prose h2{margin-top:var(--s7);margin-bottom:var(--s3);font-size:1.5rem}
.prose h3{margin-top:var(--s5);margin-bottom:var(--s2)}
.prose .lede{font-size:1.14rem;color:var(--ink);line-height:1.6}
.prose a{color:var(--signal);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--signal) 40%,transparent)}
.prose a:hover{border-bottom-color:var(--signal)}

/* ---- CTA blocks ---- */
.cta{margin-top:var(--s8);border:1px solid var(--hair);border-radius:16px;background:color-mix(in srgb,var(--signal-dim) 55%,var(--ground-2));padding:var(--s6);box-shadow:var(--sh-panel)}
.cta h2{font-size:1.6rem}
.cta p{margin-top:var(--s3);color:var(--ink-2);font-size:1rem;line-height:1.62;max-width:60ch}
.cta .cta-actions{margin-top:var(--s5);display:flex;flex-wrap:wrap;gap:var(--s4);align-items:center}
.cta-compact{margin-top:var(--s7);border:1px dashed var(--hair-2);border-radius:12px;background:var(--ground-2);padding:var(--s5);display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3) var(--s5);justify-content:space-between}
.cta-compact p{color:var(--ink-2);font-size:.98rem;margin:0;max-width:52ch}
.cta-compact em{font-style:normal;color:var(--signal);font-weight:600}
.cta .paid-activation-note,.cta-compact .paid-activation-note{max-width:64ch;color:var(--ink);font-size:.9rem;line-height:1.5;padding-left:var(--s3);border-left:2px solid var(--signal)}
.cta-compact .paid-activation-note{flex-basis:100%}
/* Pro-waitlist form (manager page) */
.wl-form{margin-top:var(--s5)}
.wl-row{display:grid;grid-template-columns:1fr;gap:var(--s4)}
@media(min-width:640px){.wl-row{grid-template-columns:1fr 1fr}}
.wl-field{display:flex;flex-direction:column;gap:.4rem}
.wl-label{font-size:.85rem;font-weight:600;color:var(--ink-2)}
.wl-field input,.wl-field select{width:100%;padding:.8rem .85rem;font:inherit;font-size:1rem;color:var(--ink);background:var(--ground);border:1px solid var(--hair-2);border-radius:10px;box-sizing:border-box}
.wl-field input:focus,.wl-field select:focus{outline:2px solid var(--signal);outline-offset:1px;border-color:var(--signal)}
.wl-helper{font-size:.8rem;color:var(--ink-3)}
.wl-submit{margin-top:var(--s5)}
.wl-consent{margin-top:var(--s4);font-size:.78rem;color:var(--ink-3);line-height:1.5;max-width:62ch}
.wl-notice{margin-top:var(--s3);font-size:.9rem;color:var(--ink);font-weight:600;min-height:1.2em}
.wl-done{margin-top:var(--s3)}
.wl-confirm-msg{color:var(--ink-2);font-size:1rem;line-height:1.62;margin-bottom:var(--s4);max-width:60ch}
/* Market-page inline free-alert capture (single field + button; primary CTA on pSEO pages) */
.cta.mc h2{font-size:1.5rem}
.mc-form{margin-top:var(--s5);display:flex;flex-wrap:wrap;gap:var(--s3)}
.mc-field{flex:1 1 16rem;min-width:0;display:block}
.mc-field input{width:100%;padding:.8rem .95rem;font:inherit;font-size:1rem;color:var(--ink);background:var(--ground);border:1px solid var(--hair-2);border-radius:10px;box-sizing:border-box}
.mc-field input:focus{outline:2px solid var(--signal);outline-offset:1px;border-color:var(--signal)}
.mc-submit{flex:0 1 auto;min-width:0;justify-content:center;text-align:center}
.mc-alt{margin-top:var(--s3);font-size:.86rem;color:var(--ink-3);line-height:1.5}
.mc-alt a{color:var(--signal);border-bottom:1px solid var(--hair-2)}

/* ---- national regulatory-briefing page (grouped per-market snapshot; reuses the .rule card) ----
   Token-locked, additive: only NEW .brief-* devices + the h4 topic variant the extra market-grouping
   level needs. The rule cards, evidence rail, empty-note and CTA are the shared components. */
/* ---- in-page market jump-nav: sticky mono chip strip over the 10-market snapshot ----
   Sticks directly under the 64px main nav; scoped to the snapshot section so it costs no vertical
   space on the changes block or CTA. Chips are real <a href="#id">; the horizontal track scrolls on
   narrow viewports with a right-edge fade hinting more markets. ux-advisor-specified 2026-08-26. */
html{scroll-behavior:smooth}                         /* reduced-motion override at *{scroll-behavior:auto} wins */
.brief-market{scroll-margin-top:132px}               /* clear the 64px nav + the ~52px sticky index + air */
.brief-jumpnav{
  position:sticky;top:64px;z-index:40;
  display:flex;align-items:center;gap:var(--s3);
  margin:var(--s5) 0 var(--s2);padding:.5rem 0;
  background:color-mix(in srgb,var(--ground) 85%,transparent);
  backdrop-filter:saturate(1.4) blur(14px);
  border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);
}
.brief-jumpnav::after{                                 /* right-edge fade = "more markets, scroll →" affordance */
  content:"";position:absolute;top:0;right:0;bottom:0;width:32px;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--ground));
}
.bjn-label{flex:none;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.bjn-track{
  list-style:none;margin:0;padding:0;display:flex;gap:var(--s2);
  overflow-x:auto;overflow-y:hidden;scrollbar-width:none;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;
}
.bjn-track::-webkit-scrollbar{display:none}
.bjn-track > li{flex:none;scroll-snap-align:start}
.bjn-chip{
  position:relative;display:inline-flex;align-items:center;gap:.4rem;
  padding:.4rem .7rem;border:1px solid var(--hair-2);border-radius:8px;background:var(--ground-2);
  font-family:var(--f-mono);font-size:.78rem;line-height:1;letter-spacing:.01em;color:var(--ink-2);
  text-decoration:none;white-space:nowrap;
  transition:border-color .2s var(--ease),color .2s var(--ease),background .2s var(--ease);
}
.bjn-chip::after{content:"";position:absolute;inset:-5px}   /* extend tap target to ≥44px without bulking the strip */
.bjn-chip:hover{border-color:var(--signal);color:var(--ink)}
.bjn-chip .bjn-prov{font-size:.62rem;letter-spacing:.06em;color:var(--ink-3)}
.bjn-chip.is-active{border-color:var(--signal);color:var(--signal-ink);background:var(--signal)}
.bjn-chip.is-active .bjn-prov{color:color-mix(in srgb,var(--signal-ink) 72%,transparent)}
@media(prefers-reduced-motion:reduce){ .bjn-chip{transition:none} }
@media(max-width:520px){ .bjn-label{display:none} }   /* reclaim width on the narrowest phones */

.brief-markets{display:flex;flex-direction:column;gap:var(--s7);margin-top:var(--s6)}
.brief-market-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s2) var(--s4);padding-bottom:var(--s3);border-bottom:1px solid var(--hair)}
.brief-market-head h3{font-family:var(--f-display);font-weight:700;font-size:1.6rem;letter-spacing:-.01em;line-height:1.05}
.brief-market-meta{font-size:.74rem;color:var(--ink-3);letter-spacing:.02em;white-space:nowrap}
.brief-market .rules{margin-top:var(--s4)}
.brief-market .rule-main h4{font-size:1.28rem;letter-spacing:0;line-height:1.15}
/* confirmed-change cards (empty today → the shared .empty-note honest state is used instead) */
.brief-changes{display:flex;flex-direction:column;gap:var(--s4);margin-top:var(--s5)}
.brief-change{border:1px solid var(--hair);border-left:2px solid var(--moved);border-radius:14px;background:var(--ground-2);padding:var(--s5)}
.brief-change-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3);margin-bottom:var(--s2)}
.brief-change-head .chg-market{font-family:var(--f-mono);font-size:.74rem;color:var(--ink-3);letter-spacing:.03em}
.brief-change-head .chg-tag{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--moved);background:var(--moved-dim);border-radius:6px;padding:.15rem .5rem}
.brief-change h3{font-size:1.2rem;letter-spacing:0}
.brief-change p{margin-top:var(--s2);color:var(--ink-2);font-size:1rem;line-height:1.62}
.brief-change .chg-meta{margin-top:var(--s3);font-size:.76rem;color:var(--ink-3)}
.brief-change .chg-meta a{color:var(--signal);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--signal) 40%,transparent)}
.brief-authoritative{font-size:.82rem;color:var(--ink-3);line-height:1.6;border-top:1px solid var(--hair);padding-top:var(--s5);max-width:var(--readw)}

.btn{
  display:inline-flex;align-items:center;gap:.6rem;
  padding:.9rem 1.4rem;border-radius:11px;font-weight:600;font-size:1rem;
  background:var(--signal);color:var(--signal-ink);
  border:1px solid transparent;
  box-shadow:0 1px 2px rgba(0,0,0,.15),0 12px 26px -12px color-mix(in srgb,var(--signal) 70%,transparent);
  transition:transform .14s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease);
  text-decoration:none;
}
.btn:hover{transform:translateY(-1px);background:var(--signal-2)}
.btn:active{transform:translateY(0)}
.btn .arrow{transition:transform .2s var(--ease)}
.btn:hover .arrow{transform:translateX(3px)}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--hair-2);box-shadow:none}
.btn-ghost:hover{border-color:var(--signal);color:var(--signal);background:transparent}

/* ---- liability disclaimer (verbatim block, identical device to homepage) ---- */
.disclaimer{margin-top:var(--s8);font-size:.84rem;line-height:1.65;color:var(--ink-2);border-left:2px solid var(--hair-2);padding-left:var(--s4);max-width:70ch}
.disclaimer strong{color:var(--ink)}
.disclaimer p + p{margin-top:var(--s4)}
.disclaimer a{color:var(--signal);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--signal) 35%,transparent)}

/* ============================================================ FOOTER (identical to homepage) */
footer{border-top:1px solid var(--hair);padding-block:var(--s7);background:var(--ground-3);margin-top:var(--s9)}
.foot-grid{display:flex;flex-direction:column;gap:var(--s5)}
@media(min-width:720px){ .foot-grid{flex-direction:row;justify-content:space-between;align-items:flex-start} }
.foot-brand{display:flex;align-items:center;gap:.6rem;font-family:var(--f-display);font-weight:700;font-size:1.05rem}
.foot-brand span{color:var(--signal)}
.foot-links{display:flex;flex-wrap:wrap;gap:var(--s3) var(--s5);font-family:var(--f-mono);font-size:.8rem;color:var(--ink-3)}
.foot-links a{text-decoration:none;color:var(--ink-3)}
.foot-links a:hover{color:var(--signal)}
.foot-legal{font-size:.78rem;color:var(--ink-3);line-height:1.6;max-width:70ch}
.foot-legal strong{color:var(--ink-2)}

/* ============================================================ OVERHAUL POLISH (2026-08-12)
   Shared premium layer lifted from the homepage overhaul so the pSEO pages read as
   the same elevated instrument. Token-locked; JS-free (content pages carry no script). */

/* section-break "registry document" texture band (matches homepage .band) */
.band{position:relative;border-block:1px solid var(--hair);background:var(--ground-2);overflow:hidden}
.band::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:repeating-linear-gradient(180deg,var(--hair) 0 1px,transparent 1px 13px);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent)}

/* reveal-on-scroll, JS-free via scroll-driven animation. Only browsers that support
   view-timelines get it (initial hidden state lives INSIDE @supports, so non-supporting
   browsers never hide content); gated behind reduced-motion. Graceful everywhere. */
@media(prefers-reduced-motion:no-preference){
  @supports (animation-timeline: view()){
    .rule,.market-card,.mgr-card,.cta,.facts,.links-block,.prose > h2,.freshness{
      animation:pg-rise linear both;
      animation-timeline:view();
      animation-range:entry 2% cover 16%;
    }
    @keyframes pg-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
  }
}

/* ---- reduced motion ---- */
@media(prefers-reduced-motion:reduce){
  .brand .dot i::after{animation:none;opacity:0}
  .btn,.btn .arrow,.chip-link,.chip-link .arrow,.market-card,.market-card .mc-go{transition:none}
  *{scroll-behavior:auto}
}

/* ===== dark-only lock (2026-08-25, Chris) — forces dark regardless of system preference OR any
   data-theme value; wins by being last + matching all three selectors. The toggle button, its
   click handler, and the localStorage restore are removed from every page. ===== */
:root,:root[data-theme="light"],:root[data-theme="dark"]{
  --ground:#0C1618; --ground-2:#122225; --ground-3:#081113;
  --hair:#1E3438; --hair-2:#2C484D;
  --ink:#E7EEEC; --ink-2:#A2B5B2; --ink-3:#7A908C;
  --signal:#3FD9B6; --signal-2:#5FE6C8; --signal-dim:rgba(63,217,182,.13); --signal-ink:#062018;
  --moved:#E7B24E; --moved-dim:rgba(231,178,78,.13); --stable:#82AC8C;
  --sh-panel:inset 0 1px 0 rgba(255,255,255,.04), 0 2px 6px rgba(0,0,0,.4), 0 30px 60px -34px rgba(0,0,0,.7);
  --sh-lift:inset 0 1px 0 rgba(255,255,255,.05), 0 3px 8px rgba(0,0,0,.5), 0 40px 80px -34px rgba(0,0,0,.75);
}

/* F7 (legal gate, 2026-09-02) — per-market coverage status. Rendered INSTEAD of the automated-checking
   claim on any market whose monitoring we cannot prove. Styled as a notice rather than body prose so the
   general impression matches the words: this is a limitation on what we are telling you, not a footnote. */
.freshness.coverage-warn {
  border-left: 3px solid var(--warn, #b45309);
  background: color-mix(in srgb, var(--warn, #b45309) 7%, transparent);
  padding: .7rem .9rem;
  border-radius: 0 4px 4px 0;
  margin-bottom: .5rem;
}
.freshness.coverage-warn strong { color: var(--warn, #b45309); }
