/* SOMA Risk Studio — marketing site stylesheet
   Brand: Risk Studio (by SOMA Project Controls)
   Palette: Navy #003366 (lead, ≥60%) · Teal #00728A (accent) · Graphite neutrals
   Typefaces: Georgia (headings) · Calibri Light + Carlito fallback (body) · IBM Plex Mono (data)
   Sub-brand: Phase C refresh, spec in _Design/2026-05-17_RS_Marketing_Refresh_Plan.md
*/

/* ---------- Web fonts (self-hosted, woff2-only) ---------- */
/* IBM Plex Mono — Risk Studio's sub-brand-only data face (4 cuts). */
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/assets/fonts/ibm-plex-mono-regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/assets/fonts/ibm-plex-mono-italic.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/assets/fonts/ibm-plex-mono-light.woff2") format("woff2");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/assets/fonts/ibm-plex-mono-bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2C60-2C7F, U+A720-A7FF;
}

/* Carlito — open-source Calibri-metric-compatible fallback. Loads only where Calibri is absent. */
@font-face {
  font-family: "Carlito";
  src: url("/assets/fonts/carlito-regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Carlito";
  src: url("/assets/fonts/carlito-italic.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Carlito";
  src: url("/assets/fonts/carlito-bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Carlito";
  src: url("/assets/fonts/carlito-bold-italic.woff2") format("woff2");
  font-weight: 700;
  font-style: italic;
  font-display: swap;
  unicode-range: U+0000-024F, U+1E00-1EFF, U+2000-206F, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body, h1, h2, h3, h4, h5, h6, p, ul, ol, figure, blockquote { margin: 0; }
ul, ol { padding: 0; list-style: none; }
img, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; border: 0; background: none; color: inherit; }
:focus-visible { outline: 2px solid var(--rs-border-focus); outline-offset: 3px; border-radius: 2px; }

/* ---------- Tokens ---------- */
/* =========================================================================
   SOMA Risk Studio — colour system v1 (Phase B Colour)
   Spec:     _Design/2026-05-17_RS_Colour_System.md
   Strategy: _Design/2026-05-17_RS_Brand_Strategy.md (navy ≥60% visual weight)
   AA:       every body-text token ≥ 4.5:1; large-text ≥ 3:1
   ========================================================================= */
:root {
  /* ---- Primary: Navy (SOMA brand lead) ---- */
  --rs-navy-50:  #E6EEF7;
  --rs-navy-100: #C0D2E6;
  --rs-navy-200: #80A4CD;
  --rs-navy-300: #4076B4;
  --rs-navy-400: #1F548F;
  --rs-navy-500: #003366;   /* anchor — official brand hex */
  --rs-navy-600: #002A52;
  --rs-navy-700: #002240;
  --rs-navy-800: #001A30;
  --rs-navy-900: #001020;

  /* ---- Secondary: Teal (SOMA brand accent) ---- */
  --rs-teal-50:  #E0F0F4;
  --rs-teal-100: #B3D8E0;   /* S-curve corridor fill */
  --rs-teal-200: #80BFCC;
  --rs-teal-300: #4BACC6;   /* numeric underline-accent · DARK-SURFACE-ONLY for text */
  --rs-teal-400: #1E8EA5;
  --rs-teal-500: #00728A;   /* anchor — official accent hex */
  --rs-teal-600: #005E72;
  --rs-teal-700: #004A5A;
  --rs-teal-800: #003640;
  --rs-teal-900: #002028;

  /* ---- Neutrals: Graphite (cool-grey infrastructure) ---- */
  --rs-graphite-50:  #FAFBFC;
  --rs-graphite-100: #F2F4F7;
  --rs-graphite-200: #E5E9EE;
  --rs-graphite-300: #CBD3DC;
  --rs-graphite-400: #99A3B2;
  --rs-graphite-500: #6B7585;   /* AA secondary text */
  --rs-graphite-600: #4F5965;
  --rs-graphite-700: #374151;   /* AAA default body */
  --rs-graphite-800: #1E2832;
  --rs-graphite-900: #0F1419;

  /* ---- Semantic (status only — never decorative) ---- */
  --rs-danger-50:  #FEF2F2;
  --rs-danger-500: #7F1D1D;
  --rs-danger-700: #5F1515;
  --rs-warning-50: #FFF7ED;
  --rs-warning-500: #C24F00;
  --rs-warning-700: #92400E;
  --rs-success-50: #F0FDF4;
  --rs-success-500: #057A48;
  --rs-success-700: #064E3B;
  --rs-info-50:    #EFF6FF;
  --rs-info-500:   #1E40AF;
  --rs-info-700:   #1E3A8A;

  /* ---- Data-viz: categorical (Okabe-Ito-adapted, CB-safe) ---- */
  --rs-viz-1: #003366;
  --rs-viz-2: #C24F00;
  --rs-viz-3: #00728A;
  --rs-viz-4: #057A48;
  --rs-viz-5: #BE185D;
  --rs-viz-6: #B45309;
  --rs-viz-7: #6D28D9;
  --rs-viz-8: #4B5563;

  /* ---- Data-viz: sequential ---- */
  --rs-seq-1: var(--rs-teal-50);
  --rs-seq-2: var(--rs-teal-100);
  --rs-seq-3: var(--rs-teal-300);
  --rs-seq-4: var(--rs-teal-500);
  --rs-seq-5: var(--rs-teal-700);
  --rs-seq-6: var(--rs-teal-900);

  /* ---- Data-viz: diverging ---- */
  --rs-div-neg: var(--rs-warning-500);
  --rs-div-mid: var(--rs-graphite-200);
  --rs-div-pos: var(--rs-teal-500);

  /* ---- Surface tokens (semantic) ---- */
  --rs-surface-page:        var(--rs-graphite-50);
  --rs-surface-card:        #FFFFFF;
  --rs-surface-hover:       var(--rs-graphite-100);
  --rs-surface-active:      var(--rs-graphite-200);
  --rs-surface-tinted:      var(--rs-teal-50);
  --rs-surface-brand:       var(--rs-navy-500);
  --rs-surface-brand-deep:  var(--rs-navy-600);
  --rs-surface-inverse:     var(--rs-graphite-900);

  /* ---- Text tokens (semantic) ---- */
  --rs-text-display:         var(--rs-graphite-900);
  --rs-text-primary:         var(--rs-graphite-800);
  --rs-text-body:            var(--rs-graphite-700);
  --rs-text-secondary:       var(--rs-graphite-500);
  --rs-text-disabled:        var(--rs-graphite-400);
  --rs-text-brand:           var(--rs-navy-500);
  --rs-text-on-brand:        #FFFFFF;
  --rs-text-on-brand-muted:  var(--rs-teal-100);
  --rs-text-link:            var(--rs-teal-500);
  --rs-text-link-hover:      var(--rs-navy-500);

  /* ---- Border + outline ---- */
  --rs-border:         var(--rs-graphite-200);
  --rs-border-strong:  var(--rs-graphite-300);
  --rs-border-focus:   var(--rs-teal-500);

  /* ---- Accent — numeric underline (strategy-named, FT-VV idiom) ---- */
  --rs-accent-underline: var(--rs-teal-300);

  /* ---- Shadow ---- */
  --rs-shadow-1:    0 1px 2px rgba(15, 20, 25, 0.04), 0 1px 3px rgba(15, 20, 25, 0.06);
  --rs-shadow-2:    0 8px 24px rgba(15, 20, 25, 0.08), 0 2px 6px rgba(15, 20, 25, 0.04);
  --rs-shadow-lift: 0 24px 60px -20px rgba(15, 32, 80, 0.35), 0 4px 12px rgba(15, 32, 80, 0.06);

  /* ---- Legacy aliases (preserved one release for safety; new code MUST use --rs-* tokens) ---- */
  --navy:        var(--rs-navy-500);
  --navy-deep:   var(--rs-navy-600);
  --navy-soft:   var(--rs-navy-400);
  --teal:        var(--rs-teal-500);
  --teal-soft:   var(--rs-teal-300);
  --ice:         var(--rs-teal-100);
  --ice-pale:    var(--rs-teal-50);
  --black:       var(--rs-graphite-900);
  --ink:         var(--rs-graphite-800);
  --warm-grey:   var(--rs-graphite-500);
  --line:        var(--rs-graphite-200);
  --line-soft:   var(--rs-graphite-100);
  --paper:       var(--rs-graphite-50);
  --white:       #FFFFFF;

  /* ---- Type (families — first item is canonical brand face, then graceful fallback chain) ---- */
  --serif: Georgia, "Times New Roman", Cambria, "Liberation Serif", "Noto Serif", serif;
  --sans:  "Calibri Light", "Calibri", "Carlito", "Helvetica Neue",
           -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
           "Liberation Sans", "Noto Sans", system-ui, sans-serif;
  --mono:  "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas,
           "Liberation Mono", "DejaVu Sans Mono", monospace;

  /* Type scale (clamp for fluid sizing) */
  --t-micro:        0.6875rem;   /* 11 — legal/disclaimer only */
  --t-eyebrow:      0.75rem;     /* 12 */
  --t-small:        0.875rem;    /* 14 */
  --t-body:         1.0625rem;   /* 17 */
  --t-lead:         1.25rem;     /* 20 */
  --t-h4:           1.25rem;
  --t-h3:           1.625rem;
  --t-h2:           clamp(1.875rem, 2.4vw, 2.5rem);
  --t-h1:           clamp(2.25rem, 4.6vw, 4rem);
  --t-display:      clamp(3rem, 7vw, 6rem);
  --t-num-display:  clamp(2.5rem, 5vw, 4rem);  /* big numerical treatment — MGI/FT VV idiom */
  --t-num-inline:   0.9375rem;   /* 15 — Plex Mono inline within body */
  --t-mono-small:   0.8125rem;   /* 13 — Plex Mono source/hash columns */

  /* Layout */
  --container:  1200px;
  --container-narrow: 880px;
  --gutter:     clamp(20px, 5vw, 56px);
  --section-y:  clamp(80px, 9vw, 112px);

  /* Radius */
  --r-sm:  4px;
  --r-md:  8px;
  --r-lg:  14px;

  /* Shadow (legacy aliases) */
  --shadow-1: var(--rs-shadow-1);
  --shadow-2: var(--rs-shadow-2);

  /* Motion */
  --ease-out: cubic-bezier(.2,.7,.2,1);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

/* ---------- Base ---------- */
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
body {
  font-family: var(--sans);
  font-size: var(--t-body);
  line-height: 1.6;
  color: var(--rs-text-body);
  background: #FFFFFF;
  /* Tabular lining figures everywhere — Risk Studio's load-bearing default */
  font-feature-settings: "tnum" 1, "lnum" 1, "kern" 1;
  font-variant-numeric: tabular-nums lining-nums;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-synthesis: weight;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--serif);
  color: var(--rs-text-brand);
  line-height: 1.15;
  letter-spacing: -0.01em;
  font-weight: 400;
}
h1 { font-size: var(--t-h1); line-height: 1.08; }
h2 { font-size: var(--t-h2); }
h3 { font-size: var(--t-h3); }
h4 { font-size: var(--t-h4); font-weight: 700; }

p { max-width: 70ch; }
.lead { font-size: var(--t-lead); line-height: 1.5; color: var(--rs-text-primary); max-width: 60ch; }
.muted { color: var(--rs-text-secondary); }

a.link { color: var(--rs-text-link); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
a.link:hover { color: var(--rs-text-link-hover); }

strong { font-weight: 700; color: var(--rs-text-brand); }

/* ---------- Layout ---------- */
.container { width: 100%; max-width: var(--container); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.container--narrow { max-width: var(--container-narrow); }

.section { padding-top: var(--section-y); padding-bottom: var(--section-y); }
.section--tight { padding-top: clamp(40px, 6vw, 72px); padding-bottom: clamp(40px, 6vw, 72px); }
.section--navy { background: var(--rs-surface-brand); color: var(--rs-text-on-brand); }
.section--navy h1, .section--navy h2, .section--navy h3 { color: var(--rs-text-on-brand); }
.section--ice { background: var(--rs-surface-tinted); }
/* Halve the top padding when two same-background sections sit back-to-back —
   prevents 200+ px gaps between visually-continuous bands. MGI/Stripe leave
   air on transitions but tighten on continuations. */
.section + .section:not(.section--navy):not(.section--ice) { padding-top: clamp(40px, 5vw, 64px); }
.section--navy + .section--navy { padding-top: clamp(40px, 5vw, 64px); }
.section--ice + .section--ice { padding-top: clamp(40px, 5vw, 64px); }

.eyebrow {
  display: inline-block;
  font-family: var(--sans);
  font-size: var(--t-eyebrow);
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rs-teal-500);
  margin-bottom: 16px;
}
.section--navy .eyebrow { color: var(--rs-teal-300); }

/* ---------- Top nav ---------- */
.nav {
  position: sticky; top: 0; z-index: 100;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--rs-graphite-100);
}
.nav__inner {
  display: flex; align-items: center; gap: 24px;
  height: 68px;
}
.nav__brand { display: flex; align-items: center; gap: 12px; }
.nav__brand img { height: 30px; width: auto; }
.nav__brand-text { display: flex; flex-direction: column; line-height: 1.05; }
.nav__brand-text strong { font-family: var(--serif); font-weight: 400; color: var(--rs-text-brand); font-size: 17px; letter-spacing: -0.01em; }
.nav__brand-text span { font-size: 11px; color: var(--rs-text-secondary); letter-spacing: 0.08em; text-transform: uppercase; }

.nav__menu { display: flex; gap: 28px; margin-left: auto; }
.nav__menu a {
  color: var(--rs-text-primary); font-size: 15px; padding: 6px 0;
  border-bottom: 2px solid transparent;
  transition: color 120ms var(--ease-out), border-color 120ms var(--ease-out);
}
.nav__menu a:hover { color: var(--rs-text-brand); border-bottom-color: var(--rs-teal-500); }
.nav__menu a[aria-current="page"] { color: var(--rs-text-brand); border-bottom-color: var(--rs-navy-500); }

.nav__cta { margin-left: 8px; }
.nav__toggle { display: none; }

@media (max-width: 1023px) {
  .nav .nav__menu, .nav .nav__cta { display: none; }
  .nav .nav__toggle {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; margin-left: auto;
    color: var(--rs-text-brand); border: 1px solid var(--rs-border);
    border-radius: var(--r-sm);
  }
  .nav--open .nav__menu {
    display: flex; flex-direction: column; gap: 0;
    position: absolute; top: 68px; left: 0; right: 0;
    background: #FFFFFF; border-bottom: 1px solid var(--rs-border);
    padding: 12px var(--gutter) 24px;
  }
  .nav--open .nav__menu a { padding: 14px 0; border-bottom: 1px solid var(--rs-graphite-100); }
  .nav--open .nav__cta { display: inline-flex; margin: 18px var(--gutter) 0; }
  /* Tighten brand wordmark on mobile so it doesn't wrap onto 4 lines */
  .nav__brand-text { display: none; }
}
@media (min-width: 521px) and (max-width: 1023px) {
  /* Re-show brand text at tablet sizes where there's space */
  .nav__brand-text { display: flex; }
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font-family: var(--sans); font-size: 15px; font-weight: 600;
  padding: 12px 22px; border-radius: var(--r-sm); text-decoration: none;
  transition: background-color 200ms var(--ease-out), color 200ms var(--ease-out), border-color 200ms var(--ease-out), transform 200ms var(--ease-out), box-shadow 200ms var(--ease-out);
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
.btn:focus-visible { outline: 2px solid var(--rs-border-focus); outline-offset: 2px; box-shadow: 0 0 0 6px rgba(0,114,138,0.20); }
.btn--primary { background: var(--rs-navy-500); color: var(--rs-text-on-brand); }
@media (hover: hover) {
  .btn--primary:hover { background: var(--rs-navy-600); transform: translateY(-1px); box-shadow: 0 6px 18px -8px rgba(0,51,102,0.45); }
}
.btn--secondary { background: var(--rs-teal-500); color: var(--rs-text-on-brand); }
@media (hover: hover) {
  .btn--secondary:hover { background: var(--rs-teal-600); transform: translateY(-1px); box-shadow: 0 6px 18px -8px rgba(0,114,138,0.45); }
}
.btn--ghost { color: var(--rs-text-brand); border: 1px solid var(--rs-navy-500); }
.btn--ghost:hover { background: var(--rs-navy-500); color: var(--rs-text-on-brand); }
.btn--lg { padding: 14px 26px; font-size: 16px; }
.btn--on-navy { background: #FFFFFF; color: var(--rs-text-brand); }
@media (hover: hover) {
  .btn--on-navy:hover { background: var(--rs-teal-300); color: var(--rs-text-brand); transform: translateY(-1px); box-shadow: 0 6px 18px -8px rgba(0,0,0,0.45); }
}
.btn--on-navy-ghost { color: var(--rs-text-on-brand); border: 1px solid rgba(255,255,255,0.5); }
.btn--on-navy-ghost:hover { border-color: var(--rs-teal-300); color: var(--rs-teal-300); background: rgba(75,172,198,0.08); }
.btn .arrow { transition: transform 200ms var(--ease-out); }
.btn:hover .arrow { transform: translateX(3px); }
@media (prefers-reduced-motion: reduce) {
  .btn:hover, .btn--primary:hover, .btn--secondary:hover, .btn--on-navy:hover { transform: none; }
}

/* ---------- Hero ---------- */
.hero {
  position: relative;
  background: var(--rs-surface-brand);
  color: var(--rs-text-on-brand);
  padding: clamp(72px, 12vw, 144px) 0 clamp(72px, 12vw, 144px);
  overflow: hidden;
}
.hero::before {
  /* Geometric accent — teal square echoing the brand mark */
  content: ""; position: absolute;
  top: -40px; right: -40px; width: 320px; height: 320px;
  background: var(--rs-teal-500); opacity: 0.18;
  transform: rotate(45deg);
  border-radius: 8px;
}
.hero::after {
  content: ""; position: absolute;
  bottom: -200px; left: -120px; width: 480px; height: 480px;
  background: radial-gradient(circle, rgba(75,172,198,0.20) 0%, rgba(75,172,198,0) 60%);
}
.hero__inner { position: relative; z-index: 1; max-width: 880px; }
.hero__eyebrow { color: var(--rs-teal-300); }
.hero__title {
  font-family: var(--serif);
  font-size: var(--t-display);
  font-weight: 400;
  letter-spacing: -0.02em;
  line-height: 1.05;
  color: var(--rs-text-on-brand);
  margin-bottom: 20px;
}
.hero__title em { font-style: italic; color: var(--rs-teal-300); }
.hero__lead {
  font-size: clamp(1.125rem, 1.6vw, 1.375rem);
  line-height: 1.45;
  color: var(--rs-text-on-brand-muted);
  max-width: 60ch;
  margin-bottom: 36px;
}
.hero__cta { display: flex; flex-wrap: wrap; gap: 12px; }
@media (max-width: 520px) {
  .hero__cta { flex-direction: column; align-items: stretch; }
  .hero__cta .btn { white-space: normal; text-align: center; }
}

.hero--compact { padding: clamp(56px, 8vw, 96px) 0 clamp(48px, 6vw, 72px); }
.hero--compact .hero__title { font-size: var(--t-h1); }

/* .hero--narrow — single-column centred hero for /faq/, /security/, /methodology/, /compare/. */
.hero--narrow .hero__inner {
  max-width: 760px;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
}
.hero--narrow .hero__lead { margin-left: auto; margin-right: auto; }
.hero--narrow .hero__cta { justify-content: center; }

/* .hero--accent — teal accent bar above the eyebrow for emphasis variants. */
.hero--accent .hero__inner { position: relative; padding-top: 20px; }
.hero--accent .hero__inner::before {
  content: "";
  display: block;
  width: 48px;
  height: 4px;
  background: var(--rs-teal-300);
  margin-bottom: 24px;
  border-radius: 2px;
}
.hero--accent.hero--narrow .hero__inner::before { margin-left: auto; margin-right: auto; }

/* ---------- Sections ---------- */
.section__head { max-width: 760px; margin-bottom: clamp(40px, 5vw, 64px); }
.section__head--center { margin-left: auto; margin-right: auto; text-align: center; }
.section__head h2 { margin-bottom: 16px; }

/* ---------- Cards / grids ---------- */
.grid { display: grid; gap: 28px; }
.grid--2 { grid-template-columns: repeat(2, 1fr); }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 880px) {
  .grid--2, .grid--3 { grid-template-columns: 1fr; }
  .grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) { .grid--4 { grid-template-columns: 1fr; } }

.card {
  background: var(--rs-surface-card); border: 1px solid var(--rs-border);
  border-radius: var(--r-lg); padding: 32px;
  transition: transform 200ms var(--ease-out), box-shadow 200ms var(--ease-out), border-color 200ms var(--ease-out);
}
@media (hover: hover) {
  .card--linked:hover { transform: translateY(-3px); box-shadow: var(--rs-shadow-2); border-color: var(--rs-teal-500); }
}
.card__num {
  font-family: var(--serif); font-size: 14px; font-weight: 700;
  color: var(--rs-teal-500); margin-bottom: 12px; letter-spacing: 0.1em;
}
.card h3 { font-size: 1.375rem; margin-bottom: 12px; }
.card p { color: var(--rs-text-primary); font-size: 1rem; }
.card__cta { display: inline-flex; align-items: center; gap: 6px; margin-top: 20px; color: var(--rs-text-link); font-weight: 600; }
.card__cta::after { content: "→"; transition: transform 200ms var(--ease-out); display: inline-block; }
.card--linked:hover .card__cta::after { transform: translateX(4px) scale(1.1); }
@media (prefers-reduced-motion: reduce) {
  .card--linked:hover { transform: none; }
  .card--linked:hover .card__cta::after { transform: none; }
}

.card--navy { background: var(--rs-surface-brand); color: var(--rs-text-on-brand); border-color: var(--rs-navy-500); }
.card--navy h3 { color: var(--rs-text-on-brand); }
.card--navy p { color: var(--rs-text-on-brand-muted); }
.card--navy .card__num { color: var(--rs-teal-300); }

/* Status pill */
.pill {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
  padding: 4px 10px; border-radius: 999px;
}
.pill--live { background: rgba(0,114,138,0.10); color: var(--rs-text-link); }
.pill--roadmap { background: rgba(0,51,102,0.08); color: var(--rs-text-brand); }
.pill--new { background: var(--rs-teal-500); color: var(--rs-text-on-brand); }
.section--navy .pill--live { background: rgba(75,172,198,0.20); color: var(--rs-teal-300); }
.section--navy .pill--roadmap { background: rgba(255,255,255,0.12); color: var(--rs-text-on-brand-muted); }

/* Stat tile */
.stat {
  border-left: 3px solid var(--rs-teal-500);
  padding: 4px 0 4px 18px;
}
.stat__num {
  font-family: var(--serif); font-size: clamp(2.25rem, 4.4vw, 3rem);
  color: var(--rs-text-brand); line-height: 1; font-weight: 400;
  letter-spacing: -0.025em;
  display: inline-block;
  border-bottom: 2px solid var(--rs-accent-underline);
  padding-bottom: 4px;
  font-feature-settings: "tnum" 1, "lnum" 1;
}
.stat__label { font-size: 0.875rem; color: var(--rs-text-secondary); margin-top: 10px; }
.section--navy .stat { border-left-color: var(--rs-teal-300); }
.section--navy .stat__num { color: var(--rs-text-on-brand); border-bottom-color: var(--rs-teal-300); }
.section--navy .stat__label { color: var(--rs-text-on-brand-muted); }

/* Module card (used on home + product index) */
.module {
  display: flex; flex-direction: column; gap: 12px;
  background: var(--rs-surface-card); border: 1px solid var(--rs-border);
  border-radius: var(--r-lg); padding: 28px;
  position: relative; min-height: 100%;
  transition: transform 180ms var(--ease-out), box-shadow 180ms var(--ease-out), border-color 180ms var(--ease-out);
}
.module:hover { transform: translateY(-3px); box-shadow: var(--rs-shadow-2); border-color: var(--rs-teal-100); }
.module__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.module__code {
  font-family: var(--serif); font-size: 13px; font-weight: 700; letter-spacing: 0.16em;
  color: var(--rs-teal-500); text-transform: uppercase;
}
.module h3 { font-size: 1.25rem; line-height: 1.2; }
.module p { font-size: 0.9375rem; color: var(--rs-text-primary); flex-grow: 1; }
.module__cta { color: var(--rs-text-brand); font-weight: 600; font-size: 0.9375rem; }
.module__cta::after { content: " →"; }

/* Framework chip */
.framework {
  background: var(--rs-surface-card); border: 1px solid var(--rs-border);
  border-radius: var(--r-lg); padding: 28px; text-align: center;
}
.framework__abbr { font-family: var(--serif); font-size: 2.75rem; color: var(--rs-text-brand); line-height: 1; letter-spacing: -0.02em; margin-bottom: 6px; }
.framework__name { font-weight: 600; color: var(--rs-text-primary); margin-bottom: 16px; font-size: 0.9375rem; }
.framework__divider { width: 32px; height: 2px; background: var(--rs-accent-underline); margin: 0 auto 16px; }
.framework__count {
  display: inline-block; font-family: var(--serif); font-size: 1.125rem;
  color: var(--rs-teal-500); font-weight: 700; margin-bottom: 10px;
}
.framework__note { font-size: 0.875rem; color: var(--rs-text-secondary); line-height: 1.5; }

/* Quote block */
.quote {
  font-family: var(--serif); font-size: clamp(1.375rem, 2.6vw, 1.875rem);
  line-height: 1.35; color: var(--rs-text-on-brand); max-width: 32ch; margin: 0 auto;
}
.quote::before { content: "“"; display: block; font-size: 4rem; line-height: 1; color: var(--rs-teal-300); margin-bottom: -12px; }
.quote__attrib { display: block; margin-top: 24px; font-family: var(--sans); font-size: 0.875rem; color: var(--rs-text-on-brand-muted); letter-spacing: 0.05em; }

/* Table */
.table { width: 100%; border-collapse: collapse; }
.table th, .table td {
  text-align: left; padding: 14px 16px;
  border-bottom: 1px solid var(--rs-border);
  font-size: 0.9375rem;
}
.table th { font-family: var(--serif); font-weight: 700; color: var(--rs-text-brand); background: var(--rs-surface-tinted); }
.table tr:hover td { background: var(--rs-surface-tinted); }
.table tr:last-child td { border-bottom: 0; }

/* Pricing card */
.price {
  background: var(--rs-surface-card); border: 1px solid var(--rs-border);
  border-radius: var(--r-lg); padding: 36px 28px;
  display: flex; flex-direction: column; height: 100%;
  position: relative;
}
.price--featured { border: 2px solid var(--rs-teal-500); transform: translateY(-8px); box-shadow: var(--rs-shadow-2); }
.price--featured::before {
  content: "Most chosen"; position: absolute; top: -12px; left: 28px;
  background: var(--rs-teal-500); color: var(--rs-text-on-brand); padding: 4px 12px;
  border-radius: 999px; font-size: 11px; font-weight: 700;
  letter-spacing: 0.1em; text-transform: uppercase;
}
@media (max-width: 880px) {
  .price--featured { transform: none; }
}
.price__name { font-family: var(--serif); font-size: 1.5rem; color: var(--rs-text-brand); margin-bottom: 8px; }
.price__price { font-family: var(--serif); font-size: clamp(2.25rem, 4vw, 2.75rem); color: var(--rs-text-brand); font-weight: 400; line-height: 1; }
.price__term { font-size: 0.75rem; color: var(--rs-text-secondary); letter-spacing: 0.1em; text-transform: uppercase; margin-top: 8px; }
.price__sub { color: var(--rs-text-primary); font-size: 0.9375rem; margin-top: 20px; line-height: 1.55; }
.price__list { margin-top: 24px; flex-grow: 1; }
.price__list li {
  position: relative; padding: 6px 0 6px 26px; font-size: 0.9375rem; color: var(--rs-text-primary);
  border-bottom: 1px solid var(--rs-graphite-100);
}
.price__list li::before {
  content: ""; position: absolute; left: 0; top: 13px; width: 14px; height: 8px;
  border-left: 2px solid var(--rs-teal-500); border-bottom: 2px solid var(--rs-teal-500);
  transform: rotate(-45deg);
}
.price__list li:last-child { border-bottom: 0; }
.price__cta { margin-top: 28px; }

/* Two-col split */
.split { display: grid; grid-template-columns: 1.1fr 1fr; gap: clamp(40px, 6vw, 80px); align-items: center; }
.split > * { min-width: 0; }  /* prevent intrinsic-width children (images) from blowing out the column */
.split--reverse > :first-child { order: 2; }
@media (max-width: 880px) {
  .split { grid-template-columns: 1fr; }
  .split--reverse > :first-child { order: 0; }
}
/* Same guard for the generic .grid layouts */
.grid > * { min-width: 0; }
/* And the hero split */
.hero--split .hero__grid > * { min-width: 0; }
.split__visual {
  background: var(--rs-surface-tinted); border: 1px solid var(--rs-teal-100);
  border-radius: var(--r-lg); padding: 32px; aspect-ratio: 4/3;
  display: flex; align-items: center; justify-content: center;
}

/* Feature list */
.feature-list { display: grid; gap: 16px; }
.feature-list li {
  display: flex; gap: 16px;
  align-items: flex-start; font-size: 1rem; color: var(--rs-text-primary); line-height: 1.5;
}
.feature-list li::before {
  content: ""; flex: 0 0 16px; width: 16px; height: 16px;
  background: var(--rs-teal-500); border-radius: 50%; margin-top: 6px;
  box-shadow: 0 0 0 4px rgba(0,114,138,0.12);
}
.section--navy .feature-list li { color: var(--rs-text-on-brand-muted); }
.section--navy .feature-list li::before { background: var(--rs-teal-300); box-shadow: 0 0 0 4px rgba(75,172,198,0.18); }

/* Big callout / banner section */
.callout {
  text-align: center; max-width: 720px; margin: 0 auto;
}
.callout h2 { margin-bottom: 16px; }
.callout p { margin: 0 auto 28px; }
.callout__cta { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

/* Logo strip */
.logos {
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 24px; align-items: center;
}
.logos__item {
  text-align: center; padding: 16px;
  font-family: var(--serif); color: var(--rs-text-secondary); font-size: 0.9375rem;
  border: 1px solid var(--rs-border); border-radius: var(--r-md);
  background: var(--rs-surface-card);
}
.logos__item strong { display: block; font-weight: 400; color: var(--rs-text-brand); font-size: 1.0625rem; margin-bottom: 2px; }
.logos__item span { font-size: 0.75rem; color: var(--rs-text-secondary); text-transform: uppercase; letter-spacing: 0.06em; }
@media (max-width: 1023px) { .logos { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 520px) { .logos { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .logos { grid-template-columns: repeat(2, 1fr); } }

/* Inline metric strip */
.metric-strip {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px;
  padding: 36px 0; border-top: 1px solid var(--rs-border); border-bottom: 1px solid var(--rs-border);
}
.metric-strip__item { text-align: left; }
.metric-strip__num {
  font-family: var(--serif); font-size: clamp(2rem, 3.8vw, 3rem);
  color: var(--rs-text-brand); line-height: 1; letter-spacing: -0.02em;
  display: inline-block;
  border-bottom: 2px solid var(--rs-accent-underline);
  padding-bottom: 4px;
  font-feature-settings: "tnum" 1, "lnum" 1;
}
.metric-strip__label { font-size: 0.8125rem; color: var(--rs-text-secondary); margin-top: 10px; }
.section--navy .metric-strip { border-top-color: rgba(255,255,255,0.16); border-bottom-color: rgba(255,255,255,0.16); }
.section--navy .metric-strip__num { color: var(--rs-text-on-brand); border-bottom-color: var(--rs-teal-300); }
.section--navy .metric-strip__label { color: var(--rs-text-on-brand-muted); }
@media (max-width: 880px) { .metric-strip { grid-template-columns: repeat(2, 1fr); } }

/* KPI strip — executive numeric display for customer / case-study pages. */
.kpi-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 32px;
}
.kpi { text-align: left; }
.kpi__big {
  font-family: var(--serif);
  font-size: clamp(2.25rem, 4vw, 3rem);
  color: var(--rs-text-brand);
  line-height: 1;
  letter-spacing: -0.02em;
  display: inline-block;
  border-bottom: 2px solid var(--rs-accent-underline);
  padding-bottom: 4px;
  font-feature-settings: "tnum" 1, "lnum" 1;
}
.kpi__label {
  font-size: 0.8125rem;
  color: var(--rs-text-secondary);
  margin-top: 10px;
  letter-spacing: 0.02em;
}
.section--navy .kpi__big { color: var(--rs-text-on-brand); border-bottom-color: var(--rs-teal-300); }
.section--navy .kpi__label { color: var(--rs-text-on-brand-muted); }

/* Process / numbered list */
.process { display: grid; gap: 28px; counter-reset: step; }
.process--3 { grid-template-columns: repeat(3, 1fr); }
.process--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 880px) { .process--3, .process--4 { grid-template-columns: 1fr; } }
.process__step { counter-increment: step; position: relative; padding-top: 20px; }
.process__step::before {
  content: counter(step, decimal-leading-zero);
  font-family: var(--serif); font-size: 2rem; color: var(--rs-teal-500);
  display: block; line-height: 1; margin-bottom: 12px; font-weight: 400;
}
.process__step h4 { color: var(--rs-text-brand); margin-bottom: 8px; font-size: 1.0625rem; }
.process__step p { font-size: 0.9375rem; color: var(--rs-text-primary); }

/* Form */
.form { display: grid; gap: 16px; max-width: 520px; }
.form__row { display: grid; gap: 6px; }
.form__row label { font-size: 0.875rem; font-weight: 600; color: var(--rs-text-brand); }
.form__row input, .form__row textarea, .form__row select {
  font-family: var(--sans); font-size: 1rem; padding: 12px 14px;
  border: 1px solid var(--rs-border); border-radius: var(--r-sm); background: var(--rs-surface-card);
  color: var(--rs-text-body);
}
.form__row input:focus, .form__row textarea:focus, .form__row select:focus { border-color: var(--rs-border-focus); outline: 2px solid rgba(0,114,138,0.16); outline-offset: 0; }
.form__row textarea { min-height: 140px; resize: vertical; }
.form__help { font-size: 0.8125rem; color: var(--rs-text-secondary); }

/* ---------- Footer ---------- */
.footer {
  background: var(--rs-surface-brand); color: var(--rs-text-on-brand-muted);
  padding: 72px 0 32px;
  font-size: 0.9375rem;
}
.footer a { color: var(--rs-text-on-brand-muted); transition: color 140ms var(--ease-out); }
.footer a:hover { color: var(--rs-teal-300); }
.footer__grid { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 56px; margin-bottom: 56px; }
@media (max-width: 880px) { .footer__grid { grid-template-columns: 1fr 1fr; gap: 40px; } }
@media (max-width: 520px) { .footer__grid { grid-template-columns: 1fr; gap: 32px; } }
.footer__brand { max-width: 360px; }
.footer__brand img { height: 32px; width: auto; margin-bottom: 18px; filter: brightness(0) invert(1); }
.footer__brand p { color: var(--rs-text-on-brand-muted); font-size: 0.9375rem; line-height: 1.65; }
.footer__col h5 { font-family: var(--serif); color: var(--rs-text-on-brand); font-size: 0.9375rem; margin-bottom: 18px; letter-spacing: 0.02em; font-weight: 400; }
.footer__col ul { display: grid; gap: 12px; }
.footer__col a { font-size: 0.9375rem; line-height: 1.5; }
.footer__base {
  border-top: 1px solid var(--rs-teal-500);
  padding-top: 28px;
  display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  font-size: 0.8125rem; color: rgba(255,255,255,0.78);
  line-height: 1.6;
}
.footer__base a { color: rgba(255,255,255,0.85); }

/* ---------- Utilities ---------- */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.text-center { text-align: center; }
.mt-0 { margin-top: 0; } .mt-2 { margin-top: 8px; } .mt-3 { margin-top: 16px; } .mt-4 { margin-top: 24px; } .mt-5 { margin-top: 32px; } .mt-6 { margin-top: 48px; } .mt-8 { margin-top: 64px; }
.mb-0 { margin-bottom: 0; } .mb-2 { margin-bottom: 8px; } .mb-3 { margin-bottom: 16px; } .mb-4 { margin-bottom: 24px; }

/* ---------- Product imagery components ---------- */

/* .product-frame — consistent device chrome around real product screenshots.
   Use as wrapper around <img>; optional --chrome variant adds the macOS dot bar. */
.product-frame {
  position: relative;
  background: var(--rs-surface-card);
  border: 1px solid var(--rs-border);
  border-radius: var(--r-lg);
  box-shadow: var(--rs-shadow-lift);
  overflow: hidden;
  line-height: 0;
}
.product-frame > img { display: block; width: 100%; height: auto; }
.product-frame--chrome::before {
  content: "";
  display: block;
  height: 32px;
  background: #f6f7f9 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='52' height='12' viewBox='0 0 52 12'><circle cx='6' cy='6' r='5' fill='%23d97370'/><circle cx='26' cy='6' r='5' fill='%23e5b86c'/><circle cx='46' cy='6' r='5' fill='%238ec79b'/></svg>") 12px center no-repeat;
  border-bottom: 1px solid var(--rs-border);
}
.product-frame--bare { box-shadow: none; border: 0; border-radius: 0; }
.section--navy .product-frame { box-shadow: 0 30px 80px -20px rgba(0, 0, 0, 0.55), 0 6px 18px rgba(0, 0, 0, 0.25); }

/* .product-figure — wraps a .product-frame with caption.
   Use <figure class="product-figure"> with <figcaption> as final child. */
.product-figure { margin: 0; }
.product-figure > figcaption {
  margin-top: 16px;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--rs-text-secondary);
}
.product-figure > figcaption strong {
  display: block;
  font-family: var(--sans);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rs-teal-500);
  margin-bottom: 6px;
}
.section--navy .product-figure > figcaption { color: var(--rs-text-on-brand-muted); }
.section--navy .product-figure > figcaption strong { color: var(--rs-teal-300); }
.product-figure--caption-top { display: flex; flex-direction: column-reverse; }
.product-figure--caption-top > figcaption { margin: 0 0 16px; }

/* .hero--split — two-column hero variant with screenshot beside copy.
   Wrap <div class="hero__inner"> contents in two children: text + image. */
.hero--split .hero__inner { max-width: var(--container); }
.hero--split .hero__grid {
  display: grid;
  grid-template-columns: 5fr 7fr;
  gap: clamp(32px, 5vw, 80px);
  align-items: center;
}
.hero--split .hero__title { font-size: clamp(2rem, 4vw, 3.5rem); }
.hero--split .hero__copy { max-width: 540px; }
.hero--split .hero__lead { font-size: clamp(1.0625rem, 1.4vw, 1.25rem); }
.hero--split .hero__image .product-frame {
  transform: perspective(1800px) rotateY(-2deg) rotateX(0.5deg);
  transform-origin: left center;
}
@media (max-width: 880px) {
  .hero--split .hero__grid { grid-template-columns: 1fr; gap: 40px; }
  .hero--split .hero__image .product-frame { transform: none; }
}

/* .outputs-gallery — 2x2 grid of deliverable thumbnails, used on /product/qsra/. */
.outputs-gallery { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.outputs-gallery .product-frame { aspect-ratio: 16/10; }
.outputs-gallery .product-frame > img { height: 100%; object-fit: cover; object-position: top center; }
@media (max-width: 880px) { .outputs-gallery { grid-template-columns: 1fr; } }

/* .annotated-figure — for the Schedule Lens annotation overlay pattern.
   Position absolute children with .anno class to label parts of the image. */
.annotated-figure { position: relative; }
.annotated-figure .anno {
  position: absolute;
  font-family: var(--sans);
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rs-teal-500);
  background: var(--rs-surface-card);
  padding: 4px 8px;
  border-radius: var(--r-sm);
  box-shadow: var(--rs-shadow-1);
  white-space: nowrap;
}
.annotated-figure .anno::before {
  content: "";
  position: absolute;
  background: var(--rs-teal-500);
  height: 1px;
  width: 24px;
}
.annotated-figure .anno--right::before { right: -24px; top: 50%; }
.annotated-figure .anno--left::before  { left:  -24px; top: 50%; }
/* Hide overlay labels below 720px — the figure becomes too small for them to align cleanly. */
@media (max-width: 720px) {
  .annotated-figure .anno { display: none; }
}

/* ---------- Skip link (a11y) ---------- */
.skip-link {
  position: absolute;
  left: 0; top: 0;
  background: var(--rs-surface-brand);
  color: var(--rs-text-on-brand);
  padding: 12px 18px;
  font-weight: 600;
  font-size: 0.9375rem;
  text-decoration: none;
  border-radius: 0 0 var(--r-sm) 0;
  transform: translateY(-110%);
  transition: transform 140ms var(--ease-out);
  z-index: 999;
}
.skip-link:focus { transform: translateY(0); }

/* ---------- Page-specific helpers ---------- */

/* Print */
@media print {
  .nav, .footer__base, .nav__toggle { display: none; }
  .hero { background: #FFFFFF; color: var(--rs-text-brand); padding: 24px 0; }
  .hero::before, .hero::after { display: none; }
  .hero__title, .hero__lead { color: var(--rs-text-brand); }
  .hero--split .hero__grid { grid-template-columns: 1fr; }
  .hero--split .hero__image .product-frame { transform: none; }
  .section { padding: 32px 0; break-inside: avoid; }
  .section--navy { background: #FFFFFF; color: var(--rs-text-brand); }
  .section--navy h1, .section--navy h2, .section--navy h3 { color: var(--rs-text-brand); }
  .card, .module, .framework, .price, .product-frame { break-inside: avoid; box-shadow: none; }
  a[href^="http"]::after,
  a[href^="https"]::after {
    content: " (" attr(href) ")";
    font-size: 0.75rem;
    color: var(--rs-text-secondary);
    word-break: break-all;
  }
  /* Suppress noisy URL annotations for the nav brand, button arrows, etc. */
  .nav a[href]::after, .btn[href]::after, .skip-link::after { content: ""; }
}

/* ============== Interactive S-curve toy ============== */
.scurve-toy { margin: 40px auto 0; max-width: 1080px; display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
  gap: 32px; align-items: center; background: var(--rs-surface-card);
  border: 1px solid var(--rs-teal-100); border-radius: 8px; padding: 28px;
  box-shadow: 0 6px 24px -16px rgba(0,51,102,0.25); }
.scurve-toy figcaption { grid-column: 1 / -1; margin-top: 8px; padding-top: 16px;
  border-top: 1px solid var(--rs-teal-100); color: var(--rs-text-secondary); font-size: 0.85rem; line-height: 1.5; }
.scurve-toy figcaption strong { display: block; color: var(--rs-text-brand); margin-bottom: 4px;
  font-family: var(--serif); font-weight: 400; letter-spacing: -0.005em; font-size: 0.95rem; }
.scurve-toy__chart { position: relative; cursor: ew-resize; user-select: none;
  -webkit-tap-highlight-color: transparent; border-radius: 4px; }
.scurve-toy__chart:focus-visible { outline: 2px solid var(--rs-border-focus); outline-offset: 4px; }
.scurve-toy__chart svg { display: block; width: 100%; height: auto; touch-action: pan-y; }
[data-scurve-marker] { transition: transform 0.12s ease-out; will-change: transform; }
.scurve-toy__panel { display: flex; flex-direction: column; gap: 24px; }
.scurve-toy__readout { padding: 20px; background: var(--rs-surface-tinted);
  border-left: 4px solid var(--rs-teal-500); border-radius: 4px; }
.scurve-toy__readout-num { font-family: var(--serif); font-weight: 400;
  font-size: clamp(1.75rem, 3.4vw, 2.6rem); color: var(--rs-text-brand);
  letter-spacing: -0.015em; line-height: 1.1; font-feature-settings: "tnum" 1, "lnum" 1; }
.scurve-toy__readout-delta { margin-top: 8px; color: var(--rs-teal-500);
  font-weight: 600; font-size: 0.95rem; }
.scurve-toy__controls { display: flex; flex-direction: column; gap: 12px; }
.scurve-toy__toggle { display: inline-flex; align-items: center; gap: 10px;
  cursor: pointer; font-size: 0.95rem; color: var(--rs-text-brand); }
.scurve-toy__toggle input { width: 18px; height: 18px; accent-color: var(--rs-teal-500);
  cursor: pointer; margin: 0; }
.scurve-toy__hint { margin: 0; color: var(--rs-text-secondary); font-size: 0.85rem;
  font-style: italic; }
@media (max-width: 760px) {
  .scurve-toy { grid-template-columns: 1fr; padding: 20px; gap: 24px; }
  .scurve-toy__chart { cursor: pointer; }
}
@media (prefers-reduced-motion: reduce) {
  [data-scurve-marker] { transition: none; }
}

/* === Trust strip === */
.trust-strip {
  background: var(--rs-surface-page);
  border-top: 1px solid var(--rs-graphite-100);
  border-bottom: 1px solid var(--rs-graphite-100);
  padding: 32px 0;
}
.trust-strip__label {
  font-size: 0.75rem; font-weight: 700; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--rs-text-secondary);
  text-align: center; margin-bottom: 20px;
}
.trust-strip__logos {
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: clamp(20px, 4vw, 48px);
}
.trust-strip__logos img {
  height: 56px; width: auto; opacity: 0.85;
  transition: opacity 200ms var(--ease-out);
}
.trust-strip__logos img:hover { opacity: 1; }
.trust-strip__disclaimer {
  margin: 20px auto 0; font-size: 0.75rem; color: var(--rs-text-secondary);
  text-align: center; max-width: 60ch; line-height: 1.55;
}
.trust-strip__disclaimer .link { color: var(--rs-text-link); }
@media (max-width: 560px) {
  .trust-strip__logos { gap: 18px; }
  .trust-strip__logos img { height: 44px; }
}

/* ============== BOOK-A-SLOT (Cal.com / Calendly embed scaffold) ============== */
.book-slot {
  background: var(--rs-surface-card);
  border: 1px solid var(--rs-border);
  border-radius: var(--r-lg);
  padding: 0;
  overflow: hidden;
  box-shadow: var(--rs-shadow-2);
  margin-top: 32px;
}
.book-slot iframe { display: block; }
.contact-options {
  display: flex;
  gap: 16px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 32px;
  padding: 20px;
  background: var(--rs-surface-tinted);
  border-radius: var(--r-md);
}
.contact-options__primary { flex: 0 0 auto; }
.contact-options__or {
  font-size: 0.875rem;
  color: var(--rs-text-secondary);
  font-style: italic;
}

/* =========================================================================
   Visual Devices + Typography signature classes (Phase C — 2026-05-17)
   Specs:
     - D2 underline-accent .num : _Design/2026-05-17_RS_Visual_Devices.md §D2
     - D4 fingerprint watermark : _Design/2026-05-17_RS_Visual_Devices.md §D4
     - D5 sentence-finding cap. : _Design/2026-05-17_RS_Visual_Devices.md §D5
     - D6 audit-hash footer     : _Design/2026-05-17_RS_Visual_Devices.md §D6
     - .num-inline (Plex Mono)  : _Design/2026-05-17_RS_Typography.md §3.4
   ========================================================================= */

/* D2 — canonical .num (FT-VV big-number, Georgia + teal-soft underline).
   Aliases the existing .kpi__big / .stat__num / .metric-strip__num so
   "<span class=num>5,869</span>" and "<span class=kpi__big>5,869</span>"
   render identically. */
.num {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(2.5rem, 5vw, 4rem);
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--rs-text-brand);
  border-bottom: 2px solid var(--rs-accent-underline);
  padding-bottom: 4px;
  display: inline-block;
  font-variant-numeric: tabular-nums lining-nums;
  font-feature-settings: "tnum", "lnum", "kern";
}
.section--navy .num,
.hero--accent .num { color: var(--rs-text-on-brand); border-bottom-color: var(--rs-teal-300); }

/* D2 modifiers — peer suffix (Visual Devices) and unit (Typography §3.3). */
.num__suffix {
  font-family: var(--sans);
  font-weight: 400;
  font-size: 0.5em;
  color: var(--rs-teal-500);
  vertical-align: super;
  margin-left: 0.12em;
  letter-spacing: 0;
}
.num__unit {
  font-family: var(--sans);
  font-weight: 300;
  font-size: 0.42em;
  color: var(--rs-text-secondary);
  margin-left: 0.35em;
  letter-spacing: 0;
  text-transform: lowercase;
}

/* Typography §3.4 — .num-inline: Plex Mono inline-in-prose numbers
   (audit hashes, activity IDs, WBS codes, P-value chips inside paragraphs). */
.num-inline {
  font-family: var(--mono);
  font-variant-numeric: tabular-nums lining-nums;
  font-feature-settings: "tnum", "lnum", "kern";
  font-size: 0.95em;
}

/* D6 — audit-hash footer (build-time hash injection target). */
.audit-hash {
  font-family: var(--mono);
  font-size: 0.78rem;
  letter-spacing: 0.04em;
  color: var(--rs-text-secondary);
  font-feature-settings: "tnum", "lnum";
}

/* D5 — sentence-finding caption (italic narrative above charts). */
.sentence-caption {
  font-family: var(--serif);
  font-style: italic;
  font-size: 1.06rem;
  line-height: 1.5;
  color: var(--rs-text-secondary);
  margin: 0 0 12px;
  max-width: 70ch;
}

/* D4 — PDF/web cover watermark hooks (opacity per spec: 12% light, 22% navy). */
.fingerprint--watermark            { opacity: 0.12; }
.fingerprint--watermark--on-navy   { opacity: 0.22; }
