/* SignalTuned public-page theme — Mercury palette + Orbitron (wordmark) + Exo (body).
   Loaded by /privacy, /terms, /model-card, /methodology. AS-5 Session 92.
   Keep this stylesheet self-contained — public pages are server-rendered
   without the SPA's CSS pipeline, so everything they need lives here. */

/* Day-5 bug #8 fix (2026-05-14): @import must come BEFORE any rules per CSS
   spec, otherwise it's silently ignored. Previously sat below the :root
   blocks, so Orbitron never loaded — wordmark fell back to Exo body font. */
@import url('https://fonts.googleapis.com/css2?family=Exo:wght@400;500;700&family=Orbitron:wght@400;500;700&display=swap');
/* Design system = single source of truth for tokens + components.
   public-pages.css now maps its legacy --st-* tokens onto the DS palette below,
   so every public page reskins from one place. (Uplift 2026-05-30) */
@import url('/static/brand/signaltuned-ds.css?v=cssb7cf993003');

:root {
  /* Legacy --st-* tokens remapped onto the DS palette (signaltuned-ds.css). */
  --st-bg:        var(--bg);
  --st-surface:   var(--bg-2);
  --st-text:      var(--tx);
  --st-muted:     var(--tx-mut);
  --st-primary:   var(--accent);
  --st-accent:    var(--accent-text);
  --st-wordmark:  var(--tx);
  --st-border:    var(--line);
  --st-success:   #2BE08A;
  --st-warning:   var(--amber);
  --st-danger:    var(--rose);
}
@media (prefers-color-scheme: light) {
  :root {
    color-scheme: light;
    /* DS light palette, resolved as hex so the OS-driven media query keeps
       working without needing a body[data-theme] attribute. */
    --st-bg:       #f3f3f7;
    --st-surface:  #ffffff;
    --st-text:     #232838;
    --st-muted:    #5b6072;
    --st-primary:  #6a4fd6;
    --st-accent:   #6a4fd6;
    --st-wordmark: #232838;
    --st-border:   #e3e3ec;
  }
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--st-bg);
  color: var(--st-text);
  font-family: 'Saira', 'Exo', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  font-weight: 400;
  line-height: 1.55;
  font-size: 15px;
  letter-spacing: -0.006em;
}

/* Page container */
.page,
body > * {
  /* Permit pages that wrap content in their own .page div, and pages that
     dump content straight under <body>, to both render with sane margins. */
}
.page {
  max-width: 880px;
  margin: 0 auto;
  padding: 48px 24px 96px;
}
/* Constrain bare-body content too — privacy.html and terms.html dump <h1>,
   <p>, <ul> straight under <body> without a container. */
body > h1, body > h2, body > h3, body > h4, body > p, body > ul, body > ol,
body > div, body > section, body > article, body > header, body > footer,
body > nav.top-bar, body > .meta {
  max-width: 880px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 24px;
  padding-right: 24px;
}

/* Top nav */
nav.top, nav.top-bar {
  display: flex;
  gap: 24px;
  align-items: center;
  margin-bottom: 56px;
  padding: 24px;
  border-bottom: 1px solid var(--st-border);
  font-size: 13px;
  max-width: none;
}
nav.top a, nav.top-bar a {
  color: var(--st-muted);
  text-decoration: none;
  transition: color 0.15s;
}
nav.top a:hover, nav.top-bar a:hover { color: var(--st-accent); }
nav.top a.brand, nav.top-bar a.brand {
  color: var(--st-wordmark);
  font-weight: 500;
  margin-right: auto;
  font-family: 'Orbitron', 'Exo', sans-serif;
  letter-spacing: 0.02em;
}
nav.top a.brand:hover, nav.top-bar a.brand:hover { color: var(--st-primary); }

/* Compatibility shim: existing legal pages use <div class="nav"> not <nav class="top-bar">.
   Apply the same look. */
.nav {
  display: flex;
  gap: 24px;
  align-items: center;
  margin-bottom: 56px;
  padding: 24px;
  border-bottom: 1px solid var(--st-border);
  font-size: 13px;
  max-width: none;
}
.nav a {
  color: var(--st-muted);
  text-decoration: none;
  transition: color 0.15s;
  margin-right: 0;
}
.nav a:hover { color: var(--st-accent); }
.nav a:first-child {
  color: var(--st-wordmark);
  font-weight: 500;
  margin-right: auto;
  font-family: 'Orbitron', 'Exo', sans-serif;
  letter-spacing: 0.02em;
}
.nav a:first-child:hover { color: var(--st-primary); }

/* Branded SVG banner — rendered as the first nav slot on every public page so
   the marketing site shares the same noise-waves -> wordmark -> brand-purple
   line identity as the SPA header. Heights mirror app.css `.st-banner` rules
   (56px mobile / 76px desktop bumped to match wordmark legibility memo
   logged Session 91). The anchor wraps the <img>, so the existing
   `.nav a:first-child` color rule no longer applies — the SVG carries its
   own colors. */
.nav a.brand-banner {
  display: inline-flex;
  align-items: center;
  margin-right: auto;
  padding: 0;
  line-height: 0;
}
.nav a.brand-banner:hover { color: inherit; }
.nav a.brand-banner img.st-banner,
.nav a.brand-banner svg.st-banner,
img.st-banner,
svg.st-banner,
.st-banner {
  display: inline-block;
  height: 56px;
  width: auto;
  vertical-align: middle;
}
@media (min-width: 768px) {
  .nav a.brand-banner img.st-banner,
  .nav a.brand-banner svg.st-banner,
  img.st-banner,
  svg.st-banner,
  .st-banner { height: 76px; }
}

/* Headlines */
h1 {
  font-size: 34px;
  font-weight: 500;
  letter-spacing: -0.01em;
  margin: 0 auto 24px;
  color: var(--st-text);
  max-width: 880px;
  padding: 0 24px;
}
h1 .accent { color: var(--st-primary); }
h2 {
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -0.005em;
  margin: 48px auto 12px;
  padding: 16px 24px 0;
  max-width: 880px;
  border-top: 1px solid var(--st-border);
  color: var(--st-text);
}
h3 {
  font-size: 16px;
  font-weight: 500;
  margin: 28px auto 10px;
  color: var(--st-text);
  max-width: 880px;
  padding: 0 24px;
}

p { margin: 14px auto; max-width: 880px; padding: 0 24px; }

/* Links — purple, no decoration default, underline on hover */
a {
  color: var(--st-accent);
  text-decoration: none;
  transition: color 0.15s;
}
a:hover { color: var(--st-primary); text-decoration: underline; }

/* Inline code */
code {
  background: var(--st-surface);
  padding: 2px 6px;
  border-radius: 3px;
  font-size: 13px;
  color: var(--st-accent);
  border: 1px solid var(--st-border);
}

/* Strong/bold — use brand accent for emphasis */
strong, b { font-weight: 500; color: var(--st-text); }

/* Lists */
ul, ol {
  padding-left: 24px;
  margin: 14px auto;
  max-width: 880px;
  padding-left: calc(24px + 24px);
  padding-right: 24px;
}
li { margin: 6px 0; }
li::marker { color: var(--st-muted); }

/* Meta line (date stamps etc.) */
.meta {
  color: var(--st-muted);
  font-size: 13px;
  max-width: 880px;
  margin: 0 auto 36px;
  padding: 0 24px;
}

/* Model Card callout boxes */
.callout {
  background: var(--st-surface);
  border: 1px solid var(--st-border);
  border-left: 3px solid var(--st-primary);
  padding: 16px 20px;
  border-radius: 4px;
  margin: 24px auto;
  max-width: 880px;
  font-size: 14px;
  box-sizing: border-box;
}

/* Version cards on Model Card */
.version-card {
  background: var(--st-surface);
  border: 1px solid var(--st-border);
  border-radius: 6px;
  padding: 20px 24px;
  margin: 24px auto;
  max-width: 880px;
}
.version-card.current { border-color: var(--st-primary); }
.version-tag {
  display: inline-block;
  background: var(--st-primary);
  color: #ffffff;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.04em;
  padding: 2px 8px;
  border-radius: 3px;
  margin-left: 8px;
  text-transform: uppercase;
}

/* Tables */
table {
  border-collapse: collapse;
  margin: 16px auto;
  max-width: 880px;
  width: calc(100% - 48px);
  font-size: 13px;
}
table th {
  background: var(--st-surface);
  color: var(--st-muted);
  text-align: left;
  padding: 10px 12px;
  border: 1px solid var(--st-border);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
table td {
  padding: 10px 12px;
  border: 1px solid var(--st-border);
  vertical-align: top;
}

/* Footer link styling */
.footer-link, .footer-links {
  color: var(--st-muted);
  font-size: 12px;
}
.footer-link a, .footer-links a {
  color: var(--st-muted);
  text-decoration: none;
}
.footer-link a:hover, .footer-links a:hover { color: var(--st-accent); }

/* Misc */
hr {
  border: none;
  border-top: 1px solid var(--st-border);
  margin: 32px auto;
  max-width: 880px;
}

/* Mobile */
@media (max-width: 640px) {
  body { font-size: 14px; }
  h1 { font-size: 26px; padding: 0 16px; }
  h2 { font-size: 18px; padding: 14px 16px 0; margin-top: 32px; }
  body > h1, body > h2, body > h3, body > p, body > ul, body > ol, body > div, .meta { padding-left: 16px; padding-right: 16px; }
  table { width: calc(100% - 32px); }
  nav.top, nav.top-bar { gap: 14px; flex-wrap: wrap; padding: 16px; }
}

/* ───────── Model Card specifics ───────── */
.subtitle {
  color: var(--st-muted);
  font-size: 16px;
  margin: 0 auto 20px;
  max-width: 880px;
  padding: 0 24px;
}
.intro {
  background: var(--st-surface);
  border: 1px solid var(--st-border);
  border-left: 3px solid var(--st-primary);
  padding: 16px 20px;
  border-radius: 4px;
  margin: 0 auto 32px;
  max-width: 880px;
  box-sizing: border-box;
}
.intro p { margin: 6px 0; padding: 0; max-width: none; }
.intro .tagline {
  font-weight: 500;
  color: var(--st-accent);
  font-size: 14px;
}
.release {
  background: var(--st-surface);
  border: 1px solid var(--st-border);
  border-radius: 6px;
  padding: 18px 24px;
  margin: 0 auto 20px;
  max-width: 880px;
  box-sizing: border-box;
}
.release header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.release h2 {
  font-size: 18px;
  margin: 0;
  color: var(--st-text);
  padding: 0;
  border: none;
}
.release h2 a.anchor-link {
  color: var(--st-text);
  text-decoration: none;
}
.release h2 a.anchor-link:hover { color: var(--st-primary); }
.release .date {
  color: var(--st-muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.release .changes {
  margin: 8px 0 14px;
  color: var(--st-text);
  font-size: 14px;
  padding: 0;
  max-width: none;
}
/* Multi-entry releases render their changes as a bullet list (one li per
   changelog entry) instead of a stringified array — audit 2026-06-05 #2. */
.release ul.changes {
  list-style: disc;
  padding-left: 20px;
  text-align: left;
}
.release ul.changes li {
  margin: 6px 0;
  text-align: left;
}
.current-tag {
  display: inline-block;
  background: var(--st-primary);
  color: #ffffff;
  font-size: 10px;
  font-weight: 500;
  padding: 2px 8px;
  border-radius: 3px;
  vertical-align: middle;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
details.accuracy {
  margin-top: 12px;
  border-top: 1px dashed var(--st-border);
  padding-top: 12px;
}
details.accuracy > summary {
  cursor: pointer;
  color: var(--st-accent);
  font-size: 13px;
  font-weight: 500;
  user-select: none;
  list-style: none;
}
details.accuracy > summary::before { content: "▸ "; color: var(--st-muted); }
details.accuracy[open] > summary::before { content: "▾ "; }
details.accuracy[open] > summary { margin-bottom: 10px; }
.stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 8px 16px;
  margin: 10px 0;
}
.stat {
  display: flex;
  flex-direction: column;
  padding: 6px 10px;
  background: var(--st-bg);
  border: 1px solid var(--st-border);
  border-radius: 3px;
}
.stat-label {
  font-size: 10px;
  color: var(--st-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.stat-value {
  font-size: 14px;
  color: var(--st-text);
  font-variant-numeric: tabular-nums;
  font-weight: 500;
}
table.pos-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 10px;
  font-size: 13px;
}
table.pos-table th, table.pos-table td {
  padding: 6px 10px;
  text-align: left;
  border-bottom: 1px solid var(--st-border);
  font-variant-numeric: tabular-nums;
}
table.pos-table th {
  color: var(--st-muted);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: transparent;
  border: none;
}
.empty {
  color: var(--st-muted);
  text-align: center;
  padding: 32px;
}
.footer-note {
  color: var(--st-muted);
  font-size: 12px;
  margin: 32px auto 0;
  padding: 16px 24px 0;
  max-width: 880px;
  border-top: 1px solid var(--st-border);
}

/* ═══════════════════════════════════════════════════════════════
   Framework patterns (Session 2026-05-16): named-bucket cards,
   pipeline grids, pointer lists, callouts. Used by /about's
   "Four things SignalTuned does differently" + jumping-off block;
   reusable by /methodology, /pricing, etc.
   ═══════════════════════════════════════════════════════════════ */

.callout {
  background: var(--st-surface);
  border: 1px solid var(--st-border);
  border-left: 3px solid var(--st-primary);
  padding: 16px 20px;
  border-radius: 4px;
  margin: 24px 0;
  font-size: 14px;
}
.callout .label {
  color: var(--st-primary);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.framework-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin: 24px 0 32px;
}
@media (max-width: 720px) {
  .framework-grid { grid-template-columns: 1fr; }
}
.framework-card {
  background: var(--st-surface);
  border: 1px solid var(--st-border);
  border-left: 3px solid var(--st-primary);
  border-radius: 4px;
  padding: 20px 22px;
}
.framework-card-tag {
  color: var(--st-primary);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 8px;
}
.framework-card h3 {
  font-size: 16px;
  font-weight: 500;
  margin: 0 0 8px;
  color: var(--st-text);
}
.framework-card p {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--st-text);
}

.pointer-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin: 24px 0 32px;
}
@media (max-width: 720px) {
  .pointer-list { grid-template-columns: 1fr; }
}
.pointer-list-item {
  display: block;
  background: var(--st-surface);
  border: 1px solid var(--st-border);
  border-radius: 4px;
  padding: 16px 20px;
  text-decoration: none;
  transition: border-color 0.15s, transform 0.15s;
}
.pointer-list-item:hover {
  border-color: var(--st-primary);
  transform: translateY(-1px);
}
.pointer-list-title {
  color: var(--st-accent);
  font-weight: 500;
  font-size: 14px;
  margin-bottom: 4px;
}
.pointer-list-body {
  color: var(--st-muted);
  font-size: 13px;
  line-height: 1.5;
}

/* ═══════════════════════════════════════════════════════════════
   Visual-engagement pass (2026-05-16): lede paragraph, hero
   diagram, framework-card icons.
   ═══════════════════════════════════════════════════════════════ */

p.lede {
  font-size: 18px;
  line-height: 1.65;
  color: var(--st-text);
  margin: 16px 0 32px;
  max-width: 720px;
}

.hero-visual {
  margin: 16px 0 40px;
  padding: 28px 24px 20px;
  background: var(--st-surface);
  border: 1px solid var(--st-border);
  border-radius: 8px;
  overflow: hidden;
}
.hero-visual svg {
  display: block;
  width: 100%;
  height: auto;
  max-width: 720px;
  margin: 0 auto;
}
.hero-visual-caption {
  font-size: 12px;
  color: var(--st-muted);
  margin-top: 14px;
  text-align: center;
  letter-spacing: 0.02em;
}

.framework-card-head {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-bottom: 6px;
}
.framework-card-icon {
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
  color: var(--st-primary);
  background: rgba(124, 58, 237, 0.08);
  border: 1px solid rgba(124, 58, 237, 0.25);
  border-radius: 6px;
  padding: 6px;
}
.framework-card-icon svg {
  display: block;
  width: 100%;
  height: 100%;
}
.framework-card-head-text {
  flex: 1;
  min-width: 0;
}
.framework-card-head-text .framework-card-tag {
  margin-bottom: 4px;
}
.framework-card-head-text h3 {
  margin: 0;
}

/* Per-card accent variants — borrow distinct hues across the four cards
   so the grid feels textured instead of monochrome. Each variant overrides
   the left-border + icon container color. */
.framework-card[data-accent="primary"] { border-left-color: var(--st-primary); }
.framework-card[data-accent="primary"] .framework-card-icon {
  color: var(--st-primary);
  background: rgba(124, 58, 237, 0.08);
  border-color: rgba(124, 58, 237, 0.25);
}
.framework-card[data-accent="primary"] .framework-card-tag { color: var(--st-primary); }

.framework-card[data-accent="accent"] { border-left-color: var(--st-accent); }
.framework-card[data-accent="accent"] .framework-card-icon {
  color: var(--st-accent);
  background: rgba(167, 139, 250, 0.10);
  border-color: rgba(167, 139, 250, 0.30);
}
.framework-card[data-accent="accent"] .framework-card-tag { color: var(--st-accent); }

.framework-card[data-accent="success"] { border-left-color: var(--st-success); }
.framework-card[data-accent="success"] .framework-card-icon {
  color: var(--st-success);
  background: rgba(34, 197, 94, 0.08);
  border-color: rgba(34, 197, 94, 0.30);
}
.framework-card[data-accent="success"] .framework-card-tag { color: var(--st-success); }

.framework-card[data-accent="warning"] { border-left-color: var(--st-warning); }
.framework-card[data-accent="warning"] .framework-card-icon {
  color: var(--st-warning);
  background: rgba(234, 179, 8, 0.08);
  border-color: rgba(234, 179, 8, 0.30);
}
.framework-card[data-accent="warning"] .framework-card-tag { color: var(--st-warning); }

/* ═══════════════════════════════════════════════════════════════
   Unified site nav (2026-05-16)
   Two-row chrome + tab nav matching the in-app SPA home page so
   navigation feels seamless across home + every marketing page.
   .st-app-header is the chrome (banner + tagline). .st-tab-nav is
   the tab row using .home-nav-link styling.
   ═══════════════════════════════════════════════════════════════ */

.st-app-header {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 24px;
  background: var(--st-bg);
  border-bottom: 1px solid var(--st-border);
  position: sticky;
  top: 0;
  z-index: 40;
  max-width: none;
  margin: 0;
  flex-wrap: wrap;
}
.st-app-header .st-brand-area {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-right: auto;
}
.st-app-header .brand-banner {
  display: inline-flex;
  align-items: center;
  padding: 0;
  line-height: 0;
}
.st-app-header .brand-banner img.st-banner,
.st-app-header .brand-banner svg.st-banner,
.st-app-header .brand-banner .st-banner {
  display: inline-block;
  height: 56px;
  width: auto;
}
@media (min-width: 768px) {
  .st-app-header .brand-banner img.st-banner,
  .st-app-header .brand-banner svg.st-banner,
  .st-app-header .brand-banner .st-banner { height: 76px; }
}
.st-app-header .st-brand-tagline {
  font-size: 12px;
  color: var(--st-muted);
  margin: 0;
}
@media (max-width: 640px) {
  .st-app-header .st-brand-tagline { display: none; }
}

.st-tab-nav {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 0 24px;
  background: var(--st-bg);
  border-bottom: 1px solid var(--st-border);
  position: sticky;
  /* banner-gap fix (2026-06-01): .st-app-header measures 61px live
     (signal-logo banner ~29px + 16px*2 padding); the old top:80px left a
     ~19px transparent band where page content scrolled through. Pin the nav
     flush under the real header height. Mirror of the SPA app.css fix. */
  top: 61px;
  z-index: 30;
  max-width: none;
  margin: 0 0 32px;
  overflow-x: auto;
  white-space: nowrap;
}
@media (max-width: 640px) {
  .st-tab-nav { top: 60px; padding: 0 16px; }
}
.st-tab-nav .home-nav-link {
  display: inline-flex;
  align-items: center;
  padding: 12px 18px;
  font-size: 14px;
  font-weight: 500;
  color: var(--st-muted);
  border-bottom: 2px solid transparent;
  transition: color 0.15s, border-color 0.15s;
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
}
.st-tab-nav .home-nav-link:hover { color: var(--st-text); }
.st-tab-nav .home-nav-link.is-active {
  color: var(--st-accent);
  border-bottom-color: var(--st-primary);
}

/* Utility area (right side of .st-app-header): Need help? + user chip.
   On the home page these sit alongside Resync all + Add League buttons;
   marketing pages get only Need help? + Sign in chip. */
.st-app-header .st-utility-area {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.st-app-header .st-utility-link {
  font-size: 11px;
  color: var(--st-muted);
  text-decoration: none;
  transition: color 0.15s;
}
.st-app-header .st-utility-link:hover { color: var(--st-text); }
@media (max-width: 640px) {
  .st-app-header .st-utility-link { display: none; }
}

/* .status-pill (replicated from app.css so marketing pages can render
   the same Sign in / user chip visual without loading app.css). */
.status-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border-radius: 9999px;
  font-size: 0.7rem;
  font-weight: 500;
  background: #1f2937;
  color: #d1d5db;
  border: 1px solid #374151;
  white-space: nowrap;
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
}
.status-pill:hover {
  background: #374151;
  color: #e5e7eb;
}

/* ════════════════════════════════════════════════════════════════════════
   DESIGN-SYSTEM BRIDGE  (Uplift 2026-05-30)
   Layers signaltuned-ds.css signature touches onto the legacy public-page
   chrome: accent header underglow, accent nav underline, headline gradient,
   card hover glow, mono numerics, eyebrow kicker. Appended last so it wins
   the cascade over both the imported DS base rules and the rules above.
   ════════════════════════════════════════════════════════════════════════ */

/* Reserve Orbitron for the page title + wordmark; content headings use Saira
   (the DS base rule otherwise sets Orbitron on every h2/h3, hurting long copy). */
h2, h3 { font-family: 'Saira', system-ui, sans-serif; line-height: 1.25; }
h2 { font-weight: 600; }

/* Header: sticky blur + accent underglow line (mirrors DS header::after). */
.st-app-header {
  background: color-mix(in oklab, var(--bg) 82%, transparent);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line-soft);
  position: sticky;
}
.st-app-header::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; pointer-events: none;
  background: linear-gradient(90deg, transparent,
    color-mix(in oklab, var(--accent) 60%, transparent) 28%,
    color-mix(in oklab, var(--accent) 60%, transparent) 72%, transparent);
  opacity: calc(0.6 * var(--glow));
}

/* Tab nav: DS active underline in accent + glow. */
.st-tab-nav {
  background: color-mix(in oklab, var(--bg) 82%, transparent);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line-soft);
}
.st-tab-nav .home-nav-link.is-active {
  color: var(--tx);
  border-bottom-color: transparent;
  position: relative;
}
.st-tab-nav .home-nav-link.is-active::after {
  content: ""; position: absolute; left: 14px; right: 14px; bottom: -1px; height: 2px;
  background: var(--accent); border-radius: 2px 2px 0 0;
  box-shadow: 0 0 10px color-mix(in oklab, var(--accent) calc(85% * var(--glow)), transparent);
}
.st-tab-nav .home-nav-link:hover { color: var(--tx); }

/* Page title: DS tinted-headline gradient fill. */
.page > h1:first-of-type,
body > h1:first-of-type,
h1.headline {
  font-family: var(--font-display, 'Orbitron'), sans-serif;
  font-weight: 700;
  line-height: 1.18;
  padding-bottom: 2px;
  background: linear-gradient(176deg, #ffffff 0%, #e6e9f5 42%,
    color-mix(in oklab, var(--accent) 78%, #ffffff) 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}
@media (prefers-color-scheme: light) {
  .page > h1:first-of-type, body > h1:first-of-type, h1.headline {
    background: linear-gradient(176deg, #2a2f3c 0%, #1d2330 38%,
      color-mix(in oklab, var(--accent) 62%, #14141c) 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
  }
}
h1 .accent, h2 .accent { color: var(--accent-text); -webkit-text-fill-color: var(--accent-text); }

/* Eyebrow kicker (DS), available on public pages above section titles. */
.eyebrow {
  font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px;
  letter-spacing: .18em; text-transform: uppercase; color: var(--accent-text);
  font-weight: 500; margin: 0 auto 14px; max-width: 880px; padding: 0 24px;
  display: flex; align-items: center; gap: 9px;
}
.eyebrow::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--accent);
  box-shadow: 0 0 10px color-mix(in oklab, var(--accent) calc(90% * var(--glow)), transparent);
}

/* Cards: DS top-crown + hover lift/glow on the existing card families. */
.framework-card, .pointer-list-item, .version-card, .release {
  position: relative; overflow: hidden;
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.framework-card::before, .pointer-list-item::before,
.version-card::before, .release::before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 1.5px;
  background: linear-gradient(90deg, transparent,
    color-mix(in oklab, var(--accent) 68%, transparent), transparent);
  opacity: .35; transition: .2s;
}
.framework-card:hover, .pointer-list-item:hover,
.version-card:hover, .release:hover {
  transform: translateY(-4px);
  border-color: color-mix(in oklab, var(--accent) 45%, var(--line));
  box-shadow: var(--shadow),
    0 0 0 1px color-mix(in oklab, var(--accent) 26%, transparent),
    0 26px 56px -26px color-mix(in oklab, var(--accent) calc(55% * var(--glow)), transparent);
}
.framework-card:hover::before, .pointer-list-item:hover::before,
.version-card:hover::before, .release:hover::before { opacity: 1; }

/* Mono numerics + metadata (DS uses JetBrains Mono with tabular figures). */
.meta, .framework-card-tag, .version-tag, .current-tag, .stat-value,
.stat-label, pre.formula, table.data, .release .date {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-feature-settings: "tnum" 1;
}

/* Primary pill (Sign in / status) gets the DS accent gradient treatment. */
.status-pill {
  background: linear-gradient(135deg, color-mix(in oklab, var(--accent) 86%, #fff), var(--accent));
  color: var(--accent-ink);
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--accent) 70%, transparent),
              0 10px 30px -8px color-mix(in oklab, var(--accent) calc(90% * var(--glow)), transparent);
}
.status-pill:hover { filter: brightness(1.08) saturate(1.05); background: var(--accent); color: var(--accent-ink); }


/* ════════════════════════════════════════════════════════════════════════
   STADIUM POLISH  (Uplift 2026-05-30 / pass 2)
   Ambient signal-field background, violet logo trail, eyebrow-kicker section
   headers, accent inline emphasis. Appended last so it wins the cascade.
   ════════════════════════════════════════════════════════════════════════ */

/* Ambient signal field: deep-ink base on <html>, transparent <body>, and two
   fixed pseudo layers BEHIND all content (z-index:-1) -- accent glow blooms
   from the top corners + a faded signal-dot grid. No markup required. */
html { background: var(--bg); }
body { background: transparent; }
body::before {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(820px 540px at 6% -10%, color-mix(in oklab, var(--accent) 20%, transparent), transparent 60%),
    radial-gradient(760px 480px at 100% -8%, color-mix(in oklab, var(--violet) 15%, transparent), transparent 56%);
}
body::after {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background-image: radial-gradient(color-mix(in oklab, var(--tx) 7%, transparent) 1px, transparent 1px);
  background-size: 34px 34px;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, transparent 44%);
          mask-image: linear-gradient(180deg, #000 0%, transparent 44%);
}

/* Logo signal-trail recolored from the legacy Mercury purple to DS violet. */
.st-banner line { stroke: var(--accent-text); }

/* Section headers rendered as mono eyebrow kickers (matches the design refs:
   a pulsing accent dot + uppercase mono label instead of a heavy title). The
   h2 element is kept for document structure; only its appearance changes. */
.section-kicker {
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 12px; font-weight: 500; letter-spacing: .16em; text-transform: uppercase;
  color: var(--accent-text); -webkit-text-fill-color: var(--accent-text);
  background: none; border-top: none;
  margin: 54px auto 14px; padding: 0 24px; max-width: 880px;
  display: flex; align-items: center; gap: 9px; line-height: 1.3;
}
.section-kicker::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--accent);
  box-shadow: 0 0 10px color-mix(in oklab, var(--accent) calc(90% * var(--glow)), transparent);
  animation: st-pulse 2.4s ease-in-out infinite; flex: 0 0 auto;
}
.eyebrow::before { animation: st-pulse 2.4s ease-in-out infinite; }
@keyframes st-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .5; } }

/* Accent inline emphasis -- the editorial violet phrase ("That's the whole
   engine.") and white-bold key phrases used inside lede / body copy. */
.accent-emphasis { color: var(--accent-text); font-weight: 600; }
.lede strong, .page p strong { color: var(--tx); font-weight: 600; }


/* ════════════════════════════════════════════════════════════════════════
   SIGNAL-LOGO (compact mark; populated by /static/brand/signal-logo.js, which
   replaces the legacy .st-banner inside .brand-banner). Uplift 2026-05-30. */
.brand { display:flex; align-items:center; gap:0; flex-shrink:0; line-height:1; }
.noise { flex-shrink:0; overflow:visible; margin-right:-1px; }
.brand .wordmark {
  font-family: var(--font-display,'Orbitron'), sans-serif; font-weight:800; font-style:italic;
  font-size:20px; white-space:nowrap; padding-right:3px; letter-spacing:-.01em;
  background:linear-gradient(176deg,#fff,#e6e9f5 42%,#b9a3ff);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent;
}
.sig { display:flex; align-items:center; margin-left:-1px; }
.sig .l { width:30px; height:2.6px; border-radius:3px; background:var(--accent-text);
  box-shadow:0 0 calc(8px*var(--glow,.6)) var(--accent); }
.sig .n { width:6.5px; height:6.5px; border-radius:50%; background:var(--accent-text); margin-left:-1px;
  box-shadow:0 0 calc(9px*var(--glow,.6)) var(--accent); animation:st-pulse 2.4s ease-in-out infinite; }
body.no-anim .sig .n { animation:none; }
@media (prefers-color-scheme: light) {
  .brand .wordmark { background:linear-gradient(176deg,#2a2f3c,#1d2330 40%,#6a4fd6);
    -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:transparent; }
}
