/* ───────────────────────────────────────────────────────────────────────────
 * olano.ai — themed to match dashboard_2.0 (lucide.dev / VitePress style).
 * Borderless: separation comes from background tone, not outlines. One accent
 * (brand orange) — except the Cortex section, which is deliberately the only
 * thing in the UI using the neural violet.
 *
 * Tokens are copied from olano/dashboard_2.0/src/styles/tokens.css.
 * Theme: <html data-theme="dark|light">, persisted as `lc-theme` (same key
 * convention as the dashboard), default dark, applied pre-paint in <head>.
 * ─────────────────────────────────────────────────────────────────────────── */
:root,
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #1b1b1f; /* page */
  --bg-elev: #161618; /* darker alt */
  --surface: #202127; /* cards */
  --surface-2: #26262c; /* buttons, soft hovers */
  --surface-3: #2e2e34; /* badges, stronger hover */
  --surface-4: #3a3a42; /* scrollbar */
  --border: #2e2e32; /* hairlines where needed */
  --border-strong: #3a3a42;
  --border-focus: #ff6a3d;
  --text: #dfdfd6; /* warm off-white (Lucide) */
  --text-2: #98989f;
  --text-3: #6a6a71;
  --text-4: #54545a;
  /* brand orange */
  --accent: #ff6a3d;
  --accent-hover: #ff8159;
  --accent-soft: rgba(255, 106, 61, 0.14);
  --accent-muted: rgba(255, 106, 61, 0.08);
  /* Cortex — neural violet, the only non-orange accent */
  --cortex: #a78bfa;
  --cortex-strong: #c4b5fd;
  --cortex-glow: rgba(167, 139, 250, 0.7);
  --cortex-soft: rgba(167, 139, 250, 0.16);
  --cortex-muted: rgba(167, 139, 250, 0.08);
  --success: #3ddc97;
  --success-soft: rgba(61, 220, 151, 0.13);
  --warn: #e2b341;
  --warn-soft: rgba(226, 179, 65, 0.13);
  --danger: #f87171;
  --danger-soft: rgba(248, 113, 113, 0.13);
  --info: #60a5fa;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow: 0 8px 28px rgba(0, 0, 0, 0.45);
  --shadow-lg: 0 18px 50px rgba(0, 0, 0, 0.55);
  --shadow-focus: 0 0 0 3px rgba(255, 106, 61, 0.25);
}

:root[data-theme="light"] {
  color-scheme: light;
  --bg: #f3f3f4;
  --bg-elev: #ffffff;
  --surface: #ffffff;
  --surface-2: #e9e9ea;
  --surface-3: #e1e1e3;
  --surface-4: #d4d4d6;
  --border: #e4e4e6;
  --border-strong: #d4d4d6;
  --border-focus: #e85d2a;
  --text: #3c3c43;
  --text-2: #67676c;
  --text-3: #8e8e93;
  --text-4: #a8a8ad;
  --accent: #e85d2a;
  --accent-hover: #d44e1e;
  --accent-soft: rgba(232, 93, 42, 0.1);
  --accent-muted: rgba(232, 93, 42, 0.06);
  --cortex: #7c3aed;
  --cortex-strong: #6d28d9;
  --cortex-glow: rgba(124, 58, 237, 0.55);
  --cortex-soft: rgba(124, 58, 237, 0.12);
  --cortex-muted: rgba(124, 58, 237, 0.06);
  --success: #18794e;
  --success-soft: rgba(24, 121, 78, 0.1);
  --warn: #b45309;
  --warn-soft: rgba(180, 83, 9, 0.1);
  --danger: #dc2626;
  --danger-soft: rgba(220, 38, 38, 0.1);
  --info: #2563eb;
  --shadow-sm: 0 1px 2px rgba(24, 24, 27, 0.05);
  --shadow: 0 8px 28px rgba(24, 24, 27, 0.08);
  --shadow-lg: 0 18px 50px rgba(24, 24, 27, 0.12);
  --shadow-focus: 0 0 0 3px rgba(232, 93, 42, 0.18);
}

:root {
  --r-xs: 5px;
  --r-sm: 7px;
  --r: 10px;
  --r-md: 12px;
  --r-lg: 16px;
  --r-pill: 999px;
  --max: 1200px;
  --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
    Roboto, "Helvetica Neue", "PingFang SC", "Noto Sans SC", "Microsoft YaHei", Arial, sans-serif;
  --font-heading: var(--font-sans);
  --font-body: var(--font-sans);
  --font-brand: "Poppins", var(--font-sans);
  --t-fast: 0.12s;
  --t: 0.18s;
  --ease: cubic-bezier(0.32, 0.72, 0, 1);
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  /* Anchor jumps land below the 64px sticky header instead of underneath it. */
  scroll-padding-top: 76px;
  /* Safety net: nothing may widen the page sideways (mobile browsers otherwise
     zoom out and let the page pan left/right). `clip` doesn't create a scroll
     container, so the sticky header is unaffected; `hidden` is the fallback. */
  overflow-x: hidden;
  overflow-x: clip;
}

body {
  margin: 0;
  font-family: var(--font-body);
  color: var(--text);
  background: var(--bg);
  font-optical-sizing: auto;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

body.nav-open {
  overflow: hidden;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
  cursor: pointer;
}

img {
  display: block;
  max-width: 100%;
}

::-webkit-scrollbar {
  width: 9px;
  height: 9px;
}

::-webkit-scrollbar-thumb {
  background: var(--surface-4);
  border-radius: var(--r-pill);
  border: 2px solid transparent;
  background-clip: padding-box;
}

:is(a, button, input, select, summary):focus-visible {
  outline: 2px solid var(--border-focus);
  outline-offset: 2px;
  border-radius: var(--r-xs);
}

.svg-defs {
  display: none;
}

/* Lucide icon defaults: stroke-based, monochrome, inherits currentColor */
svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2;
}

h1,
h2,
h3,
h4,
.brand,
.price {
  font-family: var(--font-heading);
}

.section {
  width: min(var(--max), calc(100% - 48px));
  margin: 0 auto;
}

/* Header — full-width sticky bar, hairline bottom (VitePress pattern) */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  height: 64px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 24px;
  width: 100%;
  margin: 0;
  padding: 0 max(24px, calc((100vw - var(--max)) / 2));
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--border);
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-weight: 700;
  font-size: 18px;
  letter-spacing: -0.01em;
  color: var(--text);
}

/* Wordmark — "olano.ai" set in Poppins Medium. The "olano" tracks the theme
   (black on light, white on dark) while ".ai" keeps the brand coral. */
.brand-word {
  font-family: var(--font-brand);
  font-weight: 500;
  letter-spacing: -0.02em;
  color: #ffffff;
}

:root[data-theme="light"] .brand-word {
  color: #15151a;
}

.brand-ai {
  color: var(--accent);
}

/* Brand mark — network "O" of connected nodes that scales from favicon to nav. */
.brand-mark {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  flex-shrink: 0;
}

.brand-mark svg {
  width: 34px;
  height: 34px;
}

.site-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  justify-self: center;
  gap: 2px;
  color: var(--text-3);
  font-size: 13.5px;
  font-weight: 500;
}

.site-nav a,
.nav-group-button {
  padding: 7px 10px;
  border-radius: var(--r-sm);
  white-space: nowrap;
  transition:
    background var(--t-fast) var(--ease),
    color var(--t-fast) var(--ease);
}

.site-nav a:hover,
.nav-group-button:hover {
  background: var(--surface-2);
  color: var(--text);
}

/* Scrollspy — the link (or group trigger) for the section in view holds the
   hover treatment so visitors always know where they are on the page. */
.site-nav a.is-current,
.nav-group-button.is-current {
  background: var(--surface-2);
  color: var(--text);
}

/* Product dropdown — a click-toggled disclosure grouping the deep-dive
   sections. Inside the burger menu it flattens back into the link list. */
.nav-group {
  position: relative;
  display: inline-flex;
}

.nav-group-button {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: none;
  background: transparent;
  font-size: inherit;
  font-weight: inherit;
}

/* Caret — same border-drawn chevron as the language control. */
.nav-group-button::after {
  content: "";
  width: 5.5px;
  height: 5.5px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--t-fast) var(--ease);
}

.nav-group.is-open .nav-group-button::after {
  transform: translateY(1px) rotate(225deg);
}

.nav-group-menu {
  position: absolute;
  top: calc(100% + 10px);
  left: 50%;
  translate: -50% 0;
  display: none;
  flex-direction: column;
  gap: 2px;
  min-width: 184px;
  padding: 8px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-lg);
}

.nav-group.is-open .nav-group-menu {
  display: flex;
}

.nav-group-menu a {
  padding: 9px 12px;
}

.nav-cta {
  justify-self: end;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  padding: 0 16px;
  border: none;
  border-radius: var(--r-pill);
  font-size: 13.5px;
  font-weight: 600;
  color: #fff;
  background: var(--accent);
  transition: background var(--t-fast) var(--ease);
}

.nav-cta:hover {
  background: var(--accent-hover);
}

.nav-cta svg {
  width: 16px;
  height: 16px;
}

.header-actions {
  justify-self: end;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

/* Theme toggle — icon-only ghost button (the dashboard sidebar pattern) */
.theme-toggle {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border: none;
  border-radius: var(--r-sm);
  background: transparent;
  color: var(--text-3);
  transition:
    background var(--t-fast) var(--ease),
    color var(--t-fast) var(--ease);
}

.theme-toggle:hover {
  background: var(--surface-2);
  color: var(--text);
}

.theme-toggle svg {
  width: 18px;
  height: 18px;
}

.theme-toggle .icon-moon {
  display: none;
}

:root[data-theme="light"] .theme-toggle .icon-sun {
  display: none;
}

:root[data-theme="light"] .theme-toggle .icon-moon {
  display: block;
}

/* Language control — a compact globe + locale-code pill. The real <select>
   (full language names, native picker, screen-reader label) sits invisibly on
   top of it, so the switcher keeps its accessibility while taking a third of
   the width the old full-name select needed. */
.language-control {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 38px;
  padding: 0 26px 0 11px;
  border-radius: var(--r-sm);
  color: var(--text);
  background: var(--surface-2);
  cursor: pointer;
  transition: background var(--t-fast) var(--ease);
}

.language-control:hover {
  background: var(--surface-3);
}

.language-control::after {
  content: "";
  position: absolute;
  right: 12px;
  width: 6px;
  height: 6px;
  border-right: 1.5px solid var(--text-3);
  border-bottom: 1.5px solid var(--text-3);
  pointer-events: none;
  transform: translateY(-2px) rotate(45deg);
}

.language-globe {
  width: 16px;
  height: 16px;
  color: var(--text-3);
  flex-shrink: 0;
}

.language-code {
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.05em;
}

.language-control select {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  border: none;
  appearance: none;
  cursor: pointer;
}

/* The overlay select is invisible, so its focus ring is drawn on the pill. */
.language-control:has(select:focus-visible) {
  outline: 2px solid var(--border-focus);
  outline-offset: 2px;
}

.language-control select option {
  background: var(--surface);
  color: var(--text);
}

.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;
}

.menu-button {
  display: none;
  justify-self: end;
  width: 38px;
  height: 38px;
  border: none;
  border-radius: var(--r-sm);
  color: var(--text-2);
  background: var(--surface-2);
}

.menu-button:hover {
  background: var(--surface-3);
  color: var(--text);
}

/* Animations */
@keyframes pulse-glow {

  0%,
  100% {
    opacity: 0.18;
  }

  50% {
    opacity: 0.32;
  }
}

/* Hero Section */
.hero {
  min-height: calc(100vh - 170px);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(500px, 1.05fr);
  align-items: center;
  gap: 56px;
  padding: 64px 0 84px;
}

.hero-eyebrow {
  margin: 0 0 16px;
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.hero h1 {
  margin: 0;
  font-size: clamp(44px, 6vw, 76px);
  line-height: 1.06;
  letter-spacing: -0.025em;
  font-weight: 700;
  color: var(--text);
}

.hero-lede {
  width: min(640px, 100%);
  margin: 28px 0 0;
  color: var(--text-2);
  font-size: clamp(16px, 1.5vw, 18px);
  line-height: 1.65;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 36px;
}

/* Compact trust line under the hero CTAs ("Fully hosted · No installation ·
   ..."). One text node, so the i18n walker translates it as a single string. */
/* Trust strip under the hero CTAs. A flex row of items rather than one long
   string: the separators are drawn between items, so a wrap reads as a second
   row of claims instead of a stranded orphan word. */
.hero-proof {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 26px;
  margin: 24px 0 0;
  padding: 0;
  list-style: none;
  color: var(--text-3);
  font-family: var(--font-heading);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

/* No dot separators: at this width the strip wraps, and a separator glued to
   the item drags a leading dot onto the second line. Wide gaps carry the
   same rhythm and wrap cleanly. */
.hero-proof li {
  white-space: nowrap;
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 48px;
  padding: 0 24px;
  border-radius: var(--r);
  font-size: 15px;
  font-weight: 600;
  transition: all var(--t-fast) var(--ease);
}

.button svg {
  width: 18px;
  height: 18px;
}

.button-primary {
  color: #fff;
  background: var(--accent);
  border: none;
}

.button-primary:hover {
  background: var(--accent-hover);
  transform: translateY(-1px);
}

.button-secondary {
  color: var(--text);
  background: var(--surface-2);
  border: none;
}

.button-secondary:hover {
  background: var(--surface-3);
}

/* Hero Visual */
.hero-orb-container {
  position: relative;
  width: 100%;
  /* Match the org chart's own viewBox (480x396) so the box has no dead band
     above and below the diagram - a square box left ~80px of empty hero. */
  aspect-ratio: 480 / 396;
  max-width: 560px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
}

.glowing-orb {
  position: absolute;
  width: 62%;
  height: 62%;
  border-radius: 50%;
  background: radial-gradient(circle, var(--accent) 0%, transparent 70%);
  filter: blur(52px);
  animation: pulse-glow 5s ease-in-out infinite alternate;
  opacity: 0.22;
}

/* Hero org chart — SMIL-animated agent team (see index.html). The global
   `svg` icon defaults (20px, currentColor stroke) must be overridden here. */
.org-chart {
  position: relative;
  z-index: 2;
  width: 100%;
  height: auto;
  display: block;
  fill: none;
  stroke: none;
}

.org-line {
  stroke: var(--border-strong);
  stroke-width: 1.5;
  fill: none;
}

.org-card {
  fill: var(--surface);
  stroke: var(--border);
  stroke-width: 1;
  filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.12));
}

.org-card.lead {
  fill: var(--accent-soft);
  stroke: var(--accent);
  filter: none;
}

.org-name {
  fill: var(--text);
  font-family: var(--font-sans);
  font-size: 14px;
  font-weight: 600;
}

.org-role {
  fill: var(--text-3);
  font-family: var(--font-sans);
  font-size: 11px;
}

/* compact tier-3 cards */
.org-chart g.sm .org-name {
  font-size: 12.5px;
}

.org-chart g.sm .org-role {
  font-size: 10.5px;
}

.org-task {
  fill: var(--accent);
}

.org-done circle {
  fill: var(--success);
}

.org-done path {
  stroke: #fff;
  stroke-width: 1.8;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* The global reduced-motion kill switch doesn't reach SMIL — hide the
   moving dots instead; the chart itself stays. */
@media (prefers-reduced-motion: reduce) {

  .org-task,
  .org-done {
    display: none;
  }
}

/* Sections */
.intro-strip {
  display: flex;
  justify-content: center;
  padding: 70px 0 110px;
}

.intro-strip > div {
  width: min(960px, 100%);
  text-align: center;
}

.intro-strip h2 {
  margin: 0;
  font-size: clamp(26px, 3.2vw, 42px);
  font-family: var(--font-heading);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.02em;
  color: var(--text);
}

.intro-strip p {
  margin: 18px auto 0;
  max-width: 720px;
  color: var(--text-2);
  font-size: clamp(15px, 1.4vw, 17px);
  line-height: 1.65;
}

.split,
.collaboration,
.playground {
  display: grid;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  gap: 70px;
  align-items: center;
  padding: 110px 0;
}

.section-copy h2,
.section-heading h2,
.security-copy h2,
.final-cta h2 {
  margin: 0;
  font-size: clamp(34px, 4.2vw, 52px);
  line-height: 1.12;
  letter-spacing: -0.025em;
  font-weight: 700;
  color: var(--text);
}

.section-copy p,
.section-heading p,
.security-copy p,
.final-cta p {
  margin: 20px 0 0;
  color: var(--text-2);
  font-size: 17px;
  line-height: 1.65;
}

/* Workflow List */
.workflow-list {
  display: grid;
  gap: 14px;
}

.workflow-list article {
  display: grid;
  grid-template-columns: 64px 1fr;
  column-gap: 18px;
  padding: 26px 28px;
  border-radius: var(--r-md);
  background: var(--surface);
  transition:
    background var(--t-fast) var(--ease),
    transform var(--t) var(--ease);
}

.workflow-list article:hover {
  transform: translateX(6px);
  background: var(--surface-2);
}

.step-number {
  grid-row: span 2;
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: 17px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

h3 {
  margin: 0;
  font-size: 20px;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--text);
}

.workflow-list p {
  margin: 8px 0 0;
  color: var(--text-2);
  font-size: 14.5px;
  line-height: 1.6;
}

.capability-band,
.audiences,
.pricing,
.stats-band,
.pedigree-band,
.testimonials,
.usecases,
.faq,
.problem {
  padding: 110px 0;
}

/* Problem section — "Sound familiar?" */
.problem {
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: radial-gradient(ellipse at 50% 0%, var(--accent-muted), transparent 70%);
}

.section-heading.problem-heading {
  display: block;
  text-align: center;
  margin-bottom: 56px;
}

.problem-heading h2 {
  margin: 0 0 14px;
}

.problem-heading p {
  max-width: 720px;
  margin: 0 auto;
  color: var(--text-2);
  font-size: 16px;
  line-height: 1.6;
}

.problem-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  max-width: 1100px;
  margin: 0 auto;
}

.problem-card {
  padding: 28px 26px;
  border-radius: var(--r-md);
  background: var(--surface);
  transition:
    transform var(--t) var(--ease),
    background var(--t-fast) var(--ease);
}

.problem-card:hover {
  transform: translateY(-3px);
  background: var(--surface-2);
}

.problem-icon {
  display: block;
  width: 40px;
  height: 40px;
  padding: 9px;
  margin-bottom: 16px;
  color: var(--accent);
  background: var(--accent-soft);
  border-radius: var(--r-sm);
}

.problem-card h3 {
  margin: 0 0 10px;
  color: var(--text);
  font-family: var(--font-heading);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.35;
}

.problem-card p {
  margin: 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.65;
}

.problem-pivot {
  max-width: 780px;
  margin: 56px auto 0;
  padding: 26px 34px;
  border-radius: var(--r-md);
  background: var(--accent-soft);
  color: var(--text);
  font-family: var(--font-heading);
  font-size: clamp(16px, 1.6vw, 19px);
  font-weight: 500;
  line-height: 1.55;
  text-align: center;
}

@media (max-width: 880px) {
  .problem-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Use cases: five equal starting points, no flagship. A 6-track grid (cards
   span 2) lets the leftover row of two center under the row of three. */
.usecase-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 18px;
  max-width: 1100px;
  margin: 0 auto;
}

.usecase-grid > .usecase-card {
  grid-column: span 2;
}

.usecase-grid > .usecase-card:nth-child(3n + 1):nth-last-child(2) {
  grid-column: 2 / span 2;
}

.usecase-card {
  padding: 28px 26px;
  border-radius: var(--r-md);
  background: var(--surface);
  transition:
    transform var(--t) var(--ease),
    background var(--t-fast) var(--ease),
    box-shadow var(--t) var(--ease);
}

.usecase-card:hover {
  transform: translateY(-4px);
  background: var(--surface-2);
  box-shadow: var(--shadow);
}

.usecase-card svg {
  width: 42px;
  height: 42px;
  padding: 10px;
  margin-bottom: 18px;
  color: var(--accent);
  background: var(--accent-soft);
  border-radius: var(--r-sm);
}

.usecase-card h3 {
  margin: 0 0 10px;
  color: var(--text);
  font-family: var(--font-heading);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.35;
}

.usecase-card p {
  margin: 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.65;
}

.usecase-card ul {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
}

.usecase-card li {
  position: relative;
  padding-left: 28px;
  margin: 10px 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.5;
}

.usecase-card li::before {
  content: "→";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--accent);
  font-weight: 700;
}

.usecase-note {
  max-width: 720px;
  margin: 32px auto 0;
  padding: 13px 22px;
  border-radius: var(--r-pill);
  background: var(--accent-soft);
  color: var(--text);
  font-size: 13.5px;
  text-align: center;
  line-height: 1.5;
}

@media (max-width: 880px) {
  .usecase-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .usecase-grid > .usecase-card,
  .usecase-grid > .usecase-card:nth-child(3n + 1):nth-last-child(2) {
    grid-column: auto;
  }
}

/* Solutions — the four solution families on the homepage, a balanced 2x2 of
   the same cards the use-case grid uses. */
.solution-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  max-width: 1100px;
  margin: 0 auto;
}

/* Family subtitle line ("Customer service, enquiries, leads, and bookings"). */
.usecase-card p.usecase-sub {
  margin: -4px 0 12px;
  color: var(--accent);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.02em;
}

@media (max-width: 880px) {
  .solution-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Selected work — two case-study cards straight after the hero. */
.work-band {
  padding: 110px 0;
}

.work-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  max-width: 1100px;
  margin: 0 auto;
}

.work-card {
  display: flex;
  flex-direction: column;
  padding: 34px 32px;
  border-radius: var(--r-md);
  background: var(--surface);
  transition:
    transform var(--t) var(--ease),
    background var(--t-fast) var(--ease),
    box-shadow var(--t) var(--ease);
}

.work-card:hover {
  transform: translateY(-4px);
  background: var(--surface-2);
  box-shadow: var(--shadow);
}

.work-card p {
  margin: 0;
  color: var(--text-2);
  font-size: 14.5px;
  line-height: 1.65;
}

.work-card p.work-card-tag {
  margin: 0 0 14px;
  color: var(--text-3);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.work-card h3 {
  margin: 0 0 12px;
  color: var(--text);
  font-family: var(--font-heading);
  font-size: 19px;
  font-weight: 600;
  line-height: 1.35;
}

.work-card ul {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
}

.work-card li {
  position: relative;
  padding-left: 28px;
  margin: 10px 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.5;
}

.work-card li::before {
  content: "→";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--accent);
  font-weight: 700;
}

.work-card p.work-card-result {
  flex: 1;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

.work-card-result strong {
  color: var(--text);
}

.work-card-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 20px;
  color: var(--accent);
  font-size: 14px;
  font-weight: 600;
}

.work-card-link svg {
  width: 16px;
  height: 16px;
}

@media (max-width: 880px) {
  .work-band {
    padding: 80px 0;
  }

  .work-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* FAQ section */
.faq .section-heading {
  margin-bottom: 48px;
}

.faq-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  max-width: 880px;
  margin: 0 auto;
}

.faq-list details {
  border-radius: var(--r-md);
  background: var(--surface);
  overflow: hidden;
  transition: background var(--t-fast) var(--ease);
}

.faq-list details[open] {
  background: var(--surface-2);
}

.faq-list summary {
  list-style: none;
  cursor: pointer;
  padding: 18px 24px;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 15.5px;
  color: var(--text);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  line-height: 1.4;
}

.faq-list summary:hover {
  color: var(--accent);
}

.faq-list summary::-webkit-details-marker {
  display: none;
}

.faq-list summary::after {
  content: "+";
  font-family: var(--font-heading);
  font-size: 22px;
  font-weight: 400;
  color: var(--accent);
  flex-shrink: 0;
  transition: transform var(--t) var(--ease);
  line-height: 1;
}

.faq-list details[open] summary::after {
  transform: rotate(45deg);
}

.faq-list details p {
  margin: 0;
  padding: 0 24px 20px;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.7;
}

.faq-list details p strong {
  color: var(--text);
}

.faq-list details p em {
  color: var(--accent);
  font-style: normal;
}

/* Inline links inside FAQ answers must read as links (they inherited the gray
   answer color with no underline and were invisible). */
.faq-list details p a {
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.faq-list details p a:hover { color: var(--accent-hover); }

/* By-the-numbers stats band */
.stats-band {
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: radial-gradient(circle at 50% 0%, var(--accent-muted), transparent 60%);
}

/* Seven tiles: 6 tracks with each tile spanning 2 keeps three per row while
   letting a lone tile on the last row center itself (same trick as the
   use-case grid). */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 18px;
  margin: 0;
  padding: 0;
}

.stats-grid > div {
  grid-column: span 2;
}

.stats-grid > div:nth-child(3n + 1):last-child {
  grid-column: 3 / span 2;
}

.stats-grid div {
  padding: 28px 24px;
  border-radius: var(--r-md);
  background: var(--surface);
  transition:
    transform var(--t) var(--ease),
    background var(--t-fast) var(--ease);
}

.stats-grid div:hover {
  transform: translateY(-3px);
  background: var(--surface-2);
}

.stats-grid dt {
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: clamp(36px, 4vw, 54px);
  line-height: 1;
  font-weight: 700;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

.stats-grid dd {
  margin: 14px 0 0;
  color: var(--text);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
}

.stats-grid dd span {
  display: block;
  margin-top: 5px;
  color: var(--text-3);
  font-size: 12.5px;
  font-weight: 400;
  line-height: 1.5;
}

@media (max-width: 1100px) {
  .stats-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .stats-grid > div:nth-child(3n + 1):last-child {
    grid-column: auto / span 2;
  }

  .stats-grid > div:nth-child(2n + 1):last-child {
    grid-column: 2 / span 2;
  }
}

@media (max-width: 540px) {
  .stats-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .stats-grid > div,
  .stats-grid > div:nth-child(3n + 1):last-child,
  .stats-grid > div:nth-child(2n + 1):last-child {
    grid-column: auto;
  }
}

/* Founding-team / pedigree credibility band */
.pedigree-band {
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: radial-gradient(circle at 50% 0%, var(--accent-muted), transparent 60%);
  text-align: center;
}

.pedigree-logos {
  /* Optical cap-height that every wordmark is normalized to. Change this one
     value to rescale the whole logo row - the per-logo width/height below are
     all derived from it. */
  --logo-cap: 15px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 18px 48px;
}

.pedigree-logos-label {
  color: var(--text-3);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.04em;
}

.pedigree-logos ul {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  /* Same gap as the outer row so the space between every item - label to first
     logo, and logo to logo - is identical. */
  gap: 18px 48px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.pedigree-logos li {
  display: flex;
  align-items: center;
}

.pedigree-logo {
  display: block;
  fill: currentColor;
  stroke: none;
  color: var(--text-3);
  opacity: 0.9;
  transition:
    color var(--t-fast) var(--ease),
    opacity var(--t-fast) var(--ease);
}

.pedigree-logos li:hover .pedigree-logo {
  color: var(--text);
  opacity: 1;
}

/* Optical-size normalization. Each mark's viewBox is cropped tight to its ink,
   so the on-screen box == the glyph. To make all three read as the SAME size we
   match their optical cap-band (not their raw glyph height, which differs: AMD
   is pure caps, Intel adds ascenders + i-dot, Qualcomm adds a Q-tail descender).
   For each logo:  height = --logo-cap / cap-band-fraction,  width = height x
   glyph-aspect-ratio. The two multipliers below bake in the measured
   cap-fraction and aspect for each mark, so every wordmark shares one cap-height
   and each box hugs its glyph - giving even, symmetric spacing under one gap.
     Intel    aspect 2.370, cap-fraction 0.673
     AMD      aspect 4.191, cap-fraction 0.867
     Qualcomm aspect 5.446, cap-fraction 0.573 */
.logo-intel {
  height: calc(var(--logo-cap) * 1.485);
  width: calc(var(--logo-cap) * 3.520);
}

.logo-amd {
  height: calc(var(--logo-cap) * 1.154);
  width: calc(var(--logo-cap) * 4.836);
}

.logo-qualcomm {
  height: calc(var(--logo-cap) * 1.744);
  width: calc(var(--logo-cap) * 9.498);
}

.pedigree-stat {
  margin: 44px auto 0;
  max-width: 520px;
  padding: 0;
}

.pedigree-stat div {
  padding: 32px 28px;
  border-radius: var(--r-md);
  background: var(--surface);
}

.pedigree-stat dt {
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: clamp(36px, 4vw, 54px);
  line-height: 1;
  font-weight: 700;
  letter-spacing: -0.02em;
}

.pedigree-stat dd {
  margin: 12px 0 0;
  color: var(--text-2);
  font-size: 15px;
  line-height: 1.5;
}

.section-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, 0.6fr);
  gap: 60px;
  align-items: end;
  margin-bottom: 56px;
}

.feature-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.feature-card {
  min-height: 240px;
  padding: 28px 26px;
  border-radius: var(--r-md);
  background: var(--surface);
  transition:
    transform var(--t) var(--ease),
    background var(--t-fast) var(--ease),
    box-shadow var(--t) var(--ease);
}

.feature-card:hover {
  transform: translateY(-4px);
  background: var(--surface-2);
  box-shadow: var(--shadow);
}

.feature-card svg {
  width: 42px;
  height: 42px;
  padding: 10px;
  margin-bottom: 26px;
  color: var(--accent);
  background: var(--accent-soft);
  border-radius: var(--r-sm);
}

.feature-card h3 {
  font-size: 17px;
}

.feature-card p {
  margin: 10px 0 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.6;
}

/* "Also built in" capability tag strip under the feature grid */
.capability-tags-wrap {
  margin-top: 28px;
}

.capability-tags-title {
  margin: 0 0 14px;
  color: var(--text-3);
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.capability-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.capability-tags li {
  display: inline-flex;
  flex-wrap: wrap; /* long translations: description drops under the label instead of widening the page */
  align-items: baseline;
  gap: 7px;
  text-align: left;
  padding: 9px 14px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  font-size: 13px;
  line-height: 1.4;
  transition: background var(--t-fast) var(--ease);
}

.capability-tags li:hover {
  background: var(--surface-2);
}

.capability-tags li strong {
  color: var(--accent);
  font-weight: 650;
  white-space: nowrap;
}

.capability-tags li span {
  color: var(--text-2);
}

.collaboration {
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
}

.collab-board {
  padding: 28px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.lane {
  padding: 20px 24px;
  border-radius: var(--r);
  background: var(--surface-2);
}

.lane h3 {
  font-size: 15px;
}

.lane p {
  margin: 6px 0 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.6;
}

.lane-owner {
  box-shadow: inset 3px 0 0 var(--warn);
}

.lane-agent {
  box-shadow: inset 3px 0 0 var(--accent);
}

.lane-result {
  box-shadow: inset 3px 0 0 var(--success);
}

.handoff {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 16px;
  padding: 16px 0;
  color: var(--text-4);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.handoff span {
  height: 1px;
  background: var(--border);
}

.handoff strong {
  color: var(--accent);
}

.coming-soon-cta {
  text-align: center;
  padding: 72px 24px;
  background: var(--surface);
  margin: 60px auto;
  max-width: 800px;
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
}

/* Security */
.security-band {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 60px;
  align-items: center;
  padding: 70px 60px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}

/* Same small-screen padding drop as .cortex-band / .demo-band - 60px side
   padding left the layer chips only ~150px of room on phones. */
@media (max-width: 540px) {
  .security-band {
    padding: 48px 28px;
  }
}

.security-list {
  display: grid;
  grid-template-columns: minmax(0, 1fr); /* the implicit auto track grew past the band on phones */
  gap: 10px;
}

.security-list div {
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: 64px;
  padding: 14px 20px;
  border-radius: var(--r);
  background: var(--surface-2);
  font-weight: 500;
  font-size: 14.5px;
  transition:
    transform var(--t) var(--ease),
    background var(--t-fast) var(--ease);
}

.security-list div:hover {
  transform: translateX(4px);
  background: var(--surface-3);
}

.security-list div strong {
  color: var(--text);
}

.security-list span {
  color: var(--text-2);
  min-width: 0; /* flex item: allow shrinking below the longest word... */
  overflow-wrap: anywhere; /* ...and break it rather than bleed out of the chip */
}

.security-list svg {
  flex: 0 0 auto;
  color: var(--accent);
}

/* Audiences */
.audience-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 20px;
}

.tab {
  min-height: 40px;
  padding: 0 18px;
  border: none;
  border-radius: var(--r-pill);
  color: var(--text-2);
  background: var(--surface-2);
  font-size: 13.5px;
  font-weight: 500;
  transition: all var(--t-fast) var(--ease);
}

.tab:hover {
  color: var(--text);
  background: var(--surface-3);
}

.tab.is-active {
  color: var(--accent);
  background: var(--accent-soft);
  font-weight: 600;
}

.audience-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 0.5fr);
  gap: 48px;
  align-items: center;
  min-height: 280px;
  padding: 44px 48px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}

.audience-panel h3 {
  font-size: clamp(26px, 3.2vw, 38px);
  letter-spacing: -0.02em;
  margin-bottom: 20px;
}

.audience-panel p {
  color: var(--text-2);
  line-height: 1.65;
}

.audience-panel ul,
.price-card ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.audience-panel li,
.price-card li {
  position: relative;
  padding-left: 32px;
  margin: 14px 0;
  color: var(--text-2);
  line-height: 1.5;
  font-size: 15px;
}

.audience-panel li::before,
.price-card li::before {
  content: "→";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--accent);
  font-weight: 700;
}


/* Founding-partner cohort callout — the one pre-card message in the pricing
   section: the promotional offer, centered between the heading and the pilot
   card. (Platform-feature/privacy blurbs used to sit here too, but they just
   repeated the "One platform…" and "Your data stays private" sections above,
   so pricing now stays focused on the offer and the plans.) */
.pricing-offer {
  max-width: 720px;
  margin: 0 auto 44px;
  padding: 16px 26px;
  border-radius: var(--r-md);
  border: 1px solid var(--accent);
  background: var(--accent-muted);
  color: var(--text);
  font-size: 14px;
  line-height: 1.55;
  text-align: center;
}

.pricing-offer strong {
  color: var(--accent);
}

/* Founding-cohort layout: one primary offer front and center... (compound
   selector so it wins over the base .pricing-grid rule defined below) */
.pricing-grid.pricing-grid-solo {
  grid-template-columns: minmax(0, 1fr);
  max-width: 620px;
}

/* Setup-fee line on the pilot card: the waiver up top, the old price struck. */
.price-setup {
  margin: -4px 0 12px;
  font-size: 14px;
  line-height: 1.5;
}

.price-setup strong {
  color: var(--accent);
  font-weight: 600;
}

.price-setup s {
  margin-left: 8px;
  color: var(--text-3);
  font-size: 12.5px;
}

/* ...and the scale plans in a quieter band below it. */
.pricing-scale {
  margin-top: 56px;
}

.pricing-scale-title {
  margin: 0 0 24px;
  text-align: center;
  color: var(--text-2);
  font-family: var(--font-heading);
  font-size: 15px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.07em;
}

.pricing-grid-compact .price-card-compact {
  padding: 28px 26px;
  box-shadow: none;
  border: 1px solid var(--border);
}

.pricing-grid-compact .price-card-compact h3 {
  font-size: 17px;
}

.pricing-grid-compact .price-card-compact li {
  font-size: 13.5px;
  margin: 11px 0;
}

.pricing-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  max-width: 1080px;
  margin: 0 auto;
  align-items: stretch;
}

.price-blurb {
  margin: 0 0 6px;
  color: var(--text-3);
  font-size: 13.5px;
  line-height: 1.5;
}

@media (max-width: 1024px) {
  .pricing-grid {
    grid-template-columns: 1fr;
    max-width: 580px;
    row-gap: 28px;
  }
}

.price-tag {
  margin: 22px 0 12px;
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.07em;
}

.price-cta {
  margin-top: 26px;
  width: 100%;
  justify-content: center;
}

.pricing-grid-flex-fix {
  /* CSS-only helper: make cards equal height so the CTA buttons align */
}
.price-card {
  display: flex;
  flex-direction: column;
}
.price-card ul {
  flex: 1;
}

/* Double-class beats the base .pricing-grid rule without !important, so the
   phone collapse below can still win - !important here kept two columns even
   on 320px screens. */
.pricing-grid.pricing-grid-two {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 880px;
  margin: 0 auto;
}

@media (max-width: 700px) {
  .pricing-grid.pricing-grid-two {
    grid-template-columns: minmax(0, 1fr);
    max-width: 580px;
  }
}

.price-guarantee {
  margin: 18px 0 0;
  text-align: center;
  color: var(--text-3);
  font-size: 12.5px;
  line-height: 1.6;
}

.pricing-footnote {
  margin: 40px auto 0;
  max-width: 720px;
  text-align: center;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.6;
}

.pricing-footnote a {
  color: var(--accent);
  text-decoration: none;
}

.pricing-footnote a:hover {
  color: var(--accent-hover);
  text-decoration: underline;
}

.price-card {
  padding: 36px 32px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: var(--shadow);
  transition: transform var(--t) var(--ease);
}

.price-card:hover {
  transform: translateY(-4px);
}

.price-card-featured {
  background: var(--surface);
  box-shadow:
    inset 0 0 0 1.5px var(--accent),
    var(--shadow);
  position: relative;
}

/* Badge is a real <span> (not attr()::before) so the i18n text-node walker
   can translate it. */
.price-badge {
  position: absolute;
  top: -13px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--accent);
  color: #fff;
  padding: 4px 14px;
  border-radius: var(--r-pill);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  /* One line while it fits, wrap inside the card when it doesn't (long
     translations ran off-screen with white-space: nowrap). max-content is
     needed because an abs-positioned box at left:50% would otherwise
     shrink-to-fit against only half the card. */
  width: max-content;
  max-width: calc(100% - 20px);
  text-align: center;
}

.price {
  margin: 28px 0 14px;
  color: var(--text);
  font-size: 48px;
  line-height: 1;
  font-weight: 700;
  letter-spacing: -0.02em;
}

.price span {
  color: var(--text-3);
  font-size: 18px;
  font-weight: 600;
}

/* Final CTA */
.final-cta {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 60px;
  align-items: center;
  margin-top: 60px;
  margin-bottom: 100px;
  padding: 56px 60px;
  border-radius: var(--r-lg);
  background:
    radial-gradient(circle at right, var(--accent-muted) 0%, transparent 65%),
    var(--surface);
  box-shadow: var(--shadow-sm);
}

.final-cta .button {
  white-space: nowrap;
  min-height: 54px;
  font-size: 16px;
  padding: 0 32px;
}

/* Same small-screen padding drop as .cortex-band / .demo-band, and the CTA
   label may wrap - a nowrap pill wider than the screen widened the page. */
@media (max-width: 540px) {
  .final-cta {
    padding: 44px 28px;
    gap: 32px;
  }

  .final-cta .button {
    white-space: normal;
    text-align: center;
    padding: 14px 24px;
  }
}

.site-footer {
  width: min(var(--max), calc(100% - 48px));
  margin: 0 auto;
  padding: 36px 0 56px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-top: 1px solid var(--border);
  color: var(--text-3);
}

/* Responsive Overrides */

/* With the deep-dive links grouped behind the Product disclosure the nav is
   ~5 items (~360-460px across locales), so it stays on one line down to
   ~1080px; below that, collapse it into the burger menu. The CTA, theme and
   language controls stay in the bar. */
@media (max-width: 1080px) {
  .site-header {
    grid-template-columns: 1fr auto auto;
    padding: 0 24px;
  }

  .site-nav {
    display: none;
  }

  .menu-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  body.nav-open .site-nav {
    position: absolute;
    top: calc(100% + 8px);
    left: 16px;
    right: 16px;
    /* The base rule's justify-self: center makes an absolutely-positioned
       grid child shrink-to-fit instead of stretching between left/right;
       stretch restores the full-width sheet. */
    justify-self: stretch;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    padding: 8px;
    background: var(--surface);
    border-radius: var(--r-md);
    box-shadow: var(--shadow-lg);
  }

  body.nav-open .site-nav a {
    padding: 11px 12px;
    border-radius: var(--r-sm);
  }

  /* Inside the burger sheet the Product group flattens back into the list:
     the trigger disappears and its links join the sheet as ordinary rows. */
  .nav-group,
  .nav-group-menu {
    display: contents;
  }

  .nav-group-button {
    display: none;
  }
}

@media (max-width: 900px) {

  /* minmax(0, 1fr), not bare 1fr: a bare 1fr track refuses to shrink below its
     content's min-width, so one wide child (a nowrap button, a badge row) makes
     the whole column - and the page - wider than the phone screen. */
  .hero,
  .split,
  .collaboration,
  .section-heading,
  .security-band,
  .audience-panel,
  .final-cta {
    grid-template-columns: minmax(0, 1fr);
    gap: 40px;
  }

  .feature-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .header-actions {
    gap: 6px;
  }
}

/* The compact language pill leaves room to keep the primary CTA in the bar on
   most phones; only below ~620px does it hand off to the hero CTA just under
   the fold. */
@media (max-width: 620px) {
  .nav-cta {
    display: none;
  }
}

/* Contact / waitlist form */
.contact-inner {
  max-width: 640px;
  margin: 0 auto;
  text-align: center;
}

.contact-lede {
  color: var(--text-2);
  margin-bottom: 30px;
}

/* Booking (primary path): full-width CTA to the Cal.com scheduling page. */
.book-call {
  max-width: 450px;
  margin: 0 auto 22px;
}

.book-call-cta {
  width: 100%;
}

.book-call-note {
  margin: 12px 0 0;
  color: var(--text-3);
  font-size: 13px;
  line-height: 1.5;
}

/* Divider copy between booking (primary) and the email form (secondary). */
.contact-or {
  max-width: 450px;
  margin: 0 auto 22px;
  color: var(--text-3);
  font-size: 14px;
  line-height: 1.5;
}

.subscribe-form {
  display: flex;
  gap: 10px;
  justify-content: center;
  max-width: 450px;
  margin: 0 auto;
  flex-wrap: wrap;
}

/* Shared field skin for the subscribe/qualify form controls. */
.subscribe-form input[type="email"],
.qualify-form input[type="text"],
.qualify-form select,
.qualify-form textarea {
  padding: 13px 16px;
  border-radius: var(--r-sm);
  border: 1px solid transparent;
  background: var(--surface-2);
  color: var(--text);
  outline: none;
  font-size: 15px;
  font-family: var(--font-sans);
  transition: all var(--t-fast);
}

.subscribe-form input[type="email"] {
  flex: 1 1 240px;
  min-width: 0;
}

.subscribe-form input[type="email"]::placeholder {
  color: var(--text-4);
}

.subscribe-form input[type="email"]:focus,
.qualify-form input:focus,
.qualify-form select:focus,
.qualify-form textarea:focus {
  border-color: var(--border-focus);
  box-shadow: var(--shadow-focus);
}

/* Assessment qualification form — a labelled 2-column grid variant of the
   subscribe form (display:grid overrides the flex rule above). */
.qualify-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 14px;
  max-width: 560px;
  margin: 0 auto;
  text-align: left;
}

.qualify-form .form-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.form-field-wide {
  grid-column: 1 / -1;
}

.qualify-form label:not(.check-pill),
.qualify-form legend {
  font-size: 13px;
  font-weight: 500;
  color: var(--text-2);
}

.qualify-form fieldset {
  border: 0;
  padding: 0;
  margin: 0;
}

.qualify-form fieldset legend {
  margin-bottom: 8px;
}

.qualify-form input[type="text"],
.qualify-form input[type="email"],
.qualify-form select,
.qualify-form textarea {
  /* Neutralize the email input's `flex: 1 1 240px` from .subscribe-form: in a
     column-flex .form-field that basis would become a 240px height. */
  flex: 0 0 auto;
  width: 100%;
}

.qualify-form textarea {
  resize: vertical;
  min-height: 76px;
}

.check-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.check-pill {
  display: inline-flex;
  align-items: center;
  padding: 8px 14px;
  border-radius: var(--r-pill);
  background: var(--surface-2);
  color: var(--text-2);
  font-size: 13.5px;
  cursor: pointer;
  transition: all var(--t-fast);
}

.check-pill input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.check-pill:hover {
  color: var(--text);
}

.check-pill:has(input:checked) {
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 600;
}

.check-pill:has(input:focus-visible) {
  border-color: var(--border-focus);
  box-shadow: var(--shadow-focus);
}

@media (max-width: 640px) {
  .qualify-form {
    grid-template-columns: 1fr;
  }
}

/* Honeypot — visually hidden, bots still fill it. Every property is
   !important because the field is an `input[type="text"]` inside .qualify-form,
   so the `.qualify-form input[type="text"] { width: 100% }` rule above is more
   specific than this class. Without the guard its width resolves to 100% of the
   viewport (it's position:absolute with no positioned ancestor), pushing the
   page ~offset px wider than the viewport and causing horizontal scroll. */
.hp-field {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  border: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}

.form-note {
  margin: 14px 0 0;
  color: var(--text-3);
  font-size: 13px;
  line-height: 1.5;
}

.form-note a {
  color: var(--accent);
}

.form-note a:hover {
  color: var(--accent-hover);
  text-decoration: underline;
}

.form-success {
  margin: 16px 0 0;
  color: var(--success);
  font-size: 14px;
}

.form-error {
  margin: 16px 0 0;
  color: var(--danger);
  font-size: 14px;
}

.form-error a {
  color: inherit;
  text-decoration: underline;
}

/* Footer */
.site-footer {
  flex-wrap: wrap;
  gap: 24px;
}

.footer-brand p {
  margin: 10px 0 0;
  font-size: 13.5px;
}

.footer-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  font-size: 13.5px;
}

.footer-nav a {
  color: var(--text-3);
  transition: color var(--t-fast) var(--ease);
}

.footer-nav a:hover {
  color: var(--text);
}

.footer-mail {
  color: var(--accent);
  font-size: 13.5px;
}

.footer-mail:hover {
  text-decoration: underline;
}

@media (max-width: 640px) {
  .site-footer {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* Respect user motion preferences */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* Legal / utility pages (privacy, 404) */
.legal-page {
  max-width: 720px;
  padding: 60px 0 100px;
}

.legal-page h1 {
  font-size: clamp(30px, 4.5vw, 42px);
  letter-spacing: -0.025em;
  margin: 0 0 8px;
}

.legal-page h2 {
  font-size: 20px;
  letter-spacing: -0.015em;
  margin: 36px 0 8px;
}

.legal-page p {
  color: var(--text-2);
  line-height: 1.7;
}

.legal-page a {
  color: var(--accent);
}

.legal-page a:hover {
  color: var(--accent-hover);
}

.legal-updated {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--text-3);
}

.legal-back {
  margin-top: 48px;
}

.not-found {
  text-align: center;
  padding-top: 100px;
}

.not-found .button {
  display: inline-flex;
  margin-top: 16px;
}

/* Small phones — keep brand, menu, and language picker from colliding */
@media (max-width: 480px) {
  .site-header {
    gap: 8px;
  }

  .brand span {
    font-size: 16px;
  }
}

/* Icon bullets (pricing card) — replaces emoji prefixes */
.price-card li {
  padding-left: 0;
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

.price-card li::before {
  content: none;
}

.price-card li svg {
  flex: 0 0 auto;
  width: 17px;
  height: 17px;
  margin-top: 3px;
  color: var(--accent);
}

/* ── Cortex engine section ───────────────────────────────────────────────
   The one part of the site that breaks from the coral accent: neural violet
   with a slow breathing glow, exactly like the Cortex view in the dashboard. */
@keyframes cortex-breathe {

  0%,
  100% {
    filter: drop-shadow(0 0 3px var(--cortex-glow));
  }

  50% {
    filter: drop-shadow(0 0 9px var(--cortex-glow));
  }
}

@keyframes cortex-dot-pulse {
  0% {
    box-shadow: 0 0 0 0 color-mix(in srgb, var(--cortex) 55%, transparent);
  }

  70%,
  100% {
    box-shadow: 0 0 0 6px color-mix(in srgb, var(--cortex) 0%, transparent);
  }
}

.cortex-band {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: 60px;
  align-items: center;
  margin: 100px auto;
  padding: 70px 60px;
  border-radius: var(--r-lg);
  background:
    radial-gradient(ellipse at 80% 20%, var(--cortex-muted), transparent 55%),
    var(--surface);
  box-shadow: inset 0 0 0 1px var(--cortex-soft);
}

.cortex-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 16px;
  color: var(--cortex);
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  text-shadow: 0 0 12px var(--cortex-glow);
}

.cortex-eyebrow svg {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  animation: cortex-breathe 3.6s var(--ease) infinite;
}

.cortex-copy h2 {
  margin: 0;
  font-size: clamp(34px, 4.2vw, 52px);
  line-height: 1.12;
  letter-spacing: -0.025em;
  font-weight: 700;
  color: var(--text);
}

.cortex-lede {
  margin: 20px 0 0;
  color: var(--text-2);
  font-size: 16.5px;
  line-height: 1.65;
}

.cortex-chips {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 32px;
}

.cortex-chips div {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 13px 15px;
  border-radius: var(--r);
  background: var(--cortex-muted);
  color: var(--text-2);
  font-size: 13.5px;
  line-height: 1.5;
}

.cortex-chips svg {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  margin-top: 2px;
  color: var(--cortex);
}

.cortex-log {
  padding: 26px;
  border-radius: var(--r-lg);
  background: var(--bg);
  box-shadow: var(--shadow);
}

.cortex-log-head {
  display: flex;
  flex-wrap: wrap; /* title + badge drop to two rows on narrow phones instead of overflowing */
  align-items: center;
  gap: 12px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}

.cortex-core {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  color: var(--cortex);
  animation: cortex-breathe 3.6s var(--ease) infinite;
}

.cortex-log-head strong {
  font-family: var(--font-heading);
  font-size: 15.5px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--text);
}

.cortex-log-head em {
  margin-left: auto;
  padding: 3px 10px;
  border-radius: var(--r-pill);
  background: var(--cortex-soft);
  color: var(--cortex);
  font-style: normal;
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.cortex-steps {
  list-style: none;
  margin: 0;
  padding: 6px 0 0;
}

.cortex-steps li {
  display: flex;
  gap: 15px;
  padding: 13px 0;
}

.cortex-steps li+li {
  border-top: 1px solid var(--border);
}

.cortex-dot {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  margin-top: 7px;
  border-radius: 50%;
  background: var(--cortex);
  animation: cortex-dot-pulse 3s ease-out infinite;
}

.cortex-steps li:nth-child(2) .cortex-dot {
  animation-delay: 0.6s;
}

.cortex-steps li:nth-child(3) .cortex-dot {
  animation-delay: 1.2s;
}

.cortex-steps li:nth-child(4) .cortex-dot {
  animation-delay: 1.8s;
}

.cortex-steps li:nth-child(5) .cortex-dot {
  animation-delay: 2.4s;
}

.cortex-steps strong {
  display: block;
  margin-bottom: 3px;
  font-family: var(--font-heading);
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}

.cortex-steps p {
  margin: 0;
  color: var(--text-2);
  font-size: 13.5px;
  line-height: 1.55;
}

@media (max-width: 900px) {
  .cortex-band {
    grid-template-columns: minmax(0, 1fr); /* bare 1fr let the log card's min-width widen the page */
    gap: 40px;
  }
}

@media (max-width: 540px) {
  .cortex-chips {
    grid-template-columns: 1fr;
  }

  .cortex-band {
    padding: 48px 28px;
  }
}

/* Live-demo band — chat with the real agents on WhatsApp / Telegram.
   Two-column card (copy + channel links), same rounded-band shape as Cortex. */
.demo-band {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: 60px;
  align-items: center;
  margin: 100px auto;
  padding: 70px 60px;
  border-radius: var(--r-lg);
  background:
    radial-gradient(ellipse at 12% 15%, var(--accent-muted), transparent 55%),
    var(--surface);
  box-shadow: inset 0 0 0 1px var(--border);
}

.demo-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 16px;
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.demo-eyebrow svg {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
}

.demo-copy h2 {
  margin: 0;
  font-size: clamp(32px, 4vw, 48px);
  line-height: 1.14;
  letter-spacing: -0.025em;
  font-weight: 700;
  color: var(--text);
}

.demo-lede {
  margin: 20px 0 0;
  color: var(--text-2);
  font-size: 16.5px;
  line-height: 1.65;
}

.demo-built {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin: 28px 0 0;
  padding: 9px 16px 9px 11px;
  border-radius: var(--r-pill);
  background: var(--accent-soft);
  color: var(--text-2);
  font-size: 13.5px;
  line-height: 1.3;
}

.demo-built strong {
  color: var(--text);
  font-weight: 600;
}

.demo-built-mark {
  display: inline-flex;
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
}

.demo-built-mark svg {
  width: 100%;
  height: 100%;
}

.demo-channels {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.demo-channel {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 18px 20px;
  border-radius: var(--r-md);
  background: var(--bg-elev);
  box-shadow: inset 0 0 0 1px var(--border);
  transition:
    transform var(--t) var(--ease),
    box-shadow var(--t) var(--ease),
    background var(--t-fast) var(--ease);
}

.demo-channel:hover {
  transform: translateY(-3px);
  background: var(--surface);
  box-shadow:
    var(--shadow),
    inset 0 0 0 1px var(--border-strong);
}

.demo-channel-icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--r);
  color: #fff;
}

.demo-channel-icon svg {
  width: 26px;
  height: 26px;
  fill: currentColor;
  stroke: none;
}

.demo-channel.is-whatsapp .demo-channel-icon {
  background: #25d366;
}

.demo-channel.is-telegram .demo-channel-icon {
  background: linear-gradient(180deg, #37bbfe, #229ed9);
}

.demo-channel-body {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.demo-channel-body strong {
  font-family: var(--font-heading);
  font-size: 16px;
  font-weight: 600;
  color: var(--text);
}

.demo-channel-body span {
  font-size: 13px;
  color: var(--text-3);
}

.demo-channel-go {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin-left: auto;
  color: var(--text-3);
  transition:
    transform var(--t) var(--ease),
    color var(--t-fast) var(--ease);
}

.demo-channel:hover .demo-channel-go {
  color: var(--accent);
  transform: translateX(3px);
}

.demo-channels-note {
  margin: 4px 2px 0;
  color: var(--text-3);
  font-size: 12.5px;
  line-height: 1.5;
}

@media (max-width: 900px) {
  .demo-band {
    /* minmax(0, 1fr), not 1fr: the fixed-width channel icons give each card a
       wide min-content, and a plain 1fr track (= minmax(auto, 1fr)) would
       refuse to shrink below it and overflow the viewport on narrow screens. */
    grid-template-columns: minmax(0, 1fr);
    gap: 40px;
  }
}

@media (max-width: 540px) {
  .demo-band {
    padding: 44px 24px;
  }
}

/* Floating chat launcher — persistent bottom-right button that expands to the
   live WhatsApp / Telegram agents. Sits above page content but is only a small
   corner target; the sticky header keeps its own stacking context above it. */
.chat-fab {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 60;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 14px;
}

.chat-fab-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 60px;
  height: 60px;
  border: none;
  border-radius: var(--r-pill);
  color: #fff;
  background: var(--accent);
  box-shadow:
    var(--shadow-lg),
    0 0 0 6px var(--accent-soft);
  cursor: pointer;
  transition:
    transform var(--t) var(--ease),
    background var(--t-fast) var(--ease);
}

.chat-fab-toggle:hover {
  transform: translateY(-2px) scale(1.04);
  background: var(--accent-hover);
}

.chat-fab-toggle:focus-visible {
  outline: none;
  box-shadow:
    var(--shadow-lg),
    var(--shadow-focus);
}

/* Two stacked icons; only one shows per state (chat when closed, X when open). */
.chat-fab-icon {
  position: absolute;
  width: 26px;
  height: 26px;
  transition:
    opacity var(--t) var(--ease),
    transform var(--t) var(--ease);
}

.chat-fab-icon-close {
  opacity: 0;
  transform: rotate(-90deg) scale(0.6);
}

.chat-fab-toggle[aria-expanded="true"] .chat-fab-icon-open {
  opacity: 0;
  transform: rotate(90deg) scale(0.6);
}

.chat-fab-toggle[aria-expanded="true"] .chat-fab-icon-close {
  opacity: 1;
  transform: none;
}

/* Popover panel, anchored above the button. Hidden (and taken out of the tab
   order / a11y tree via visibility:hidden) until the widget opens. */
.chat-fab-panel {
  width: 300px;
  max-width: calc(100vw - 32px);
  padding: 8px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow:
    var(--shadow-lg),
    inset 0 0 0 1px var(--border);
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px) scale(0.96);
  transform-origin: bottom right;
  transition:
    opacity var(--t) var(--ease),
    transform var(--t) var(--ease),
    visibility 0s linear var(--t);
}

.chat-fab.is-open .chat-fab-panel {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition:
    opacity var(--t) var(--ease),
    transform var(--t) var(--ease),
    visibility 0s;
}

.chat-fab-panel-head {
  padding: 14px 14px 12px;
}

.chat-fab-panel-head strong {
  display: block;
  font-family: var(--font-heading);
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}

.chat-fab-panel-head span {
  display: block;
  margin-top: 3px;
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--text-3);
}

.chat-fab-option {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 11px 12px;
  border-radius: var(--r-md);
  transition: background var(--t-fast) var(--ease);
}

.chat-fab-option:hover {
  background: var(--surface-2);
}

.chat-fab-option:focus-visible {
  outline: none;
  background: var(--surface-2);
  box-shadow: var(--shadow-focus);
}

.chat-fab-option-icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--r);
  color: #fff;
}

.chat-fab-option-icon svg {
  width: 22px;
  height: 22px;
  fill: currentColor;
  stroke: none;
}

.chat-fab-option.is-whatsapp .chat-fab-option-icon {
  background: #25d366;
}

.chat-fab-option.is-telegram .chat-fab-option-icon {
  background: linear-gradient(180deg, #37bbfe, #229ed9);
}

.chat-fab-option-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.chat-fab-option-body strong {
  font-family: var(--font-heading);
  font-size: 14.5px;
  font-weight: 600;
  color: var(--text);
}

.chat-fab-option-body span {
  font-size: 12.5px;
  color: var(--text-3);
}

@media (max-width: 540px) {
  .chat-fab {
    right: 16px;
    bottom: 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .chat-fab-toggle,
  .chat-fab-icon,
  .chat-fab-panel {
    transition: opacity var(--t) var(--ease);
  }

  .chat-fab-toggle:hover {
    transform: none;
  }

  .chat-fab-panel {
    transform: none;
  }
}

/* ───────────────────────────────────────────────────────────────────────────
 * Product screenshots — real dashboard captures in a lightweight browser frame.
 * One reusable `.app-shot` figure (chrome bar + image + caption); each section
 * controls its width. Theme-aware via tokens; images lazy-load below the fold.
 * ─────────────────────────────────────────────────────────────────────────── */
.app-shot {
  margin: 0;
  border-radius: var(--r-lg);
  background: var(--bg-elev);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}

.app-shot-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 36px;
  padding: 0 16px;
  background: var(--surface-2);
  border-bottom: 1px solid var(--border);
}

.app-shot-bar span {
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--surface-4);
}

.app-shot img {
  display: block;
  width: 100%;
  height: auto;
}

.app-shot figcaption {
  margin: 0;
  padding: 15px 22px 18px;
  background: var(--surface);
  border-top: 1px solid var(--border);
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.55;
  text-align: center;
}

/* Product-preview — the chat "money shot" high on the page. */
.product-preview {
  margin: 110px auto;
}

.product-preview .app-shot,
.cortex-proof .app-shot {
  max-width: 1040px;
  margin: 40px auto 0;
}

.shot-eyebrow {
  margin: 0 0 14px;
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* Powered by Olano Core — the platform "why it compounds" band. */
.core-band {
  margin: 100px auto;
  padding: 70px 60px;
  border-radius: var(--r-lg);
  background:
    radial-gradient(ellipse at 15% 15%, var(--accent-muted), transparent 55%),
    var(--surface);
  box-shadow: inset 0 0 0 1px var(--border);
}

.core-copy {
  max-width: 760px;
}

.core-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 16px;
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.core-eyebrow svg {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
}

.core-copy h2 {
  margin: 0;
  font-size: clamp(34px, 4.2vw, 52px);
  line-height: 1.12;
  letter-spacing: -0.025em;
  font-weight: 700;
  color: var(--text);
}

.core-lede {
  margin: 20px 0 0;
  color: var(--text-2);
  font-size: 16.5px;
  line-height: 1.65;
}

.core-points {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 30px;
}

.core-points div {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 13px 15px;
  border-radius: var(--r);
  background: var(--accent-muted);
  color: var(--text-2);
  font-size: 13.5px;
  line-height: 1.5;
}

.core-points svg {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  margin-top: 2px;
  color: var(--accent);
}

.core-tagline {
  margin: 26px 0 0;
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: 14.5px;
  font-weight: 600;
}

.core-band .app-shot {
  margin-top: 44px;
}

/* Cortex proof — the real Cortex view, right after the Cortex band. */
.cortex-proof {
  margin: 100px auto;
}

@media (max-width: 900px) {
  .core-band {
    padding: 60px 40px;
  }

  .core-copy {
    max-width: none;
  }
}

@media (max-width: 540px) {
  .app-shot-bar {
    height: 30px;
  }

  .app-shot figcaption {
    padding: 13px 16px 15px;
    font-size: 13px;
  }

  .core-band {
    padding: 44px 24px;
  }

  .core-points {
    grid-template-columns: 1fr;
  }

  .product-preview,
  .core-band,
  .cortex-proof {
    margin: 72px auto;
  }
}

/* Customer testimonials — social-proof band with an auto-advancing quote
   carousel. Every slide stays in the DOM (i18n walker translates all quotes);
   JS just toggles `is-active`. Add more customers by pasting another
   `.testimonial-card` slide + a `.testimonial-dot`. */
.testimonials {
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: radial-gradient(ellipse at 50% 0%, var(--accent-muted), transparent 70%);
}

.testimonial-carousel {
  position: relative;
  max-width: 760px;
  margin: 0 auto;
}

/* Slides share one grid cell so the box auto-sizes to the tallest slide —
   no height jump as quotes of different lengths rotate through. */
.testimonial-track {
  display: grid;
  grid-template-columns: minmax(0, 1fr); /* the implicit track otherwise grows past the section for long translations */
}

.testimonial-card {
  grid-area: 1 / 1;
  width: 100%;
  margin: 0; /* reset the UA's `figure` margin (1em 40px) — it widened the page on mobile */
  padding: 36px 34px;
  border-radius: var(--r-md);
  background: var(--surface);
  box-shadow: var(--shadow);
  text-align: left;
  opacity: 0;
  visibility: hidden; /* off-slides can't take focus; delayed flip below keeps the crossfade */
  /* Rise-in, not slide-in: a translateX here kept the hidden slides sticking
     out past the right edge of the page (transforms still count as scrollable
     overflow), which let phones pan sideways. */
  transform: translateY(14px);
  transition:
    opacity var(--t) var(--ease),
    transform var(--t) var(--ease),
    visibility 0s linear var(--t);
  pointer-events: none;
}

.testimonial-card.is-active {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition:
    opacity var(--t) var(--ease),
    transform var(--t) var(--ease),
    visibility 0s;
  pointer-events: auto;
}

.testimonial-dots {
  display: flex;
  justify-content: center;
  gap: 9px;
  margin-top: 22px;
}

.testimonial-dot {
  width: 8px;
  height: 8px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--surface-3);
  cursor: pointer;
  transition:
    background var(--t-fast) var(--ease),
    transform var(--t-fast) var(--ease);
}

.testimonial-dot:hover {
  background: var(--text-3);
}

.testimonial-dot.is-active {
  background: var(--accent);
  transform: scale(1.25);
}

.testimonial-quote-icon {
  width: 34px;
  height: 34px;
  margin-bottom: 16px;
  color: var(--accent);
  fill: var(--accent); /* override default svg stroke/fill:none — this is a filled glyph */
  stroke: none;
  opacity: 0.9;
}

.testimonial-quotes {
  margin: 0;
  padding: 0;
  border: 0;
}

.testimonial-quotes p {
  margin: 0;
  color: var(--text);
  font-family: var(--font-heading);
  font-size: clamp(19px, 2vw, 24px);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: -0.01em;
}

.testimonial-quotes p + p {
  margin-top: 14px;
}

.testimonial-attribution {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 26px;
  padding-top: 22px;
  border-top: 1px solid var(--border);
}

.testimonial-avatar {
  display: grid;
  place-items: center;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--accent-soft);
  color: var(--accent);
}

.testimonial-avatar svg {
  width: 22px;
  height: 22px;
}

.testimonial-meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
  overflow-wrap: anywhere; /* long single-word company names (de) break instead of bleeding out */
}

.testimonial-name {
  color: var(--text);
  font-size: 15px;
  font-weight: 600;
  font-style: normal; /* reset <cite> italics */
  line-height: 1.3;
}

@media (max-width: 560px) {
  .testimonial-card {
    padding: 28px 24px;
  }
}

/* Auto-advance is disabled in JS under reduced-motion; drop the rise-in
   transform too so switching slides via the dots is a plain crossfade. */
@media (prefers-reduced-motion: reduce) {
  .testimonial-card {
    transform: none;
    transition:
      opacity var(--t) var(--ease),
      visibility 0s linear var(--t);
  }

  .testimonial-card.is-active {
    transition:
      opacity var(--t) var(--ease),
      visibility 0s;
  }
}

/* Slide-3 (case-study) extras for the testimonial carousel. */
.testimonial-role {
  color: var(--text-3);
  font-size: 13px;
  line-height: 1.3;
}

.testimonial-link {
  margin-top: 2px;
  color: var(--accent);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.3;
}

.testimonial-link::after {
  content: " →";
  white-space: nowrap;
}

.testimonial-link:hover {
  color: var(--accent-hover);
}

/* ───────────────────────────────────────────────────────────────────────────
 * Customer case study — page layout + a from-scratch WhatsApp chat mockup.
 * The chat is a "screenshot": all colours are LOCAL --wa-* vars scoped to
 * .wa-mock so it renders identically regardless of page theme. Only the phone
 * drop shadow uses a page token, so it sits naturally in light and dark.
 * ─────────────────────────────────────────────────────────────────────────── */

/* --- Case page layout --- */
.case-hero {
  max-width: 760px;
  /* Header + breadcrumb sit above; the hero only needs breathing room, not
     the full top-of-page drop it carried when the page opened on content. */
  padding: 40px 0 8px;
}

.case-hero h1 {
  margin: 0;
  font-size: clamp(32px, 4.4vw, 50px);
  line-height: 1.12;
  letter-spacing: -0.025em;
  font-weight: 700;
  color: var(--text);
}

.case-lede {
  margin: 20px 0 0;
  max-width: 640px;
  color: var(--text-2);
  font-size: 17px;
  line-height: 1.65;
}

.case-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin: 44px 0 0;
  padding: 0;
}

.case-stats div {
  padding: 26px 24px;
  border-radius: var(--r-md);
  background: var(--surface);
  transition:
    transform var(--t) var(--ease),
    background var(--t-fast) var(--ease);
}

.case-stats div:hover {
  transform: translateY(-3px);
  background: var(--surface-2);
}

.case-stats dt {
  color: var(--accent);
  font-family: var(--font-heading);
  font-size: clamp(30px, 3.6vw, 46px);
  line-height: 1;
  font-weight: 700;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

.case-stats dd {
  margin: 12px 0 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.5;
}

.case-section {
  padding: 72px 0;
  border-top: 1px solid var(--border);
}

.case-heading {
  max-width: 720px;
  margin: 0 0 36px;
}

.case-heading h2 {
  margin: 0;
  font-size: clamp(28px, 3.2vw, 40px);
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 700;
  color: var(--text);
}

.case-heading p,
.case-prose p {
  margin: 16px 0 0;
  color: var(--text-2);
  font-size: 16.5px;
  line-height: 1.7;
}

.case-prose {
  max-width: 720px;
}

.case-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

/* --- Conversation showcase (copy + phone) --- */
/* Gallery of cohesive phone "screenshots" — fills the row and reads as real
   devices, rather than one tall phone beside an empty column. */
.wa-gallery {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: stretch; /* both phones match the taller one's height */
  gap: 40px 48px;
}

.wa-figure {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  width: min(360px, 86vw);
  margin: 0;
}

.wa-figure-cap {
  order: -1;
  max-width: 340px;
  text-align: center;
}

.wa-figure-cap h3 {
  margin: 0 0 8px;
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--text);
}

.wa-figure-cap p {
  margin: 0;
  color: var(--text-2);
  font-size: 14.5px;
  line-height: 1.6;
}

/* --- The phone / mockup --- */
.wa-mock {
  --wa-header: #075e54;
  --wa-header-text: #ffffff;
  --wa-status: #cfe9e2;
  --wa-avatar: #128c7e;
  --wa-out: #d9fdd3;
  --wa-in: #ffffff;
  --wa-bubble-text: #111b21;
  --wa-wallpaper: #efeae2;
  --wa-wallpaper-dot: rgba(11, 20, 26, 0.035);
  --wa-tick: #53bdeb;
  --wa-meta: #667781;
  --wa-day-bg: #e1f2fb;
  --wa-day-text: #54656f;
  --wa-bezel: #0b141a;
  --wa-bubble-shadow: 0 1px 0.5px rgba(11, 20, 26, 0.13);

  margin: 0;
  width: 100%;
  flex: 1; /* fill the (stretched) figure height so both phones align */
  display: flex;
  flex-direction: column;
  padding: 8px;
  border-radius: 30px;
  background: var(--wa-bezel);
  box-shadow: var(--shadow-lg);
}

.wa-screen {
  flex: 1;
  display: flex;
  flex-direction: column;
  border-radius: 23px;
  overflow: hidden;
  background: var(--wa-wallpaper);
}

/* iOS-style status strip — part of the green top, sells it as a real phone */
.wa-statusbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 18px 3px;
  background: var(--wa-header);
  color: var(--wa-header-text);
  font-size: 12.5px;
  font-weight: 600;
}

.wa-time {
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
}

.wa-sys {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.wa-glyph {
  height: 11px;
  width: auto;
  fill: currentColor;
  stroke: none;
}

.wa-sig {
  width: 17px;
}

.wa-batt {
  width: 24px;
}

/* Home indicator bar at the bottom */
.wa-homebar {
  display: flex;
  justify-content: center;
  padding: 8px 0 9px;
  background: var(--wa-wallpaper);
}

.wa-homebar::after {
  content: "";
  width: 108px;
  height: 5px;
  border-radius: 3px;
  background: rgba(11, 20, 26, 0.5);
}

/* Header (green bar) */
.wa-topbar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: var(--wa-header);
  color: var(--wa-header-text);
}

.wa-back {
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
  color: var(--wa-header-text);
}

.wa-avatar {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--wa-avatar);
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.wa-contact {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}

.wa-name {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.2;
}

.wa-status {
  font-size: 12px;
  line-height: 1.2;
  color: var(--wa-status);
}

/* Chat area — subtle CSS-only doodle texture, no external image */
.wa-chat {
  flex: 1; /* fill the phone; bottom-anchor so a shorter chat sits low like a real one */
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 2px;
  padding: 12px 8px 14px;
  overflow: hidden;
  background-color: var(--wa-wallpaper);
  background-image: radial-gradient(var(--wa-wallpaper-dot) 1px, transparent 1.5px);
  background-size: 22px 22px;
}

.wa-day {
  align-self: center;
  margin: 2px 0 8px;
}

.wa-day span {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 8px;
  background: var(--wa-day-bg);
  color: var(--wa-day-text);
  font-size: 11.5px;
  box-shadow: var(--wa-bubble-shadow);
}

/* Bubbles */
.wa-msg {
  position: relative;
  display: flex;
  flex-direction: column;
  max-width: 82%;
  margin: 1px 0;
  padding: 6px 9px 5px;
  border-radius: 8px;
  color: var(--wa-bubble-text);
  font-size: 14.5px;
  line-height: 1.34;
  box-shadow: var(--wa-bubble-shadow);
}

.wa-msg p {
  margin: 0;
}

.wa-in {
  align-self: flex-start;
  background: var(--wa-in);
  border-top-left-radius: 0;
}

.wa-out {
  align-self: flex-end;
  background: var(--wa-out);
  border-top-right-radius: 0;
}

/* Tails — a small triangle hugging the top corner (first bubble of a run only) */
.wa-in::before {
  content: "";
  position: absolute;
  top: 0;
  left: -7px;
  width: 8px;
  height: 13px;
  background: var(--wa-in);
  clip-path: polygon(100% 0, 100% 100%, 0 0);
}

.wa-out::before {
  content: "";
  position: absolute;
  top: 0;
  right: -7px;
  width: 8px;
  height: 13px;
  background: var(--wa-out);
  clip-path: polygon(0 0, 0 100%, 100% 0);
}

/* Continuation bubbles in the same run drop the tail and square the corner */
.wa-cont {
  margin-top: 2px;
}

.wa-cont.wa-in {
  border-top-left-radius: 8px;
}

.wa-cont.wa-out {
  border-top-right-radius: 8px;
}

.wa-cont::before {
  display: none;
}

/* Timestamp + read receipt */
.wa-meta {
  align-self: flex-end;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-top: 2px;
  font-size: 11px;
  line-height: 1;
  color: var(--wa-meta);
}

.wa-meta time {
  font-variant-numeric: tabular-nums;
}

.wa-tick {
  width: 16px;
  height: 16px;
  color: var(--wa-tick);
  stroke-width: 2.4;
}

/* Product-photo bubble */
.wa-msg-photo {
  padding: 4px;
  gap: 0;
}

.wa-photo {
  display: block;
  width: 100%;
  max-width: 188px;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 6px;
}

.wa-caption {
  padding: 5px 5px 0;
  font-size: 13.5px;
  line-height: 1.4;
  color: var(--wa-bubble-text);
}

.wa-msg-photo .wa-meta {
  padding: 0 5px 2px;
}

/* Responsive: collapse the card grid; the phone gallery wraps on its own. */
@media (max-width: 820px) {
  .case-cards {
    grid-template-columns: minmax(0, 1fr);
    gap: 28px;
  }
}

@media (max-width: 640px) {
  .case-stats {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* --- Case-study testimonial block (mirrors .testimonial-card) --- */
.case-quote {
  max-width: 820px;
  margin: 0;
  padding: 40px 40px 34px;
  border-radius: var(--r-md);
  background: var(--surface);
  box-shadow: var(--shadow);
}

.case-quote-mark {
  width: 36px;
  height: 36px;
  margin-bottom: 14px;
  color: var(--accent);
  fill: var(--accent);
  stroke: none;
  opacity: 0.9;
}

.case-quote blockquote {
  margin: 0;
}

.case-quote blockquote p {
  margin: 0;
  color: var(--text);
  font-family: var(--font-heading);
  font-size: clamp(18px, 1.9vw, 22px);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: -0.01em;
}

.case-quote-by {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 26px;
  padding-top: 22px;
  border-top: 1px solid var(--border);
}

.case-quote-avatar {
  display: grid;
  place-items: center;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--accent-soft);
  color: var(--accent);
}

.case-quote-avatar svg {
  width: 22px;
  height: 22px;
}

.case-quote-id {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.case-quote-name {
  color: var(--text);
  font-size: 15px;
  font-weight: 600;
  font-style: normal;
  line-height: 1.3;
}

.case-quote-role {
  color: var(--text-3);
  font-size: 13px;
  line-height: 1.3;
}

@media (max-width: 560px) {
  .case-quote {
    padding: 30px 24px 26px;
  }
}

/* SEO landing pages */

/* Breadcrumbs — a quiet wayfinding line tucked under the nav bar, not a
   headline. Nav is what gets you around the site; this only says where you
   landed, so it is set small and muted and shares the content column's
   measure so it lines up with the <h1> beneath it. Separators are CSS
   chevrons drawn from the same border trick as the nav caret and the language
   pill: no "→" glyph in the text, which keeps the trail out of the i18n text
   walker and off screen readers (they announce the list structure instead). */
.breadcrumbs {
  width: min(var(--max), calc(100% - 48px));
  margin: 20px auto 0;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--text-3);
}

.breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 9px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.breadcrumbs li {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
}

.breadcrumbs li + li::before {
  content: "";
  flex: 0 0 auto;
  width: 4.5px;
  height: 4.5px;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: rotate(45deg);
  opacity: 0.5;
}

.breadcrumbs a {
  color: inherit;
  text-decoration: none;
  transition: color var(--t-fast) var(--ease);
}

.breadcrumbs a:hover {
  color: var(--text);
}

/* The page you are on: present, but never competing with the headline. */
.breadcrumbs [aria-current="page"] {
  color: var(--text-2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.seo-hero { padding-top: 5rem; }
.seo-hero h1 { max-width: 880px; }
.seo-hero p { max-width: 760px; color: var(--muted); font-size: clamp(1.05rem, 2vw, 1.35rem); }
.seo-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 0.9fr); gap: 1.4rem; align-items: stretch; }
.seo-split > div, .seo-flow { border: 1px solid var(--border); border-radius: 28px; padding: 1.5rem; background: var(--surface); box-shadow: var(--shadow-soft); }
.seo-split p { color: var(--muted); }
.seo-flow { display: grid; gap: 0.75rem; align-content: center; grid-auto-rows: max-content; }
.seo-flow span { display: block; padding: 0.85rem 1rem; border-radius: 999px; background: color-mix(in srgb, var(--accent) 14%, transparent); border: 1px solid var(--border); font-weight: 700; }
a.usecase-card { display: block; color: inherit; text-decoration: none; }
.faq-list details { border: 1px solid var(--border); border-radius: 20px; padding: 1rem 1.15rem; background: var(--surface); margin-bottom: 0.8rem; }
.faq-list summary { cursor: pointer; font-weight: 800; }
.faq-list p { color: var(--muted); }
@media (max-width: 820px) { .seo-split { grid-template-columns: 1fr; } }

/* SEO subpages: long-form articles (resources) */
.article-prose { max-width: 780px; margin: 0 auto; }
.article-prose h2 { font-size: clamp(1.45rem, 2.6vw, 1.9rem); margin: 2.2rem 0 0.7rem; }
.article-prose h3 { font-size: clamp(1.15rem, 2vw, 1.35rem); margin: 1.6rem 0 0.5rem; }
.article-prose p, .article-prose li { color: var(--muted); line-height: 1.7; }
.article-prose ul, .article-prose ol { padding-left: 1.3rem; margin: 0.6rem 0 1rem; display: grid; gap: 0.35rem; }
.article-prose a { color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
.article-prose blockquote { border-left: 3px solid var(--accent); margin: 1.2rem 0; padding: 0.4rem 0 0.4rem 1.1rem; color: var(--text); font-weight: 600; }
.article-meta { display: flex; gap: 0.6rem; align-items: center; color: var(--text-3); font-size: 0.9rem; margin-bottom: 0.8rem; }

/* SEO subpages: comparison tables (HTML, indexable — never images) */
.compare-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 20px; background: var(--surface); box-shadow: var(--shadow-soft); -webkit-overflow-scrolling: touch;
  /* Right-edge fade cues that the table scrolls horizontally when it's wider
     than the viewport (mobile). The fade sits on the scroll container and is
     pinned via a local background-attachment so it only shows mid-scroll. */
  background-image: linear-gradient(to right, var(--surface), transparent 12px), linear-gradient(to left, var(--surface), transparent 12px);
  background-position: left center, right center; background-repeat: no-repeat; background-size: 24px 100%, 24px 100%; background-attachment: local, local; }
/* An explicit "scroll →" hint below narrow-screen comparison tables. */
.compare-wrap + .compare-hint { display: none; }
.compare-table { width: 100%; border-collapse: collapse; min-width: 640px; font-size: 0.98rem; }
.compare-table th, .compare-table td { padding: 0.85rem 1.1rem; text-align: left; border-bottom: 1px solid var(--border); vertical-align: top; }
.compare-table thead th { font-weight: 800; background: color-mix(in srgb, var(--accent) 10%, transparent); }
.compare-table tbody th { font-weight: 700; color: var(--text); white-space: nowrap; }
.compare-table td { color: var(--muted); }
.compare-table tbody tr:last-child th, .compare-table tbody tr:last-child td { border-bottom: 0; }
/* Narrow screens — placed AFTER the base rules so it wins on equal specificity.
   The row-header must wrap and stay capped, or it hogs the width and the value
   columns get pushed off-screen, leaving rows that look empty. */
@media (max-width: 720px) {
  .compare-hint { display: block; margin: 0.5rem 0 0; color: var(--text-3); font-size: 0.85rem; }
  .compare-table { min-width: 520px; }
  .compare-table th, .compare-table td { padding: 0.7rem 0.8rem; }
  .compare-table tbody th { white-space: normal; width: 7.5rem; }
}

/* "More use cases" wedge links under the use-case grid; separators are CSS
   pseudo-content so the i18n extractor only ever sees the link labels. */
.usecase-more { display: flex; flex-wrap: wrap; gap: 0.35rem 0.65rem; justify-content: center; align-items: baseline; margin: 0.9rem auto 0; color: var(--muted); font-size: 0.95rem; max-width: 900px; }
.usecase-more a { color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
/* Trailing separators (not leading): a dot that ends a wrapped line reads
   cleaner than one that starts the next line. */
.usecase-more a:not(:last-of-type)::after { content: "·"; color: var(--text-3); margin-left: 0.65rem; text-decoration: none; display: inline-block; }

/* ================= SEO subpage layout refinements (body.seo-page) =========
   The homepage's two-column .section-heading and 3-per-row .usecase-grid
   assume homepage content shapes. The static SEO landing pages opt into
   these adaptations via <body class="seo-page">; the homepage, locale
   homepages, and the original Comodin case study are untouched. */

/* Hero: larger, tighter headline; calmer spacing rhythm. The top padding is
   modest because the sticky header and the breadcrumb already sit above it —
   the old 5rem was sized for a page that opened on bare content. */
.seo-hero { padding-top: 2.4rem; }
.seo-hero h1 { font-size: clamp(2.05rem, 4.4vw, 3.05rem); line-height: 1.09; letter-spacing: -0.02em; margin: 0.5rem 0 0; }
.seo-hero p { margin-top: 1.1rem; }
.seo-hero .hero-actions { margin-top: 1.7rem; }

/* Section headings stack: subpage sections read top-down, and the huge
   homepage h2 scale overwhelms subpage content. */
.seo-page .section-heading { display: block; max-width: 860px; margin-bottom: 34px; }
.seo-page .section-heading h2 { font-size: clamp(1.55rem, 2.8vw, 2.15rem); letter-spacing: -0.015em; }
.seo-page .section-heading p { margin-top: 10px; max-width: 760px; }

/* Split cards: center the shorter side's content instead of leaving a
   top-aligned paragraph floating over dead space; calm the in-card h2. */
.seo-page .seo-split > div:not(.seo-flow) { display: flex; flex-direction: column; justify-content: center; gap: 0.4rem; }
.seo-page .seo-split h2 { font-size: clamp(1.3rem, 2.2vw, 1.6rem); margin: 0 0 0.3rem; }
.seo-page .seo-split p { margin: 0.3rem 0; }

/* Card grids sized by count (the shared grid is 6 tracks, cards span 2 =
   three per row): a lone card becomes a full-width banner, pairs and
   quartets split 2-up instead of leaving orphans. Mobile keeps the
   single-column collapse from the base rules. */
@media (min-width: 881px) {
  .seo-page .usecase-grid > :first-child:last-child { grid-column: span 6; }
  .seo-page .usecase-grid > :first-child:nth-last-child(2),
  .seo-page .usecase-grid > :first-child:nth-last-child(2) ~ * { grid-column: span 3; }
  .seo-page .usecase-grid > :first-child:nth-last-child(4),
  .seo-page .usecase-grid > :first-child:nth-last-child(4) ~ * { grid-column: span 3; }
}

/* FAQ list hugs the left content edge under its stacked heading */
.seo-page .faq-list { margin: 0; }

/* On phones a long trail's final crumb is the page title — let it wrap onto
   its own line and run full width rather than truncating to an ellipsis. */
@media (max-width: 620px) {
  .breadcrumbs [aria-current="page"] { white-space: normal; }
}

/* Vertical rhythm between subpage sections (homepage bands carry their own
   per-section padding; subpage sections are bare .section containers). */
.seo-page main > .section + .section { margin-top: 3.2rem; }
.seo-page main > .section:last-of-type { margin-bottom: 3rem; }

/* A .case-stats block nested inside a narrow .seo-split column reads badly at
   the homepage's fixed 3 columns (4 stats orphan the 4th; labels wrap to 5
   lines). Give it 2 columns so pairs/quartets lay out cleanly. */
.seo-page .seo-split .case-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
.seo-page .seo-split .case-stats div { padding: 20px 20px; }

/* A standalone WhatsApp mockup dropped into an article's prose column (not in
   a .wa-gallery flex row) needs centering — otherwise its fixed ~360px width
   pins it to the left with dead space to the right. */
.article-prose > .wa-figure { margin-inline: auto; }

/* ==========================================================================
   Services + Grants pages (/services, /grants)
   ========================================================================== */

/* --- Direct contact block -------------------------------------------------
   One-tap channels to a human, used on /services, /grants, and above the
   homepage consultation form. Deliberately distinct from the floating
   .chat-fab widget, which reaches the Olano *bot* — these reach the founder.
   Styled on the .chat-fab-option rules so the two read as one family, with
   the same WhatsApp/Telegram brand fills. */
/* 200px floor, not 240: the homepage .contact-inner is capped at 640px, and a
   240px floor drops it to two columns so the third channel orphans onto its
   own row. At 200px all three fit there and on the wider subpage sections. */
.direct-contact {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
  margin: 1.6rem 0 0;
  max-width: 860px;
}

.seo-page .direct-contact { margin-inline: 0; }
.contact-inner .direct-contact { margin-inline: auto; }

/* text-align:left is load-bearing: .contact-inner centres its text, which would
   otherwise centre the label under the left-aligned icon. */
.direct-contact-option {
  display: flex;
  align-items: center;
  text-align: left;
  gap: 13px;
  padding: 14px 15px;
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  background: var(--surface);
  transition:
    background var(--t-fast) var(--ease),
    border-color var(--t-fast) var(--ease),
    transform var(--t-fast) var(--ease);
}

.direct-contact-option:hover {
  background: var(--surface-2);
  border-color: var(--border-strong);
  transform: translateY(-2px);
}

.direct-contact-option:focus-visible {
  outline: none;
  border-color: var(--border-focus);
  box-shadow: var(--shadow-focus);
}

/* Icon tile: deliberately NOT the WhatsApp/Telegram brand colours. Those read
   as third-party badges bolted onto the page; these are Olano's own channels,
   so they use the site's accent on a tinted tile and fill in on hover. All
   three glyphs are stroked Lucide icons and inherit the global svg rule — no
   fill/stroke override needed. */
.direct-contact-icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--r);
  border: 1px solid var(--border);
  background: var(--accent-soft);
  color: var(--accent);
  transition:
    background var(--t-fast) var(--ease),
    border-color var(--t-fast) var(--ease),
    color var(--t-fast) var(--ease);
}

.direct-contact-icon svg {
  width: 20px;
  height: 20px;
}

.direct-contact-option:hover .direct-contact-icon,
.direct-contact-option:focus-visible .direct-contact-icon {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}

.direct-contact-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.direct-contact-body strong {
  font-family: var(--font-heading);
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}

.direct-contact-body span {
  font-size: 12.5px;
  color: var(--text-3);
  overflow-wrap: anywhere;
}

/* --- Service blocks (/services) ------------------------------------------ */
.service-jump {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 1.4rem;
}

.service-jump a {
  padding: 7px 13px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-2);
  font-size: 0.9rem;
  transition:
    color var(--t-fast) var(--ease),
    border-color var(--t-fast) var(--ease);
}

.service-jump a:hover {
  color: var(--text);
  border-color: var(--border-strong);
}

.service-block {
  border: 1px solid var(--border);
  border-radius: 28px;
  padding: clamp(1.4rem, 3vw, 2.2rem);
  background: var(--surface);
  scroll-margin-top: 2rem;
}

.seo-page main > .section > .service-block + .service-block { margin-top: 1.2rem; }

.service-block > .step-number {
  display: block;
  margin-bottom: 0.5rem;
}

.service-block h2 {
  font-size: clamp(1.4rem, 2.6vw, 1.85rem);
  letter-spacing: -0.015em;
  margin: 0;
}

.service-promise {
  margin: 0.5rem 0 0;
  color: var(--text);
  font-weight: 650;
  font-size: clamp(1.02rem, 1.9vw, 1.15rem);
}

.service-block > p:not(.service-promise) {
  margin: 0.7rem 0 0;
  color: var(--text-2);
  line-height: 1.7;
  max-width: 70ch;
}

.service-included-label {
  margin: 1.5rem 0 0.8rem;
  font-family: var(--font-heading);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--text-3);
}

.service-included {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 14px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.service-included li {
  display: flex;
  gap: 11px;
  align-items: flex-start;
}

.service-included li > svg {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin-top: 3px;
  color: var(--accent);
  fill: none;
  stroke: currentColor;
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.service-included strong {
  display: block;
  font-family: var(--font-heading);
  font-size: 0.98rem;
  font-weight: 600;
  color: var(--text);
}

.service-included span {
  display: block;
  margin-top: 2px;
  font-size: 0.92rem;
  line-height: 1.6;
  color: var(--text-2);
}

.service-outcome {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.55rem;
  margin: 1.5rem 0 0;
  padding-top: 1.1rem;
  border-top: 1px solid var(--border);
}

.service-outcome dt {
  font-family: var(--font-heading);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--text-3);
}

.service-outcome dd {
  margin: 0;
  font-weight: 650;
  color: var(--text);
}

.service-block .service-link {
  display: inline-block;
  margin-top: 1.1rem;
  color: var(--accent);
  font-weight: 600;
}

.service-block .service-link:hover { color: var(--accent-hover); }

/* --- Stat tiles + callouts (/grants) ------------------------------------- */
.stat-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 14px;
  margin: 1.8rem 0 0;
  padding: 0;
}

.stat-tiles > div {
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 1.3rem 1.4rem;
  background: var(--surface);
}

.stat-tiles dt {
  font-family: var(--font-heading);
  font-size: clamp(1.6rem, 3.4vw, 2.1rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--accent);
}

.stat-tiles dd {
  margin: 0.35rem 0 0;
  font-size: 0.94rem;
  line-height: 1.6;
  color: var(--text-2);
}

.callout {
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: var(--r-lg);
  padding: 1.2rem 1.4rem;
  background: var(--accent-muted);
  margin: 1.4rem 0 0;
}

.callout.is-warn {
  border-left-color: var(--warn);
  background: var(--warn-soft);
}

.callout h3 {
  margin: 0 0 0.5rem;
  font-size: 1.05rem;
}

.callout p,
.callout li {
  color: var(--text-2);
  line-height: 1.7;
  margin: 0.4rem 0 0;
}

.callout ul {
  margin: 0.5rem 0 0;
  padding-left: 1.2rem;
  display: grid;
  gap: 0.35rem;
}

/* .article-prose centres itself, which is right for article bodies that carry
   their own h2s (the /resources pages). When the prose instead sits under a
   left-aligned .section-heading, centring it leaves the copy indented off its
   own heading — pin it to the section's left edge instead. */
.seo-page .section-heading ~ .article-prose { margin-inline: 0; }

/* Scheme cards carry an agency label above the scheme name. */
.scheme-agency {
  display: block;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-3);
  margin-bottom: 0.3rem;
}

.scheme-link {
  display: inline-block;
  margin-top: 0.8rem;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--accent);
}

.scheme-link:hover { color: var(--accent-hover); }

@media (max-width: 620px) {
  .service-block { border-radius: 20px; }
  .direct-contact { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════════════════════
 * PRODUCT SHOWCASE SYSTEM (2026-08)
 * Built for the platform-first homepage: real dashboard screenshots, animated
 * SVG diagrams that explain the mechanism, and the plan ladder.
 *
 * Diagram convention: every diagram is an inline <svg class="dgm"> using the
 * SAME tokens as the dashboard (this file's :root), so a diagram and a real
 * screenshot of the product sit side by side without a seam. Motion is SMIL +
 * CSS, gated on prefers-reduced-motion (SMIL ignores the global kill switch,
 * so each animated element is hidden or frozen explicitly).
 * ═════════════════════════════════════════════════════════════════════════ */

/* ── Section heading with an eyebrow, used by every showcase band ────────── */
.band-head {
  max-width: 780px;
  margin: 0 auto 44px;
  text-align: center;
}

.band-head .hero-eyebrow {
  justify-content: center;
}

.band-head h2 {
  margin: 0 0 16px;
  font-size: clamp(30px, 3.6vw, 44px);
  line-height: 1.14;
  letter-spacing: -0.025em;
  font-weight: 700;
  color: var(--text);
}

.band-head p {
  margin: 0;
  color: var(--text-2);
  font-size: 16.5px;
  line-height: 1.65;
}

/* ── Dashboard showcase: real screenshots, tab-switched ──────────────────── */
.showcase {
  margin: 110px auto;
}

.showcase-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-bottom: 28px;
}

.showcase-tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px;
  border: none;
  border-radius: var(--r-pill);
  background: var(--surface-2);
  color: var(--text-2);
  font-family: var(--font-sans);
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  transition: background var(--t) var(--ease), color var(--t) var(--ease);
}

.showcase-tab svg {
  width: 15px;
  height: 15px;
}

.showcase-tab:hover {
  background: var(--surface-3);
  color: var(--text);
}

.showcase-tab[aria-selected="true"] {
  background: var(--accent-soft);
  color: var(--accent);
}

.showcase-panel[hidden] {
  display: none;
}

.showcase-panel .app-shot {
  max-width: 1100px;
  margin: 0 auto;
}

/* The screenshot is the hero of the panel; the caption explains the feature. */
.showcase-caption {
  max-width: 760px;
  margin: 26px auto 0;
  text-align: center;
}

.showcase-caption h3 {
  margin: 0 0 10px;
  font-family: var(--font-heading);
  font-size: 21px;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--text);
}

.showcase-caption p {
  margin: 0;
  color: var(--text-2);
  font-size: 15.5px;
  line-height: 1.65;
}

/* ── Diagrams ────────────────────────────────────────────────────────────── */
.dgm-figure {
  margin: 0;
  padding: 34px 30px 26px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: inset 0 0 0 1px var(--border);
}

.dgm-figure figcaption {
  margin-top: 20px;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.6;
  text-align: center;
}

.dgm {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
  fill: none;
  stroke: none;
}

.dgm text {
  font-family: var(--font-sans);
  fill: var(--text);
}

.dgm .d-box {
  fill: var(--surface-2);
  stroke: var(--border-strong);
  stroke-width: 1;
}

.dgm .d-box-accent {
  fill: var(--accent-soft);
  stroke: var(--accent);
  stroke-width: 1;
}

.dgm .d-box-cortex {
  fill: var(--cortex-muted);
  stroke: var(--cortex);
  stroke-width: 1;
}

.dgm .d-title {
  font-size: 13px;
  font-weight: 600;
  fill: var(--text);
}

.dgm .d-sub {
  font-size: 11px;
  fill: var(--text-3);
}

.dgm .d-tiny {
  font-size: 10px;
  fill: var(--text-3);
  letter-spacing: 0.04em;
}

.dgm .d-eyebrow {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.09em;
  fill: var(--text-4);
}

.dgm .d-link {
  stroke: var(--border-strong);
  stroke-width: 1.4;
  fill: none;
}

.dgm .d-link-accent {
  stroke: var(--accent);
  stroke-width: 1.6;
  fill: none;
  opacity: 0.55;
}

.dgm .d-link-dash {
  stroke: var(--border-strong);
  stroke-width: 1.4;
  fill: none;
  stroke-dasharray: 4 4;
}

.dgm .d-pulse {
  fill: var(--accent);
}

.dgm .d-pulse-cortex {
  fill: var(--cortex);
}

.dgm .d-ok {
  fill: var(--success);
}

.dgm .d-accent-text {
  fill: var(--accent);
  font-size: 11px;
  font-weight: 600;
}

.dgm .d-cortex-text {
  fill: var(--cortex);
  font-size: 11px;
  font-weight: 600;
}

/* Motion off: freeze the travelling dots rather than leaving them mid-path. */
@media (prefers-reduced-motion: reduce) {
  .dgm .d-pulse,
  .dgm .d-pulse-cortex,
  .dgm .d-anim {
    display: none;
  }
}

/* ── Two-up feature rows (diagram beside copy) ───────────────────────────── */
.feature-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: 56px;
  align-items: center;
  margin: 96px auto;
}

.feature-row.is-reversed .feature-copy {
  order: 2;
}

.feature-copy h2 {
  margin: 0 0 16px;
  font-size: clamp(24px, 2.6vw, 32px);
  line-height: 1.2;
  letter-spacing: -0.02em;
  font-weight: 700;
  color: var(--text);
}

.feature-copy > p {
  margin: 0 0 18px;
  color: var(--text-2);
  font-size: 16px;
  line-height: 1.68;
}

.feature-points {
  list-style: none;
  margin: 22px 0 0;
  padding: 0;
  display: grid;
  gap: 12px;
}

.feature-points li {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  padding: 0;
  color: var(--text-2);
  font-size: 14.5px;
  line-height: 1.55;
}

.feature-points li::before {
  content: none;
}

.feature-points svg {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  margin-top: 3px;
  color: var(--accent);
}

.feature-points strong {
  color: var(--text);
  font-weight: 600;
}

@media (max-width: 900px) {
  .feature-row {
    grid-template-columns: minmax(0, 1fr);
    gap: 34px;
    margin: 64px auto;
  }

  .feature-row.is-reversed .feature-copy {
    order: 0;
  }
}

/* ── Capability grid: the "everything it does" sweep ─────────────────────── */
.cap-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(268px, 1fr));
  gap: 20px;
  margin-top: 44px;
}

.cap-card {
  padding: 26px 24px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: inset 0 0 0 1px var(--border);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}

.cap-card:hover {
  transform: translateY(-2px);
  box-shadow: inset 0 0 0 1px var(--border-strong), var(--shadow-sm);
}

.cap-card svg {
  width: 22px;
  height: 22px;
  margin-bottom: 14px;
  color: var(--accent);
}

.cap-card h3 {
  margin: 0 0 8px;
  font-family: var(--font-heading);
  font-size: 16.5px;
  font-weight: 600;
  letter-spacing: -0.012em;
  color: var(--text);
}

.cap-card p {
  margin: 0;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.6;
}

.cap-card .cap-meta {
  display: inline-block;
  margin-top: 14px;
  padding: 3px 9px;
  border-radius: var(--r-pill);
  background: var(--surface-2);
  color: var(--text-3);
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* ── Plan ladder ─────────────────────────────────────────────────────────── */
.tier-groups {
  display: grid;
  gap: 30px;
  margin-top: 40px;
}

.tier-group {
  padding: 28px 28px 24px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: inset 0 0 0 1px var(--border);
}

.tier-group-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 20px;
}

.tier-group-head h3 {
  margin: 0;
  font-family: var(--font-heading);
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--text);
}

.tier-group-head p {
  margin: 0;
  color: var(--text-3);
  font-size: 13.5px;
  line-height: 1.5;
}

.tier-row {
  display: grid;
  grid-template-columns: 140px 1fr 150px 120px;
  gap: 16px;
  align-items: center;
  padding: 14px 0;
  border-top: 1px solid var(--border);
}

.tier-row:first-of-type {
  border-top: none;
}

.tier-name {
  font-family: var(--font-heading);
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}

.tier-name span {
  display: block;
  margin-top: 2px;
  color: var(--accent);
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.tier-spec {
  color: var(--text-2);
  font-size: 13.5px;
  line-height: 1.5;
}

.tier-credits {
  color: var(--text-3);
  font-size: 13px;
}

.tier-price {
  text-align: right;
  font-family: var(--font-heading);
  font-size: 17px;
  font-weight: 600;
  color: var(--text);
}

.tier-price span {
  display: block;
  color: var(--text-4);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 500;
}

@media (max-width: 760px) {
  .tier-row {
    grid-template-columns: 1fr auto;
    gap: 6px 14px;
  }

  .tier-spec {
    grid-column: 1 / -1;
    order: 3;
  }

  .tier-credits {
    grid-column: 1 / -1;
    order: 4;
  }

  .tier-price {
    order: 2;
  }
}

.tier-note {
  margin: 26px auto 0;
  max-width: 760px;
  text-align: center;
  color: var(--text-3);
  font-size: 13.5px;
  line-height: 1.65;
}

.tier-note a {
  color: var(--accent);
}

/* Everything every plan includes — the "no tier games" strip. */
.tier-common {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-top: 36px;
}

.tier-common span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 15px;
  border-radius: var(--r-pill);
  background: var(--success-soft);
  color: var(--text-2);
  font-size: 13px;
}

.tier-common svg {
  width: 14px;
  height: 14px;
  color: var(--success);
}

/* ── Stat band: the numbers, restrained ──────────────────────────────────── */
.stat-band {
  display: grid;
  /* Fixed 4-up: auto-fit left an orphan on the second row at common widths. */
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 26px 14px;
  margin: 80px auto;
  padding: 34px 30px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: inset 0 0 0 1px var(--border);
  text-align: center;
}

.stat-band div strong {
  display: block;
  font-family: var(--font-heading);
  font-size: clamp(22px, 2.4vw, 28px);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text);
}

.stat-band div span {
  display: block;
  margin-top: 5px;
  color: var(--text-3);
  font-size: 12.5px;
  line-height: 1.45;
}

@media (max-width: 640px) {
  .stat-band {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 28px 20px;
  }
}

/* ── Comparison table ────────────────────────────────────────────────────────
   Three columns (general AI assistant / chatbot builder / Olano). Marks are
   deliberately three-state — yes, partial, no — because a table where the
   competition scores zero reads as marketing, not information. */
.cmp-wrap {
  overflow-x: auto;
  margin-top: 44px;
  border-radius: var(--r-lg);
  background: var(--surface);
  box-shadow: inset 0 0 0 1px var(--border);
}

.cmp {
  width: 100%;
  min-width: 720px;
  border-collapse: collapse;
  font-size: 14.5px;
}

.cmp th,
.cmp td {
  padding: 15px 18px;
  text-align: left;
  vertical-align: middle;
}

.cmp thead th {
  position: sticky;
  top: 0;
  background: var(--surface-2);
  font-family: var(--font-heading);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text-2);
  letter-spacing: -0.005em;
}

.cmp thead th:last-child {
  color: var(--accent);
}

.cmp tbody tr + tr th,
.cmp tbody tr + tr td {
  border-top: 1px solid var(--border);
}

.cmp tbody th {
  font-weight: 500;
  color: var(--text);
  width: 40%;
}

.cmp td {
  text-align: center;
  width: 20%;
  color: var(--text-3);
  font-size: 13px;
}

.cmp td:last-child {
  background: var(--accent-muted);
  color: var(--text-2);
}

.cmp-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  margin-bottom: 4px;
}

.cmp-yes {
  background: var(--success-soft);
  color: var(--success);
}

.cmp-part {
  background: var(--warn-soft);
  color: var(--warn);
}

.cmp-no {
  background: var(--surface-3);
  color: var(--text-4);
}

.cmp-mark svg {
  width: 12px;
  height: 12px;
}

.cmp-note {
  display: block;
  font-size: 11.5px;
  line-height: 1.35;
}

.cmp-scroll-hint {
  margin: 12px 0 0;
  text-align: center;
  color: var(--text-4);
  font-size: 12px;
}

@media (min-width: 860px) {
  .cmp-scroll-hint {
    display: none;
  }
}

/* --- Showcase theme switch -------------------------------------------------
   The dashboard ships light and dark. The switch swaps the screenshot set
   (<name>.webp / <name>-light.webp) so the page can show that without
   shipping both sets on first paint - the light images are only requested
   when someone asks for them. */
.showcase-theme {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.75rem;
  margin: -0.25rem 0 1.25rem;
}

.showcase-theme-label {
  font-size: 0.8125rem;
  color: var(--text-dim);
  letter-spacing: 0.01em;
}

.seg {
  display: inline-flex;
  padding: 3px;
  gap: 2px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
}

.seg-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.35rem 0.8rem;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--text-dim);
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 500;
  cursor: pointer;
  transition: background-color 0.18s ease, color 0.18s ease;
}

.seg-btn svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.seg-btn:hover { color: var(--text); }

.seg-btn.is-on {
  background: var(--bg);
  color: var(--text);
  box-shadow: 0 1px 2px rgb(0 0 0 / 0.25);
}

.seg-btn:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

@media (max-width: 560px) {
  .showcase-theme { justify-content: center; }
  .showcase-theme-label { display: none; }
}

/* Diagram footer band - the "operated by us" strip under the cloud anatomy. */
.dgm .d-band {
  fill: var(--surface-2);
  stroke: var(--border);
  stroke-width: 1;
}

/* Cloud page: the dashboard shot sits between the hero and the first section,
   so it needs less top padding than a normal section would give it. */
.cloud-shot-band {
  padding-top: 0;
}

.cloud-shot-band .app-shot {
  max-width: 1060px;
  margin: 0 auto;
}

.cloud-anatomy {
  margin-bottom: 42px;
}

/* --- Screen recordings ------------------------------------------------------
   Two clips behind one frame. preload="none" plus a poster means the page
   costs nothing until someone presses play; the play button then hands over
   to the browser's own controls. */
.clip-switch {
  display: flex;
  justify-content: center;
  margin: 0 0 22px;
}

.clip-switch .seg-btn {
  padding: 0.45rem 1rem;
  font-size: 0.875rem;
}

.clip-frame {
  max-width: 1060px;
  margin: 0 auto;
}

.clip-stage {
  position: relative;
  background: var(--bg);
}

.clip-stage video {
  display: block;
  width: 100%;
  height: auto;
  background: var(--bg);
}

.clip-play {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  width: 100%;
  border: 0;
  background: rgb(10 10 12 / 0.55);
  color: #fff;
  text-shadow: 0 1px 12px rgb(0 0 0 / 0.6);
  font: inherit;
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

/* The disc is its own box rather than padding on the <svg>: an SVG's viewport
   is its content box, so padding there shrinks the drawing area instead of
   growing the circle. */
.clip-play-disc {
  display: grid;
  place-items: center;
  width: 68px;
  height: 68px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 10px 30px rgb(0 0 0 / 0.45);
  transition: transform 0.2s ease;
}

.clip-play-disc svg {
  width: 26px;
  height: 26px;
  margin-left: 4px;
}

/* The site-wide svg rule is fill:none/stroke:currentColor, which would leave
   the play triangle invisible. */
.clip-play-disc svg path {
  fill: #fff;
  stroke: none;
}

.clip-play:hover { background: rgb(10 10 12 / 0.4); }
.clip-play:hover .clip-play-disc { transform: scale(1.06); }

.clip-play:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -4px;
}

.clip-play[hidden] { display: none; }

@media (max-width: 560px) {
  .clip-switch .seg { flex-direction: column; width: 100%; }
  .clip-switch .seg-btn { justify-content: center; }
}
