/*
 * Design tokens — all semantic UI colors, shadows, and accents live here.
 * `<html data-theme="light" | "dark">` is set by ThemeProvider (resolved value).
 * See docs/DESIGN_SYSTEM.md for how to extend the system without one-off colors.
 */

[data-theme='light'] {
  color-scheme: light;

  --text: #5b5366;
  --text-muted: #7a7285;
  --text-h: #0c0a12;
  --bg: #fffff5f7;
  --surface: #ffffff;
  --border: #e4e2e8;
  --code-bg: #edeaf2;
  --element-bg: #e5e3dd;
  --toggle-selected-bg: #c7c5bf;
  --toggle-selected-fg: var(--text);
  --toggle-selected-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.22);
  --accent: #3a55ed;
  --accent-hover: #6d28d9;
  /* Text-style links / wordmark — hover uses grey, not accent */
  --text-interactive-hover: #33313a;
  /* Home “Trial Viva” pill */
  --cta-pill-bg: #1a1a1a;
  --cta-pill-bg-hover: #333333;
  --cta-pill-fg: #ffffff;
  --cta-pill-fg-hover: #ffffff;
  --site-index-bg: #f6f5ef;
  /* Home draggable overlays on hero / post-lede photos — layered depth */
  --elevated-photo-shadow:
    0 0 0 1px rgba(0, 0, 0, 0.07),
    0 10px 36px -10px rgba(0, 0, 0, 0.22),
    0 36px 100px -40px rgba(0, 0, 0, 0.2);

  /* Reserved for accent-filled UI (e.g. future chip); primary CTAs use --cta-pill-fg */
  --on-accent: #ffffff;
  --shadow-button: 0 1px 2px rgba(0, 0, 0, 0.08);
  /* Wash over hero / post-lede photography */
  --media-photo-wash: rgba(255, 255, 255, 0.3);
  --shadow-card-soft:
    0 1px 2px color-mix(in srgb, var(--text-h) 4%, transparent),
    0 8px 24px -8px color-mix(in srgb, var(--text-h) 8%, transparent);
  /* Ghost controls: heading-colored label, slightly softer on hover */
  --text-choice-hover: #3a3a42;

  /* Selection / picked-state accent (not used for keyboard focus outlines) */
  --focus-ring-color: #0a0a0a;

  /* Verdict / readiness status (progress dashboard) */
  --status-pass-fg: #15803d;
  --status-pass: #2a9d5c;
  --status-borderline-fg: #b45309;
  --status-borderline: #c9921a;
  --status-fail-fg: #c0392b;
  --status-fail: #c0392b;

  /* Progress dashboard panels — matches directory-card depth */
  --progress-panel-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 10%, transparent),
    0 2px 4px rgba(0, 0, 0, 0.14),
    0 10px 28px -6px rgba(0, 0, 0, 0.32),
    0 22px 48px -14px rgba(0, 0, 0, 0.22);
  --progress-panel-shadow-hover:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 4px 8px rgba(0, 0, 0, 0.18),
    0 14px 36px -8px rgba(0, 0, 0, 0.38),
    0 28px 56px -16px rgba(0, 0, 0, 0.28);
}

[data-theme='dark'] {
  color-scheme: dark;

  --text: #a1a1aa;
  --text-muted: #71717a;
  --text-h: #fafafa;
  --bg: #11110c;
  --surface: #161612;
  --border: #2c2b24;
  --code-bg: #1e1e19;
  --element-bg: #262520;
  --toggle-selected-bg: #1a1916;
  --toggle-selected-fg: var(--text);
  --toggle-selected-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.55);
  --accent: #a78bfa;
  --accent-hover: #c4b5fd;
  --text-interactive-hover: #d4d4d8;
  --cta-pill-bg: #fafafa;
  --cta-pill-bg-hover: #e8e8e8;
  --cta-pill-fg: #0a0a0a;
  --cta-pill-fg-hover: #0a0a0a;
  --site-index-bg: #1c1b16;
  --elevated-photo-shadow:
    0 0 0 1px rgba(255, 255, 255, 0.07),
    0 12px 48px -12px rgba(0, 0, 0, 0.65),
    0 48px 120px -48px rgba(0, 0, 0, 0.55);

  /* Reserved for accent-filled UI; primary CTAs use --cta-pill-fg */
  --on-accent: #ffffff;
  --shadow-button: 0 1px 2px rgba(0, 0, 0, 0.24);
  --media-photo-wash: rgba(255, 255, 255, 0.3);
  --shadow-card-soft:
    0 1px 0 color-mix(in srgb, var(--text-h) 5%, transparent),
    0 12px 32px -12px rgba(0, 0, 0, 0.45);
  --text-choice-hover: #b6b6be;
  /* Raised cards / panels in dark mode (pricing, FAQ, etc.) */
  --shadow-panel-raised:
    0 1px 0 color-mix(in srgb, var(--text-h) 6%, transparent),
    0 18px 48px -20px rgba(0, 0, 0, 0.65);

  --focus-ring-color: #f4f4f5;

  --status-pass-fg: #4ade80;
  --status-pass: #22c55e;
  --status-borderline-fg: #fbbf24;
  --status-borderline: #d97706;
  --status-fail-fg: #f87171;
  --status-fail: #ef4444;

  --progress-panel-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 2px 6px rgba(0, 0, 0, 0.45),
    0 12px 32px -8px rgba(0, 0, 0, 0.55),
    0 24px 52px -14px rgba(0, 0, 0, 0.5);
  --progress-panel-shadow-hover:
    0 0 0 1px color-mix(in srgb, var(--text-h) 16%, transparent),
    0 4px 10px rgba(0, 0, 0, 0.5),
    0 16px 40px -10px rgba(0, 0, 0, 0.65),
    0 30px 60px -16px rgba(0, 0, 0, 0.55);
}

:root {
  /* cursor.com uses proprietary CursorGothic; Inter matches that neutral UI sans role */
  --sans: 'Inter', ui-sans-serif, system-ui, sans-serif;
  --heading: 'Inter', ui-sans-serif, system-ui, sans-serif;
  --mono: ui-monospace, 'SF Mono', Menlo, Monaco, Consolas, monospace;

  font: 16px/148% var(--sans);
  letter-spacing: -0.0105em;
  font-optical-sizing: auto;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Keyboard focus rings disabled sitewide (see app.css cascade override). */

:focus-visible {
  outline: none;
}

html {
  color: var(--text);
  background-color: var(--bg);
}

html,
body,
#root {
  height: 100%;
}

body {
  margin: 0;
}

#root {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}

h1 {
  font-family: var(--heading);
  font-weight: 600;
  color: var(--text-h);
  font-size: 1.825rem;
  letter-spacing: -0.029em;
  margin: 0 0 0.925rem;
}

code {
  font-family: var(--mono);
  padding: 0.15em 0.4em;
  border-radius: 4px;
  background: var(--code-bg);
  color: var(--text-h);
}
.reactEasyCrop_Container {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  overflow: hidden;
  user-select: none;
  touch-action: none;
  cursor: move;
  display: flex;
  justify-content: center;
  align-items: center;
}

.reactEasyCrop_Image,
.reactEasyCrop_Video {
  will-change: transform; /* this improves performances and prevent painting issues on iOS Chrome */
}

.reactEasyCrop_Contain {
  max-width: 100%;
  max-height: 100%;
  margin: auto;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
}
.reactEasyCrop_Cover_Horizontal {
  width: 100%;
  height: auto;
}
.reactEasyCrop_Cover_Vertical {
  width: auto;
  height: 100%;
}

.reactEasyCrop_CropArea {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border: 1px solid rgba(255, 255, 255, 0.5);
  box-sizing: border-box;
  box-shadow: 0 0 0 9999em;
  color: rgba(0, 0, 0, 0.5);
  overflow: hidden;
}

.reactEasyCrop_CropAreaRound {
  border-radius: 50%;
}

.reactEasyCrop_CropAreaGrid::before {
  content: ' ';
  box-sizing: border-box;
  position: absolute;
  border: 1px solid rgba(255, 255, 255, 0.5);
  top: 0;
  bottom: 0;
  left: 33.33%;
  right: 33.33%;
  border-top: 0;
  border-bottom: 0;
}

.reactEasyCrop_CropAreaGrid::after {
  content: ' ';
  box-sizing: border-box;
  position: absolute;
  border: 1px solid rgba(255, 255, 255, 0.5);
  top: 33.33%;
  bottom: 33.33%;
  left: 0;
  right: 0;
  border-left: 0;
  border-right: 0;
}
/**
 * Application styles — import order matters for cascade.
 * Tokens: theme/theme.css (via index.css). Layers: layout → primitives → routes.
 */
/* Shell: header, main, global page column, footer bar, theme toggle */
.layout {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  /* Equal horizontal inset (header, main, footers); ~10% wider than prior */
  --page-inline-base: calc((1.5rem + 6rem / 2 + 1vw) * 1.1);
  --page-inline-factor: 1;
  --page-inline: calc(var(--page-inline-base) * var(--page-inline-factor));
  /* Header row height budget (picker / sign-in); ~20% shorter than 1.62rem slot era */
  --site-header-slot-h: 1.3rem;
  /* Clearance under fixed header for main content (was 3.35rem) */
  --site-header-clearance: 2.68rem;
}
/* Below Tailwind `sm` (640px): side margins 80% smaller (20% of default formula). */
@media (max-width: 639px) {
  .layout {
    --page-inline-base: calc((1.5rem + 5.25rem / 2 + 1vw) * 1.1);
    --page-inline-factor: 0.2;
  }
}
.site-header {
  position: fixed;
  top: env(safe-area-inset-top, 0px);
  left: 0;
  right: 0;
  z-index: 1000;
  flex-shrink: 0;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  column-gap: 1.1rem;
  row-gap: 0.6rem;
  padding: 0.8rem calc(var(--page-inline) + env(safe-area-inset-right, 0px)) 0.8rem
    calc(var(--page-inline) + env(safe-area-inset-left, 0px));
  box-sizing: border-box;
  /* `--bg` can include alpha (e.g. light theme); keep the chrome fully opaque */
  background: rgb(from var(--bg) r g b / 1);
  overflow: visible;
}
/* Marketing shell: hamburger + drawer below this width; inline nav only when there is room */
/* Keep in sync: `max-width` here = one less than `min-width` for desktop marketing rules + mobile-nav hide */
.site-header__menu-toggle {
  display: none;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0.35rem;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--text-h);
  cursor: pointer;
  line-height: 0;
}
.site-header__menu-toggle:hover {
  color: var(--text-interactive-hover);
}
.site-header__menu-toggle:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
@media (max-width: 959px) {
  .site-header--marketing {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    column-gap: 0.5rem;
    row-gap: 0;
  }

  .site-header--marketing .site-header__start {
    flex: 0 1 auto;
    min-width: 0;
    /* Avoid line-box / baseline strut so the compact mic mark lines up with Sign in + menu */
    display: flex;
    align-items: center;
  }

  .site-header--marketing .site-header__center {
    display: none !important;
  }

  /* Trailing region grows; college + Sign in + menu bunched at the right edge */
  .site-header--marketing .site-header__end {
    flex: 1 1 auto;
    min-width: 0;
    justify-content: flex-end;
  }

  .site-header--marketing .site-header__marketing-actions {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.35rem;
    width: auto;
    max-width: 100%;
    min-width: 0;
  }

  .site-header--marketing .site-header__marketing-actions > * {
    flex: 0 0 auto;
    min-width: 0;
  }

  .site-header--marketing .site-header__menu-toggle {
    display: inline-flex;
  }
}
/* Desktop marketing: full center nav; college + sign-in stay on one row (no wrap before nav collapses) */
@media (min-width: 960px) {
  .site-header--marketing .site-header__center {
    flex-wrap: nowrap;
  }

  .site-header--marketing .site-header__end {
    flex-wrap: nowrap;
  }

  .site-header--marketing .site-header__marketing-actions {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.42rem;
  }
}
.site-header-mobile-nav[hidden] {
  display: none !important;
}
.site-header-mobile-nav:not([hidden]) {
  position: fixed;
  inset: 0;
  z-index: 1500;
  pointer-events: auto;
}
.site-header-mobile-nav__backdrop {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: color-mix(in srgb, var(--text-h) 28%, transparent);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.site-header-mobile-nav__sheet {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  box-sizing: border-box;
  width: min(20.5rem, calc(100% - 1.25rem));
  max-width: calc(100vw - env(safe-area-inset-left, 0px) - env(safe-area-inset-right, 0px));
  padding: calc(0.85rem + env(safe-area-inset-top, 0px)) calc(1rem + env(safe-area-inset-right, 0px))
    calc(1rem + env(safe-area-inset-bottom, 0px)) calc(1rem + env(safe-area-inset-left, 0px));
  background: var(--surface);
  border-left: 1px solid var(--border);
  box-shadow: var(--elevated-photo-shadow);
  overflow: auto;
  overscroll-behavior: contain;
}
.site-header-mobile-nav__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.site-header-mobile-nav__title {
  margin: 0;
  font-family: var(--heading);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--text-h);
}
.site-header-mobile-nav__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0.35rem;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--text-h);
  cursor: pointer;
  line-height: 0;
}
.site-header-mobile-nav__close:hover {
  color: var(--text-interactive-hover);
}
.site-header-mobile-nav__nav {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.site-header-mobile-nav__group-label {
  margin: 1rem 0 0.2rem;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.site-header-mobile-nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}
.site-header-mobile-nav__link {
  display: block;
  padding: 0.42rem 0.15rem;
  font-size: 0.9125rem;
  font-weight: 400;
  line-height: 1.4;
  color: var(--text-h);
  text-decoration: none;
  border-radius: 6px;
}
.site-header-mobile-nav__link:hover {
  color: var(--text-interactive-hover);
}
.site-header-mobile-nav__link--active {
  font-weight: 600;
}
@media (min-width: 960px) {
  .site-header-mobile-nav {
    display: none !important;
  }
}
.site-header__start {
  justify-self: start;
}
.site-header__center {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.45rem 1.9rem;
  transition:
    opacity 0.24s ease,
    transform 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0.24s ease;
}
.site-header__dropdown {
  position: relative;
  display: flex;
  align-items: center;
}
.site-header__dropdown-trigger {
  margin: 0;
  padding: 0.2rem 0;
  border: none;
  background: none;
  font-family: inherit;
  font-size: 0.85625rem;
  font-weight: 400;
  letter-spacing: inherit;
  color: var(--text);
  cursor: pointer;
  white-space: nowrap;
  border-radius: 4px;
}
a.site-header__dropdown-trigger {
  text-decoration: none;
  cursor: pointer;
}
.site-header__dropdown-trigger:hover {
  color: var(--text-interactive-hover);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.site-header__dropdown-trigger:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.site-header__dropdown-trigger--active {
  color: var(--text-h);
}
/* Hit area between trigger and panel so hover isn’t dropped */
.site-header__dropdown::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  height: 0.45rem;
  z-index: 1;
}
.site-header__dropdown-panel {
  position: absolute;
  top: calc(100% + 0.35rem);
  left: 50%;
  transform: translateX(-50%);
  z-index: 1100;
  min-width: 11.5rem;
  max-width: min(18rem, calc(100vw - 2rem));
  padding: 0.35rem 0;
  margin: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: var(--elevated-photo-shadow);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity 0.12s ease,
    visibility 0.12s ease;
}
.site-header__dropdown--open .site-header__dropdown-panel {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
.site-header__dropdown-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.site-header__dropdown-list li {
  margin: 0;
}
.site-header__dropdown-link {
  display: block;
  padding: 0.4rem 1rem;
  font-size: 0.85625rem;
  font-weight: 400;
  line-height: 1.45;
  color: var(--text-h);
  text-decoration: none;
}
.site-header__dropdown-link:hover {
  color: var(--text-interactive-hover);
  background: color-mix(in srgb, var(--text-h) 5%, transparent);
}
.site-header__end {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.45rem 1.375rem;
  justify-self: end;
}
@media (max-width: 720px) {
  .site-header:not(.site-header--marketing) {
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
  }

  .site-header:not(.site-header--marketing) .site-header__start {
    grid-column: 1;
    grid-row: 1;
  }

  .site-header:not(.site-header--marketing) .site-header__end {
    grid-column: 2;
    grid-row: 1;
  }

  .site-header:not(.site-header--marketing) .site-header__center {
    grid-column: 1 / -1;
    grid-row: 2;
  }
}
/* Logged-in workspace shell — primary row (logo | modes or title | theme + user) */
.site-header--workspace {
  --site-header-workspace-control-gap: 0.42rem;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.45rem;
}
.site-header__workspace-primary {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  column-gap: 1.1rem;
  width: 100%;
}
/* Station / Viva / Progress workspace routes: logo + controls only */
.site-header__workspace-primary--no-center {
  grid-template-columns: 1fr auto;
}
.site-header--workspace .site-header__start {
  justify-self: start;
}
.site-header--workspace .site-header__workspace-modes {
  justify-self: center;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.85rem 1rem;
  min-width: 0;
}
.site-header--workspace .site-header__page-title-slot,
.site-header--workspace .site-header__workspace-modes {
  transition:
    opacity 0.24s ease,
    transform 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0.24s ease;
}
/* Mic-only mark (≤720px): reveal wordmark on hover/focus and tuck center nav / title aside */
.site-header:has(.site-logo--compact-mark:hover) .site-header__center,
.site-header:has(.site-logo--compact-mark:focus-visible) .site-header__center,
.site-header:has(.site-logo--compact-mark:focus-within) .site-header__center,
.site-header:has(.site-logo--compact-mark:hover) .site-header__page-title-slot,
.site-header:has(.site-logo--compact-mark:focus-visible) .site-header__page-title-slot,
.site-header:has(.site-logo--compact-mark:focus-within) .site-header__page-title-slot,
.site-header:has(.site-logo--compact-mark:hover) .site-header__workspace-modes,
.site-header:has(.site-logo--compact-mark:focus-visible) .site-header__workspace-modes,
.site-header:has(.site-logo--compact-mark:focus-within) .site-header__workspace-modes {
  opacity: 0;
  visibility: hidden;
  transform: translateY(-0.18rem) scale(0.98);
  pointer-events: none;
}
/* Equal spacing: theme ↔ session / a11y / builder settings ↔ account (matches in-slot gap) */
.site-header--workspace .site-header__end {
  justify-self: end;
  gap: var(--site-header-workspace-control-gap);
}
.site-header--workspace .site-header__theme-slot {
  display: flex;
  align-items: center;
  gap: var(--site-header-workspace-control-gap);
  flex: 0 0 auto;
  position: relative;
}
/* Application route: optional session countdown (accessibility “Timer”), left of session info */
.site-header__application-viva-timer {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  flex: 0 0 auto;
  max-width: 0;
  min-width: 0;
  opacity: 0;
  overflow: hidden;
  transform: translateX(6px);
  transition:
    max-width 0.28s ease,
    opacity 0.22s ease,
    transform 0.28s ease;
  pointer-events: none;
}
.site-header__application-viva-timer--visible {
  max-width: 4rem;
  opacity: 1;
  transform: translateX(0);
}
.site-header__application-viva-timer-face {
  font-size: 0.85625rem;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  color: var(--text);
  white-space: nowrap;
}
@media (prefers-reduced-motion: reduce) {
  .site-header__application-viva-timer {
    transition: opacity 0.15s ease;
    transform: none;
  }

  .site-header__application-viva-timer--visible {
    transform: none;
  }

  .site-header--workspace .site-header__page-title-slot,
  .site-header--workspace .site-header__workspace-modes {
    transition: opacity 0.15s ease;
    transform: none;
  }

  .site-header:has(.site-logo--compact-mark:hover) .site-header__center,
  .site-header:has(.site-logo--compact-mark:focus-visible) .site-header__center,
  .site-header:has(.site-logo--compact-mark:focus-within) .site-header__center,
  .site-header:has(.site-logo--compact-mark:hover) .site-header__page-title-slot,
  .site-header:has(.site-logo--compact-mark:focus-visible) .site-header__page-title-slot,
  .site-header:has(.site-logo--compact-mark:focus-within) .site-header__page-title-slot,
  .site-header:has(.site-logo--compact-mark:hover) .site-header__workspace-modes,
  .site-header:has(.site-logo--compact-mark:focus-visible) .site-header__workspace-modes,
  .site-header:has(.site-logo--compact-mark:focus-within) .site-header__workspace-modes {
    transform: none;
  }
}
.site-header__session-info {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.site-header__session-info-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 2.12rem;
  height: calc(var(--site-header-slot-h) + 3px);
  margin: 0;
  padding: 1.5px;
  border: 1px solid var(--border);
  border-radius: 9999px;
  color: var(--text-muted);
  background: var(--element-bg);
  cursor: pointer;
  transition: color 0.15s ease;
}
.site-header__session-info-trigger:hover {
  color: var(--text-h);
}
.site-header__session-info--open .site-header__session-info-trigger {
  color: var(--text);
}
.site-header__session-info-icon {
  display: flex;
  width: 1.05rem;
  height: 1.05rem;
}
.site-header__session-info-icon svg {
  width: 100%;
  height: 100%;
}
.site-header__session-info-trigger:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.site-header__session-info-panel {
  position: absolute;
  top: calc(100% + 0.45rem);
  right: 0;
  z-index: 1200;
  width: min(22.5rem, calc(100vw - 2rem));
  padding: 0.65rem 0.72rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--elevated-photo-shadow);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(4px);
  transition:
    opacity 0.12s ease,
    visibility 0.12s ease,
    transform 0.12s ease;
}
.site-header__session-info-panel p {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.4;
  color: var(--text);
}
.site-header__session-info-panel p + p {
  margin-top: 0.55rem;
}
.site-header__session-info--open .site-header__session-info-panel {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}
/* Hover/focus hint under header icon buttons (same box as theme picker tooltip) */
.site-header__control-hint {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 1200;
  padding: 0.35rem 0.55rem;
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1.2;
  color: var(--text);
  background: var(--element-bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: var(--elevated-photo-shadow);
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(4px);
  transition:
    opacity 0.15s ease,
    visibility 0.15s ease,
    transform 0.15s ease;
}
/* Hover only: focus stays on the trigger after click; :focus-within would keep the hint visible without hover */
.site-header__session-info:hover .site-header__control-hint {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.site-header__session-info--open .site-header__control-hint,
.site-header__session-info--open:hover .site-header__control-hint,
.site-header__session-info--open:focus-within .site-header__control-hint {
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
}
/* After trigger click: hide hint until pointer leaves anchor (new hover), like theme picker */
.site-header__session-info--suppress-hint .site-header__control-hint,
.site-header__session-info--suppress-hint:hover .site-header__control-hint,
.site-header__session-info--suppress-hint:focus-within .site-header__control-hint {
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
}
/* Application route: accessibility options (subtitles, timer) between session info and theme.
   Builder session menu (/viva-builder, /station-builder) reuses the same chrome. */
.site-header__app-accessibility,
.site-header__builder-session {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
}
.site-header__app-accessibility-trigger,
.site-header__builder-session-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 2.12rem;
  height: calc(var(--site-header-slot-h) + 3px);
  margin: 0;
  padding: 1.5px;
  border: 1px solid var(--border);
  border-radius: 9999px;
  color: var(--text-muted);
  background: var(--element-bg);
  cursor: pointer;
  transition: color 0.15s ease;
}
.site-header__app-accessibility-trigger:hover,
.site-header__builder-session-trigger:hover {
  color: var(--text-h);
}
.site-header__app-accessibility--open .site-header__app-accessibility-trigger,
.site-header__builder-session--open .site-header__builder-session-trigger {
  color: var(--text);
}
.site-header__app-accessibility-trigger-icon,
.site-header__builder-session-trigger-icon {
  display: flex;
  width: 1.05rem;
  height: 1.05rem;
}
.site-header__app-accessibility-trigger-svg,
.site-header__builder-session-trigger-svg {
  width: 100%;
  height: 100%;
}
.site-header__app-accessibility-trigger:focus-visible,
.site-header__builder-session-trigger:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.site-header__app-accessibility-panel {
  position: absolute;
  top: calc(100% + 0.45rem);
  right: 0;
  z-index: 1200;
  min-width: 12.5rem;
  padding: 0.5rem 0.55rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--elevated-photo-shadow);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(4px);
  transition:
    opacity 0.12s ease,
    visibility 0.12s ease,
    transform 0.12s ease;
}
.site-header__app-accessibility--open .site-header__app-accessibility-panel,
.site-header__builder-session--open .site-header__app-accessibility-panel {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}
.site-header__app-accessibility:hover .site-header__control-hint,
.site-header__builder-session:hover .site-header__control-hint {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.site-header__app-accessibility--open .site-header__control-hint,
.site-header__app-accessibility--open:hover .site-header__control-hint,
.site-header__app-accessibility--open:focus-within .site-header__control-hint,
.site-header__builder-session--open .site-header__control-hint,
.site-header__builder-session--open:hover .site-header__control-hint,
.site-header__builder-session--open:focus-within .site-header__control-hint {
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
}
.site-header__app-accessibility--suppress-hint .site-header__control-hint,
.site-header__app-accessibility--suppress-hint:hover .site-header__control-hint,
.site-header__app-accessibility--suppress-hint:focus-within .site-header__control-hint,
.site-header__builder-session--suppress-hint .site-header__control-hint,
.site-header__builder-session--suppress-hint:hover .site-header__control-hint,
.site-header__builder-session--suppress-hint:focus-within .site-header__control-hint {
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
}
.site-header__app-accessibility-row {
  display: grid;
  grid-template-columns: 1.2rem minmax(0, 1fr) 2.35rem;
  align-items: center;
  gap: 0.45rem 0.55rem;
  padding: 0.38rem 0.2rem;
}
.site-header__app-accessibility-row + .site-header__app-accessibility-row {
  border-top: 1px solid color-mix(in srgb, var(--border) 85%, transparent);
  margin-top: 0.12rem;
  padding-top: 0.5rem;
}
.site-header__app-accessibility-row-lead {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 1.2rem;
  height: 1.2rem;
  color: var(--text-h);
}
.site-header__app-accessibility-option-t {
  font-size: 0.95rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.02em;
  font-family: system-ui, sans-serif;
}
.site-header__app-accessibility-option-svg {
  width: 1.05rem;
  height: 1.05rem;
}
.site-header__app-accessibility-row-label {
  font-size: 0.8rem;
  line-height: 1.25;
  color: var(--text);
}
.site-header__app-accessibility-switch {
  position: relative;
  flex-shrink: 0;
  justify-self: end;
  width: 2.35rem;
  height: 1.28rem;
  margin: 0;
  padding: 0;
  border: 1px solid color-mix(in srgb, var(--border) 90%, var(--text-h));
  border-radius: 9999px;
  background: color-mix(in srgb, var(--text-h) 8%, var(--element-bg));
  cursor: pointer;
  transition:
    background-color 0.15s ease,
    border-color 0.15s ease;
}
.site-header__app-accessibility-switch:hover {
  border-color: color-mix(in srgb, var(--text-h) 35%, var(--border));
}
.site-header__app-accessibility-switch:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 2px;
}
.site-header__app-accessibility-switch-thumb {
  position: absolute;
  top: 50%;
  left: 2px;
  width: 0.92rem;
  height: 0.92rem;
  border-radius: 50%;
  background: var(--surface);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--text-h) 18%, transparent);
  transform: translateY(-50%);
  transition: transform 0.15s ease;
  pointer-events: none;
}
.site-header__app-accessibility-switch--on {
  background: color-mix(in srgb, var(--text-h) 42%, var(--element-bg));
  border-color: color-mix(in srgb, var(--text-h) 45%, var(--border));
}
.site-header__app-accessibility-switch--on .site-header__app-accessibility-switch-thumb {
  transform: translate(1.05rem, -50%);
}
.site-header__app-accessibility-switch--locked,
.site-header__app-accessibility-switch--locked:hover {
  opacity: 0.55;
  cursor: not-allowed;
  pointer-events: none;
  border-color: color-mix(in srgb, var(--border) 90%, var(--text-h));
}
.site-header__app-accessibility-row--locked .site-header__app-accessibility-row-label {
  opacity: 0.72;
}
.site-header__app-accessibility-row--locked {
  position: relative;
}
.site-header__builder-session-row-hint {
  position: absolute;
  top: calc(100% + 4px);
  right: 0;
  z-index: 1300;
  padding: 0.3rem 0.5rem;
  font-size: 0.72rem;
  font-weight: 500;
  line-height: 1.2;
  color: var(--text);
  background: var(--element-bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: var(--elevated-photo-shadow);
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(2px);
  transition:
    opacity 0.15s ease,
    visibility 0.15s ease,
    transform 0.15s ease;
}
.site-header__app-accessibility-row--locked:hover .site-header__builder-session-row-hint,
.site-header__app-accessibility-row--locked:focus-within .site-header__builder-session-row-hint,
.site-header__builder-voice-row--min-selected:hover .site-header__builder-session-row-hint,
.site-header__builder-voice-row--min-selected:focus-within .site-header__builder-session-row-hint {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.site-header__builder-session-panel {
  max-height: min(70vh, 28rem);
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
}
.site-header__builder-voice-row {
  grid-template-columns: minmax(0, 1fr) 2.35rem;
}
.site-header__builder-session-voices-loading {
  margin: 0;
  padding: 0.2rem 0.2rem;
  font-size: 0.75rem;
  color: var(--text);
  opacity: 0.75;
}
.site-header__workspace-mode-link {
  font-size: 0.85625rem;
  font-weight: 400;
  color: var(--text);
  text-decoration: none;
  white-space: nowrap;
  border-radius: 4px;
}
.site-header__workspace-mode-link--outlined {
  padding: 0.3rem 0.75rem;
  border: 1px solid color-mix(in srgb, var(--text-h) 28%, var(--border));
  border-radius: 9999px;
  font-weight: 600;
  color: var(--text-h);
}
.site-header__workspace-mode-link:hover {
  color: var(--text-interactive-hover);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.site-header__workspace-mode-link--outlined:hover {
  color: var(--text-h);
  border-color: color-mix(in srgb, var(--text-h) 42%, var(--border));
  text-decoration: none;
}
.site-header__workspace-mode-link:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.site-header__workspace-mode-link--active {
  color: var(--text-h);
  font-weight: 600;
}
/* Workspace pages with a route title in the shared header */
.site-header--workspace-viva-builder .site-header__workspace-primary {
  grid-template-columns: 1fr auto 1fr;
  /* Centre logo (wordmark or mic), page title / feedback toggle, and theme + account on one axis */
  align-items: center;
}
.site-header--workspace-viva-builder .site-header__start {
  grid-column: 1;
  justify-self: start;
}
.site-header--workspace-viva-builder .site-header__page-title-slot {
  grid-column: 2;
  justify-self: center;
  min-width: 0;
}
.site-header__page-title-slot--with-nav {
  display: flex;
  align-items: center;
  gap: 0.75rem 1rem;
}
.site-header--workspace-viva-builder .site-header__end {
  grid-column: 3;
  justify-self: end;
  align-self: center;
}
.site-header__page-heading {
  margin: 0;
  font-family: var(--heading);
  font-weight: 600;
  font-size: 1.35rem;
  letter-spacing: -0.029em;
  line-height: 1.35;
  color: var(--text-h);
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: min(55vw, 18rem);
}
/* /feedback — same affordance as former in-page title toggle */
.site-header__feedback-scope-toggle {
  margin: 0;
  padding: 0;
  max-width: 100%;
  appearance: none;
  background: none;
  border: none;
  border-radius: 6px;
  font: inherit;
  font-weight: inherit;
  font-size: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  color: inherit;
  text-align: center;
  cursor: pointer;
  transition: color 0.2s ease;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.site-header__feedback-scope-toggle:hover {
  color: var(--text-interactive-hover);
}
.site-header__feedback-scope-toggle:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
/* Workspace header account: icon + shared `.site-header__control-hint` label (see `WorkspaceUserAccount`) */
.site-header__user-account {
  position: relative;
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
}
.site-header__user-account-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 2.12rem;
  height: calc(var(--site-header-slot-h) + 3px);
  margin: 0;
  padding: 1.5px;
  border: 1px solid var(--border);
  border-radius: 9999px;
  color: var(--text-muted);
  background: var(--element-bg);
  cursor: pointer;
  transition: color 0.15s ease;
}
.site-header__user-account-trigger:hover {
  color: var(--text-h);
}
.site-header__user-account-trigger:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.site-header__user-account--open .site-header__user-account-trigger {
  color: var(--text);
}
.site-header__user-account-icon {
  display: flex;
  width: 1.05rem;
  height: 1.05rem;
}
.site-header__user-account-icon svg {
  width: 100%;
  height: 100%;
}
.site-header__user-account:hover .site-header__control-hint {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.site-header__user-account--suppress-hint .site-header__control-hint,
.site-header__user-account--suppress-hint:hover .site-header__control-hint,
.site-header__user-account--suppress-hint:focus-within .site-header__control-hint {
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
}
.site-header__user-account--open .site-header__control-hint,
.site-header__user-account--open:hover .site-header__control-hint,
.site-header__user-account--open:focus-within .site-header__control-hint {
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
}
/* Workspace account: full-screen dimmed backdrop + large tile (see `WorkspaceUserAccount`) */
.account-modal {
  position: fixed;
  inset: 0;
  z-index: 1600;
  box-sizing: border-box;
}
.account-modal__backdrop {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: color-mix(in srgb, var(--text-h) 52%, transparent);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.account-modal__frame {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: max(1rem, env(safe-area-inset-top, 0px)) max(1rem, env(safe-area-inset-right, 0px))
    max(1rem, env(safe-area-inset-bottom, 0px)) max(1rem, env(safe-area-inset-left, 0px));
  pointer-events: none;
}
.account-modal__tile {
  pointer-events: auto;
  box-sizing: border-box;
  width: min(100%, min(92vw, 44rem));
  max-height: min(88vh, 44rem);
  overflow: auto;
  overscroll-behavior: contain;
  padding: 1.15rem 1.2rem 1.25rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: var(--elevated-photo-shadow);
}
.account-modal__toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 1.15rem;
}
.account-modal__title {
  margin: 0;
  font-family: var(--heading);
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--text-h);
}
.account-modal__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  margin: 0;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 8px;
  font: inherit;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--text-muted);
  background: transparent;
  cursor: pointer;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
.account-modal__close:hover {
  color: var(--text-h);
  background: color-mix(in srgb, var(--text-h) 6%, transparent);
}
.account-modal__close:focus,
.account-modal__close:focus-visible {
  outline: none;
}
.account-modal__body {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.1rem 1.25rem;
  align-items: start;
}
@media (max-width: 520px) {
  .account-modal__body {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
  }

  .account-modal__fields {
    width: 100%;
  }

  .account-modal__dd--subscription {
    justify-content: center;
    text-align: center;
  }
}
.account-modal__photo-wrap {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
}
.account-modal__photo-input {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.account-modal__photo-button {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
  padding: 0;
  border: none;
  background: none;
  cursor: pointer;
  color: inherit;
}
.account-modal__photo-button:focus {
  outline: none;
}
.account-modal__photo-button:focus-visible .account-modal__photo,
.account-modal__photo-button:focus-visible .account-modal__photo--placeholder {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 26%, transparent);
}
.account-modal__photo-button:disabled {
  cursor: not-allowed;
  opacity: 0.72;
}
.account-modal__photo-hint {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--text-muted);
}
.account-modal__photo-button:hover:not(:disabled) .account-modal__photo-hint,
.account-modal__photo-button:focus-visible .account-modal__photo-hint {
  color: var(--text-interactive-hover);
}
.account-modal__photo-error {
  margin: 0;
  max-width: 12rem;
  font-size: 0.75rem;
  line-height: 1.35;
  text-align: center;
  color: #7f1d1d;
}
.account-modal__photo {
  display: block;
  width: 5.5rem;
  height: 5.5rem;
  border-radius: 9999px;
  object-fit: cover;
  border: 1px solid var(--border);
  background: var(--element-bg);
}
.account-modal__photo--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
}
.account-modal__photo-initials {
  font-size: 1.35rem;
  font-weight: 600;
  color: var(--text-h);
  letter-spacing: 0.03em;
}
.account-modal__fields {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  min-width: 0;
}
.account-modal__field {
  margin: 0;
}
.account-modal__dt {
  margin: 0 0 0.2rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.account-modal__dd {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.35;
  color: var(--text);
  word-break: break-word;
}
.account-modal__dd--subscription {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.45rem 0.75rem;
}
.account-modal__subscription-label {
  min-width: 0;
}
.account-modal__upgrade {
  flex: 0 0 auto;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--text-h);
  text-decoration: none;
  white-space: nowrap;
  padding: 0.28rem 0.55rem;
  border-radius: 7px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--text-h) 5%, transparent);
}
.account-modal__upgrade:hover {
  color: var(--text-interactive-hover);
  border-color: color-mix(in srgb, var(--text-h) 28%, var(--border));
  text-decoration: none;
}
.account-modal__upgrade:focus,
.account-modal__upgrade:focus-visible {
  outline: none;
}
.account-modal__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem 0.65rem;
  margin-top: 1.35rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--border);
}
.account-modal__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.35rem;
  padding: 0.4rem 1rem;
  border-radius: 8px;
  font: inherit;
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
  transition:
    color 0.15s ease,
    background 0.15s ease,
    border-color 0.15s ease;
}
.account-modal__btn--secondary {
  border: 1px solid var(--border);
  color: var(--text);
  background: var(--element-bg);
}
.account-modal__btn--secondary:hover {
  border-color: color-mix(in srgb, var(--text-h) 22%, var(--border));
  color: var(--text-h);
}
.account-modal__btn--secondary:focus,
.account-modal__btn--secondary:focus-visible {
  outline: none;
}
.account-modal__btn--danger {
  border: 1px solid color-mix(in srgb, #c53030 45%, var(--border));
  color: #c53030;
  background: color-mix(in srgb, #c53030 6%, transparent);
}
.account-modal__btn--danger:hover {
  background: color-mix(in srgb, #c53030 12%, transparent);
}
.account-modal__btn--danger:focus,
.account-modal__btn--danger:focus-visible {
  outline: none;
}
/* Avatar crop modal (opens above account modal) */
.avatar-crop-modal {
  position: fixed;
  inset: 0;
  z-index: 1700;
  box-sizing: border-box;
}
.avatar-crop-modal__backdrop {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: color-mix(in srgb, var(--text-h) 58%, transparent);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.avatar-crop-modal__backdrop:disabled {
  cursor: not-allowed;
}
.avatar-crop-modal__frame {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: max(1rem, env(safe-area-inset-top, 0px)) max(1rem, env(safe-area-inset-right, 0px))
    max(1rem, env(safe-area-inset-bottom, 0px)) max(1rem, env(safe-area-inset-left, 0px));
  pointer-events: none;
}
.avatar-crop-modal__tile {
  pointer-events: auto;
  box-sizing: border-box;
  width: min(100%, min(92vw, 28rem));
  max-height: min(92vh, 40rem);
  overflow: auto;
  overscroll-behavior: contain;
  padding: 1.15rem 1.2rem 1.25rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: var(--elevated-photo-shadow);
}
.avatar-crop-modal__toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.65rem;
}
.avatar-crop-modal__title {
  margin: 0;
  font-family: var(--heading);
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--text-h);
}
.avatar-crop-modal__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  margin: 0;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 8px;
  font: inherit;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--text-muted);
  background: transparent;
  cursor: pointer;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
.avatar-crop-modal__close:hover:not(:disabled) {
  color: var(--text-h);
  background: color-mix(in srgb, var(--text-h) 6%, transparent);
}
.avatar-crop-modal__close:disabled {
  cursor: not-allowed;
  opacity: 0.72;
}
.avatar-crop-modal__close:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.avatar-crop-modal__hint {
  margin: 0 0 0.85rem;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--text-muted);
}
.avatar-crop-modal__crop-area {
  position: relative;
  width: 100%;
  height: min(52vw, 18rem);
  margin-bottom: 0.85rem;
  border-radius: 10px;
  overflow: hidden;
  background: var(--element-bg);
  border: 1px solid var(--border);
}
.avatar-crop-modal__zoom-label {
  display: block;
  margin-bottom: 0.35rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.avatar-crop-modal__zoom {
  display: block;
  width: 100%;
  margin: 0 0 0.85rem;
  accent-color: var(--accent);
}
.avatar-crop-modal__error {
  margin: 0 0 0.85rem;
  font-size: 0.8125rem;
  line-height: 1.35;
  color: #7f1d1d;
}
.avatar-crop-modal__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem 0.65rem;
  padding-top: 0.15rem;
}
.avatar-crop-modal__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.35rem;
  padding: 0.4rem 1rem;
  border-radius: 8px;
  font: inherit;
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
  transition:
    color 0.15s ease,
    background 0.15s ease,
    border-color 0.15s ease;
}
.avatar-crop-modal__btn:disabled {
  cursor: not-allowed;
  opacity: 0.72;
}
.avatar-crop-modal__btn--secondary {
  border: 1px solid var(--border);
  color: var(--text);
  background: var(--element-bg);
}
.avatar-crop-modal__btn--secondary:hover:not(:disabled) {
  border-color: color-mix(in srgb, var(--text-h) 22%, var(--border));
  color: var(--text-h);
}
.avatar-crop-modal__btn--primary {
  border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--border));
  color: var(--surface);
  background: var(--accent);
}
.avatar-crop-modal__btn--primary:hover:not(:disabled) {
  background: color-mix(in srgb, var(--accent) 88%, var(--text-h));
}
.avatar-crop-modal__btn:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
@media (max-width: 720px) {
  .site-header__workspace-primary {
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    row-gap: 0.35rem;
  }

  /* Let the logo link shrink so wordmark can ellipsis beside the mic */
  .site-header--workspace .site-header__start {
    min-width: 0;
  }

  .site-header--workspace:not(.site-header--workspace-viva-builder) .site-header__start {
    grid-column: 1;
    grid-row: 1;
  }

  .site-header--workspace:not(.site-header--workspace-viva-builder) .site-header__end {
    grid-column: 2;
    grid-row: 1;
  }

  .site-header--workspace:not(.site-header--workspace-viva-builder) .site-header__workspace-modes {
    grid-column: 1 / -1;
    grid-row: 2;
    justify-self: center;
  }

  .site-header__workspace-primary--no-center {
    grid-template-rows: auto;
    row-gap: 0;
  }

  .site-header__workspace-primary--no-center .site-header__start {
    grid-column: 1;
    grid-row: 1;
  }

  .site-header__workspace-primary--no-center .site-header__end {
    grid-column: 2;
    grid-row: 1;
  }

  .site-header--workspace-viva-builder .site-header__workspace-primary {
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    row-gap: 0.35rem;
    align-items: center;
  }

  .site-header--workspace-viva-builder .site-header__start {
    grid-column: 1;
    grid-row: 1;
  }

  .site-header--workspace-viva-builder .site-header__end {
    grid-column: 2;
    grid-row: 1;
    align-self: center;
  }

  .site-header--workspace-viva-builder:not(.site-header--workspace-feedback)
    .site-header__page-title-slot {
    grid-column: 1 / -1;
    grid-row: 2;
    justify-self: center;
  }

  /* /feedback — one row with mic | Feedback (ellipsis) | theme + account */
  .site-header--workspace-viva-builder.site-header--workspace-feedback
    .site-header__workspace-primary {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-rows: auto;
    row-gap: 0;
    align-items: center;
  }

  .site-header--workspace-viva-builder.site-header--workspace-feedback
    .site-header__start {
    grid-column: 1;
    grid-row: 1;
  }

  .site-header--workspace-viva-builder.site-header--workspace-feedback
    .site-header__page-title-slot {
    grid-column: 2;
    grid-row: 1;
    justify-self: stretch;
    min-width: 0;
    width: 100%;
    max-width: 100%;
  }

  .site-header--workspace-viva-builder.site-header--workspace-feedback
    .site-header__end {
    grid-column: 3;
    grid-row: 1;
    flex-shrink: 0;
  }

  .site-header--workspace-viva-builder.site-header--workspace-feedback
    .site-header__page-heading--feedback {
    max-width: 100%;
    width: 100%;
    min-width: 0;
    text-align: center;
  }

  .site-header--workspace-viva-builder.site-header--workspace-feedback
    .site-header__feedback-scope-toggle {
    display: block;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
  }

  .site-header__page-title-slot--with-nav {
    flex-wrap: wrap;
    justify-content: center;
  }

  .site-header__page-heading {
    max-width: min(92vw, 20rem);
    font-size: clamp(1.1rem, 4.5vw, 1.35rem);
  }
}
.site-logo {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--text-h);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 0.35rem;
  min-width: 0;
}
.site-logo:hover {
  color: var(--text-interactive-hover);
}
.site-logo__mark-icon {
  display: inline-flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  line-height: 0;
}
.site-logo__mark-svg {
  width: 1.2rem;
  height: 1.35rem;
  display: block;
}
.site-logo__wordmark {
  display: inline-block;
  overflow: hidden;
  white-space: nowrap;
  transition:
    max-width 0.5s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.24s ease,
    transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}
@media (max-width: 720px) {
  .site-logo--compact-mark .site-logo__wordmark {
    max-width: 0;
    opacity: 0;
    transform: translateX(-0.25rem);
  }

  .site-logo--compact-mark:hover .site-logo__wordmark,
  .site-logo--compact-mark:focus-visible .site-logo__wordmark,
  .site-logo--compact-mark:focus-within .site-logo__wordmark {
    max-width: 9rem;
    opacity: 1;
    transform: translateX(0);
  }

  /* Same outer height as `.site-header__signin` so the mic lines up with the pill row */
  .site-header--marketing .site-logo--compact-mark {
    min-height: calc(var(--site-header-slot-h) + 3px);
    box-sizing: border-box;
  }
}
@media (prefers-reduced-motion: reduce) {
  .site-header__center,
  .site-logo__wordmark {
    transition: opacity 0.15s ease;
    transform: none;
  }

  .site-logo--compact-mark .site-logo__wordmark,
  .site-logo--compact-mark:hover .site-logo__wordmark,
  .site-logo--compact-mark:focus-visible .site-logo__wordmark,
  .site-logo--compact-mark:focus-within .site-logo__wordmark {
    transform: none;
  }
}
/* Feedback header title: shorter label, smaller type; toggle unchanged */
.site-header__page-heading--feedback {
  font-size: clamp(0.92rem, 3vw, 1.2rem);
  line-height: 1.25;
  max-width: min(40vw, 9rem);
}
.site-header__page-heading--feedback .site-header__feedback-scope-toggle {
  font-size: inherit;
}
/*
 * Sign in: same outer height as college picker (slot 1.62rem + 2×2px padding),
 * same colours and type as primary pill CTAs (.btn--primary).
 */
.site-header__signin {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  box-sizing: border-box;
  height: calc(var(--site-header-slot-h) + 3px);
  min-height: calc(var(--site-header-slot-h) + 3px);
  padding: 0 0.68rem;
  border: none;
  border-radius: 9999px;
  font: inherit;
  font-size: 0.925rem;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  color: var(--cta-pill-fg);
  background: var(--cta-pill-bg);
  box-shadow: none;
  cursor: pointer;
  transition:
    background 0.28s ease,
    color 0.2s ease;
}
.site-header__signin:hover {
  color: var(--cta-pill-fg-hover);
  background: var(--cta-pill-bg-hover);
}
.site-header__signin:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
/* Reserves one row in the header; pill grows downward from this corner (does not change header height) */
.site-college-picker-anchor {
  --site-college-slot-h: var(--site-header-slot-h);

  position: relative;
  flex: 0 0 auto;
  width: 2.12rem;
  height: calc(var(--site-college-slot-h) + 3px);
  margin-right: 0.35rem;
  box-sizing: border-box;
  overflow: visible;
}
/* Segmented vertical pill — same top/left when collapsed or open so it expands & retracts in place */
.site-college-picker {
  display: inline-flex;
  flex-direction: column;
  align-items: stretch;
  width: 100%;
  padding: 1.5px;
  border-radius: 9999px;
  border: 1px solid var(--border);
  background: var(--element-bg);
  box-sizing: border-box;
}
.site-college-picker--collapsed,
.site-college-picker--open {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  transform: none;
}
.site-college-picker--collapsed {
  justify-content: flex-start;
  gap: 0;
}
.site-college-picker--open {
  z-index: 1100;
  justify-content: flex-start;
  gap: 1px;
  box-shadow: var(--elevated-photo-shadow);
}
.site-college-picker__slot {
  flex-shrink: 0;
  display: flex;
  justify-content: center;
  overflow: hidden;
  max-height: var(--site-college-slot-h);
  opacity: 1;
  transition:
    max-height 0.34s cubic-bezier(0.33, 1, 0.68, 1),
    opacity 0.26s ease;
}
.site-college-picker--collapsed .site-college-picker__slot:not(.site-college-picker__slot--active) {
  max-height: 0;
  min-height: 0;
  opacity: 0;
  pointer-events: none;
}
.site-college-picker--collapsed .site-college-picker__slot--active {
  max-height: var(--site-college-slot-h);
}
.site-college-picker__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0.2rem 0.28rem;
  border: none;
  border-radius: 9999px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  transition: color 0.15s ease;
}
.site-college-picker__btn:hover:not(.site-college-picker__btn--active) {
  color: var(--text-h);
}
.site-college-picker__btn:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.site-college-picker__btn--active {
  color: var(--text);
  background: transparent;
  box-shadow: none;
}
.site-college-picker__icon {
  display: flex;
  width: 1.05rem;
  height: 1.05rem;
}
.site-college-picker__icon svg {
  width: 100%;
  height: 100%;
}
.site-college-picker__tooltip {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 1200;
  padding: 0.35rem 0.55rem;
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1.2;
  color: var(--text);
  background: var(--element-bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: var(--elevated-photo-shadow);
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(4px);
  transition:
    opacity 0.15s ease,
    visibility 0.15s ease,
    transform 0.15s ease;
}
.site-college-picker-anchor:hover .site-college-picker__tooltip,
.site-college-picker-anchor:focus-within .site-college-picker__tooltip {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
/* After click opens the menu, hide the hint even if pointer is still over the anchor */
.site-college-picker-anchor:has(.site-college-picker--open) .site-college-picker__tooltip {
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
}
/* After choosing an option, hide hint until pointer leaves or focus leaves the anchor */
.site-college-picker-anchor--suppress-hint .site-college-picker__tooltip,
.site-college-picker-anchor--suppress-hint:hover .site-college-picker__tooltip,
.site-college-picker-anchor--suppress-hint:focus-within .site-college-picker__tooltip {
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
}
/* Footer (and shared pattern with header college picker): segmented control in a pill */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  padding: 2px;
  border-radius: 9999px;
  border: 1px solid var(--border);
  background: var(--element-bg);
  gap: 1px;
}
.theme-toggle__btn {
  margin: 0;
  padding: 0.2rem 0.28rem;
  border: none;
  border-radius: 9999px;
  font: inherit;
  color: var(--text-muted);
  background: transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition:
    color 0.15s ease,
    background 0.15s ease,
    box-shadow 0.15s ease;
}
.theme-toggle__btn:hover:not(.theme-toggle__btn--active) {
  color: var(--text-h);
  background: color-mix(in srgb, var(--text-h) 9%, transparent);
}
.theme-toggle__btn:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.theme-toggle__btn--active {
  color: var(--toggle-selected-fg);
  background: var(--toggle-selected-bg);
  box-shadow: var(--toggle-selected-shadow);
  transition: none;
}
.theme-toggle__icon {
  display: flex;
  width: 1.15rem;
  height: 1.15rem;
}
.theme-toggle__svg {
  width: 100%;
  height: 100%;
}
.site-footer-bar {
  flex-shrink: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 1.5rem;
  margin-left: calc(-1 * (var(--page-inline) + env(safe-area-inset-left, 0px)));
  margin-right: calc(-1 * (var(--page-inline) + env(safe-area-inset-right, 0px)));
  padding: 1.25rem calc(var(--page-inline) + env(safe-area-inset-right, 0px)) 1.5rem
    calc(var(--page-inline) + env(safe-area-inset-left, 0px));
  background: var(--bg);
}
.site-footer-bar--in-index {
  margin-inline: 0;
  margin-top: 2rem;
  padding: 1.25rem 0 0;
  background: transparent;
}
.site-footer-bar__copyright {
  margin: 0;
  font-size: 0.83125rem;
  color: var(--text-muted);
}
.site-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  /* Fixed header + prior top gap; content scrolls under header */
  padding-top: calc(2rem + var(--site-header-clearance) + env(safe-area-inset-top, 0px));
  padding-right: calc(var(--page-inline) + env(safe-area-inset-right, 0px));
  padding-bottom: 0;
  padding-left: calc(var(--page-inline) + env(safe-area-inset-left, 0px));
}
/* viva-builder ?embed=1 — no workspace header; drop main top padding that assumed fixed header */
.layout--workspace-no-header .site-main {
  padding-top: max(1rem, env(safe-area-inset-top, 0px));
}
/* Marketing preview iframes: header is decorative; only the theme toggle stays interactive. */
.layout:has(.site-header--marketing-iframe-embed) {
  --page-inline-factor: 1;
}
/* Narrow marketing iframe (`embedMobile=1`): minimal horizontal inset inside scaled chrome. */
.layout:has(.site-header--marketing-iframe-embed).layout--marketing-embed-mobile {
  --page-inline: 4px;
}
.site-header--marketing-iframe-embed .site-header__start,
.site-header--marketing-iframe-embed .site-header__page-title-slot,
.site-header--marketing-iframe-embed .site-header__end > :not(.site-header__theme-slot),
.site-header--marketing-iframe-embed
  .site-header__theme-slot
  > :not(.site-college-picker-anchor) {
  pointer-events: none;
  cursor: default;
}
.site-header--marketing-iframe-embed .site-header__theme-slot .site-college-picker-anchor,
.site-header--marketing-iframe-embed .site-header__theme-slot .site-college-picker-anchor * {
  cursor: pointer;
}
/* Grow route content so the footer bar stays at the bottom of the viewport on short pages */
.site-main > :first-child {
  flex: 1 1 auto;
  min-height: 0;
}
/* Standalone pages — keep space below content */
.site-main > .page {
  padding-bottom: 3rem;
}
.page {
  max-width: 42rem;
}
.page h1 {
  margin-top: 0;
}
.page p {
  margin: 0 0 1rem;
  line-height: 1.55;
}
.page code {
  font-size: 0.89em;
}
/* Terms / Privacy — compact left nav so body sits ~50% further left vs former 1:2 grid */
.page.legal-page {
  max-width: none;
  width: 100%;
  margin-inline: 0;
  box-sizing: border-box;
}
.legal-page__layout {
  --legal-nav-w: 12rem;
  --legal-col-gap: clamp(1rem, 2.5vw, 2rem);

  display: grid;
  grid-template-columns: minmax(0, var(--legal-nav-w)) minmax(0, 1fr);
  gap: var(--legal-col-gap);
  align-items: start;
}
@media (max-width: 640px) {
  .legal-page__layout {
    grid-template-columns: 1fr;
  }
}
.legal-page__nav {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  padding-top: 0.15rem;
}
@media (min-width: 641px) {
  .legal-page__nav {
    position: sticky;
    top: calc(2rem + var(--site-header-clearance) + env(safe-area-inset-top, 0px));
  }
}
.legal-page__nav-link {
  font-size: 0.9125rem;
  font-weight: 400;
  line-height: 1.35;
  color: var(--text);
  text-decoration: none;
}
.legal-page__nav-link:hover {
  color: var(--text-interactive-hover);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.legal-page__nav-link[aria-current='page'] {
  color: var(--text-h);
  font-weight: 600;
}
.legal-page__body {
  min-width: 0;
}
/* Match right inset to nav column + gap so prose isn’t flush to the main column edge */
@media (min-width: 641px) {
  .legal-page__body {
    padding-right: calc(var(--legal-nav-w) + var(--legal-col-gap));
  }
}
.page.legal-page h2 {
  font-size: 1.0625rem;
  font-weight: 600;
  margin: 1.75rem 0 0.5rem;
  color: var(--text-h);
}
.page.legal-page h3 {
  font-size: 0.9875rem;
  font-weight: 600;
  margin: 1.25rem 0 0.4rem;
  color: var(--text-h);
}
.page.legal-page section:first-of-type h2 {
  margin-top: 1.25rem;
}
.page.legal-page ul {
  margin: 0 0 1rem;
  padding-left: 1.35rem;
  line-height: 1.55;
}
.page.legal-page li {
  margin-bottom: 0.35rem;
}
.legal-page__body a {
  color: var(--accent);
}
.legal-page__body a:hover {
  color: var(--accent-hover);
}
/* Shared button primitives */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.55rem 1.15rem;
  border-radius: 8px;
  font: inherit;
  font-size: 0.9125rem;
  font-weight: 600;
  text-decoration: none;
  border: none;
  cursor: pointer;
  transition:
    background 0.15s ease,
    color 0.15s ease,
    box-shadow 0.15s ease;
}
.btn:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
/* Primary = marketing pill (--cta-pill-*); use on <button> or <a> */
.btn--primary {
  border-radius: 9999px;
  padding: 0.55rem 1.595rem;
  font-size: 1.00375rem;
  background: var(--cta-pill-bg);
  color: var(--cta-pill-fg);
  box-shadow: none;
  transition:
    background 0.28s ease,
    color 0.2s ease;
}
.btn--primary:hover {
  background: var(--cta-pill-bg-hover);
  color: var(--cta-pill-fg-hover);
}
/* Secondary = bordered ghost; use on <button> or <a> */
.btn--secondary {
  color: var(--text-h);
  background: transparent;
  border: 1px solid var(--border);
}
.btn--secondary:hover {
  background: var(--element-bg);
  border-color: color-mix(in srgb, var(--text-h) 22%, var(--border));
  color: var(--text-h);
}
a.btn--secondary:visited {
  color: var(--text-h);
}
/* First visit: full-page college picker with optional “peek” through scrim on hover/focus. */
@property --peek-scale {
  syntax: '<number>';
  inherits: true;
  initial-value: 0;
}
.home-college-landing {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: max(1rem, env(safe-area-inset-top, 0px))
    calc(var(--page-inline) + env(safe-area-inset-right, 0px))
    max(1rem, env(safe-area-inset-bottom, 0px))
    calc(var(--page-inline) + env(safe-area-inset-left, 0px));
  /* Must stay transparent so masked “holes” in the scrim show the page beneath, not this layer */
  background: transparent;
  isolation: isolate;
  transition: opacity 0.5s ease;
}
.home-college-landing--exiting {
  opacity: 0;
  pointer-events: none;
}
/* Full-viewport scrim behind choices; radial mask = more transparent at label, opaque toward edges */
.home-college-landing__scrim {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  /* Opaque fill so non-peek isn’t washed out by alpha in `--bg`; parent `.home-college-landing` stays transparent so masked regions reveal `.home-body` */
  background: rgb(from var(--bg) r g b / 1);
  -webkit-mask-image: none;
  mask-image: none;
}
/* Position follows pointer in JS (no transition); scale eases open / shut */
.home-college-landing__scrim--peek {
  transition: --peek-scale 5s ease-out;
  /* Never use a literal 0px circle — some engines treat it as an unmasked full viewport flash. */
  -webkit-mask-image: radial-gradient(
    circle max(1px, calc(min(39.6vmin, 61.2vw) * var(--peek-scale, 0))) at var(--peek-x-pct, 50%)
      var(--peek-y-pct, 50%),
    transparent 0%,
    rgba(255, 255, 255, 0.2) 42%,
    rgba(255, 255, 255, 0.75) 78%,
    #fff 100%
  );
  mask-image: radial-gradient(
    circle max(1px, calc(min(39.6vmin, 61.2vw) * var(--peek-scale, 0))) at var(--peek-x-pct, 50%)
      var(--peek-y-pct, 50%),
    transparent 0%,
    rgba(255, 255, 255, 0.2) 42%,
    rgba(255, 255, 255, 0.75) 78%,
    #fff 100%
  );
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}
.home-college-landing__scrim--peek.home-college-landing__scrim--peek-retract {
  transition: --peek-scale 0.5s cubic-bezier(0.4, 0, 1, 1);
}
.home-college-landing__inner {
  position: relative;
  z-index: 1;
  width: min(560px, 100%);
  text-align: center;
}
/* Plain text controls — no focus “box”; keyboard users get underline */
.home-college-landing-overlay__choices {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(2.5rem, 7.6vw, 3.6rem);
  width: 100%;
  pointer-events: auto;
}
.home-college-landing-overlay__choice {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(1.05rem, 2.8vw, 1.3rem);
  font-weight: 500;
  letter-spacing: 0.24em;
  line-height: 1.15;
  color: var(--text-h);
  background: none;
  border: none;
  border-radius: 0;
  cursor: pointer;
  padding: 0.12em 0;
  box-shadow: none;
  outline: none;
  text-shadow: none;
  transition:
    color 0.28s ease,
    text-shadow 0.28s ease,
    transform 0.28s ease,
    letter-spacing 0.28s ease;
}
/* Restore slight horizontal stagger from the earlier design. */
.home-college-landing-overlay__choice--acem {
  transform: translateX(clamp(-1.1rem, -5vw, -0.5rem));
}
.home-college-landing-overlay__choice--anzca {
  transform: translateX(0);
}
.home-college-landing-overlay__choice:hover {
  color: var(--text-choice-hover);
  letter-spacing: 0.26em;
  text-shadow:
    0 0.06em 0.12em color-mix(in srgb, var(--text-choice-hover) 22%, transparent),
    0 0.12em 0.35em color-mix(in srgb, var(--text-h) 12%, transparent);
}
.home-college-landing-overlay__choice--acem:hover {
  transform: translateX(clamp(-1.1rem, -5vw, -0.5rem)) scale(1.035);
}
.home-college-landing-overlay__choice--anzca:hover {
  transform: translateX(0) scale(1.035);
}
.home-college-landing-overlay__choice:focus {
  outline: none;
  box-shadow: none;
}
.home-college-landing-overlay__choice:focus-visible {
  outline: none;
  color: var(--text-h);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.home-college-landing-overlay__choice:focus-visible:not(:hover) {
  letter-spacing: 0.24em;
  text-shadow: none;
}
.home-college-landing-overlay__choice--acem:focus-visible:not(:hover) {
  transform: translateX(clamp(-1.1rem, -5vw, -0.5rem));
}
.home-college-landing-overlay__choice--anzca:focus-visible:not(:hover) {
  transform: translateX(0);
}
/* Below Tailwind `sm` (640px): horizontal offsets can cause horizontal scroll on narrow notches */
@media (max-width: 639px) {
  .home-college-landing-overlay__choice--acem {
    transform: none;
  }

  .home-college-landing-overlay__choice--acem:hover {
    transform: scale(1.035);
  }

  .home-college-landing-overlay__choice--acem:focus-visible:not(:hover) {
    transform: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .home-college-landing__scrim--peek,
  .home-college-landing__scrim--peek.home-college-landing__scrim--peek-retract {
    transition: none;
  }

  .home-college-landing-overlay__choice {
    transition: color 0.15s ease;
  }

  .home-college-landing-overlay__choice:hover {
    letter-spacing: 0.24em;
    text-shadow: none;
  }

  .home-college-landing-overlay__choice--acem:hover,
  .home-college-landing-overlay__choice--anzca:hover {
    transform: none;
  }

  @media (min-width: 640px) {
    .home-college-landing-overlay__choice--acem:hover {
      transform: translateX(clamp(-1.1rem, -5vw, -0.5rem));
    }

    .home-college-landing-overlay__choice--anzca:hover {
      transform: translateX(0);
    }
  }
}
/* Home route only — hero, feedback strips, draggable overlays */
/*
 * Marketing band heights: fixed rem so narrowing the viewport only changes width;
 * photos use object-fit: cover and crop horizontally. Tune once here and in
 * /admin/components (same custom properties).
 */
:root {
  /*
   * Homepage marketing heights: post-lede strips + stacked photo row use the band baseline only.
   * The hero iframe band is intentionally +10% taller — do not reuse --home-marketing-hero-h
   * for strips or the stacked photo height.
   */
  --home-marketing-band-base-h: 45rem;
  --home-marketing-hero-h: calc(var(--home-marketing-band-base-h) * 1.1);
  /* Post-lede side-by-side frame: same as band baseline (not +10%). */
  --home-marketing-post-lede-frame-h: var(--home-marketing-band-base-h);
  /* Stacked layout photo row — independent of hero bump */
  --home-marketing-stacked-photo-h: 40rem;
  /*
   * Notional full-width strip for side-by-side layout. Text column ~∝ strip width.
   * Stack when strip ≤ 60% of ref ⇒ text/background width has dropped by ≥40% vs ref.
   */
  --home-post-lede-sidebyside-ref-w: 80rem;
  --home-post-lede-stack-until: calc(0.6 * var(--home-post-lede-sidebyside-ref-w));
  /* Mirrored strips stack earlier so copy is not stuck on the opposite side before stack. */
  --home-post-lede-mirror-stack-until: calc(0.72 * var(--home-post-lede-sidebyside-ref-w));
  /*
   * Stacked layout only: scale with viewport; a higher min was forcing extra line wraps
   * instead of shrinking type. Same crop anchor as side-by-side: object-position left top.
   */
  --home-post-lede-stacked-lead-fs: clamp(0.78rem, 0.52rem + 2.85vw, 1.22rem);
  --home-post-lede-stacked-detail-fs: clamp(0.68rem, 0.48rem + 1.35vw, 0.92rem);
}
/* Home: fill viewport under header so the site index can sit at the bottom */
.layout:has(.home) .site-main {
  padding-top: calc(var(--site-header-clearance) + env(safe-area-inset-top, 0px));
}
.home {
  flex: 1;
  display: flex;
  flex-direction: column;
  position: relative;
}
/* Main home content — painted under first-visit college scrim; landing mask reveals peek on hover */
.home-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  transition: opacity 0.5s ease;
  opacity: 1;
}
.home-body--behind-landing {
  opacity: 1;
  pointer-events: none;
}
.home-body--behind-landing.home-body--revealing {
  pointer-events: auto;
}
.home-hero-headline {
  margin: 0;
  /* Fluid size lives on `.home-intro.page` so the Trial Viva pill scales to the same curve */
  font-size: 1em;
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -0.02em;
  color: var(--text-h);
  max-width: 38rem;
}
/* Only this span updates during first-visit landing peek — avoids repainting the whole line. */
.home-hero-headline__college {
  white-space: nowrap;
}
@keyframes home-hero-headline-out {
  from {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(0, -0.28em, 0);
  }
}
@keyframes home-hero-headline-in {
  from {
    opacity: 0;
    transform: translate3d(0, 0.32em, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}
.home-hero-headline--motion-out {
  animation: home-hero-headline-out 0.28s ease-in forwards;
}
.home-hero-headline--motion-in {
  animation: home-hero-headline-in 0.36s ease-out forwards;
}
@media (prefers-reduced-motion: reduce) {
  .home-hero-headline--motion-out,
  .home-hero-headline--motion-in {
    animation: none;
  }
}
/*
 * Headline + Trial Viva share one fluid `font-size` on the intro column; pill uses the same
 * proportion as the former fixed pair (1.00375rem at 1.9rem headline).
 */
.home-intro .btn--primary {
  margin: 0;
  font-size: calc(100% * 1.00375 / 1.9);
  padding: 0.54795em 1.58904em;
}
.home-article {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  width: 100%;
  padding-top: 0;
  /* Equal vertical gap: text hero → stats line → following sections. */
  --home-stats-v-gap: clamp(0.4rem, 0.25rem + 0.85vw, 0.8rem);
  /* Top landing rail + lower art sections share this content width */
  --home-rail-max: min(100%, 76rem);
  --home-rail-line: color-mix(in srgb, var(--text-h) 6%, transparent);
  --home-rail-pad-x: clamp(1.15rem, 3vw, 2rem);
  --home-rail-to-viva-gap: 2.85rem;
}
[data-theme='dark'] .home-article {
  --home-rail-line: color-mix(in srgb, var(--text-h) 8%, transparent);
}
/*
 * Architectural page grid: full-width top rule; vertical pillars on content column;
 * horizontal dividers span pillar-to-pillar (not inset by section padding).
 */
.home-top-rail {
  position: relative;
  width: 100%;
  box-sizing: border-box;
  --home-secondary-body: color-mix(in srgb, var(--text) 90%, var(--text-muted) 10%);
}
[data-theme='dark'] .home-top-rail {
  --home-secondary-body: #cdd6e8;
}
.home-top-rail::before {
  content: '';
  display: block;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  border-top: 1px solid var(--home-rail-line);
  pointer-events: none;
}
.home-top-rail__frame {
  width: 100%;
  max-width: var(--home-rail-max);
  margin-inline: auto;
  box-sizing: border-box;
  border-left: 1px solid var(--home-rail-line);
  border-right: 1px solid var(--home-rail-line);
  border-bottom: none;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--site-index-bg) 35%, var(--bg)) 0%,
    var(--bg) 100%
  );
}
.home-top-rail__section {
  box-sizing: border-box;
}
.home-top-rail__pathways {
  border-top: 1px solid var(--home-rail-line);
  border-bottom: 1px solid var(--home-rail-line);
  padding: clamp(0.95rem, 2vw, 1.25rem) var(--home-rail-pad-x)
    clamp(1rem, 2.2vh, 1.35rem);
  box-sizing: border-box;
}
.home-top-rail__pathways-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  width: 100%;
  margin: 0;
}
.home-top-rail__pathways-item {
  margin: 0;
  min-width: 0;
  padding: clamp(0.55rem, 1.2vw, 0.8rem) clamp(0.5rem, 2vw, 1.25rem);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(0.15rem, 0.35vw, 0.28rem);
  text-align: center;
  box-sizing: border-box;
  border-right: 1px solid var(--home-rail-line);
}
.home-top-rail__pathways-item:last-child {
  border-right: none;
}
.home-top-rail__pathways-college {
  display: block;
  font-size: clamp(0.8rem, 0.22vw + 0.72rem, 0.9rem);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-h);
}
.home-top-rail__pathways-exam {
  display: block;
  font-size: clamp(0.88rem, 0.32vw + 0.78rem, 0.98rem);
  font-weight: 400;
  line-height: 1.32;
  letter-spacing: -0.014em;
  color: color-mix(in srgb, var(--text-h) 68%, var(--home-secondary-body));
}
@media (max-width: 39.99rem) {
  .home-top-rail__pathways-row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
  }

  .home-top-rail__pathways-item {
    padding: 0.55rem clamp(0.35rem, 2vw, 0.5rem);
  }

  .home-top-rail__pathways-college {
    font-size: clamp(0.68rem, 2.4vw + 0.42rem, 0.78rem);
    letter-spacing: 0.08em;
  }

  .home-top-rail__pathways-exam {
    font-size: clamp(0.72rem, 2.1vw + 0.44rem, 0.86rem);
    line-height: 1.28;
  }
}
.home-intro.page {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  margin-bottom: 0;
  font-size: clamp(1.35rem, 4.2vw, 1.9rem);
  row-gap: calc(1.2rem / 1.35 * 1em);
}
/* Text-led homepage hero (ACEM / ANZCA): copy + mic / rotating questions */
.home-text-hero {
  --home-hero-headline-size: clamp(1.42rem, 2.35vw + 0.65rem, 2.05rem);
  --home-hero-support-size: clamp(0.92rem, 0.35vw + 0.82rem, 1.04rem);
  --home-hero-copy-pad-top: clamp(1.25rem, 2.8vw, 2.35rem);
  --home-hero-copy-gap: clamp(0.7rem, 1.45vw, 0.95rem);
  --home-hero-visual-nudge: clamp(-1.5rem, -2.75vw, -1.35rem);
  --home-hero-proof-green: #15803d;
  --home-hero-proof-green-soft: #16a34a;
  --home-hero-supporting: color-mix(in srgb, var(--text) 88%, var(--text-muted) 12%);
  --home-hero-proof-line: color-mix(in srgb, var(--text) 74%, var(--text-muted) 26%);
  --home-hero-question: color-mix(in srgb, var(--text-h) 68%, var(--text-muted) 32%);
  width: 100%;
  margin: 0;
}
[data-theme='dark'] .home-text-hero {
  --home-hero-proof-green: #4ade80;
  --home-hero-proof-green-soft: #86efac;
  --home-hero-supporting: #d0d9eb;
  --home-hero-proof-line: #bcc8de;
  --home-hero-question: #b3bfd6;
}
.home-text-hero__main {
  padding: clamp(0.65rem, 1.35vw, 0.95rem) var(--home-rail-pad-x)
    clamp(0.75rem, 1.5vw, 1rem);
}
.home-text-hero > .home-top-rail__pathways {
  padding-top: clamp(1.15rem, 2.3vw, 1.45rem);
}
.home-text-hero__grid {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: clamp(1.25rem, 3.2vw, 2rem);
}
@media (min-width: 64rem) {
  .home-text-hero__grid {
    display: grid;
    grid-template-columns: minmax(0, 0.44fr) minmax(0, 0.56fr);
    align-items: stretch;
    column-gap: clamp(2.25rem, 4vw, 3.75rem);
    row-gap: 1.25rem;
  }

  .home-text-hero__headline,
  .home-text-hero__support {
    max-width: none;
  }

  .home-text-hero__copy {
    padding-top: var(--home-hero-copy-pad-top);
  }

  .home-text-hero__visual {
    justify-content: flex-start;
    margin-top: var(--home-hero-visual-nudge);
  }

  .home-text-hero__visual-inner {
    position: relative;
    flex: 1;
    width: 100%;
    min-height: 100%;
    display: flex;
    justify-content: center;
  }

  .home-text-hero__visual-stack {
    position: relative;
    width: min(100%, 28rem);
    min-height: 100%;
  }
}
.home-text-hero__copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--home-hero-copy-gap);
}
.home-text-hero__proof {
  margin: clamp(0.55rem, 1.1vw, 0.75rem) 0 0;
  font-size: clamp(0.84rem, 0.32vw + 0.74rem, 0.94rem);
  font-weight: 400;
  line-height: 1.45;
  letter-spacing: -0.012em;
  color: var(--home-hero-proof-line);
  text-wrap: pretty;
}
.home-text-hero__proof-count {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--home-hero-proof-green-soft);
}
.home-text-hero__headline {
  margin: 0;
  max-width: 36rem;
  font-size: clamp(1.42rem, 2.35vw + 0.65rem, 2.05rem);
  font-weight: 400;
  line-height: 1.28;
  letter-spacing: -0.025em;
  color: var(--text-h);
  text-wrap: pretty;
}
.home-text-hero__support {
  margin: 0;
  max-width: 36rem;
  font-size: clamp(0.92rem, 0.35vw + 0.82rem, 1.04rem);
  font-weight: 400;
  line-height: 1.5;
  color: var(--home-hero-supporting);
  text-wrap: pretty;
}
.home-text-hero__cta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem 0.85rem;
  margin-top: 0;
}
.home-text-hero__btn-secondary {
  border-radius: 9999px;
  padding: 0.55rem 1.595rem;
  font-size: 1.00375rem;
  font-weight: 600;
  text-decoration: none;
  border: 1px solid color-mix(in srgb, var(--text-h) 32%, transparent);
  color: var(--text-h);
  background: transparent;
  transition:
    background 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease,
    transform 0.22s ease;
}
.home-text-hero__btn-secondary:hover {
  background: color-mix(in srgb, var(--text-h) 6%, transparent);
  border-color: color-mix(in srgb, var(--text-h) 48%, transparent);
  transform: translateY(-1px);
}
[data-theme='dark'] .home-text-hero__btn-secondary {
  border-color: color-mix(in srgb, var(--text-h) 38%, transparent);
}
[data-theme='dark'] .home-text-hero__btn-secondary:hover {
  border-color: color-mix(in srgb, var(--text-h) 52%, transparent);
  background: color-mix(in srgb, var(--text-h) 8%, transparent);
}
.home-text-hero__visual {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.home-text-hero__visual-inner {
  width: 100%;
  max-width: min(36rem, 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
}
.home-text-hero__visual-stack {
  width: 100%;
  max-width: min(28rem, 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
}
/* Stacked hero: copy + pathways only; must follow base `.home-text-hero__visual` rules. */
@media (max-width: 63.99875rem) {
  .home-text-hero__visual {
    display: none;
  }

  .home-top-rail .home-how-works {
    padding-top: clamp(1.75rem, 4.5vw, 2.5rem);
  }
}
@media (min-width: 64rem) {
  .home-text-hero__visual {
    align-items: center;
    padding-left: 0;
  }

  .home-text-hero__visual-inner {
    margin-left: 0;
    margin-right: 0;
  }
}
.home-text-hero__mic-stage {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: min(100%, 22rem);
  aspect-ratio: 1;
  max-width: 100%;
  overflow: visible;
}
@media (min-width: 64rem) {
  .home-text-hero__mic-stage {
    width: min(100%, 28rem);
  }

  .home-text-hero__visual-stack .home-text-hero__mic-stage {
    position: absolute;
    left: 50%;
    width: 100%;
    margin: 0;
    transform: translateX(-50%);
    top: calc(
      var(--home-hero-copy-pad-top) + 2.5 * 1.28 * var(--home-hero-headline-size) -
        min(100%, 28rem) / 2 - var(--home-hero-visual-nudge)
    );
  }

  .home-text-hero__visual-stack .home-text-hero__question-wrap {
    position: absolute;
    left: 50%;
    width: 100%;
    margin: 0;
    min-height: 0;
    max-width: none;
    top: calc(
      var(--home-hero-copy-pad-top) + 3 * 1.28 * var(--home-hero-headline-size) +
        var(--home-hero-copy-gap) + 2 * 1.5 * var(--home-hero-support-size) +
        var(--home-hero-copy-gap) + 1.35rem - var(--home-hero-visual-nudge)
    );
    transform: translate(-50%, -50%);
  }
}
.home-text-hero__mic-inner {
  position: relative;
  z-index: 1;
  overflow: visible;
  transform: scale(1.08) translateY(-0.65rem);
  transform-origin: center center;
}
@media (min-width: 64rem) {
  .home-text-hero__mic-inner {
    transform: scale(1.14) translateY(-0.65rem);
  }
}
.home-text-hero__question-wrap {
  margin: 0.35rem 0 0;
  width: min(100%, 28rem);
  max-width: 100%;
  min-height: 2.75lh;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}
.home-text-hero__question-text {
  margin: 0;
  text-align: center;
  font-family: var(--sans);
  font-size: clamp(0.86rem, 1.35vw + 0.55rem, 0.98rem);
  line-height: 1.48;
  font-weight: 400;
  color: var(--home-hero-question);
}
@keyframes home-text-hero-q-in {
  from {
    opacity: 0;
    transform: translateY(4px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.home-text-hero__question-text--initial {
  animation: home-text-hero-q-in 0.55s ease-out both;
}
.home-text-hero__question-text--cycle {
  animation: home-text-hero-q-in 0.42s ease-out both;
}
@media (prefers-reduced-motion: reduce) {
  .home-text-hero__question-text--initial,
  .home-text-hero__question-text--cycle {
    animation: none;
  }
}
/* “How PracticeViva works” — spacious three-card zone inside top rail */
.home-how-works {
  --home-how-card-bg: color-mix(in srgb, var(--surface) 88%, var(--element-bg));
  --home-how-card-border: color-mix(in srgb, var(--border) 72%, transparent);
  --home-how-card-title: var(--text-h);
  --home-how-card-body: var(--home-secondary-body);
  --home-how-card-step: color-mix(in srgb, var(--text-muted) 78%, var(--text-h));
  width: 100%;
  margin: 0;
  padding: clamp(2.25rem, 5vw, 3.25rem) var(--home-rail-pad-x)
    clamp(2.75rem, 6vw, 3.75rem);
  box-sizing: border-box;
}
[data-theme='dark'] .home-how-works {
  --home-how-card-bg: color-mix(in srgb, var(--surface) 82%, var(--element-bg));
  --home-how-card-border: color-mix(in srgb, var(--border) 62%, transparent);
  --home-how-card-body: #c5cfe3;
  --home-how-card-step: color-mix(in srgb, var(--text-muted) 55%, var(--text-h));
}
@media (min-width: 64rem) {
  .home-top-rail__pathways {
    padding-bottom: clamp(1.15rem, 3.2vh, 2rem);
  }

  .home-top-rail .home-how-works {
    padding-top: clamp(2.75rem, 6vh, 4rem);
    padding-bottom: clamp(2rem, 3.5vh, 2.75rem);
  }
}
.home-top-rail .home-how-works {
  max-width: none;
}
.home-how-works__heading {
  margin: 0 0 clamp(1.65rem, 3.5vw, 2.35rem);
  max-width: 44rem;
  display: flex;
  flex-direction: column;
  gap: clamp(0.5rem, 1.1vw, 0.7rem);
}
.home-how-works__heading-primary {
  display: block;
  font-size: clamp(1.35rem, 2.1vw + 0.7rem, 1.9rem);
  font-weight: 500;
  line-height: 1.22;
  letter-spacing: -0.03em;
  color: var(--text-h);
  text-wrap: pretty;
}
.home-how-works__heading-support {
  display: block;
  font-size: clamp(1rem, 0.55vw + 0.88rem, 1.2rem);
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: -0.018em;
  color: var(--home-secondary-body);
  text-wrap: pretty;
}
.home-how-works__cards {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1rem, 2.2vw, 1.35rem);
  align-items: stretch;
}
@media (min-width: 40rem) and (max-width: 63.99rem) {
  .home-how-works__cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .home-how-works__card:last-child {
    grid-column: 1 / -1;
  }
}
@media (min-width: 64rem) {
  .home-how-works__cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1.2rem, 2vw, 1.65rem);
  }

  .home-how-works__card:last-child {
    grid-column: auto;
  }
}
.home-how-works__card {
  margin: 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  min-height: auto;
  height: 100%;
  padding: clamp(1.35rem, 2.8vw, 1.65rem) clamp(1.25rem, 2.4vw, 1.55rem);
  border: 1px solid var(--home-how-card-border);
  border-radius: 0.85rem;
  background: var(--home-how-card-bg);
  box-shadow: var(--shadow-card-soft);
  box-sizing: border-box;
  transition:
    transform 0.22s ease,
    box-shadow 0.22s ease,
    border-color 0.22s ease;
}
.home-how-works__card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--text-h) 14%, var(--home-how-card-border));
}
@media (min-width: 48rem) {
  .home-how-works__card {
    min-height: clamp(11.5rem, 18vh, 14.5rem);
    padding: clamp(1.55rem, 2.4vw, 1.85rem) clamp(1.45rem, 2.5vw, 1.75rem);
  }
}
.home-how-works__card-step {
  display: block;
  margin: 0 0 0.85rem;
  font-size: clamp(0.72rem, 0.18vw + 0.66rem, 0.8rem);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.12em;
  color: var(--home-how-card-step);
}
.home-how-works__card-title {
  margin: 0 0 0.45rem;
  font-size: clamp(1.08rem, 0.55vw + 0.94rem, 1.24rem);
  font-weight: 600;
  line-height: 1.32;
  letter-spacing: -0.022em;
  color: var(--home-how-card-title);
}
.home-how-works__card-body {
  margin: 0;
  max-width: 22rem;
  font-size: clamp(0.9rem, 0.28vw + 0.84rem, 1rem);
  font-weight: 400;
  line-height: 1.56;
  color: var(--home-how-card-body);
  text-wrap: pretty;
}
.home-hero-figure {
  margin: 0 auto 2.85rem;
  width: 100%;
  max-width: var(--home-rail-max);
  box-sizing: border-box;
  border-left: 1px solid var(--home-rail-line);
  border-right: 1px solid var(--home-rail-line);
}
.home-hero-figure__frame {
  isolation: isolate;
  position: relative;
  overflow: hidden;
  width: 100%;
  border-radius: 10px;
  aspect-ratio: 16 / 9;
  user-select: none;
  -webkit-user-select: none;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 6%, transparent),
    0 18px 48px -28px color-mix(in srgb, var(--text-h) 18%, transparent);
}
/*
 * Desktop hero band: fixed height (see :root --home-marketing-hero-h), not 16∶9 or vh,
 * so vertical size stays constant as the column narrows.
 */
.home-hero-figure--desktop .home-hero-figure__frame {
  aspect-ratio: unset;
  height: var(--home-marketing-hero-h);
  min-height: var(--home-marketing-hero-h);
  max-height: var(--home-marketing-hero-h);
}
.home-hero-figure img {
  position: relative;
  z-index: 0;
  display: block;
  margin: 0;
  height: 100%;
  width: max(100%, var(--artwork-base-w, 100%));
  object-fit: cover;
  object-position: 54% center;
  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
}
.home-hero-figure__wash {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  user-select: none;
  -webkit-user-select: none;
  border-radius: inherit;
  background: var(--media-photo-wash);
}
/* Above wash (z-index 1); draggable browser mockup — drag from title bar only (JS) */
.draggable-browser-overlay {
  position: absolute;
  z-index: 2;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  border-radius: 6px;
  cursor: default;
  touch-action: auto;
  box-shadow: var(--elevated-photo-shadow);
  overflow: hidden;
}
.draggable-browser-overlay.draggable-browser-overlay--maximized {
  top: 4px !important;
  right: 4px !important;
  bottom: 4px !important;
  left: 4px !important;
  width: auto !important;
  max-width: none !important;
  height: auto !important;
  transform: none !important;
}
.home-post-lede__photo-slot--equal-overlay-gutters
  > .draggable-browser-overlay.draggable-browser-overlay--maximized {
  top: 4px !important;
  right: 4px !important;
  bottom: 4px !important;
  left: 4px !important;
  width: auto !important;
  max-width: none !important;
  transform: none !important;
}
.home-marketing-embed-reset {
  position: absolute;
  right: 0.55rem;
  bottom: 0.55rem;
  z-index: 24;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  color: var(--text-h);
  box-shadow: var(--elevated-photo-shadow);
  cursor: pointer;
  touch-action: manipulation;
}
.home-marketing-embed-reset:hover {
  background: color-mix(in srgb, var(--element-bg) 92%, var(--bg));
}
.home-marketing-embed-reset:focus-visible {
  outline: 2px solid var(--text-h);
  outline-offset: 2px;
}
.home-marketing-embed-reset svg {
  width: 1.05rem;
  height: 1.05rem;
}
/*
 * Titlebar uses `touch-action: none` so drags aren’t interpreted as scroll;
 * some UAs still show a link/hand cursor for that combo — force the arrow.
 */
.draggable-browser-overlay .browser-chrome__titlebar,
.draggable-browser-overlay .browser-chrome__titlebar * {
  cursor: default !important;
  touch-action: none;
}
.draggable-browser-overlay .browser-chrome__dot-btn {
  cursor: pointer !important;
  touch-action: manipulation;
}
.browser-chrome {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  min-width: 0;
  background: var(--bg);
}
.browser-chrome__titlebar {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.22rem 0.38rem 0.26rem;
  background: var(--element-bg);
  border-bottom: 1px solid var(--border);
}
.browser-chrome__titlebar--with-controls {
  gap: 0;
  padding: 0.18rem 0.32rem 0.22rem;
}
.browser-chrome__titlebar-drag {
  flex: 1;
  min-width: 0;
  min-height: 1.1rem;
  align-self: stretch;
  margin: -0.18rem -0.32rem -0.22rem 0;
  padding: 0.18rem 0.38rem 0.22rem 0.28rem;
  border-radius: 0 4px 0 0;
}
.browser-chrome__traffic--controls {
  flex-shrink: 0;
  gap: 0.22rem;
}
.browser-chrome__dot-btn {
  box-sizing: border-box;
  width: 1.125rem;
  height: 1.125rem;
  padding: 0;
  border: none;
  border-radius: 50%;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.browser-chrome__dot-btn:focus-visible {
  outline: 2px solid var(--text-h);
  outline-offset: 1px;
}
.browser-chrome__traffic {
  display: flex;
  align-items: center;
  gap: 0.22rem;
}
.browser-chrome__dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
  box-shadow: inset 0 -0.5px 1px rgba(0, 0, 0, 0.12);
}
/* Grey steps vs titlebar — not coloured traffic lights */
.browser-chrome__dot--close {
  background: color-mix(in srgb, var(--text-h) 22%, var(--element-bg));
}
.browser-chrome__dot--min {
  background: color-mix(in srgb, var(--text-h) 14%, var(--element-bg));
}
.browser-chrome__dot--max {
  background: color-mix(in srgb, var(--text-h) 8%, var(--element-bg));
}
.browser-chrome__viewport {
  flex: 1;
  min-height: 0;
  min-width: 0;
  background: var(--bg);
}
.draggable-browser-overlay .browser-chrome__viewport {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0.35rem 0.45rem;
}
/*
 * Chrome/Safari can render the measured JS centre for post-lede shrink-panel embeds a few
 * pixels off at narrow widths. These homepage embeds should visually match the hero:
 * fixed 5% painting gutters on both sides, no transform/width math involved.
 */
.home-post-lede__photo-slot--equal-overlay-gutters > .draggable-browser-overlay {
  left: 5% !important;
  right: 5% !important;
  width: auto !important;
  max-width: none !important;
  transform: none !important;
}
.home-hero-browser-placeholder {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  border-radius: 4px;
  background: color-mix(in srgb, var(--bg) 75%, transparent);
  border: 1px dashed color-mix(in srgb, var(--border) 70%, var(--text-muted));
  color: var(--text-muted);
  font-size: 0.95rem;
}
.draggable-browser-overlay
  .browser-chrome__viewport:has(.home-hero-browser-iframe-shell) {
  padding: 0;
  align-items: stretch;
  justify-content: flex-start;
}
.draggable-browser-overlay
  .browser-chrome__viewport:has(.home-founders-mock-cq) {
  padding: 0.35rem 0.45rem;
  align-items: center;
  justify-content: center;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.draggable-browser-overlay
  .browser-chrome__viewport:has(.home-application-strip-preview) {
  padding: 0;
  align-items: stretch;
  justify-content: flex-start;
}
/*
 * Founders browser mock — photo + caption; card chrome echoes `/directory` mode tiles
 * (flat border; hover/picked border only — no drop shadows).
 * Outer `.home-founders-mock-cq` is an inline-size container so `cqi` applies to typography.
 */
.home-founders-mock-cq {
  container-type: inline-size;
  container-name: founders-mock;
  position: relative;
  flex: 1;
  min-height: 0;
  min-width: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.home-founders-mock {
  position: relative;
  flex: 1;
  min-height: 0;
  min-width: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  font-family: var(--heading);
  color: var(--text-h);
  font-size: clamp(0.58rem, 5.4cqi, 1rem);
}
.home-founders-mock__body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0;
  /* Flatter vertical padding — avoids gaps growing oddly as the mock narrows (cqi-linked type). */
  /* Slightly wider horizontal inset so picked-card ring + chrome aren’t flush to clip edges. */
  padding: clamp(0.38em, 3.2cqi, 0.62em) clamp(0.34em, 2.8cqi, 0.5em) clamp(0.38em, 3.2cqi, 0.62em);
  box-sizing: border-box;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.home-founders-mock__vote-stack {
  --fm-cta-fs: 0.66em;
  --fm-cta-pad-y: 0.62em;
  --fm-cta-pad-x: 0.95em;
  --fm-cta-minw: clamp(4.75rem, 38cqi, 8rem);

  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  width: 100%;
  /* Softer than 19cqi — spacing stayed large when the iframe got tighter */
  margin-top: clamp(1em, 7cqi, 1.65em);
}
.home-founders-mock__people {
  flex: 0 0 auto;
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  /* Prefer two columns only when container is comfortably wide enough; collapse to one. */
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 10.75rem), 1fr));
  gap: clamp(0.32em, 2.5cqi, 0.52em) clamp(0.28em, 2.5cqi, 0.48em);
  align-content: start;
}
.home-founders-mock__person {
  margin: 0;
  padding: 0;
  min-width: 0;
}
.home-founders-mock__choice {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  width: 100%;
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-align: center;
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}
.home-founders-mock__choice:disabled {
  cursor: progress;
  opacity: 0.75;
}
.home-founders-mock__choice:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
  border-radius: 6px;
}
.home-founders-mock__card {
  --fm-card-radius: 10px;

  /* Stacking anchor for the picked-state ring overlay (::after). */
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /*
   * Keep portrait size coherent when crossing 2-up → stacked: plain 78% width would
   * jump from ~39% container to ~78% container. Clamp with cqi + vw so width tracks
   * the mock inset and viewport without a discontinuity when the grid collapses.
   */
  box-sizing: border-box;
  width: min(78%, 37cqi, 44vw);
  max-width: 100%;
  margin-inline: auto;
  border-radius: var(--fm-card-radius);
  overflow: hidden;
  background: var(--site-index-bg);
  border: 1px solid color-mix(in srgb, var(--text-h) 10%, transparent);
  box-shadow: none;
  transition:
    transform 0.18s ease,
    border-color 0.18s ease,
    box-shadow 0.18s ease;
}
[data-theme='dark'] .home-founders-mock__card {
  border-color: color-mix(in srgb, var(--text-h) 12%, transparent);
}
.home-founders-mock__choice:hover:not(:disabled) .home-founders-mock__card {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--text-h) 18%, transparent);
}
[data-theme='dark'] .home-founders-mock__choice:hover:not(:disabled) .home-founders-mock__card {
  border-color: color-mix(in srgb, var(--text-h) 24%, transparent);
}
/* Picked tile: no hover lift (override `.choice:hover` which otherwise still matches). */
.home-founders-mock__choice.home-founders-mock__choice--picked .home-founders-mock__card,
.home-founders-mock__choice.home-founders-mock__choice--picked:hover:not(:disabled) .home-founders-mock__card {
  transform: none;
}
/*
 * Picked state: plain inset box-shadow sits *under* flex children, so it was nearly invisible.
 * A ::after overlay paints the ring above photo + caption; ring stays inside border-radius.
 */
.home-founders-mock__choice--picked .home-founders-mock__card::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  z-index: 4;
  box-shadow: inset 0 0 0 3px var(--focus-ring-color);
}
.home-founders-mock__photo-wrap {
  position: relative;
  width: 100%;
  aspect-ratio: 1;
  flex-shrink: 0;
  overflow: hidden;
  border-radius: var(--fm-card-radius) var(--fm-card-radius) 0 0;
  background: var(--element-bg);
}
/*
 * Crop source photo: drop top 10% + bottom 40% (keep middle 50% vertically), then
 * `object-fit: cover` fills the square with that band. `object-view-box` inset
 * percentages are relative to intrinsic image size (Chrome 111+, Safari 17.4+).
 * Fallback: bias framing toward the midpoint of that band (35% from top).
 */
.home-founders-mock__photo {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: inherit;
  object-fit: cover;
  object-position: 50% 35%;
  filter: saturate(70%);
  vertical-align: middle;
}
@supports (object-view-box: inset(0%)) {
  .home-founders-mock__photo {
    object-view-box: inset(10% 0% 40% 0%);
    object-position: 50% 50%;
  }
}
/* Caption body: same panel fill as `.directory-page__mode-card` (light); dark keeps ink panel + white type */
.home-founders-mock__caption-tile {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.3em;
  width: 100%;
  padding: 0.58em 0.5em 0.62em;
  box-sizing: border-box;
  text-align: center;
  font-family: var(--heading);
  background: var(--site-index-bg);
  border-top: 1px solid color-mix(in srgb, var(--text-h) 10%, transparent);
}
[data-theme='dark'] .home-founders-mock__caption-tile {
  background: #000;
  border-top-color: color-mix(in srgb, #fff 18%, transparent);
}
.home-founders-mock__caption-tile .home-founders-mock__name {
  margin: 0;
}
.home-founders-mock__caption-tile .home-founders-mock__titles {
  margin: 0;
}
.home-founders-mock__celebrate {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: grid;
  place-items: center;
  pointer-events: none;
  animation: home-founders-celebrate-fade-in 0.28s ease-out both;
}
.home-founders-mock__celebrate-icon {
  width: min(3.35em, 56%);
  height: auto;
  color: var(--text-h);
  filter:
    drop-shadow(0 0 2px rgba(255, 255, 255, 0.92))
    drop-shadow(0 2px 10px rgba(0, 0, 0, 0.28));
  animation: home-founders-celebrate-thumb 1.1s cubic-bezier(0.22, 1, 0.36, 1) both;
}
[data-theme='dark'] .home-founders-mock__celebrate-icon {
  color: #fff;
  filter:
    drop-shadow(0 0 2px rgba(0, 0, 0, 0.75))
    drop-shadow(0 2px 14px rgba(0, 0, 0, 0.55));
}
@keyframes home-founders-celebrate-fade-in {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}
@keyframes home-founders-celebrate-thumb {
  0% {
    opacity: 0;
    transform: scale(0.82) rotate(-5deg);
  }

  52% {
    opacity: 1;
    transform: scale(1.05) rotate(1deg);
  }

  78% {
    transform: scale(0.985) rotate(0deg);
  }

  100% {
    opacity: 1;
    transform: scale(1) rotate(0deg);
  }
}
/*
 * Caption type: `/directory` mode heading + feature lines (`.directory-page__mode-heading`,
 * `.directory-page__feature-item`).
 */
.home-founders-mock__name {
  display: block;
  margin: 0;
  /*
   * Single rule for both founders — identical size. Fluid down from the mock width (cqi)
   * so “Christopher Leeson” stays one line before wrapping; nowrap enforces one line.
   */
  font-size: clamp(0.48rem, calc(0.32rem + 2.35cqi), 0.92rem);
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.28;
  color: var(--text-h);
  white-space: nowrap;
}
.home-founders-mock__titles {
  display: flex;
  flex-direction: column;
  gap: 0.12em;
  font-size: 0.81em;
  line-height: 1.45;
  font-weight: 400;
  color: color-mix(in srgb, var(--text) 92%, var(--text-h));
}
.home-founders-mock__title-line {
  display: block;
}
.home-founders-mock__title-line--muted {
  font-size: 0.94em;
  color: var(--text-muted);
}
[data-theme='dark'] .home-founders-mock__caption-tile .home-founders-mock__name {
  color: #fff;
}
[data-theme='dark'] .home-founders-mock__caption-tile .home-founders-mock__titles {
  color: #fff;
}
[data-theme='dark'] .home-founders-mock__caption-tile .home-founders-mock__title-line--muted {
  color: color-mix(in srgb, #fff 76%, transparent);
}
/*
 * Narrow mocks (viewport or container ≤450px): founder list stacks to one column;
 * each tile is photo | name/titles in one row (second row mirrored).
 * This block intentionally comes *after* base `.home-founders-mock__card`, `.photo-wrap`,
 * and `.caption-tile` so `flex-direction: row`, radii, and borders override the defaults.
 */
/* Stacked photo|text rows + compact vote chrome only when the mock is quite narrow. */
@media (max-width: 450px) {
  .home-founders-mock__body {
    justify-content: flex-start;
    padding: clamp(0.32em, 3.5cqi, 0.52em) clamp(0.34rem, 1.85cqi, 0.62rem)
      clamp(0.55em, 6cqi, 0.85em);
  }

  /*
   * Founders + survey: intrinsic row heights — avoids minmax(1fr) stretching founder rows
   * apart when the chrome gets shorter/narrower (was ballooning gaps between tiles + survey).
   */
  .home-founders-mock:not(.home-founders-mock--story) .home-founders-mock__body {
    overflow: hidden;
    display: grid;
    grid-template-rows: auto auto;
    gap: clamp(0.28em, 2.25cqi, 0.42em);
  }

  .home-founders-mock__people {
    grid-column: 1 / -1;
    grid-row: 1 / 2;
    display: flex;
    flex-direction: column;
    gap: clamp(0.2em, 1.75cqi, 0.38em);
    width: 100%;
    min-height: 0;
    align-self: stretch;
    overflow: hidden;
    /* Room for the 3px picked ring so it isn’t lost against `overflow: hidden` ancestors. */
    padding-inline: clamp(5px, 1.15cqi, 10px);
    box-sizing: border-box;
  }

  .home-founders-mock__people > .home-founders-mock__person {
    flex: 0 0 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }

  .home-founders-mock__people > .home-founders-mock__choice {
    flex: 0 0 auto;
    min-height: 0;
    align-items: stretch;
  }

  .home-founders-mock__card {
    flex: 0 0 auto;
    min-height: 0;
    flex-direction: row;
    align-items: stretch;
    width: 100%;
    max-width: none;
    margin-inline: 0;
  }

  /*
   * Square thumb capped by row height so two rows always fit above the voting strip —
   * no scrolling to reveal the bottom of the lower portrait.
   */
  .home-founders-mock__photo-wrap {
    flex: 0 0 auto;
    align-self: center;
    box-sizing: border-box;
    max-height: 100%;
    width: auto;
    max-width: min(44%, max(3.05rem, min(44cqi, 36vw, 34vmin)));
    aspect-ratio: 1;
    border-radius: var(--fm-card-radius) 0 0 var(--fm-card-radius);
  }

  .home-founders-mock__caption-tile {
    flex: 1;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    width: auto;
    align-self: stretch;
    justify-content: center;
    text-align: start;
    border-top: none;
    border-left: 1px solid color-mix(in srgb, var(--text-h) 10%, transparent);
    border-radius: 0 var(--fm-card-radius) var(--fm-card-radius) 0;
    padding: 0.45em 0.48em 0.48em;
  }

  [data-theme='dark'] .home-founders-mock__caption-tile {
    border-top: none;
    border-left-color: color-mix(in srgb, #fff 18%, transparent);
  }

  /* Second founder in stack: text left, photo right (only in these thin layouts; wide 2-up is unchanged). */
  .home-founders-mock__people > .home-founders-mock__person:nth-child(2) .home-founders-mock__card {
    flex-direction: row-reverse;
  }

  .home-founders-mock__people > .home-founders-mock__person:nth-child(2) .home-founders-mock__photo-wrap {
    border-radius: 0 var(--fm-card-radius) var(--fm-card-radius) 0;
  }

  .home-founders-mock__people > .home-founders-mock__person:nth-child(2) .home-founders-mock__caption-tile {
    border-left: none;
    border-right: 1px solid color-mix(in srgb, var(--text-h) 10%, transparent);
    border-radius: var(--fm-card-radius) 0 0 var(--fm-card-radius);
  }

  [data-theme='dark']
    .home-founders-mock__people
    > .home-founders-mock__person:nth-child(2)
    .home-founders-mock__caption-tile {
    border-left: none;
    border-right-color: color-mix(in srgb, #fff 18%, transparent);
  }

  .home-founders-mock__vote-stack {
    grid-column: 1 / -1;
    grid-row: 2 / 3;
    margin-top: 0;
    position: relative;
    z-index: 1;
    flex-shrink: 0;
    padding-top: 0.28em;
    /*
     * Fixed pill metrics (narrow ~450px-wide mock / slot): same as clamp(4.75rem, 38cqi, 8rem) ceiling on growth.
     * Prevents CTAs narrowing further when the UA gets tighter.
     */
    --fm-cta-fs: 0.66em;
    --fm-cta-pad-y: 0.62em;
    --fm-cta-pad-x: 0.95em;
    --fm-cta-minw: 7.35rem;
    background: var(--bg);
  }

  [data-theme='dark'] .home-founders-mock__vote-stack {
    box-shadow: none;
  }

  .home-founders-mock__vote.btn {
    margin-bottom: 0.58em;
  }

  .home-founders-mock__prompt {
    margin-bottom: clamp(0.36em, 2.8cqi, 0.58em);
    font-size: clamp(0.68em, calc(7cqi + 1.1vw), 0.82em);
  }

  .draggable-browser-overlay .browser-chrome__viewport:has(.home-founders-mock-cq) {
    padding: 0.3rem clamp(0.24rem, 1.45vw, 0.42rem) 0.55rem;
  }
}
@container founders-mock (max-width: 450px) {
  .home-founders-mock__body {
    justify-content: flex-start;
    padding: clamp(0.32em, 3.5cqi, 0.52em) clamp(0.34rem, 1.85cqi, 0.62rem)
      clamp(0.55em, 6cqi, 0.85em);
  }

  .home-founders-mock:not(.home-founders-mock--story) .home-founders-mock__body {
    overflow: hidden;
    display: grid;
    grid-template-rows: auto auto;
    gap: clamp(0.28em, 2.25cqi, 0.42em);
  }

  .home-founders-mock__people {
    grid-column: 1 / -1;
    grid-row: 1 / 2;
    display: flex;
    flex-direction: column;
    gap: clamp(0.2em, 1.75cqi, 0.38em);
    width: 100%;
    min-height: 0;
    align-self: stretch;
    overflow: hidden;
    padding-inline: clamp(5px, 1.15cqi, 10px);
    box-sizing: border-box;
  }

  .home-founders-mock__people > .home-founders-mock__person {
    flex: 0 0 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }

  .home-founders-mock__people > .home-founders-mock__choice {
    flex: 0 0 auto;
    min-height: 0;
    align-items: stretch;
  }

  .home-founders-mock__card {
    flex: 0 0 auto;
    min-height: 0;
    flex-direction: row;
    align-items: stretch;
    width: 100%;
    max-width: none;
    margin-inline: 0;
  }

  .home-founders-mock__photo-wrap {
    flex: 0 0 auto;
    align-self: center;
    box-sizing: border-box;
    max-height: 100%;
    width: auto;
    max-width: min(44%, max(3.05rem, min(44cqi, 36vw, 34vmin)));
    aspect-ratio: 1;
    border-radius: var(--fm-card-radius) 0 0 var(--fm-card-radius);
  }

  .home-founders-mock__caption-tile {
    flex: 1;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    width: auto;
    align-self: stretch;
    justify-content: center;
    text-align: start;
    border-top: none;
    border-left: 1px solid color-mix(in srgb, var(--text-h) 10%, transparent);
    border-radius: 0 var(--fm-card-radius) var(--fm-card-radius) 0;
    padding: 0.45em 0.48em 0.48em;
  }

  [data-theme='dark'] .home-founders-mock__caption-tile {
    border-top: none;
    border-left-color: color-mix(in srgb, #fff 18%, transparent);
  }

  /* Second founder in stack: text left, photo right (only in these thin layouts; wide 2-up is unchanged). */
  .home-founders-mock__people > .home-founders-mock__person:nth-child(2) .home-founders-mock__card {
    flex-direction: row-reverse;
  }

  .home-founders-mock__people > .home-founders-mock__person:nth-child(2) .home-founders-mock__photo-wrap {
    border-radius: 0 var(--fm-card-radius) var(--fm-card-radius) 0;
  }

  .home-founders-mock__people > .home-founders-mock__person:nth-child(2) .home-founders-mock__caption-tile {
    border-left: none;
    border-right: 1px solid color-mix(in srgb, var(--text-h) 10%, transparent);
    border-radius: var(--fm-card-radius) 0 0 var(--fm-card-radius);
  }

  [data-theme='dark']
    .home-founders-mock__people
    > .home-founders-mock__person:nth-child(2)
    .home-founders-mock__caption-tile {
    border-left: none;
    border-right-color: color-mix(in srgb, #fff 18%, transparent);
  }

  .home-founders-mock__vote-stack {
    grid-column: 1 / -1;
    grid-row: 2 / 3;
    margin-top: 0;
    position: relative;
    z-index: 1;
    flex-shrink: 0;
    padding-top: 0.28em;
    /*
     * Fixed pill metrics (narrow ~450px-wide mock / slot): same as clamp(4.75rem, 38cqi, 8rem) ceiling on growth.
     * Prevents CTAs narrowing further when the UA gets tighter.
     */
    --fm-cta-fs: 0.66em;
    --fm-cta-pad-y: 0.62em;
    --fm-cta-pad-x: 0.95em;
    --fm-cta-minw: 7.35rem;
    background: var(--bg);
  }

  [data-theme='dark'] .home-founders-mock__vote-stack {
    box-shadow: none;
  }

  .home-founders-mock__vote.btn {
    margin-bottom: 0.58em;
  }

  .home-founders-mock__prompt {
    margin-bottom: clamp(0.36em, 2.8cqi, 0.58em);
    font-size: clamp(0.68em, calc(7cqi + 1.1vw), 0.82em);
  }
}
.home-founders-mock__prompt {
  flex-shrink: 0;
  width: 100%;
  margin: 0 0 clamp(0.55em, 4.5cqi, 0.85em);
  text-align: center;
  font-family: var(--heading);
  font-size: 0.82em;
  font-weight: 400;
  line-height: 1.45;
  color: color-mix(in srgb, var(--text) 92%, var(--text-h));
  text-wrap: balance;
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity 0.32s ease,
    transform 0.32s ease;
}
.home-founders-mock__prompt--hide {
  opacity: 0;
  transform: translateY(0.2em);
}
/* Cast vote + Our story: identical footprint (pill size); primary vs outline only */
.home-founders-mock__vote.btn {
  flex-shrink: 0;
  align-self: center;
  box-sizing: border-box;
  min-width: var(--fm-cta-minw, clamp(4.75rem, 38cqi, 8rem));
  padding: var(--fm-cta-pad-y, 0.62em) var(--fm-cta-pad-x, 0.95em);
  font-size: var(--fm-cta-fs, 0.66em);
  font-weight: 600;
  line-height: 1.25;
  border-radius: 9999px;
  border: 1px solid transparent;
  margin-bottom: clamp(0.32em, 3cqi, 0.52em);
}
.home-founders-mock__story.btn {
  flex-shrink: 0;
  margin: 0;
  box-sizing: border-box;
  min-width: var(--fm-cta-minw);
  padding: var(--fm-cta-pad-y) var(--fm-cta-pad-x);
  font-size: var(--fm-cta-fs);
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.25;
  border-radius: 9999px;
  color: var(--text-h);
  text-align: center;
  text-decoration: none;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--text-h) 32%, transparent);
  box-shadow: none;
  transition:
    background 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease;
}
.home-founders-mock__story.btn:hover {
  background: color-mix(in srgb, var(--text-h) 7%, transparent);
  border-color: color-mix(in srgb, var(--text-h) 48%, transparent);
  color: var(--text-h);
}
[data-theme='dark'] .home-founders-mock__story.btn {
  border-color: color-mix(in srgb, var(--text-h) 42%, transparent);
}
[data-theme='dark'] .home-founders-mock__story.btn:hover {
  background: color-mix(in srgb, var(--text-h) 10%, transparent);
  border-color: color-mix(in srgb, var(--text-h) 55%, transparent);
}
/*
 * In-mock “Our story”: match `.home-post-lede__aside-detail` / mirrored aside
 * (same strip as “Doctors for doctors”) — one size, one alignment, no panels.
 */
.home-founders-mock.home-founders-mock--story {
  font-size: var(--home-post-lede-stacked-detail-fs);
  line-height: 1.45;
  color: var(--text);
}
.home-founders-mock--story .home-founders-mock__body {
  padding-inline: clamp(0.42em, 4.2cqi, 0.72em);
}
.home-founders-story {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  width: 100%;
  max-width: min(100%, 38em);
  margin-inline: auto;
  padding-bottom: 0.35rem;
}
.home-founders-story__back {
  flex-shrink: 0;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 0.28em;
  margin: 0;
  padding: 0.35rem 0.55rem 0.35rem 0.48rem;
  border: 1px solid color-mix(in srgb, var(--text-h) 28%, transparent);
  border-radius: 9999px;
  background: transparent;
  font-family: inherit;
  font-size: 1em;
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: var(--text-h);
  cursor: pointer;
  transition: border-color 0.18s ease;
  -webkit-tap-highlight-color: transparent;
}
.home-founders-story__back:hover {
  border-color: color-mix(in srgb, var(--text-h) 44%, transparent);
}
.home-founders-story__back:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
.home-founders-story__back-icon {
  flex-shrink: 0;
  margin-top: 0.04em;
  opacity: 0.88;
}
[data-theme='dark'] .home-founders-story__back {
  border-color: color-mix(in srgb, var(--text-h) 38%, transparent);
}
[data-theme='dark'] .home-founders-story__back:hover {
  border-color: color-mix(in srgb, var(--text-h) 52%, transparent);
}
.home-founders-story__article {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  text-align: left;
  text-wrap: pretty;
}
.home-founders-story__p {
  margin: 0;
  font-family: inherit;
  font-size: 1em;
  font-weight: 400;
  line-height: 1.45;
  color: var(--text);
}
.home-founders-story__p strong {
  font-weight: 600;
  color: var(--text-h);
}
.home-founders-story__p em {
  font-style: italic;
  color: inherit;
}
.home-founders-mock__vote.btn--primary:disabled,
.home-founders-mock__vote.btn--primary:disabled:hover {
  cursor: not-allowed;
  opacity: 0.42;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  .home-founders-mock__celebrate-icon {
    animation: none;
    opacity: 1;
    transform: scale(1) rotate(0deg);
  }

  .home-founders-mock__celebrate {
    animation: none;
    opacity: 1;
  }

  .home-founders-mock__card {
    transition: none;
  }

  .home-founders-mock__photo-wrap,
  .home-founders-mock__caption-tile {
    transition: none;
  }

  .home-founders-mock__choice:hover:not(:disabled) .home-founders-mock__card,
  .home-founders-mock__choice--picked:hover:not(:disabled) .home-founders-mock__card {
    transform: none;
  }

  .home-founders-mock__vote-stack {
    transition: none;
  }

  .home-founders-mock__vote.btn,
  .home-founders-mock__story.btn {
    transition: none;
  }

  .home-founders-mock__prompt {
    transition: none;
  }

  .home-founders-mock__prompt--hide {
    transform: none;
  }
}
.home-hero-browser-iframe-shell {
  position: relative;
  flex: 1;
  min-height: 0;
  min-width: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  box-sizing: border-box;
  overflow: hidden;
  isolation: isolate;
}
/* Fills chrome viewport; iframe content drawn ~20% smaller (125% layout × scale(0.8)) */
.home-hero-browser-iframe-viewport {
  flex: 1;
  min-height: 0;
  min-width: 0;
  width: 100%;
  display: flex;
  align-items: stretch;
  justify-content: flex-start;
  box-sizing: border-box;
  overflow: hidden;
}
.home-hero-browser-iframe-scaled {
  position: relative;
  overflow: hidden;
  flex: 1;
  min-width: 0;
  min-height: 0;
  width: 100%;
  height: 100%;
}
.home-hero-browser-iframe {
  position: absolute;
  top: 0;
  left: 0;
  /* 125% × 0.8 = 100% — fills shell while viva-builder lays out in a larger logical size */
  width: 125%;
  height: 125%;
  border: 0;
  display: block;
  cursor: default;
  transform: scale(0.8);
  transform-origin: 0 0;
}
/* Homepage post-lede: `/application` iframe + readable overlay (rotating questions, active mic) */
.home-application-strip-preview {
  position: relative;
  flex: 1;
  align-self: stretch;
  width: 100%;
  min-height: 0;
  min-width: 0;
  overflow: hidden;
}
.home-application-strip-preview__iframe {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.home-application-strip-preview__iframe .home-hero-browser-iframe-shell {
  height: 100%;
}
.home-application-strip-preview .home-hero-browser-iframe {
  pointer-events: none;
}
.home-application-strip-preview__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 0;
  pointer-events: none;
}
/*
 * Match `/application` mic + subtitle rhythm: mic centred, copy below with the same
 * max line length as `.application-page__audio-caption-host` — but width must be tied to
 * this strip (full slot), not the shrink-wrapped mic anchor, or the text collapses to a narrow column.
 */
.home-application-strip-preview__mic-caption-slot {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  min-width: 0;
  box-sizing: border-box;
  padding: clamp(1rem, 3vh, 2rem) clamp(0.75rem, 2vw, 1rem);
}
.home-application-strip-preview__mic-caption-stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.home-application-strip-preview__mic-hero-wrap {
  flex-shrink: 0;
}
.home-application-strip-preview__question-as-caption {
  width: min(38rem, 100%);
  max-width: 100%;
  margin-top: 1lh;
  padding: 0 0.75rem;
  box-sizing: border-box;
  pointer-events: none;
  font-size: clamp(0.84rem, 2.2vw, 0.98rem);
  line-height: 1.48;
}
.home-application-strip-preview__question-zone {
  flex: 1.12 1 0;
  min-height: 0;
  box-sizing: border-box;
  padding: clamp(0.65rem, 2.5vw, 1.1rem) clamp(0.75rem, 3vw, 1.35rem)
    clamp(0.45rem, 1.5vw, 0.75rem);
  background: rgb(from var(--bg) r g b / 1);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.45rem;
}
.home-application-strip-preview__question-kicker {
  margin: 0;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 48%, transparent);
}
.home-application-strip-preview__question-text {
  margin: 0;
  text-align: center;
  font-family: var(--sans);
  font-size: inherit;
  line-height: inherit;
  font-weight: 400;
  color: color-mix(in srgb, var(--text-h) 90%, transparent);
}
@keyframes home-application-strip-preview-q-in {
  from {
    opacity: 0;
    transform: translateY(5px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.home-application-strip-preview__question-text--initial {
  animation: home-application-strip-preview-q-in 0.55s ease-out both;
}
.home-application-strip-preview__question-text--cycle {
  animation: home-application-strip-preview-q-in 0.42s ease-out both;
}
.home-application-strip-preview__mic-zone {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-end;
  background: rgb(from var(--bg) r g b / 1);
}
.home-application-strip-preview__mic-slot {
  flex: 1 1 auto;
  min-height: 0;
}
.home-application-strip-preview__dock {
  flex-shrink: 0;
  padding-top: 0.35rem;
  padding-bottom: max(0.25rem, env(safe-area-inset-bottom, 0px));
}
@media (prefers-reduced-motion: reduce) {
  .home-application-strip-preview__question-text--initial,
  .home-application-strip-preview__question-text--cycle {
    animation: none;
  }
}
/* Reset preview — inset from full browser content area (shell), not the letterboxed iframe tile */
.home-hero-iframe-reset {
  position: absolute;
  right: 5%;
  bottom: 5%;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  color: var(--text-h);
  cursor: pointer;
  box-shadow: none;
}
.home-hero-iframe-reset:hover {
  color: var(--text-h);
  opacity: 0.82;
}
.home-hero-iframe-reset:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.home-hero-iframe-reset svg {
  width: 1.125rem;
  height: 1.125rem;
  flex-shrink: 0;
  filter: drop-shadow(0 1px 1px rgb(0 0 0 / 0.22));
}
[data-theme='dark'] .home-hero-iframe-reset svg {
  filter: drop-shadow(0 1px 2px rgb(0 0 0 / 0.45));
}
/* Top rail pillars run straight into the Viva Builder hero — no gap */
.home-article > .home-top-rail + .home-hero-figure {
  margin-top: 0;
}
/* Gap under hero figure → first feedback strip (lede moved above figure) */
.home-hero-figure + .home-post-lede-strip-cq {
  margin-top: 2.85rem;
}
/* Between consecutive feedback strips — double the usual strip gap */
.home-post-lede-strip-cq + .home-post-lede-strip-cq {
  margin-top: 5.7rem;
}
.home-post-lede {
  margin-bottom: 0;
  padding-bottom: 0;
  width: 100%;
  max-width: none;
}
.home-article > .home-post-lede-strip-cq:last-of-type {
  margin-bottom: 0;
  padding-bottom: clamp(2.5rem, 10vh, 6rem);
}
/* CTA fills slack above the site index; flex-shrink 0 avoids collapse when the article is tall */
.home-pre-footer-cta {
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 100%;
  padding-top: clamp(2rem, 5vh, 3.75rem);
  padding-bottom: clamp(3.75rem, 14vh, 9rem);
}
.home-pre-footer-cta__inner {
  flex-shrink: 0;
  margin-inline: auto;
  text-align: center;
}
.home-pre-footer-cta__title {
  margin: 0;
  max-width: 14ch;
  font-size: clamp(2rem, 5.5vw + 0.45rem, 3.35rem);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -0.035em;
  color: var(--text-h);
  text-wrap: balance;
}
.home-pre-footer-cta__title + .btn--primary {
  margin-top: clamp(1.25rem, 2.5vw, 1.6rem);
}
.home-text-hero__cta-row .btn--primary,
.home-pre-footer-cta .btn--primary {
  transition:
    background 0.2s ease,
    color 0.2s ease,
    box-shadow 0.2s ease,
    transform 0.22s ease;
}
.home-text-hero__cta-row .btn--primary:hover,
.home-pre-footer-cta .btn--primary:hover {
  background: color-mix(in srgb, var(--cta-pill-fg) 12%, var(--cta-pill-bg));
  color: var(--cta-pill-fg);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 48%, transparent);
  transform: translateY(-1px);
}
[data-theme='dark'] .home-text-hero__cta-row .btn--primary:hover,
[data-theme='dark'] .home-pre-footer-cta .btn--primary:hover {
  background: color-mix(in srgb, var(--text-muted) 32%, var(--cta-pill-bg));
  color: var(--cta-pill-fg);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 52%, transparent);
}
@media (prefers-reduced-motion: reduce) {
  .home-text-hero__cta-row .btn--primary:hover,
  .home-pre-footer-cta .btn--primary:hover,
  .home-text-hero__btn-secondary:hover {
    transform: none;
  }

  .home-how-works__card:hover {
    transform: none;
  }
}
/* Inline-size of strip — stack breakpoint via @container home-pl-strip. */
.home-post-lede-strip-cq {
  container-type: inline-size;
  container-name: home-pl-strip;
  min-width: 0;
  width: 100%;
}
/* Homepage: match top rail / Viva Builder content width (--home-rail-max on .home-article) */
.home-article > .home-post-lede-strip-cq {
  max-width: var(--home-rail-max);
  margin-inline: auto;
}
.home-post-lede__frame {
  container-type: size;
  container-name: post-lede;
  position: relative;
  overflow: hidden;
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  aspect-ratio: unset;
  height: var(--home-marketing-post-lede-frame-h);
  min-height: var(--home-marketing-post-lede-frame-h);
  max-height: var(--home-marketing-post-lede-frame-h);
  border-radius: 10px;
  background: var(--site-index-bg);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 5%, transparent),
    0 16px 40px -26px color-mix(in srgb, var(--text-h) 14%, transparent);
}
/* Text column: remainder of frame minus photo (66%) and right cqh inset */
.home-post-lede__aside {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  z-index: 0;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  box-sizing: border-box;
  width: calc(34% - 3cqh);
  padding: 0.75rem 0.65rem 0.75rem 1.1rem;
}
.home-post-lede__aside-copy {
  max-width: 100%;
  text-align: left;
}
.home-post-lede--with-eyebrow .home-post-lede__aside {
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
}
.home-post-lede--with-eyebrow .home-post-lede__aside-copy {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  width: 100%;
}
.home-post-lede__aside-eyebrow {
  margin: 0;
  flex-shrink: 0;
  font-size: clamp(1.35rem, 4.2vw, 1.9rem);
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -0.02em;
  color: var(--text-h);
}
.home-post-lede__aside-lead {
  margin: 0;
  font-size: clamp(1.35rem, 4.2vw, 1.9rem);
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -0.02em;
  color: var(--text-h);
}
.home-post-lede__aside-detail {
  margin: 0.45rem 0 0;
  font-size: clamp(0.78rem, 1.85cqw, 0.9rem);
  font-weight: 400;
  line-height: 1.45;
  color: var(--text);
}
.home-post-lede__aside-copy .home-post-lede__aside-detail + .home-post-lede__aside-detail {
  margin-top: 0.55rem;
}
/* Homepage “about” strip: clearer lead vs body; pair the two supporting paragraphs */
.home-post-lede--about-copy .home-post-lede__aside-lead + .home-post-lede__aside-detail {
  margin-top: 0.65rem;
}
.home-post-lede--about-copy .home-post-lede__aside-detail + .home-post-lede__aside-detail {
  margin-top: 0.4rem;
}
/*
 * Same physical inset on top, right, and bottom: 3% of frame height (matches
 * former top: 3%), using cqh so horizontal % isn’t tied to width.
 */
.home-post-lede__photo-slot {
  isolation: isolate;
  position: absolute;
  top: 3cqh;
  right: 3cqh;
  bottom: 3cqh;
  width: 66%;
  overflow: hidden;
  border-radius: 4px;
  user-select: none;
  -webkit-user-select: none;
  /* Stable clipping stack in Safari for scaled iframe descendants inside the overlay */
  transform: translateZ(0);
}
.home-post-lede__photo-slot::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  user-select: none;
  -webkit-user-select: none;
  border-radius: inherit;
  /* Match hero wash so post-lede photos read consistently */
  background: var(--media-photo-wash);
}
/* Double-opacity white wash (default token is rgba(255,255,255,0.3)) — e.g. high-chroma sunset art */
.home-post-lede--photo-wash-2x .home-post-lede__photo-slot::after {
  background: rgba(255, 255, 255, 0.6);
}
.home-post-lede__photo-slot--no-wash::after {
  content: none;
}
/*
 * Safari: `<picture>` must fill the slot height so img `height: 100%` matches the overlay’s
 * measured rect (avoids iframe chrome visually extending below the artwork).
 */
.home-post-lede__photo-slot picture {
  display: block;
  margin: 0;
  height: 100%;
  width: 100%;
}
.home-post-lede__img {
  position: relative;
  z-index: 0;
  display: block;
  margin: 0;
  /* Same fill model as `.home-hero-figure img`: slot defines box; cover crops wide artwork */
  height: 100%;
  width: max(100%, var(--artwork-base-w, 100%));
  max-width: none;
  object-fit: cover;
  object-position: left top;
  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
}
/*
 * First homepage feedback strip: wide landscape art (1672×941); scale by height and let the
 * slot clip the sides so subjects stay in the gutters around the browser overlay.
 */
.home-post-lede--feedback-hero-photo .home-post-lede__img {
  width: auto;
  height: 100%;
  max-width: none;
  min-width: 0;
  object-position: 48% center;
}
/* Mirrored strip: photo left, copy right (same proportions as default). */
.home-post-lede--mirrored .home-post-lede__photo-slot {
  left: 3cqh;
  right: auto;
}
.home-post-lede--mirrored .home-post-lede__aside {
  left: auto;
  right: 0;
  justify-content: flex-end;
  padding: 0.75rem 1.1rem 0.75rem 0.65rem;
}
.home-post-lede--mirrored .home-post-lede__aside-copy {
  text-align: right;
}
.home-post-lede--mirrored .home-post-lede__img {
  object-position: left top;
}
/*
 * Mirrored strips: stack sooner so copy is not trapped on the opposite side of the image.
 */
@container home-pl-strip (max-width: var(--home-post-lede-mirror-stack-until)) {
  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__frame {
    container-type: inline-size;
    container-name: post-lede;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.8rem;
    width: 100%;
    margin: 0;
    aspect-ratio: auto;
    height: auto;
    min-height: 0;
    max-height: none;
    padding: 0.95rem 0.85rem 1.05rem;
    border-radius: 8px;
    background: var(--site-index-bg);
    overflow: hidden;
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside {
    order: 1;
    position: static;
    inset: auto;
    z-index: 1;
    display: block;
    width: 100%;
    padding: 0;
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside-copy {
    text-align: left;
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__photo-slot {
    order: 2;
    position: relative;
    inset: auto;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    width: 100%;
    flex: 0 0 auto;
    aspect-ratio: unset;
    height: var(--home-marketing-stacked-photo-h);
    min-height: var(--home-marketing-stacked-photo-h);
    max-height: var(--home-marketing-stacked-photo-h);
    border-radius: 6px;
    overflow: hidden;
    isolation: isolate;
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside-lead {
    font-size: var(--home-post-lede-stacked-lead-fs);
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside-detail {
    font-size: var(--home-post-lede-stacked-detail-fs);
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__img {
    position: relative;
    top: auto;
    left: auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    max-width: 100%;
    object-fit: cover;
    object-position: left top;
  }
}
/*
 * All strips: copy (order 1) above image + chrome (order 2) when text column has lost ≥40% vs ref.
 */
@container home-pl-strip (max-width: var(--home-post-lede-stack-until)) {
  .home-post-lede-strip-cq .home-post-lede__frame {
    container-type: inline-size;
    container-name: post-lede;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.8rem;
    width: 100%;
    margin: 0;
    aspect-ratio: auto;
    height: auto;
    min-height: 0;
    max-height: none;
    padding: 0.95rem 0.85rem 1.05rem;
    border-radius: 8px;
    background: var(--site-index-bg);
    /* Clip anything that escapes the card; overlay is clipped inside the photo slot. */
    overflow: hidden;
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__frame {
    background: var(--site-index-bg);
  }

  .home-post-lede-strip-cq .home-post-lede__aside {
    order: 1;
    position: static;
    inset: auto;
    z-index: 1;
    display: block;
    width: 100%;
    padding: 0;
  }

  .home-post-lede-strip-cq .home-post-lede__aside-copy {
    text-align: left;
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside-copy {
    text-align: left;
  }

  /*
   * position: relative so .draggable-browser-overlay (absolute) is positioned against the
   * slot only — not the whole figure — and cannot extend into the copy block above.
   */
  .home-post-lede-strip-cq .home-post-lede__photo-slot {
    order: 2;
    position: relative;
    inset: auto;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    width: 100%;
    flex: 0 0 auto;
    aspect-ratio: unset;
    height: var(--home-marketing-stacked-photo-h);
    min-height: var(--home-marketing-stacked-photo-h);
    max-height: var(--home-marketing-stacked-photo-h);
    border-radius: 6px;
    overflow: hidden;
    isolation: isolate;
  }

  .home-post-lede-strip-cq .home-post-lede__aside-lead {
    font-size: var(--home-post-lede-stacked-lead-fs);
  }

  .home-post-lede-strip-cq .home-post-lede__aside-eyebrow {
    font-size: var(--home-post-lede-stacked-lead-fs);
  }

  .home-post-lede-strip-cq .home-post-lede--with-eyebrow .home-post-lede__aside-copy {
    flex: none;
    display: block;
  }

  .home-post-lede-strip-cq .home-post-lede--with-eyebrow .home-post-lede__aside-eyebrow {
    margin-bottom: 0.45rem;
  }

  .home-post-lede-strip-cq .home-post-lede__aside-detail {
    font-size: var(--home-post-lede-stacked-detail-fs);
  }

  .home-post-lede-strip-cq .home-post-lede__img {
    position: relative;
    top: auto;
    left: auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    max-width: 100%;
    object-fit: cover;
    object-position: left top;
  }

  .home-post-lede-strip-cq .home-post-lede--feedback-hero-photo .home-post-lede__img {
    width: auto;
    height: 100%;
    max-width: none;
    object-position: 48% center;
  }

  .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__img {
    object-position: left top;
  }
}
/*
 * Homepage fallback: same stack layout when viewport is narrow (container queries can miss).
 * Matches --home-post-lede-stack-until at default 16px root (48rem ≈ 0.6×80rem).
 */
@media (max-width: 48rem) {
  .home .home-article .home-post-lede-strip-cq .home-post-lede__frame {
    container-type: inline-size;
    container-name: post-lede;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.8rem;
    width: 100%;
    margin: 0;
    aspect-ratio: auto;
    height: auto;
    min-height: 0;
    max-height: none;
    padding: 0.95rem 0.85rem 1.05rem;
    border-radius: 8px;
    background: var(--site-index-bg);
    overflow: hidden;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__frame {
    background: var(--site-index-bg);
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede__aside {
    order: 1;
    position: static;
    inset: auto;
    z-index: 1;
    display: block;
    width: 100%;
    padding: 0;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede__aside-copy {
    text-align: left;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside-copy {
    text-align: left;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede__photo-slot {
    order: 2;
    position: relative;
    inset: auto;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    width: 100%;
    flex: 0 0 auto;
    aspect-ratio: unset;
    height: var(--home-marketing-stacked-photo-h);
    min-height: var(--home-marketing-stacked-photo-h);
    max-height: var(--home-marketing-stacked-photo-h);
    border-radius: 6px;
    overflow: hidden;
    isolation: isolate;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede__aside-lead {
    font-size: var(--home-post-lede-stacked-lead-fs);
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede__aside-eyebrow {
    font-size: var(--home-post-lede-stacked-lead-fs);
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--with-eyebrow .home-post-lede__aside-copy {
    flex: none;
    display: block;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--with-eyebrow .home-post-lede__aside-eyebrow {
    margin-bottom: 0.45rem;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede__aside-detail {
    font-size: var(--home-post-lede-stacked-detail-fs);
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede__img {
    position: relative;
    top: auto;
    left: auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    max-width: 100%;
    object-fit: cover;
    object-position: left top;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--feedback-hero-photo .home-post-lede__img {
    width: auto;
    height: 100%;
    max-width: none;
    object-position: 48% center;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__img {
    object-position: left top;
  }
}
@media (max-width: 58rem) {
  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__frame {
    container-type: inline-size;
    container-name: post-lede;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.8rem;
    width: 100%;
    margin: 0;
    aspect-ratio: auto;
    height: auto;
    min-height: 0;
    max-height: none;
    padding: 0.95rem 0.85rem 1.05rem;
    border-radius: 8px;
    background: var(--site-index-bg);
    overflow: hidden;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside {
    order: 1;
    position: static;
    inset: auto;
    z-index: 1;
    display: block;
    width: 100%;
    padding: 0;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside-copy {
    text-align: left;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__photo-slot {
    order: 2;
    position: relative;
    inset: auto;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    width: 100%;
    flex: 0 0 auto;
    aspect-ratio: unset;
    height: var(--home-marketing-stacked-photo-h);
    min-height: var(--home-marketing-stacked-photo-h);
    max-height: var(--home-marketing-stacked-photo-h);
    border-radius: 6px;
    overflow: hidden;
    isolation: isolate;
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside-lead {
    font-size: var(--home-post-lede-stacked-lead-fs);
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__aside-detail {
    font-size: var(--home-post-lede-stacked-detail-fs);
  }

  .home .home-article .home-post-lede-strip-cq .home-post-lede--mirrored .home-post-lede__img {
    position: relative;
    top: auto;
    left: auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    max-width: 100%;
    object-fit: cover;
    object-position: left top;
  }
}
@container home-pl-strip (min-width: calc(var(--home-post-lede-stack-until) + 1px)) and (max-width: var(--home-post-lede-mirror-stack-until)) {
  .home-post-lede-strip-cq
    .home-post-lede--progress-tracking.home-post-lede--mirrored
    .home-post-lede__frame {
    display: block;
    gap: normal;
    height: var(--home-marketing-post-lede-frame-h);
    min-height: var(--home-marketing-post-lede-frame-h);
    max-height: var(--home-marketing-post-lede-frame-h);
    padding: 0;
    border-radius: 10px;
  }

  .home-post-lede-strip-cq
    .home-post-lede--progress-tracking.home-post-lede--mirrored
    .home-post-lede__aside {
    position: absolute;
    left: auto;
    right: 0;
    top: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    width: calc(34% - 3cqh);
    padding: 0.75rem 1.1rem 0.75rem 0.65rem;
  }

  .home-post-lede-strip-cq
    .home-post-lede--progress-tracking.home-post-lede--mirrored
    .home-post-lede__aside-copy {
    text-align: right;
  }

  .home-post-lede-strip-cq
    .home-post-lede--progress-tracking.home-post-lede--mirrored
    .home-post-lede__photo-slot {
    position: absolute;
    top: 3cqh;
    right: auto;
    bottom: 3cqh;
    left: 3cqh;
    width: 66%;
    height: auto;
    min-height: 0;
    max-height: none;
    border-radius: 4px;
  }
}
@media (min-width: 48.001rem) and (max-width: 58rem) {
  .home
    .home-article
    .home-post-lede-strip-cq
    .home-post-lede--progress-tracking.home-post-lede--mirrored
    .home-post-lede__frame {
    display: block;
    gap: normal;
    height: var(--home-marketing-post-lede-frame-h);
    min-height: var(--home-marketing-post-lede-frame-h);
    max-height: var(--home-marketing-post-lede-frame-h);
    padding: 0;
    border-radius: 10px;
  }

  .home
    .home-article
    .home-post-lede-strip-cq
    .home-post-lede--progress-tracking.home-post-lede--mirrored
    .home-post-lede__aside {
    position: absolute;
    left: auto;
    right: 0;
    top: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    width: calc(34% - 3cqh);
    padding: 0.75rem 1.1rem 0.75rem 0.65rem;
  }

  .home
    .home-article
    .home-post-lede-strip-cq
    .home-post-lede--progress-tracking.home-post-lede--mirrored
    .home-post-lede__aside-copy {
    text-align: right;
  }

  .home
    .home-article
    .home-post-lede-strip-cq
    .home-post-lede--progress-tracking.home-post-lede--mirrored
    .home-post-lede__photo-slot {
    position: absolute;
    top: 3cqh;
    right: auto;
    bottom: 3cqh;
    left: 3cqh;
    width: 66%;
    height: auto;
    min-height: 0;
    max-height: none;
    border-radius: 4px;
  }
}
/* Match hero headline rhythm (Inter, normal weight, tight tracking) — secondary scale */
.home-lede-text {
  margin: 0;
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -0.02em;
  font-size: clamp(0.94rem, 0.38vw + 0.8rem, 1.05rem);
  color: var(--text-muted);
}
.home-lede-count {
  font-variant-numeric: tabular-nums;
  color: var(--text-h);
  font-weight: 400;
}
.home-lede--proof {
  max-width: 100%;
}
.home-lede-proof {
  --home-proof-green: #15803d;
  --home-proof-green-soft: #16a34a;
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.7rem 1.05rem;
  border-radius: 12px;
  background: color-mix(in srgb, var(--home-proof-green) 7%, transparent);
  border: 1px solid color-mix(in srgb, var(--home-proof-green) 18%, transparent);
}
[data-theme='dark'] .home-lede-proof {
  --home-proof-green: #4ade80;
  --home-proof-green-soft: #86efac;
  background: color-mix(in srgb, var(--home-proof-green) 9%, transparent);
  border-color: color-mix(in srgb, var(--home-proof-green) 22%, transparent);
}
.home-lede-proof__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--home-proof-green);
}
.home-lede-proof__icon-svg {
  display: block;
}
.home-lede-proof__icon-ring {
  stroke: color-mix(in srgb, var(--home-proof-green) 72%, transparent);
  fill: color-mix(in srgb, var(--home-proof-green) 14%, transparent);
}
.home-lede-proof__icon-check {
  stroke: var(--home-proof-green-soft);
}
.home-lede-text--proof {
  margin: 0;
  flex: 1;
  min-width: 0;
  font-size: clamp(0.96rem, 0.42vw + 0.82rem, 1.08rem);
  line-height: 1.4;
  color: color-mix(in srgb, var(--text) 88%, var(--text-muted) 12%);
}
.home-lede-proof__label {
  font-weight: 600;
  letter-spacing: -0.018em;
  color: var(--text-h);
}
.home-lede-text--proof .home-lede-count {
  color: var(--home-proof-green);
  font-weight: 600;
}
/*
 * Mobile-first home layout: default / max-width 639px targets ~375–393px notched phones.
 * Tailwind-aligned tiers: base & <640px, sm:640px+, md:768px+, lg:1024px+, xl:1280px+.
 * From 640px up, rules here do not apply — desktop/tablet layout stays as authored above.
 */
@media (max-width: 639px) {
  .home {
    max-width: 100%;
    min-width: 0;
  }

  /*
   * Horizontal bleed: clip on each in-flow child, not on `.home-body`.
   * `overflow-x: clip` on the flex column forces `overflow-y: auto` (CSS pairing), which made
   * `.home-body` a nested scrollport under `min-height: 0` — iOS then glitches `position: fixed`
   * chrome (header / sign-in clipped). Document scroll keeps the header stable.
   */
  .home-body {
    min-width: 0;
  }

  .home-body > * {
    overflow-x: clip;
    min-width: 0;
  }

  .home-article {
    min-width: 0;
    padding-top: 0;
    --home-stats-v-gap: clamp(0.35rem, 0.2rem + 0.75vw, 0.65rem);
  }

  .home-intro.page {
    font-size: clamp(1.08rem, 5.2vw + 0.15rem, 1.32rem);
    row-gap: calc(1rem / 1.08 * 1em);
  }

  .home-text-hero__main {
    padding: clamp(0.75rem, 2vw, 1rem) var(--home-rail-pad-x)
      clamp(0.85rem, 2.2vw, 1.05rem);
  }

  .home-text-hero > .home-top-rail__pathways {
    padding-top: clamp(0.95rem, 2.8vw, 1.1rem);
  }

  .home-top-rail__pathways {
    padding: 0.65rem 0;
  }

  .home-how-works {
    padding: clamp(2.25rem, 5.5vw, 2.85rem) var(--home-rail-pad-x)
      clamp(2.65rem, 6.5vw, 3.35rem);
  }

  .home-how-works__heading {
    margin-bottom: clamp(1.5rem, 4vw, 1.85rem);
    gap: 0.45rem;
  }

  .home-how-works__heading-primary {
    font-size: clamp(1.2rem, 4.5vw + 0.5rem, 1.45rem);
    line-height: 1.26;
  }

  .home-how-works__heading-support {
    font-size: clamp(0.92rem, 2.8vw + 0.5rem, 1.05rem);
  }

  .home-how-works__card {
    justify-content: flex-start;
    min-height: auto;
    height: auto;
    padding: clamp(1.25rem, 3.2vw, 1.5rem) clamp(1.15rem, 2.8vw, 1.35rem);
  }

  .home-how-works__card-step {
    margin-bottom: 0.7rem;
  }

  .home-text-hero__headline {
    font-size: clamp(1.18rem, 4.8vw + 0.35rem, 1.42rem);
    line-height: 1.3;
  }

  .home-text-hero__mic-stage {
    width: min(100%, 19rem);
  }

  .home-hero-headline {
    max-width: none;
    line-height: 1.33;
  }

  .home-hero-figure {
    margin: 0 0 1.55rem;
  }

  /*
   * Mobile marketing hero: 16∶9 makes the chrome viewport very short when the strip is
   * narrow; the viva-builder embed stacks vertically and ends up with an internal
   * scrollport. A taller frame plus a slightly denser downscale (see iframe rules below)
   * widens the iframe’s layout box so the full embed fits without scrolling inside it.
   */
  .home-hero-figure:not(.home-hero-figure--desktop) .home-hero-figure__frame {
    /* Between 16∶9 and 9∶14: enough chrome height for the stacked builder without extreme letterboxing on ~600px-wide viewports that still match this query */
    aspect-ratio: 9 / 13;
    /* Very small phones: guarantee a minimum iframe chrome height */
    min-height: 27.5rem;
  }

  .home-hero-figure:not(.home-hero-figure--desktop) .home-hero-browser-iframe {
    /* 1/0.72 ≈ 138.89%; keeps the scaled tile filling the shell while ~+11% taller logical viewport vs 125%/0.8 */
    width: 138.889%;
    height: 138.889%;
    transform: scale(0.72);
  }

  .home-article > .home-top-rail + .home-hero-figure {
    margin-top: 0;
  }

  .home-hero-figure + .home-post-lede-strip-cq {
    margin-top: 2rem;
  }

  .home-post-lede-strip-cq + .home-post-lede-strip-cq {
    margin-top: 2.65rem;
  }

  .home-lede-text {
    font-size: clamp(0.88rem, 2.4vw + 0.42rem, 0.98rem);
    line-height: 1.35;
    letter-spacing: -0.02em;
  }

  .home-lede-proof {
    padding: 0.55rem 0.8rem;
    gap: 0.65rem;
    border-radius: 10px;
  }

  .home-lede-proof__icon-svg {
    width: 20px;
    height: 20px;
  }

  .home-pre-footer-cta {
    padding-top: clamp(1.25rem, 3.5vh, 2.5rem);
    padding-bottom: clamp(2.25rem, 10vh, 6rem);
  }

  .home-pre-footer-cta__title {
    max-width: 12ch;
    font-size: clamp(1.75rem, 7vw + 0.25rem, 2.35rem);
    line-height: 1.12;
  }

  .home-article > .home-post-lede-strip-cq:last-of-type {
    padding-bottom: clamp(1.75rem, 8vh, 4rem);
  }
}
/*
 * Narrow homepage marketing strips (`HOME_MARKETING_MOBILE_MQ`, 48rem): denser iframe
 * downscale (138.889% layout × scale(0.72)) so embeds lay out at readable sizes.
 */
@media (max-width: 48rem) {
  /*
   * Maximized mobile embeds: 3px inset on all sides so background art peeks through
   * (replaces edge-to-edge `inset: 0`).
   */
  .draggable-browser-overlay.draggable-browser-overlay--maximized {
    top: 3px !important;
    right: 3px !important;
    bottom: 3px !important;
    left: 3px !important;
  }

  .home-post-lede__photo-slot--equal-overlay-gutters
    > .draggable-browser-overlay.draggable-browser-overlay--maximized {
    top: 3px !important;
    right: 3px !important;
    bottom: 3px !important;
    left: 3px !important;
  }

  /* Expanded iframe content: 5px horizontal margins inside browser chrome. */
  .draggable-browser-overlay.draggable-browser-overlay--maximized
    .browser-chrome__viewport:has(.home-hero-browser-iframe-shell) {
    padding-left: 5px;
    padding-right: 5px;
  }

  .home-post-lede__photo-slot--equal-overlay-gutters > .draggable-browser-overlay {
    left: 5px !important;
    right: 5px !important;
  }

  .home-post-lede-strip-cq
    .home-post-lede__photo-slot
    > .draggable-browser-overlay:not(.draggable-browser-overlay--maximized) {
    left: 5px !important;
    right: 5px !important;
    width: auto !important;
    transform: none !important;
  }

  .home-hero-figure__frame
    > .draggable-browser-overlay:not(.draggable-browser-overlay--maximized) {
    left: 5px !important;
    right: 5px !important;
    width: auto !important;
    transform: none !important;
  }

  .home-hero-figure--desktop .home-hero-browser-iframe {
    width: 138.889%;
    height: 138.889%;
    transform: scale(0.72);
    transform-origin: 0 0;
  }

  .home-post-lede--feedback-mobile-embed .home-hero-browser-iframe,
  .home-post-lede--marketing-mobile-embed .home-hero-browser-iframe {
    width: 138.889%;
    height: 138.889%;
    transform: scale(0.72);
    transform-origin: 0 0;
  }

  .home-marketing-browser-static {
    position: absolute;
    z-index: 2;
    inset: 5%;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    pointer-events: none;
    user-select: none;
    touch-action: none;
  }

  .home-marketing-browser-static__chrome {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    box-shadow:
      0 0.35rem 1.1rem color-mix(in srgb, #000 22%, transparent),
      0 0 0 1px color-mix(in srgb, #000 12%, transparent);
  }

  .home-marketing-browser-static__viewport {
    flex: 1;
    min-height: 0;
    padding: 0;
    overflow: hidden;
    align-items: stretch;
    justify-content: flex-start;
  }

  .home-marketing-browser-static__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top left;
    pointer-events: none;
    user-select: none;
    -webkit-user-drag: none;
  }

  /*
   * Progress strip: static preview bleeds past the trailing edge (like desktop clip-trailing
   * iframe chrome) instead of the default 5% inset on all sides.
   */
  .home-post-lede--progress-tracking .home-marketing-browser-static {
    inset: 0 auto 0 0;
    top: 0;
    bottom: 0;
    left: 0;
    right: auto;
    width: 112%;
    max-width: none;
    height: 100%;
  }
}
/* /viva-info — reuse home strip layout */
.viva-page .home-article > .home-post-lede-strip-cq:first-of-type {
  margin-top: 2.85rem;
}
/* /station-info — same strip spacing as viva-info */
.station-page .home-article > .home-post-lede-strip-cq:first-of-type {
  margin-top: 2.85rem;
}
.station-page__mic-preview {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background:
    radial-gradient(
      circle at center,
      color-mix(in srgb, var(--surface) 84%, transparent) 0 40%,
      transparent 64%
    ),
    var(--site-index-bg);
}
.station-page__mic-preview .trial-mic {
  transform: scale(2.1);
  transform-origin: center center;
}
@container home-pl-strip (min-width: calc(var(--home-post-lede-stack-until) + 1px)) {
  .station-page__mic-preview .trial-mic {
    transform: scale(2.55);
  }
}
/* /about — editorial company page */
.about-page__article {
  display: flex;
  flex-direction: column;
  gap: clamp(3rem, 8vw, 5.5rem);
  padding-top: 2.85rem;
  padding-bottom: clamp(2.5rem, 10vh, 6rem);
}
.about-page__hero {
  display: flex;
  flex-direction: column;
  gap: clamp(0.85rem, 2vw, 1.25rem);
  max-width: 42rem;
}
.about-page__title {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(2.25rem, 5.5vw, 3.35rem);
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: -0.03em;
  color: var(--text-h);
}
.about-page__lede {
  margin: 0;
  max-width: 38rem;
  font-size: clamp(1.05rem, 2.2vw, 1.2rem);
  line-height: 1.55;
  color: var(--text);
}
.about-page__section-title {
  margin: 0 0 clamp(1.35rem, 3vw, 2rem);
  font-family: var(--heading);
  font-size: clamp(1.35rem, 2.8vw, 1.65rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--text-h);
}
.about-page__founder-grid {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2rem);
  width: min(100%, 20rem);
  margin: 0 auto;
  padding: 0;
  list-style: none;
  grid-template-columns: 1fr;
}
@media (max-width: 639px) {
  .about-page__founder-grid {
    width: min(100%, 28rem);
    gap: clamp(0.85rem, 2.5vw, 1.15rem);
  }

  .about-page__founder-card {
    flex-direction: row;
    align-items: stretch;
  }

  .about-page__founder-photo {
    flex: 0 0 auto;
    width: min(44%, 7.5rem);
    aspect-ratio: 1;
    border-radius: 16px 0 0 16px;
  }

  .about-page__founder-meta {
    flex: 1;
    min-width: 0;
    justify-content: center;
  }

  /* Second founder: text left, photo right (mirrors first row). */
  .about-page__founder-card:nth-child(2) {
    flex-direction: row-reverse;
  }

  .about-page__founder-card:nth-child(2) .about-page__founder-photo {
    border-radius: 0 16px 16px 0;
  }

  .about-page__founder-grid--flip-mirror .about-page__founder-card {
    flex-direction: row-reverse;
  }

  .about-page__founder-grid--flip-mirror .about-page__founder-card .about-page__founder-photo {
    border-radius: 0 16px 16px 0;
  }

  .about-page__founder-grid--flip-mirror .about-page__founder-card:nth-child(2) {
    flex-direction: row;
  }

  .about-page__founder-grid--flip-mirror
    .about-page__founder-card:nth-child(2)
    .about-page__founder-photo {
    border-radius: 16px 0 0 16px;
  }

  .about-page__founder-grid--flip-stack {
    display: flex;
    flex-direction: column-reverse;
  }
}
@media (min-width: 640px) {
  .about-page__founder-grid {
    width: min(100%, 46rem);
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.about-page__founder-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 16px;
  background: var(--site-index-bg);
  box-shadow: var(--shadow-card-soft);
}
.about-page__founder-photo {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  background: var(--site-index-bg);
  object-fit: cover;
  object-position: center center;
}
.about-page__founder-meta {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: clamp(1.1rem, 2.5vw, 1.45rem) clamp(1.15rem, 2.5vw, 1.5rem)
    clamp(1.25rem, 2.8vw, 1.6rem);
}
.about-page__founder-name {
  margin: 0;
  font-family: var(--heading);
  font-size: 1.125rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--text-h);
}
.about-page__founder-role {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--text);
}
.about-page__founder-role--muted {
  color: var(--text-muted);
}
.about-page__story {
  position: relative;
  overflow: hidden;
  max-width: 46rem;
  margin-inline: auto;
  padding: clamp(1.5rem, 4vw, 2.35rem);
  border: 1px solid color-mix(in srgb, var(--text-h) 9%, transparent);
  border-radius: 24px;
  background: var(--site-index-bg);
  box-shadow: var(--shadow-card-soft);
  text-align: center;
}
.about-page__story .about-page__section-title {
  margin-bottom: clamp(1rem, 2.5vw, 1.45rem);
}
.about-page__story-prose {
  display: flex;
  flex-direction: column;
  gap: clamp(0.85rem, 2vw, 1.1rem);
  max-width: 40rem;
  margin-inline: auto;
}
.about-page__story-p {
  margin: 0;
  font-size: clamp(0.98rem, 1.7vw, 1.05rem);
  line-height: 1.65;
  color: var(--text);
}
.about-page__cta {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: clamp(0.75rem, 2vw, 1rem);
  padding: clamp(1.75rem, 4vw, 2.5rem);
  border-radius: 16px;
  background: var(--site-index-bg);
  box-shadow: var(--shadow-card-soft);
}
.about-page__cta-title {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(1.25rem, 2.5vw, 1.5rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--text-h);
}
.about-page__cta-body {
  margin: 0;
  max-width: 32rem;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--text);
}
.about-page__cta-btn {
  margin-top: 0.35rem;
}
/* /values — homepage post-lede strip + section gap + full-width value tiles */
.values-page .home-article > .home-post-lede-strip-cq:first-of-type {
  margin-top: 2.85rem;
}
/* No extra margin under strip; spacing to tiles is `.values-page__section-gap` only */
.values-page {
  --home-marketing-post-lede-frame-h: clamp(24.8rem, 54.4vh, 28.8rem);
  --home-marketing-stacked-photo-h: clamp(14.4rem, 41.6vw, 20rem);
}
.values-page__post-lede.home-post-lede {
  margin-bottom: 0;
}
.values-page .home-article {
  --values-tiles-gap: clamp(1.35rem, 3vw, 2.25rem);
  padding-bottom: clamp(2.5rem, 10vh, 6rem);
  container-type: inline-size;
  container-name: values-article;
}
/* Match the value-tile grid: text spans Clarity + Trust, mic spans Quality + Access. */
@media (min-width: 48rem) {
  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__frame {
    display: grid;
    align-items: center;
    box-sizing: border-box;
    padding: clamp(0.75rem, 1.2vw, 1.1rem);
    column-gap: var(--values-tiles-gap);
    overflow: visible;
  }

  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__aside {
    position: static;
    inset: auto;
    z-index: 1;
    display: flex;
    align-items: center;
    width: auto;
    max-width: none;
    padding: 0;
    pointer-events: auto;
  }

  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__aside-copy {
    position: static;
    transform: none;
    width: auto;
    max-width: min(30rem, calc(50cqw - var(--values-tiles-gap)));
    padding-inline: 0;
    /* Left edge of copy aligns with horizontal centre of the Clarity tile below. */
    margin-left: calc(
      (100cqw - var(--values-tiles-gap)) / 4 - clamp(0.75rem, 1.2vw, 1.1rem)
    );
  }

  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__photo-slot {
    position: relative;
    inset: auto;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    transform: none;
    width: 100%;
    height: auto;
    justify-self: center;
    align-self: center;
    aspect-ratio: 1;
    max-height: calc(var(--home-marketing-post-lede-frame-h) - 1.5rem);
    max-width: min(100%, calc(var(--home-marketing-post-lede-frame-h) - 1.5rem));
  }
}
@media (min-width: 48rem) and (max-width: 59.99rem) {
  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__frame {
    grid-template-columns: repeat(2, 1fr);
  }

  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__aside {
    grid-column: 1 / 3;
  }

  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__photo-slot {
    grid-column: 2 / 3;
    grid-row: 1;
    justify-self: end;
  }
}
@media (min-width: 60rem) {
  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__frame {
    grid-template-columns: repeat(4, 1fr);
  }

  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__aside {
    grid-column: 1 / 3;
  }

  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__aside-copy {
    margin-left: calc(
      (100cqw - 3 * var(--values-tiles-gap)) / 8 - clamp(0.75rem, 1.2vw, 1.1rem)
    );
    max-width: min(30rem, calc(37.5cqw - var(--values-tiles-gap)));
  }

  .home.values-page
    .values-page__post-lede.home-post-lede:not(.values-page__post-lede--text-only)
    .home-post-lede__photo-slot {
    grid-column: 3 / 5;
    grid-row: 1;
  }
}
/* Intro strip matches full-width value tiles (not --home-rail-max). */
.values-page .home-article > .home-post-lede-strip-cq {
  max-width: none;
}
@container home-pl-strip (max-width: var(--home-post-lede-stack-until)) {
  .values-page__post-lede.home-post-lede .home-post-lede__photo-slot {
    aspect-ratio: 1;
    width: 100%;
    height: auto;
    min-height: 0;
    max-height: none;
  }
}
.values-page__mic-artwork {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  container-type: size;
}
/* Square stage — never stretch the equalizer ring to the photo slot aspect ratio. */
.values-page__mic-artwork .home-text-hero__mic-stage {
  position: relative;
  flex-shrink: 0;
  aspect-ratio: 1;
  width: min(100cqw, 100cqh);
  height: auto;
  max-width: 100%;
  max-height: 100%;
}
@media (max-width: 48rem) {
  .home.values-page
    .home-article
    .home-post-lede-strip-cq
    .values-page__post-lede.home-post-lede
    .home-post-lede__photo-slot {
    aspect-ratio: 1;
    height: auto;
    min-height: 0;
    max-height: none;
  }

  .values-page__post-lede--text-only .home-post-lede__photo-slot {
    display: none;
  }

  .home.values-page
    .home-article
    .home-post-lede-strip-cq
    .values-page__post-lede--text-only.home-post-lede
    .home-post-lede__frame {
    gap: 0;
  }
}
/* Same as hero figure bottom margin and `.home-hero-figure + .home-post-lede` on the homepage */
.values-page__section-gap {
  flex-shrink: 0;
  width: 100%;
  height: clamp(1rem, 2.4vw, 1.5rem);
}
.values-page__tiles {
  display: grid;
  width: 100%;
  max-width: none;
  box-sizing: border-box;
  gap: var(--values-tiles-gap);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .values-page__tiles {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (min-width: 960px) {
  .values-page__tiles {
    grid-template-columns: repeat(4, 1fr);
    align-items: stretch;
  }
}
.values-page__tile {
  display: flex;
  flex-direction: column;
  padding: clamp(1.65rem, 3vw, 2.15rem) clamp(1.35rem, 2.5vw, 1.85rem)
    clamp(1.5rem, 2.8vw, 2rem);
  border-radius: 14px;
  background: var(--site-index-bg);
  box-sizing: border-box;
}
.values-page__tile-title {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(1.125rem, 2.2vw, 1.35rem);
  font-weight: 600;
  color: var(--text-h);
  letter-spacing: -0.02em;
  line-height: 1.25;
}
.values-page__tile-body {
  margin: clamp(0.65rem, 1.5vw, 0.85rem) 0 0;
  font-size: 0.9125rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--text);
}
/* /pricing — themed panel spans the same horizontal band as other pages; inner column stays readable */
.page.pricing-page {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: stretch;
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin-inline: 0;
  text-align: center;
  overflow-y: auto;
  --pricing-content-gutter: clamp(0.7rem, 4.2vw, 1.05rem);
  --pricing-page-bg-top: color-mix(in srgb, var(--site-index-bg) 56%, var(--bg));
  --pricing-page-bg-bottom: var(--bg);
  --pricing-panel-bg: color-mix(in srgb, var(--site-index-bg) 72%, var(--surface));
  --pricing-panel-glow: color-mix(in srgb, var(--surface) 84%, transparent);
  --pricing-panel-border: color-mix(in srgb, var(--text-h) 7%, var(--border));
  --pricing-card-bg: color-mix(in srgb, var(--surface) 88%, var(--site-index-bg));
  --pricing-card-border: color-mix(in srgb, var(--text-h) 8%, var(--border));
  --pricing-card-text: var(--text-h);
  --pricing-card-text-inverse: var(--cta-pill-fg);
  --pricing-card-muted: color-mix(in srgb, var(--text) 82%, var(--text-muted));
  --pricing-season-accent: var(--accent);
  --pricing-season-accent-contrast: var(--on-accent);
  --pricing-featured-bg: color-mix(in srgb, var(--surface) 82%, var(--pricing-season-accent));
  --pricing-featured-border: color-mix(in srgb, var(--pricing-season-accent) 70%, var(--border));
  padding-top: clamp(1rem, 2.5vw + 0.5rem, 2.25rem);
  background: var(--bg);
}
.pricing-page__shell {
  position: relative;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  --pricing-backdrop-radius: clamp(14px, 2.8vw, 26px);
  border-radius: var(--pricing-backdrop-radius);
  border: 0;
  background: transparent;
  box-shadow: none;
}
.pricing-page__inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  max-width: min(58rem, 100%);
  min-width: 0;
  margin-inline: auto;
  box-sizing: border-box;
  padding-block: clamp(1.35rem, 3.5vw, 2.35rem);
  padding-inline: var(--pricing-content-gutter);
}
.pricing-page__grid {
  display: grid;
  width: 100%;
  min-width: 0;
  gap: clamp(1.35rem, 3vw, 2.25rem);
  grid-template-columns: minmax(0, 1fr);
}
/* iPad / tablet portrait stays a single column; only wider landscape gets multi-column */
/* e.g. iPhone landscape 667×375 — two columns so rows don’t force horizontal overflow */
@media (min-width: 640px) and (max-width: 767px) and (orientation: landscape) {
  .pricing-page__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
  }
}
@media (min-width: 768px) and (orientation: landscape) {
  .pricing-page__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: stretch;
  }
}
/* Mobile: visible panel inset because layout --page-inline is very small here. */
@media (max-width: 639px) {
  .pricing-page__shell {
    width: calc(100% - 2 * var(--pricing-content-gutter));
    max-width: calc(100% - 2 * var(--pricing-content-gutter));
    margin-top: var(--pricing-content-gutter);
    margin-inline: auto;
  }
}
.pricing-card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: clamp(1.65rem, 3vw, 2.15rem) clamp(1.35rem, 2.5vw, 1.85rem)
    clamp(1.5rem, 2.8vw, 2rem);
  border: 1px solid var(--pricing-card-border);
  border-radius: 14px;
  background: var(--pricing-card-bg);
  box-shadow: var(--shadow-card-soft);
  box-sizing: border-box;
  color: var(--pricing-card-text);
}
.pricing-card--featured {
  padding-top: clamp(2.7rem, 4vw, 3.15rem);
  background: var(--pricing-card-bg);
  border: 2px solid var(--pricing-featured-border);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--pricing-season-accent) 24%, transparent),
    0 20px 46px -26px color-mix(in srgb, var(--pricing-season-accent) 52%, transparent);
}
.pricing-card__ribbon {
  position: absolute;
  top: 0.85rem;
  right: 0.85rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.32rem 0.62rem;
  border-radius: 999px;
  background: var(--pricing-season-accent);
  color: var(--pricing-season-accent-contrast);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: uppercase;
  box-shadow: 0 8px 22px -14px color-mix(in srgb, var(--pricing-season-accent) 70%, transparent);
}
.pricing-card__name {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(1.125rem, 2.2vw, 1.35rem);
  font-weight: 600;
  color: var(--pricing-card-text);
  text-align: center;
}
.pricing-card__price {
  margin: clamp(0.85rem, 2vw, 1.15rem) 0 0;
  font-size: clamp(2.05rem, 4.5vw, 2.65rem);
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--pricing-card-text);
  text-align: center;
}
.pricing-card__price-original {
  margin: clamp(0.85rem, 2vw, 1.15rem) 0 0;
  font-size: clamp(0.9rem, 1.7vw, 1rem);
  color: var(--pricing-card-muted);
  text-align: center;
  text-decoration: line-through;
}
.pricing-card__duration {
  margin: clamp(0.4rem, 1.2vw, 0.55rem) 0 0;
  flex: 1 1 auto;
  font-size: clamp(0.95rem, 1.8vw, 1.0625rem);
  line-height: 1.45;
  color: var(--pricing-card-text);
  text-align: center;
}
.pricing-card__duration-note {
  display: block;
  margin-top: 0.28rem;
  font-size: 0.84em;
  line-height: 1.35;
  color: var(--pricing-card-muted);
}
.pricing-card__cta {
  margin-top: clamp(1.2rem, 2.5vw, 1.65rem);
  width: 100%;
  box-sizing: border-box;
}
.page.pricing-page .pricing-card__cta.btn--primary {
  padding: 0.7rem 1.4rem;
  font-size: clamp(0.95rem, 1.5vw, 1.0625rem);
  box-shadow: none;
  transition:
    background 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease,
    transform 0.22s ease;
}
/* Week / month — slightly stronger than the card while staying on-theme. */
.page.pricing-page .pricing-card__cta--subtle.btn--primary {
  border: 1px solid color-mix(in srgb, var(--pricing-card-text) 12%, var(--border));
  background: #fff;
  color: var(--pricing-card-text);
}
.page.pricing-page .pricing-card__cta--subtle.btn--primary:hover,
.page.pricing-page .pricing-card__cta--season.btn--primary:hover {
  background: var(--cta-pill-bg);
  color: var(--pricing-card-text-inverse);
  border-color: transparent;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 48%, transparent);
  transform: translateY(-1px);
}
.page.pricing-page .pricing-card__cta--season.btn--primary {
  border: 1px solid transparent;
  background: var(--cta-pill-bg);
  color: var(--cta-pill-fg);
}
[data-theme='dark'] .pricing-page {
  --pricing-page-bg-top: color-mix(in srgb, var(--site-index-bg) 54%, var(--bg));
  --pricing-page-bg-bottom: var(--bg);
  --pricing-panel-bg: color-mix(in srgb, var(--bg) 68%, var(--site-index-bg));
  --pricing-panel-glow: color-mix(in srgb, var(--element-bg) 58%, transparent);
  --pricing-panel-border: color-mix(in srgb, var(--text-h) 8%, var(--border));
  --pricing-card-bg: color-mix(in srgb, var(--surface) 88%, var(--site-index-bg));
  --pricing-card-border: color-mix(in srgb, var(--text-h) 8%, var(--border));
  --pricing-card-text: var(--text-h);
  --pricing-card-text-inverse: var(--cta-pill-fg);
  --pricing-card-muted: color-mix(in srgb, var(--text) 82%, var(--text-muted));
  --pricing-season-accent-contrast: var(--cta-pill-fg);
  --pricing-featured-bg: color-mix(in srgb, var(--surface) 84%, var(--pricing-season-accent));
  --pricing-featured-border: color-mix(in srgb, var(--pricing-season-accent) 72%, var(--border));
}
[data-theme='dark'] .pricing-card {
  box-shadow: var(--shadow-panel-raised);
}
[data-theme='dark'] .page.pricing-page .pricing-card__cta--subtle.btn--primary {
  border-color: color-mix(in srgb, var(--text-h) 10%, var(--border));
  background: #fff;
  color: var(--bg);
}
[data-theme='dark'] .page.pricing-page .pricing-card__cta--subtle.btn--primary:hover,
[data-theme='dark'] .page.pricing-page .pricing-card__cta--season.btn--primary:hover {
  background: var(--cta-pill-bg);
  color: var(--cta-pill-fg);
  border-color: transparent;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 52%, transparent);
}
[data-theme='dark'] .page.pricing-page .pricing-card__cta--season.btn--primary {
  background: var(--cta-pill-bg);
  color: var(--cta-pill-fg);
}
@media (prefers-reduced-motion: reduce) {
  .page.pricing-page .pricing-card__cta.btn--primary:hover {
    transform: none;
  }
}
.page.stripe-page {
  display: grid;
  place-items: center;
  min-height: max(26rem, calc(100dvh - var(--site-header-h)));
}
.stripe-page__card {
  width: min(42rem, 100%);
  border: 1px solid var(--border);
  border-radius: 1rem;
  padding: clamp(1.25rem, 2.4vw, 2rem);
  background: color-mix(in oklab, var(--surface) 92%, black 8%);
  box-shadow: 0 0.9rem 2rem -1.25rem rgba(0, 0, 0, 0.45);
}
.stripe-page__title {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(1.5rem, 3vw, 2rem);
  line-height: 1.2;
  color: var(--text-h);
}
.stripe-page__body {
  margin: 1rem 0 0;
  color: var(--text);
  line-height: 1.6;
}
.stripe-page__home-btn {
  margin-top: 1.25rem;
}
/* Shared layout + card dimensions for /exam-choice and /directory */
:root {
  --workspace-choice-page-padding-block: clamp(1.25rem, 4vh, 2.5rem);
  --workspace-choice-shell-max: min(76rem, 100%);
  --workspace-choice-shell-gap: clamp(1.4rem, 3.5vw, 2.2rem);
  --workspace-choice-grid-gap: clamp(1rem, 2.4vw, 1.5rem);
  --workspace-choice-banner-ratio: 3072 / 815;
  --workspace-choice-card-body-gap: 0.72rem;
  --workspace-choice-card-body-padding: clamp(1rem, 2.4vw, 1.25rem);
}
.page.directory-page,
.page.exam-choice-page {
  justify-content: flex-start;
  padding-block: var(--workspace-choice-page-padding-block);
}
/* Invisible copy of `/exam-choice` header — reserves vertical space so card rows align. */
.workspace-choice-header-sizer {
  visibility: hidden;
  pointer-events: none;
  user-select: none;
  max-width: 42rem;
}
/* /directory — two mode cards with mini Monet strips + feature lists */
/*
 * Scroll lives on `.site-main`, not on this flex child: `overflow-x: clip` pairs
 * `overflow-y` to `auto` (CSS overflow 3), which trapped a short internal scrollport
 * under `min-height: 0` and clipped content on small phones.
 */
.layout:has(.page.directory-page) .site-main {
  overflow-x: clip;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
/* Grow with content so `site-main` scrolls; min-height still fills the viewport when content is short */
.layout .site-main > .page.directory-page {
  flex: 0 1 auto;
  align-self: stretch;
}
.page.directory-page {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  box-sizing: border-box;
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  padding-inline: var(--page-inline, 1.25rem);
  text-align: left;
  overflow: visible;
  position: relative;
  flex: 1 1 auto;
  min-height: calc(
    100dvh - 2rem - var(--site-header-clearance) - env(safe-area-inset-top, 0px)
  );
}
.layout--workspace-no-header .page.directory-page {
  min-height: calc(100dvh - max(1rem, env(safe-area-inset-top, 0px)) - env(safe-area-inset-bottom, 0px));
}
.directory-page__shell {
  width: 100%;
  max-width: var(--workspace-choice-shell-max);
  margin-inline: auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: var(--workspace-choice-shell-gap);
}
.directory-page__fieldset {
  margin: 0;
  padding: 0;
  border: none;
  min-inline-size: 0;
}
.directory-page__modes-grid {
  display: grid;
  gap: var(--workspace-choice-grid-gap);
  grid-template-columns: 1fr;
  align-items: stretch;
}
@media (min-width: 780px) {
  .directory-page__modes-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
.directory-page__mode-option {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
  cursor: pointer;
  margin: 0;
  border-radius: 6px;
  outline-offset: 3px;
}
button.directory-page__mode-option {
  border: none;
  background: none;
  padding: 0;
  font: inherit;
  text-align: inherit;
  width: 100%;
}
a.directory-page__mode-option {
  color: inherit;
  text-decoration: none;
  width: 100%;
}
.directory-page__mode-option--disabled {
  cursor: pointer;
  opacity: 0.78;
}
.directory-page__mode-option--sign-in-prompt {
  cursor: default;
}
.directory-page__mode-option--disabled .directory-page__mode-card {
  transition: none;
}
.directory-page__mode-option--disabled:hover .directory-page__mode-card {
  transform: none;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 10%, transparent),
    0 2px 4px rgba(0, 0, 0, 0.14),
    0 10px 28px -6px rgba(0, 0, 0, 0.32),
    0 22px 48px -14px rgba(0, 0, 0, 0.22);
}
[data-theme='dark'] .directory-page__mode-option--disabled:hover .directory-page__mode-card {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 2px 6px rgba(0, 0, 0, 0.45),
    0 12px 32px -8px rgba(0, 0, 0, 0.55),
    0 24px 52px -14px rgba(0, 0, 0, 0.5);
}
.directory-page__mode-option--selected .directory-page__mode-card {
  box-shadow:
    0 0 0 2.4px var(--focus-ring-color, color-mix(in srgb, var(--text-h) 35%, transparent)),
    0 0 0 1px color-mix(in srgb, var(--text-h) 10%, transparent),
    0 2px 4px rgba(0, 0, 0, 0.14),
    0 10px 28px -6px rgba(0, 0, 0, 0.32),
    0 22px 48px -14px rgba(0, 0, 0, 0.22);
}
[data-theme='dark'] .directory-page__mode-option--selected .directory-page__mode-card {
  box-shadow:
    0 0 0 2.4px color-mix(in srgb, var(--text-h) 45%, transparent),
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 2px 6px rgba(0, 0, 0, 0.45),
    0 12px 32px -8px rgba(0, 0, 0, 0.55),
    0 24px 52px -14px rgba(0, 0, 0, 0.5);
}
.directory-page__mode-radio {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.directory-page__mode-card {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: stretch;
  min-height: 0;
  overflow: hidden;
  border-radius: 6px;
  background: var(--site-index-bg);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 10%, transparent),
    0 2px 4px rgba(0, 0, 0, 0.14),
    0 10px 28px -6px rgba(0, 0, 0, 0.32),
    0 22px 48px -14px rgba(0, 0, 0, 0.22);
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease;
}
.directory-page__mode-option:hover .directory-page__mode-card {
  transform: translateY(-2px);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 4px 8px rgba(0, 0, 0, 0.18),
    0 14px 36px -8px rgba(0, 0, 0, 0.38),
    0 28px 56px -16px rgba(0, 0, 0, 0.28);
}
.directory-page__mode-option--selected:hover .directory-page__mode-card {
  box-shadow:
    0 0 0 2.4px var(--focus-ring-color, color-mix(in srgb, var(--text-h) 35%, transparent)),
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 4px 8px rgba(0, 0, 0, 0.18),
    0 14px 36px -8px rgba(0, 0, 0, 0.38),
    0 28px 56px -16px rgba(0, 0, 0, 0.28);
}
[data-theme='dark'] .directory-page__mode-option--selected:hover .directory-page__mode-card {
  box-shadow:
    0 0 0 2.4px color-mix(in srgb, var(--text-h) 45%, transparent),
    0 0 0 1px color-mix(in srgb, var(--text-h) 16%, transparent),
    0 4px 10px rgba(0, 0, 0, 0.5),
    0 16px 40px -10px rgba(0, 0, 0, 0.65),
    0 30px 60px -16px rgba(0, 0, 0, 0.55);
}
[data-theme='dark'] .directory-page__mode-card {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 2px 6px rgba(0, 0, 0, 0.45),
    0 12px 32px -8px rgba(0, 0, 0, 0.55),
    0 24px 52px -14px rgba(0, 0, 0, 0.5);
}
[data-theme='dark'] .directory-page__mode-option:hover .directory-page__mode-card {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 16%, transparent),
    0 4px 10px rgba(0, 0, 0, 0.5),
    0 16px 40px -10px rgba(0, 0, 0, 0.65),
    0 30px 60px -16px rgba(0, 0, 0, 0.55);
}
.directory-page__mode-card-banner {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: var(--workspace-choice-banner-ratio);
  flex-shrink: 0;
  overflow: hidden;
  background: var(--element-bg);
}
.directory-page__card-img {
  display: block;
  width: 100%;
  height: 100%;
  background-image: var(--directory-panorama);
  background-repeat: no-repeat;
  /* 300% width spans all three cards; vertical crop ~40% down from the top. */
  background-size: 300% auto;
  background-position: calc(var(--directory-panorama-slice, 0) * 50%) 40%;
  transform: scale(1.04);
}
.directory-page__hero-wash {
  position: absolute;
  inset: 0;
  z-index: 3;
  background: rgb(255 255 255 / 30%);
}
[data-theme='dark'] .directory-page__hero-wash {
  background: rgb(0 0 0 / 22%);
}
.directory-page__mode-card-body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: stretch;
  gap: var(--workspace-choice-card-body-gap);
  min-height: 0;
  padding: var(--workspace-choice-card-body-padding);
  text-align: left;
}
.directory-page__mode-heading {
  font-family: var(--heading);
  font-size: clamp(1.15rem, 2vw, 1.35rem);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: var(--text-h);
}
.directory-page__feature-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.48rem;
}
.directory-page__feature-item {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 0.875rem;
  line-height: 1.4;
  color: color-mix(in srgb, var(--text) 92%, var(--text-h));
}
.directory-page__feature-tick {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.05rem;
  height: 1.05rem;
  margin-top: 0.12em;
  border-radius: 3px;
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1;
  color: var(--text-h);
  background: color-mix(in srgb, var(--text-h) 9%, transparent);
  border: 1px solid color-mix(in srgb, var(--text-h) 14%, transparent);
}
.directory-page__feature-item--sign-in {
  color: color-mix(in srgb, var(--text) 78%, var(--text-h));
}
.directory-page__sign-in-link {
  color: var(--text-h);
  font-weight: 600;
  text-underline-offset: 0.15em;
}
.directory-page__sign-in-link:hover {
  text-decoration: underline;
}
.directory-page__mode-card--sign-in-prompt {
  position: relative;
}
.directory-page__mode-card-sizer {
  display: flex;
  flex-direction: column;
  width: 100%;
  visibility: hidden;
  pointer-events: none;
}
.directory-page__sign-in-prompt-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: clamp(1rem, 2.4vw, 1.25rem);
}
.directory-page__sign-in-prompt-message {
  margin: 0;
  max-width: 16rem;
  font-family: var(--heading);
  font-size: clamp(1.05rem, 2.2vw, 1.25rem);
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.02em;
  text-align: center;
  color: var(--text-h);
}
/* Mobile — tighter top spacing */
@media (max-width: 779px) {
  .directory-page .workspace-choice-header-sizer {
    display: none;
  }

  .page.directory-page {
    padding-block: 0.75rem;
    min-height: auto;
  }

  .directory-page__shell {
    gap: 0.85rem;
    padding-bottom: max(0.5rem, env(safe-area-inset-bottom, 0px));
  }
}
.directory-page__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;
}
/* Same panel fill as site index links (legacy `.directory-card` on /directory — cards elsewhere unchanged). */
.directory-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: clamp(5.25rem, 13vw, 6.75rem);
  padding: clamp(0.85rem, 2vw, 1.15rem) clamp(1.5rem, 3vw, 2.25rem);
  border: none;
  border-radius: 6px;
  background: var(--site-index-bg);
  box-sizing: border-box;
  text-decoration: none;
  color: inherit;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 10%, transparent),
    0 2px 4px rgba(0, 0, 0, 0.14),
    0 10px 28px -6px rgba(0, 0, 0, 0.32),
    0 22px 48px -14px rgba(0, 0, 0, 0.22);
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease;
}
.directory-card__title {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(1.2rem, 2.4vw, 1.45rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--text-h);
}
.directory-card:hover {
  transform: translateY(-2px);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 4px 8px rgba(0, 0, 0, 0.18),
    0 14px 36px -8px rgba(0, 0, 0, 0.38),
    0 28px 56px -16px rgba(0, 0, 0, 0.28);
}
.directory-card:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
[data-theme='dark'] .directory-card {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 2px 6px rgba(0, 0, 0, 0.45),
    0 12px 32px -8px rgba(0, 0, 0, 0.55),
    0 24px 52px -14px rgba(0, 0, 0, 0.5);
}
[data-theme='dark'] .directory-card:hover {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 16%, transparent),
    0 4px 10px rgba(0, 0, 0, 0.5),
    0 16px 40px -10px rgba(0, 0, 0, 0.65),
    0 30px 60px -16px rgba(0, 0, 0, 0.55);
}
@media (max-width: 520px) {
  .directory-page__mode-card-body {
    gap: 0.58rem;
  }
}
/* /exam-choice — exam-first entry before sample or workspace mode selection */
.page.exam-choice-page {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  box-sizing: border-box;
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  padding-inline: var(--page-inline, 1.25rem);
  text-align: left;
  position: relative;
  flex: 1 1 auto;
  min-height: calc(
    100dvh - 2rem - var(--site-header-clearance) - env(safe-area-inset-top, 0px)
  );
}
.exam-choice-page__shell {
  width: 100%;
  max-width: var(--workspace-choice-shell-max, min(76rem, 100%));
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--workspace-choice-shell-gap);
}
.exam-choice-page__header {
  max-width: 42rem;
}
.exam-choice-page__eyebrow,
.exam-choice-page__coming-soon-kicker,
.exam-choice-page__card-kicker {
  margin: 0;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  line-height: 1.2;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-muted) 78%, var(--text-h));
}
.exam-choice-page__title {
  margin: 0.45rem 0 0;
  font-family: var(--heading);
  font-size: clamp(2.1rem, 5vw, 4rem);
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -0.055em;
  color: var(--text-h);
}
.exam-choice-page__intro {
  margin: clamp(0.9rem, 2vw, 1.15rem) 0 0;
  max-width: 38rem;
  font-size: clamp(1rem, 1.4vw, 1.12rem);
  line-height: 1.6;
  color: color-mix(in srgb, var(--text) 88%, var(--text-muted));
}
.exam-choice-page__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--workspace-choice-grid-gap);
  align-items: stretch;
}
@media (min-width: 780px) {
  .exam-choice-page__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
.exam-choice-page__grid > .exam-choice-page__card {
  height: 100%;
}
.exam-choice-page__card {
  appearance: none;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: stretch;
  min-height: 0;
  padding: 0;
  border: none;
  border-radius: 6px;
  background: var(--site-index-bg);
  color: inherit;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 10%, transparent),
    0 2px 4px rgba(0, 0, 0, 0.14),
    0 10px 28px -6px rgba(0, 0, 0, 0.32),
    0 22px 48px -14px rgba(0, 0, 0, 0.22);
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease;
  overflow: hidden;
}
.exam-choice-page--sample .exam-choice-page__card {
  border-radius: 6px;
}
.exam-choice-page__card--available:hover {
  transform: translateY(-2px);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 4px 8px rgba(0, 0, 0, 0.18),
    0 14px 36px -8px rgba(0, 0, 0, 0.38),
    0 28px 56px -16px rgba(0, 0, 0, 0.28);
}
.exam-choice-page__card--disabled,
.exam-choice-page__card--disabled:hover {
  cursor: not-allowed;
  transform: none;
  opacity: 0.72;
  filter: grayscale(0.9) saturate(0.72);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-muted) 16%, transparent),
    0 2px 4px rgba(0, 0, 0, 0.1);
}
.exam-choice-page__card:focus-visible,
.exam-choice-page__secondary-btn:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
[data-theme='dark'] .exam-choice-page__card {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 2px 6px rgba(0, 0, 0, 0.45),
    0 12px 32px -8px rgba(0, 0, 0, 0.55),
    0 24px 52px -14px rgba(0, 0, 0, 0.5);
}
[data-theme='dark'] .exam-choice-page__card--available:hover {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 16%, transparent),
    0 4px 10px rgba(0, 0, 0, 0.5),
    0 16px 40px -10px rgba(0, 0, 0, 0.65),
    0 30px 60px -16px rgba(0, 0, 0, 0.55);
}
[data-theme='dark'] .exam-choice-page__card--disabled,
[data-theme='dark'] .exam-choice-page__card--disabled:hover {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-muted) 18%, transparent),
    0 2px 6px rgba(0, 0, 0, 0.35);
}
.exam-choice-page__card--available {
  background:
    linear-gradient(
      145deg,
      color-mix(in srgb, var(--text-h) 4%, transparent),
      transparent 48%
    ),
    var(--site-index-bg);
}
.exam-choice-page__card-banner {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: var(--workspace-choice-banner-ratio);
  flex-shrink: 0;
  overflow: hidden;
  background: var(--element-bg);
}
.exam-choice-page__card-img {
  display: block;
  width: 100%;
  height: 100%;
  background-image: var(--exam-choice-panorama);
  background-repeat: no-repeat;
  /* 300% width spans all three cards; top edge aligned to the Emergency row (slice 0). */
  background-size: 300% auto;
  background-position: calc(var(--exam-choice-slice, 0) * 50%) top;
  transform: scale(1.04);
}
.exam-choice-page__card--available .exam-choice-page__card-img {
  background-position: calc(var(--exam-choice-slice, 0) * 50%) top;
}
.exam-choice-page__card--disabled .exam-choice-page__card-img {
  background-position: calc(var(--exam-choice-slice, 0) * 50%) top;
}
.exam-choice-page__card-wash {
  position: absolute;
  inset: 0;
  background: rgb(255 255 255 / 32%);
}
[data-theme='dark'] .exam-choice-page__card-wash {
  background: rgb(0 0 0 / 24%);
}
.exam-choice-page__card-status {
  position: absolute;
  top: 0.7rem;
  right: 0.7rem;
  display: inline-flex;
  align-items: center;
  border-radius: 9999px;
  padding: 0.28rem 0.55rem;
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1;
  color: var(--text-h);
  background: color-mix(in srgb, var(--site-index-bg) 88%, transparent);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent);
}
.exam-choice-page__card--disabled .exam-choice-page__card-status {
  color: color-mix(in srgb, var(--text) 86%, var(--text-h));
}
.exam-choice-page__card-body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: stretch;
  gap: var(--workspace-choice-card-body-gap);
  min-height: 0;
  padding: var(--workspace-choice-card-body-padding);
}
.exam-choice-page__card-title {
  font-family: var(--heading);
  font-size: clamp(1.15rem, 2vw, 1.35rem);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: var(--text-h);
}
.exam-choice-page__feature-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.48rem;
}
.exam-choice-page__feature-item {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 0.875rem;
  line-height: 1.4;
  color: color-mix(in srgb, var(--text) 92%, var(--text-h));
}
.exam-choice-page__feature-tick {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.05rem;
  height: 1.05rem;
  margin-top: 0.12em;
  border-radius: 3px;
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1;
  color: var(--text-h);
  background: color-mix(in srgb, var(--text-h) 9%, transparent);
  border: 1px solid color-mix(in srgb, var(--text-h) 14%, transparent);
}
.exam-choice-page__card--disabled .exam-choice-page__feature-tick {
  color: color-mix(in srgb, var(--text) 88%, var(--text-h));
  background: color-mix(in srgb, var(--text-muted) 9%, transparent);
  border-color: color-mix(in srgb, var(--text-muted) 16%, transparent);
}
.exam-choice-page__card-copy {
  margin-top: auto;
  max-width: 22rem;
  font-size: 0.875rem;
  line-height: 1.45;
  color: color-mix(in srgb, var(--text) 88%, var(--text-muted));
}
@media (max-width: 520px) {
  .exam-choice-page__card {
    min-height: 0;
  }

  .exam-choice-page__card-body {
    gap: 0.58rem;
  }
}
/* Viewport inset via `site-main` (`--page-inline`). Tighter gap between cards only. */
.page.viva-builder-page {
  --vb-edge-gutter: var(--page-inline, 1.25rem);
  --vb-card-gap: clamp(0.5rem, 1.2vw, 0.85rem);
  --vb-start-viva-band-gap: clamp(1.25rem, 4vw, 2.25rem);
  /* Main section tiles: ~15% shorter vertical footprint (1 elsewhere via fallback). */
  --vb-section-card-vscale: 0.85;
  /* Match Start viva / Done pill block height for bottom reserve */
  --vb-options-bar-h: calc(
    0.65rem * 2 + 1.2 * clamp(0.84rem, 1.5vw, 0.9375rem)
  );
  --vb-options-bar-pad: clamp(0.45rem, 1.2vw, 0.65rem);
  /* Lift pills from bottom: 5× the prior tripled gap (15× pad) + safe area */
  --vb-options-bottom-inset: calc(
    var(--vb-options-bar-pad) * 15 + env(safe-area-inset-bottom, 0px)
  );

  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  max-width: none;
  width: 100%;
  margin-inline: 0;
  box-sizing: border-box;
  padding-inline: 0;
  /* Reserve space so grid/content does not sit under fixed bottom pills */
  padding-bottom: calc(
    var(--vb-options-bar-h) + var(--vb-options-bar-pad) + var(--vb-options-bottom-inset) +
      var(--vb-edge-gutter)
  );
}
/* Session toggles live in the header — no fixed bottom pill bar (including marketing `?embed=1` iframes). */
.page.viva-builder-page--title-in-header {
  padding-bottom: calc(var(--vb-edge-gutter) + env(safe-area-inset-bottom, 0px));
}
.site-main > .page.viva-builder-page {
  flex: 0 1 auto;
}
/* Bottom option bar only with Start viva — tighter page padding when a block is open */
.page.viva-builder-page--no-bottom-options {
  padding-bottom: calc(var(--vb-edge-gutter) + env(safe-area-inset-bottom, 0px));
}
/* Title lives in workspace header; reserve former in-flow h1 + gap so cards stay put */
.page.viva-builder-page--title-in-header {
  padding-top: calc(1.825rem * 1.48 + clamp(0.75rem, 1.85vw, 1.1rem));
}
.page.viva-builder-page--embed h1 {
  margin: 0 0 clamp(0.75rem, 1.85vw, 1.1rem);
}
/* Homepage hero iframe: always arrow (no text / link cursors inside preview) */
.page.viva-builder-page--embed,
.page.viva-builder-page--embed * {
  cursor: default;
}
.page.viva-builder-page--embed .viva-builder-page__done {
  cursor: pointer;
}
.page.viva-builder-page--embed .viva-builder-page__option-pill {
  cursor: pointer;
}
.page.viva-builder-page--embed .viva-builder-page__start-viva-centre [data-vb-recovery-target='start-viva'] {
  cursor: pointer;
}
.page.viva-builder-page--embed .viva-builder-page__choose-station {
  cursor: pointer;
}
/* Column: card grid + topic strip + Start viva (scrolls together; CTA is not viewport-fixed). */
.viva-builder-page__body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  /* Space between the grid block and Start viva (margin-top: auto on band still consumes extra height). */
  gap: clamp(1rem, 3vw, 2.25rem);
}
.viva-builder-page__body:has(.viva-builder-page__start-viva-band--with-hint) {
  gap: var(--vb-start-viva-band-gap);
}
/* Start viva band: below the grid; margin-top auto uses spare height on short pages */
.viva-builder-page__start-viva-band {
  position: relative;
  flex: 0 0 auto;
  align-self: stretch;
  display: flex;
  flex-direction: column;
  align-items: center;
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin-top: auto;
  padding: clamp(1.25rem, 4vw, 2.75rem) var(--page-inline, 1.25rem);
  pointer-events: none;
}
.viva-builder-page__start-viva-band--with-hint {
  gap: var(--vb-start-viva-band-gap);
  padding-top: 0;
}
/* Start Viva: centres the pill stack inside the band */
.viva-builder-page__start-viva-centre {
  position: relative;
  flex: 0 0 auto;
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  padding: 0;
  pointer-events: none;
}
.viva-builder-page__start-viva-band--with-hint .viva-builder-page__start-viva-centre {
  padding: 0;
}
.viva-builder-page__start-viva-centre .viva-builder-page__done {
  pointer-events: auto;
}
.viva-builder-page__start-viva-stack {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.7rem;
}
/* Voice / Written sit in the vertical gap above Start station (symmetric inset ≈ halfway). */
.viva-builder-page__start-viva-stack--station-response {
  gap: 0;
}
.viva-builder-page__station-connect-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
  z-index: 2;
}
.viva-builder-page__station-connect-path {
  fill: none;
  stroke: var(--text-h);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.viva-builder-page__station-response-row {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: clamp(1.3rem, 4vw, 2.2rem);
  margin-block: clamp(2rem, 10vmin, 5rem);
  margin-inline: auto;
  pointer-events: auto;
  position: relative;
  z-index: 3;
}
.viva-builder-page__station-response-btn {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: min(7.5rem, 42vw);
  margin: 0;
  box-sizing: border-box;
  padding: 0.65rem 1.5rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #fff;
  box-shadow: none;
  font-family: var(--heading, inherit);
  font-size: clamp(0.84rem, 1.5vw, 0.9375rem);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.2;
  text-align: center;
  color: #1a1a1a;
  cursor: pointer;
  transition:
    border-color 0.2s ease,
    box-shadow 0.2s ease,
    transform 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.viva-builder-page__station-response-btn-label {
  position: relative;
  z-index: 1;
  opacity: 1;
  transition: opacity 0.28s ease;
}
.viva-builder-page__station-response-btn--label-muted
  .viva-builder-page__station-response-btn-label {
  opacity: 0.38;
}
.viva-builder-page__station-response-border-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: visible;
}
/* Path sits inside `<button>` (label stays #1a1a1a); JS also sets inline stroke for WAAPI. */
.page.viva-builder-page--station .viva-builder-page__station-response-border-path {
  fill: none;
  stroke: var(--text-h);
  stroke-width: 2;
}
.viva-builder-page__station-response-btn:hover {
  border-color: color-mix(in srgb, #1a1a1a 35%, var(--border));
}
.viva-builder-page__station-response-btn--on {
  border-color: transparent;
  box-shadow: none;
}
.viva-builder-page__station-response-btn--on:hover {
  border-color: transparent;
}
.viva-builder-page__station-response-btn:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
.page.viva-builder-page--embed .viva-builder-page__station-response-btn {
  cursor: pointer;
}
.viva-builder-page__start-viva-stack--station-response > .viva-builder-page__done {
  position: relative;
  z-index: 3;
  /* Suppress viva-builder-done-in when choose-station drops — otherwise opacity/scale replays ~0.4s */
  animation: none;
  transition:
    background-color 0.14s ease,
    color 0.14s ease,
    border-color 0.14s ease,
    box-shadow 0.14s ease;
}
.viva-builder-page__station-reset.home-hero-iframe-reset {
  position: absolute;
  top: calc(100% + 0.7rem);
  left: 50%;
  right: auto;
  bottom: auto;
  z-index: 4;
  pointer-events: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  width: auto;
  height: auto;
  min-width: 1.925rem;
  border-radius: 0;
  transform: translateX(-50%);
  transition:
    opacity 0.22s ease,
    transform 0.22s ease,
    background-color 0.22s ease;
}
.viva-builder-page__station-reset.home-hero-iframe-reset svg {
  width: 1.2375rem;
  height: 1.2375rem;
}
.viva-builder-page__station-reset-label {
  font-family: var(--heading, inherit);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1;
  color: var(--text-h);
}
.viva-builder-page__station-reset.home-hero-iframe-reset:hover {
  transform: translateX(-50%) translateY(-1px);
}
/* Bottom option pills — fixed to viewport base, below centred Start viva */
.viva-builder-page__options {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 950;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: var(--vb-options-bar-pad) var(--vb-edge-gutter)
    var(--vb-options-bottom-inset);
  pointer-events: none;
}
.viva-builder-page__options-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(0.35rem, 1.2vw, 0.65rem);
  width: min(24rem, calc(100% - 2 * var(--vb-edge-gutter)));
  max-width: 100%;
  min-width: 0;
  margin-inline: auto;
  pointer-events: auto;
  justify-items: stretch;
  align-items: start;
}
@media (min-width: 640px) {
  .viva-builder-page__options-row {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    width: min(52rem, calc(100% - 2 * var(--vb-edge-gutter)));
  }
}
/*
 * Option pills: same type + padding as Start viva / Done, but topic-tile fill (not black CTA).
 * No min-height / stretch — intrinsic height matches Start viva for one line.
 */
.viva-builder-page__option-pill {
  display: flex;
  align-items: center;
  justify-content: center;
  justify-self: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin: 0;
  box-sizing: border-box;
  padding: 0.65rem 1.85rem;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--site-index-bg);
  box-shadow: none;
  font-family: var(--heading, inherit);
  font-size: clamp(0.84rem, 1.5vw, 0.9375rem);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.2;
  text-align: center;
  color: var(--text-h);
  overflow-wrap: break-word;
  hyphens: auto;
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}
.viva-builder-page__option-pill:hover {
  border-color: color-mix(in srgb, var(--text-h) 22%, var(--border));
}
.viva-builder-page__option-pill--on {
  border-color: color-mix(in srgb, var(--text-h) 42%, var(--border));
  background: color-mix(in srgb, var(--site-index-bg) 88%, var(--text-h) 12%);
}
.viva-builder-page__option-pill--on:hover {
  border-color: color-mix(in srgb, var(--text-h) 48%, var(--border));
  background: color-mix(in srgb, var(--site-index-bg) 82%, var(--text-h) 18%);
}
.viva-builder-page__option-pill:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
.viva-builder-page__grid {
  /* flex-shrink: 0 — if the grid shrinks (was flex: 0 1 auto + min-height: 0), cells still
     paint at full size (overflow visible) and the next sibling (Start viva) overlaps the last row. */
  flex: 0 0 auto;
  min-height: min-content;
  display: grid;
  gap: var(--vb-card-gap);
  grid-template-columns: 1fr;
  grid-auto-rows: auto;
  align-content: start;
  /* Natural card height per column; avoid stretching short tiles to the row’s tallest card */
  align-items: start;
}
@media (min-width: 480px) {
  .viva-builder-page__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 900px) {
  .viva-builder-page__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1200px) {
  .viva-builder-page__grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}
/*
 * Station builder (wide + panel open): five tiles live in one full-width inner row so the
 * topic strip stays on the next outer row only (no extra row from grid auto-placement).
 * Flex lets the centred tile animate to two-fifths width (double one slot) after a delay.
 */
/*
 * Station builder: non-selected tiles stay in the flex row (same shares as before) but are
 * fully invisible — the open card keeps its expanded width with empty space on either side.
 */
.page.viva-builder-page--station .viva-builder-page__card--station-peer-hidden.directory-card {
  opacity: 0;
  border-color: transparent !important;
  background: transparent !important;
  box-shadow: none !important;
  pointer-events: none;
}
.page.viva-builder-page--station
  .viva-builder-page__card--station-peer-hidden
  .viva-builder-page__card-shade {
  opacity: 0 !important;
}
.viva-builder-page__station-cards-row {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: var(--vb-card-gap);
  width: 100%;
  min-width: 0;
}
.viva-builder-page__station-cards-row > .viva-builder-page__card-slot {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
/* 2× flex-grow on centre + 0.75 on sides → 40% / 15%×4 (two single-tile widths for centre) */
.viva-builder-page__station-cards-row--center-expanded
  > .viva-builder-page__card-slot:has(> .viva-builder-page__card--station-center-slot) {
  flex: 2 1 0;
}
.viva-builder-page__station-cards-row--center-expanded
  > .viva-builder-page__card-slot:not(:has(> .viva-builder-page__card--station-center-slot)) {
  flex: 0.75 1 0;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__station-cards-row > .viva-builder-page__card-slot {
    transition:
      flex-grow 0.55s cubic-bezier(0.22, 1, 0.36, 1),
      flex-basis 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  }

  /* Animating flex while hit-testing rects causes unstable insert indices (esp. left → right). */
  .page.viva-builder-page--card-drag-active .viva-builder-page__station-cards-row
    > .viva-builder-page__card-slot {
    transition: none;
  }
}
/* Station builder: subtle motion on the centred tile before width expansion */
@media (min-width: 1200px) and (prefers-reduced-motion: no-preference) {
  .viva-builder-page--station-center-row
    .viva-builder-page__station-cards-row
    > .viva-builder-page__card-slot
    > .viva-builder-page__card.directory-card {
    transition:
      transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
      box-shadow 0.32s ease;
  }
}
.viva-builder-page__card--station-center-slot.directory-card {
  position: relative;
  z-index: 1;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 10%, var(--border)),
    0 10px 28px color-mix(in srgb, var(--text-h) 12%, transparent);
}
@media (min-width: 1200px) {
  .viva-builder-page__card--station-center-slot.directory-card {
    transform: scale(1.02);
  }

  .viva-builder-page__card--station-center-slot.directory-card:hover {
    transform: translateY(-4px) scale(1.02);
  }

  /* Width expansion is the emphasis; drop scale so the tile doesn’t read oversized */
  .viva-builder-page__station-cards-row--center-expanded
    .viva-builder-page__card--station-center-slot.directory-card {
    transform: none;
  }

  .viva-builder-page__station-cards-row--center-expanded
    .viva-builder-page__card--station-center-slot.directory-card:hover {
    transform: translateY(-4px);
  }
}
@media (min-width: 1200px) and (prefers-reduced-motion: reduce) {
  .viva-builder-page__card--station-center-slot.directory-card,
  .viva-builder-page__card--station-center-slot.directory-card:hover {
    transform: none;
  }
}
/* Wrapper for each main card (grid/flex item); holds in-flow placeholder while dragging. */
.viva-builder-page__card-slot {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
/* Fill slot height so expanded cards can pin body content (e.g. subdomain toggle) to the bottom. */
.viva-builder-page__card-slot > .viva-builder-page__card.directory-card {
  flex: 0 1 auto;
  min-height: 0;
  width: 100%;
}
.viva-builder-page__grid > .viva-builder-page__card-slot {
  min-width: 0;
}
/* Narrow viewports (< 5 grid cols): only the selected block is rendered — span full grid width */
.viva-builder-page__grid > .viva-builder-page__card-slot--solo-narrow {
  grid-column: 1 / -1;
}
.viva-builder-page__card-placeholder {
  flex: 1 1 auto;
  min-height: clamp(
    calc(6.4rem * var(--vb-section-card-vscale, 1)),
    calc(17.6vh * var(--vb-section-card-vscale, 1)),
    calc(12rem * var(--vb-section-card-vscale, 1))
  );
  min-width: 0;
  width: 100%;
  box-sizing: border-box;
  visibility: hidden;
  pointer-events: none;
}
/*
 * Dragging: match viewport math to getBoundingClientRect() (includes hover translateY / station scale).
 * Strip transforms so fixed left/top aren’t combined with :hover translateY(-4px) or scale(1.02).
 */
.viva-builder-page__card--pointer-lifted.directory-card,
.viva-builder-page__card--pointer-lifted.directory-card:hover {
  position: fixed;
  z-index: 4000;
  margin: 0;
  left: 0;
  top: 0;
  flex: none !important;
  cursor: grabbing;
  touch-action: none;
  transform: none !important;
  transition: none !important;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 12%, var(--border)),
    0 18px 46px color-mix(in srgb, var(--text-h) 18%, transparent);
}
/* Drag clone: static red emphasis (no keyframes; transition is disabled on lifted card) */
.viva-builder-page__card--pointer-lifted.viva-builder-page__card--viva-zero-questions.directory-card,
.viva-builder-page__card--pointer-lifted.viva-builder-page__card--viva-zero-questions.directory-card:hover {
  animation: none;
  border-color: color-mix(in srgb, #c62828 55%, var(--border));
  box-shadow:
    0 0 0 2px color-mix(in srgb, #dc2626 62%, var(--border)),
    0 18px 46px color-mix(in srgb, #dc2626 24%, transparent);
}
[data-theme='dark']
  .viva-builder-page__card--pointer-lifted.viva-builder-page__card--viva-zero-questions.directory-card,
[data-theme='dark']
  .viva-builder-page__card--pointer-lifted.viva-builder-page__card--viva-zero-questions.directory-card:hover {
  border-color: color-mix(in srgb, #f87171 55%, var(--border));
  box-shadow:
    0 0 0 2px color-mix(in srgb, #f87171 45%, var(--border)),
    0 18px 46px color-mix(in srgb, #f87171 20%, transparent);
}
.viva-builder-page__card--pointer-lifted-suck {
  transform-origin: var(--vb-suck-origin-x, 50%) var(--vb-suck-origin-y, 50%);
  overflow: hidden;
  animation: viva-builder-card-suck-whole
    var(--vb-pickup-morph-ms, 2000ms)
    cubic-bezier(0.22, 1, 0.36, 1)
    forwards;
}
.viva-builder-page__card--pointer-lifted-suck .viva-builder-page__card-main,
.viva-builder-page__card--pointer-lifted-suck .viva-builder-page__card-more,
.viva-builder-page__card--pointer-lifted-suck .viva-builder-page__card-shade {
  transform-origin: var(--vb-suck-origin-x, 50%) var(--vb-suck-origin-y, 50%);
  animation: viva-builder-card-suck-content
    var(--vb-pickup-morph-ms, 2000ms)
    cubic-bezier(0.22, 1, 0.36, 1)
    forwards;
}
.viva-builder-page__card--pointer-lifted-suck::after {
  content: '';
  position: absolute;
  left: var(--vb-suck-origin-x, 50%);
  top: var(--vb-suck-origin-y, 50%);
  z-index: 8;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--text-h) 88%, var(--bg));
  border: 1px solid color-mix(in srgb, var(--bg) 42%, transparent);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 14%, transparent),
    0 4px 12px color-mix(in srgb, var(--text-h) 22%, transparent);
  transform: translate(-50%, -50%) scale(0.25);
  opacity: 0;
  pointer-events: none;
  animation: viva-builder-card-suck-core
    var(--vb-pickup-morph-ms, 2000ms)
    cubic-bezier(0.22, 1, 0.36, 1)
    forwards;
  animation-delay: 55ms;
}
.viva-builder-page__card--pointer-lifted-suck::before {
  content: '';
  position: absolute;
  left: var(--vb-suck-origin-x, 50%);
  top: var(--vb-suck-origin-y, 50%);
  z-index: 7;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 999px;
  border: 2px solid color-mix(in srgb, var(--text-h) 70%, var(--bg));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 18%, transparent);
  transform: translate(-50%, -50%) scale(0.3);
  opacity: 0;
  pointer-events: none;
  animation: viva-builder-card-suck-ring
    var(--vb-pickup-morph-ms, 2000ms)
    cubic-bezier(0.22, 1, 0.36, 1)
    forwards;
}
.viva-builder-page__card--drop-emerge {
  transform-origin: var(--vb-emerge-origin-x, 50%) var(--vb-emerge-origin-y, 50%);
  animation: viva-builder-card-emerge-whole
    var(--vb-drop-morph-ms, 500ms)
    cubic-bezier(0.22, 1, 0.36, 1)
    both;
  transition: none !important;
}
.viva-builder-page__drag-cursor-dot {
  position: fixed;
  z-index: 4100;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--text-h) 88%, var(--bg));
  border: 1px solid color-mix(in srgb, var(--bg) 42%, transparent);
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 14%, transparent),
    0 4px 12px color-mix(in srgb, var(--text-h) 22%, transparent);
  transform: translate(-50%, -50%);
  pointer-events: none;
}
.viva-builder-page__drag-cursor-dot--active {
  animation:
    viva-builder-drag-dot-pop 0.5s cubic-bezier(0.22, 1, 0.36, 1) both,
    viva-builder-drag-dot-pulse 1.8s ease-in-out 0.55s infinite;
}
@keyframes viva-builder-card-suck-whole {
  0% {
    opacity: 1;
    transform: scale(1);
    filter: blur(0);
  }

  35% {
    opacity: 0.98;
    transform: scale(0.9);
    filter: blur(0.5px);
  }

  72% {
    opacity: 0.42;
    transform: scale(0.22);
    filter: blur(1.4px);
  }

  100% {
    opacity: 0.08;
    transform: scale(0.06);
    filter: blur(2.3px);
  }
}
@keyframes viva-builder-card-suck-content {
  0% {
    opacity: 1;
    transform: scale(1);
    filter: blur(0);
  }

  45% {
    opacity: 0.9;
    transform: scale(0.92);
    filter: blur(0.3px);
  }

  100% {
    opacity: 0;
    transform: scale(0.14);
    filter: blur(1.9px);
  }
}
@keyframes viva-builder-card-suck-core {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.25);
  }

  42% {
    opacity: 0.18;
    transform: translate(-50%, -50%) scale(0.54);
  }

  100% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}
@keyframes viva-builder-card-suck-ring {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.3);
  }

  28% {
    opacity: 0.75;
    transform: translate(-50%, -50%) scale(0.95);
  }

  62% {
    opacity: 0.25;
    transform: translate(-50%, -50%) scale(1.45);
  }

  100% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(1.7);
  }
}
@keyframes viva-builder-card-emerge-whole {
  from {
    opacity: 0.08;
    transform: scale(0.06);
    filter: blur(2px);
  }

  to {
    opacity: 1;
    transform: translateY(var(--vb-emerge-final-translate-y, 0px)) scale(1);
    filter: blur(0);
  }
}
@keyframes viva-builder-drag-dot-pop {
  from {
    transform: translate(-50%, -50%) scale(0.65);
    opacity: 0.7;
  }

  to {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
  }
}
@keyframes viva-builder-drag-dot-pulse {
  0% {
    transform: translate(-50%, -50%) scale(1);
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--text-h) 14%, transparent),
      0 4px 12px color-mix(in srgb, var(--text-h) 22%, transparent);
  }

  50% {
    transform: translate(-50%, -50%) scale(1.12);
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--text-h) 20%, transparent),
      0 8px 22px color-mix(in srgb, var(--text-h) 32%, transparent);
  }

  100% {
    transform: translate(-50%, -50%) scale(1);
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--text-h) 14%, transparent),
      0 4px 12px color-mix(in srgb, var(--text-h) 22%, transparent);
  }
}
.page.viva-builder-page--card-drag-active:not(.viva-builder-page--embed) {
  cursor: grabbing;
}
/* Hit-testing uses slot rects; freeze in-flow card motion so insert index isn’t mid-transition. */
.page.viva-builder-page--card-drag-active
  .viva-builder-page__card-slot
  > .viva-builder-page__card.directory-card:not(.viva-builder-page__card--pointer-lifted) {
  transition: none !important;
}
/* Building-block tiles — flat (no shadow), same shell as directory links */
.viva-builder-page__card.directory-card {
  container-name: vb-main-card;
  container-type: inline-size;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  height: auto;
  min-height: clamp(
    calc(6.4rem * var(--vb-section-card-vscale, 1)),
    calc(17.6vh * var(--vb-section-card-vscale, 1)),
    calc(12rem * var(--vb-section-card-vscale, 1))
  );
  padding-block: clamp(
    calc(0.5rem * var(--vb-section-card-vscale, 1)),
    calc(1.2vw * var(--vb-section-card-vscale, 1)),
    calc(0.75rem * var(--vb-section-card-vscale, 1))
  );
  padding-inline: clamp(1rem, 2.4vw, 1.5rem);
  box-shadow: none;
  border: 1px solid var(--border);
  -webkit-user-drag: none;
  user-select: none;
  -webkit-user-select: none;
}
/*
 * Touch: drags on section tiles run the custom reorder gesture (`handleCardPointerDown`), not
 * browser scroll. Without this, hit targets like `.viva-builder-page__card-main` default to
 * `touch-action: auto`, so the page pans until the drag threshold and reorder feels broken.
 */
.page.viva-builder-page .viva-builder-page__card-slot > .viva-builder-page__card.directory-card,
.page.viva-builder-page
  .viva-builder-page__card-slot
  > .viva-builder-page__card.directory-card
  .viva-builder-page__card-main,
.page.viva-builder-page
  .viva-builder-page__card-slot
  > .viva-builder-page__card.directory-card
  .viva-builder-page__card-more {
  touch-action: none;
}
/* Viva builder: section has 0 questions under current topic/subtopic selection */
@keyframes vb-viva-zero-attention {
  0%,
  100% {
    box-shadow:
      0 0 0 1px color-mix(in srgb, #dc2626 58%, var(--border)),
      0 0 0 0 rgb(220 38 38 / 0%);
  }

  50% {
    box-shadow:
      0 0 0 2px color-mix(in srgb, #ef4444 72%, var(--border)),
      0 0 20px rgb(220 38 38 / 28%);
  }
}
.page.viva-builder-page:not(.viva-builder-page--station)
  .viva-builder-page__card--viva-zero-questions.directory-card {
  border-color: color-mix(in srgb, #c62828 72%, var(--border));
}
@media (prefers-reduced-motion: no-preference) {
  .page.viva-builder-page:not(.viva-builder-page--station)
    .viva-builder-page__card--viva-zero-questions.directory-card {
    animation: vb-viva-zero-attention 2.1s ease-in-out infinite;
  }
}
@media (prefers-reduced-motion: reduce) {
  .page.viva-builder-page:not(.viva-builder-page--station)
    .viva-builder-page__card--viva-zero-questions.directory-card {
    box-shadow: 0 0 0 2px color-mix(in srgb, #c62828 55%, var(--border));
  }
}
[data-theme='dark']
  .page.viva-builder-page:not(.viva-builder-page--station)
  .viva-builder-page__card--viva-zero-questions.directory-card {
  border-color: color-mix(in srgb, #f87171 65%, var(--border));
}
/* Mobile homepage iframe (`hideSessionPills=1`): half the default tile min-height vs full builder */
.page.viva-builder-page--embed-compact .viva-builder-page__card.directory-card {
  min-height: clamp(
    calc(3.2rem * var(--vb-section-card-vscale, 1)),
    calc(8.8vh * var(--vb-section-card-vscale, 1)),
    calc(6rem * var(--vb-section-card-vscale, 1))
  );
}
/* Same iframe: topic/subtopic ticks line up with the centred Start viva pill’s right edge */
.page.viva-builder-page--embed-compact .viva-builder-page__sub-tier {
  grid-template-columns: 1fr;
}
.page.viva-builder-page--embed-compact
  .viva-builder-page__sub-tier:not(.viva-builder-page__sub-tier--nested)
  > .viva-builder-page__sub-card
  > .viva-builder-page__sub-check {
  right: max(calc(0.65rem + 10px), calc(50% - 5.15rem + 10px));
}
/*
 * Mobile home viva iframe: symmetric vertical band around Start viva — distance from the
 * bottom of the grid (e.g. lowest block card) to the pill equals pill to iframe foot.
 * With safe-area: body gap == inset-bottom so (gap + pad-top) == (pad-bottom + page pad).
 */
.page.viva-builder-page--embed.viva-builder-page--embed-compact:not(.viva-builder-page--station) {
  /* Match card-row rhythm so band above/below pill matches gap between block tiles */
  --vb-embed-start-viva-vert: var(--vb-card-gap);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.page.viva-builder-page--embed.viva-builder-page--embed-compact:not(.viva-builder-page--station)
  .viva-builder-page__body {
  gap: env(safe-area-inset-bottom, 0px);
}
.page.viva-builder-page--embed.viva-builder-page--embed-compact:not(.viva-builder-page--station)
  .viva-builder-page__done-row {
  margin-top: var(--vb-card-gap);
}
.page.viva-builder-page--embed.viva-builder-page--embed-compact:not(.viva-builder-page--station)
  .viva-builder-page__body:has(.viva-builder-page__start-viva-band--with-hint) {
  gap: var(--vb-card-gap);
}
.page.viva-builder-page--embed.viva-builder-page--embed-compact:not(.viva-builder-page--station)
  .viva-builder-page__start-viva-band--with-hint {
  gap: var(--vb-card-gap);
  margin-top: 0;
  padding-top: 0;
  padding-bottom: var(--vb-embed-start-viva-vert);
}
.page.viva-builder-page--embed.viva-builder-page--embed-compact:not(.viva-builder-page--station)
  .viva-builder-page__start-viva-band:not(.viva-builder-page__start-viva-band--with-hint) {
  margin-top: 0;
  padding-block: var(--vb-embed-start-viva-vert);
}
/* Narrow marketing iframe (`embedMobile=1`): fit chrome without internal scroll. */
.page.viva-builder-page--embed.viva-builder-page--embed-mobile {
  --vb-edge-gutter: 4px;
  --vb-card-gap: 0.3rem;
  --vb-start-viva-band-gap: 0.45rem;
  --vb-embed-start-viva-vert: 0.3rem;
  height: 100%;
  overflow: hidden;
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.page.viva-builder-page--embed.viva-builder-page--embed-mobile .viva-builder-page__body {
  min-height: 0;
  overflow: hidden;
  gap: 0.3rem;
}
.page.viva-builder-page--embed.viva-builder-page--embed-mobile .viva-builder-page__start-viva-band {
  padding-block: 0.3rem;
}
.viva-builder-page__card-main {
  position: relative;
  z-index: 1;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  text-align: left;
  gap: 0.45rem;
  width: 100%;
  min-width: 0;
  min-height: 0;
  cursor: default;
  box-sizing: border-box;
}
.viva-builder-page__card.directory-card > .viva-builder-page__card-main {
  gap: calc(0.45rem * var(--vb-section-card-vscale, 1));
}
.page.viva-builder-page:not(.viva-builder-page--embed) .viva-builder-page__card-main {
  cursor: pointer;
}
/*
 * Wash over non-selected cards while another is selected.
 * Sibling on the shell so `inset: 0` covers padding (avoids a grey ring). Stacked *above*
 * `.viva-builder-page__card-main` so title/labels/skeletons are covered too; `pointer-events:
 * none` keeps clicks reaching the main hit area. Collapse control stays above the wash.
 */
.viva-builder-page__card-shade {
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
  background: color-mix(in srgb, var(--bg) 80%, var(--site-index-bg) 20%);
  opacity: 0;
  pointer-events: none;
}
.viva-builder-page__card-shade--active {
  opacity: 1;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__card-shade {
    transition: opacity 0.45s ease;
  }
}
.viva-builder-page__card-head,
.viva-builder-page__card-body {
  position: relative;
  z-index: 0;
}
.viva-builder-page__card.directory-card:not(
    .viva-builder-page__card--viva-zero-questions
  ):hover,
[data-theme='dark']
  .viva-builder-page__card.directory-card:not(
    .viva-builder-page__card--viva-zero-questions
  ):hover {
  box-shadow: none;
}
.viva-builder-page__card-main:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
  border-radius: 4px;
}
/* Expanded state is obvious (chevron + sub-row); blue focus ring looked like a stray border */
.viva-builder-page__card-main[aria-expanded='true']:focus-visible {
  outline: none;
}
/* Circular hit area; chevron hints expand/collapse on every section tile */
.viva-builder-page__card-more {
  position: absolute;
  right: clamp(0.2rem, 0.85vw, 0.45rem);
  bottom: clamp(0.2rem, 0.85vw, 0.45rem);
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: var(--text-h);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.page.viva-builder-page
  .viva-builder-page__card-slot
  > .viva-builder-page__card
  .viva-builder-page__card-more--hint {
  opacity: 0.5;
  pointer-events: none;
  cursor: default;
}
.page.viva-builder-page
  .viva-builder-page__card-slot
  > .viva-builder-page__card:hover
  .viva-builder-page__card-more--hint {
  opacity: 0.82;
}
.page.viva-builder-page
  .viva-builder-page__card-slot
  > .viva-builder-page__card
  .viva-builder-page__card-more--expanded {
  opacity: 1;
}
.viva-builder-page__card-more--expanded:hover .viva-builder-page__card-more-icon {
  opacity: 0.82;
}
.viva-builder-page__card-more:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 2px;
}
.viva-builder-page__card-more-icon {
  display: block;
  flex-shrink: 0;
  opacity: 1;
  transition:
    opacity 0.2s ease,
    transform 0.2s ease;
}
.page.viva-builder-page
  .viva-builder-page__card-slot
  > .viva-builder-page__card
  .viva-builder-page__card-more--expanded
  .viva-builder-page__card-more-icon {
  transform: rotate(180deg);
}
@media (prefers-reduced-motion: no-preference) {
  .page.viva-builder-page
    .viva-builder-page__card-slot
    > .viva-builder-page__card
    .viva-builder-page__card-more--expanded {
    opacity: 0;
    transform: translateY(6px);
    animation: viva-builder-card-more-in 0.42s cubic-bezier(0.22, 1, 0.36, 1) forwards;
    animation-delay: 0.08s;
  }
}
@media (prefers-reduced-motion: reduce) {
  .page.viva-builder-page
    .viva-builder-page__card-slot
    > .viva-builder-page__card
    .viva-builder-page__card-more--expanded {
    opacity: 1;
    transform: none;
  }
}
@keyframes viva-builder-card-more-in {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
/* Full-width strip: tier(s) of small tiles below the selected building block */
.viva-builder-page__sub-stack {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: var(--vb-card-gap);
  width: 100%;
  min-width: 0;
  /* Fixed rhythm for topic/subtopic tiles + bulk toggles (no vw-based shrinking) */
  font-size: 0.8125rem;
}
/* Done sits in-flow under topic rows; gap = 2× tile tier spacing (matches card-gap rhythm) */
.viva-builder-page__done-row {
  grid-column: 1 / -1;
  display: flex;
  justify-content: center;
  width: 100%;
  min-width: 0;
  margin-top: calc(var(--vb-card-gap) * 2);
}
.viva-builder-page__done-row--station-reset {
  position: relative;
  margin-bottom: calc(1.925rem + 0.25rem + 0.75rem + 0.7rem);
}
.viva-builder-page__sub-tier {
  display: grid;
  /* Min track width forces fewer columns + more rows when narrow; label font stays fixed below */
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
  gap: var(--vb-card-gap);
  width: 100%;
  min-width: 0;
}
/* Only the expanded topic row is rendered while subtopics are open */
.viva-builder-page__sub-tier--solo-expanded-topic {
  grid-template-columns: 1fr;
}
/* Full-width centred bulk toggle: above topic tier (block selected) or above nested subtopic tiles */
.viva-builder-page__sub-nested-bulk-toggle-wrap {
  grid-column: 1 / -1;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  min-width: 0;
  margin: 0;
  padding-block: 0.1rem 0.35rem;
  font-size: 0.8125rem;
}
.viva-builder-page__sub-card {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: center;
  min-height: 3.35rem;
  /* Room for round tick; extra 5% helps labels wrap before it */
  padding-inline: 0.65rem calc(2rem + 5%);
  border-radius: 6px;
  box-sizing: border-box;
  /* Same fill as home footer `.site-index` (was previously darkened with color-mix) */
  background: var(--site-index-bg);
  border: 1px solid var(--border);
  box-shadow: none;
  user-select: none;
  -webkit-user-select: none;
}
.viva-builder-page__sub-card--locked {
  opacity: 0.3;
  filter: grayscale(0.9) saturate(0.25);
  border-style: solid;
  border-color: color-mix(in srgb, var(--border) 72%, transparent);
  background: color-mix(in srgb, var(--site-index-bg) 48%, transparent);
  cursor: not-allowed;
}
.viva-builder-page__sub-card--locked .viva-builder-page__sub-card-hit,
.viva-builder-page__sub-card--locked .viva-builder-page__sub-card-label,
.viva-builder-page__sub-card-hit--locked {
  cursor: not-allowed;
}
.viva-builder-page__sub-card--locked .viva-builder-page__sub-card-label {
  color: color-mix(in srgb, var(--text-h) 34%, transparent);
  opacity: 0.78;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__sub-card--locked .viva-builder-page__sub-card-label {
    filter: blur(0.45px);
  }
}
.viva-builder-page__sub-card--locked:hover .viva-builder-page__sub-card-chevron {
  opacity: 0;
  transform: translateX(-50%) translateY(4px);
}
/* Wash over non-focused topic tiles (same idea as main building-block cards) */
.viva-builder-page__sub-card-shade {
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
  background: color-mix(in srgb, var(--bg) 80%, var(--site-index-bg) 20%);
  opacity: 0;
  pointer-events: none;
}
.viva-builder-page__sub-card-shade--active {
  opacity: 1;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__sub-card-shade {
    transition: opacity 0.45s ease;
  }
}
.viva-builder-page__sub-card-hit {
  position: relative;
  z-index: 1;
  flex: 1 1 auto;
  align-self: stretch;
  display: flex;
  align-items: center;
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 0;
  padding-right: 0.35rem;
  border: none;
  border-radius: 4px;
  background: transparent;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: default;
}
.page.viva-builder-page:not(.viva-builder-page--embed) .viva-builder-page__sub-card-hit {
  cursor: pointer;
}
.viva-builder-page__sub-card-hit:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 2px;
}
.viva-builder-page__sub-card-label {
  margin: 0;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.25;
  color: var(--text-h);
  overflow-wrap: break-word;
  min-width: 0;
}
/* Bottom-centre chevron — same path as main builder card; hover-only */
.viva-builder-page__sub-card-chevron {
  position: absolute;
  left: 50%;
  bottom: 0.35rem;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0;
  color: var(--text-h);
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%) translateY(4px);
}
.viva-builder-page__sub-card-chevron-icon {
  display: block;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__sub-card-chevron {
    transition:
      opacity 0.24s ease,
      transform 0.24s cubic-bezier(0.22, 1, 0.36, 1);
  }

  .viva-builder-page__sub-card:hover .viva-builder-page__sub-card-chevron {
    opacity: 0.88;
    transform: translateX(-50%) translateY(0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .viva-builder-page__sub-card:hover .viva-builder-page__sub-card-chevron {
    opacity: 0.88;
    transform: translateX(-50%);
  }
}
/* Round topic/subtopic control: unchecked shows question count in the circle; checked shows tick on dark fill */
.viva-builder-page__sub-check {
  position: absolute;
  top: 50%;
  right: calc(0.65rem + 10px);
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.2rem;
  height: 1.2rem;
  margin: 0;
  padding: 0;
  appearance: none;
  border: 1.25px solid color-mix(in srgb, var(--text-h) 28%, var(--border));
  border-radius: 50%;
  background: color-mix(in srgb, var(--surface) 40%, var(--site-index-bg));
  color: var(--text-h);
  cursor: pointer;
  transform: translateY(-50%);
  box-sizing: border-box;
  font: inherit;
  text-align: center;
  -webkit-tap-highlight-color: transparent;
}
.viva-builder-page__sub-check--locked {
  cursor: not-allowed;
  opacity: 0.26;
  border-color: color-mix(in srgb, var(--border) 65%, transparent);
  background: color-mix(in srgb, var(--surface) 22%, transparent);
  color: color-mix(in srgb, var(--text-h) 30%, transparent);
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__sub-check--locked {
    filter: blur(0.3px);
  }
}
.viva-builder-page__sub-check--locked:hover:not(:focus-visible) {
  transform: translateY(-50%);
  box-shadow: none;
}
.viva-builder-page__sub-card--nested .viva-builder-page__sub-check--locked:hover:not(:focus-visible) {
  transform: none;
}
/* Free plan: the single predetermined third-order row is shown on but not toggled here. */
.viva-builder-page__sub-check--free-fixed-readonly {
  cursor: default;
  opacity: 1;
}
.viva-builder-page__sub-check--on {
  border-color: var(--text-h);
  background: var(--text-h);
  color: var(--bg);
}
.viva-builder-page__sub-check-stack {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
/* Count fills the circle; tick is a fixed visual size (do not stretch SVG to 100% — it fills the whole button). */
.viva-builder-page__sub-check-face--q {
  grid-area: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}
.viva-builder-page__sub-check-face--tick {
  grid-area: 1 / 1;
  display: block;
  flex-shrink: 0;
  /* ~12px at 16px root — larger than 9px so the mark reads clearly inside the 1.2rem circle */
  width: 0.75rem;
  height: 0.75rem;
  box-sizing: border-box;
}
.viva-builder-page__sub-check-q {
  font-size: 0.5rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.viva-builder-page__sub-check:not(.viva-builder-page__sub-check--on)
  .viva-builder-page__sub-check-face--q {
  opacity: 1;
  transform: scale(1);
}
.viva-builder-page__sub-check--on .viva-builder-page__sub-check-face--q {
  opacity: 0;
  transform: scale(0.78);
}
.viva-builder-page__sub-check:not(.viva-builder-page__sub-check--on)
  .viva-builder-page__sub-check-face--tick {
  opacity: 0;
  transform: scale(0.58) rotate(-38deg);
}
.viva-builder-page__sub-check--on .viva-builder-page__sub-check-face--tick {
  opacity: 1;
  transform: scale(1) rotate(0deg);
}
.viva-builder-page__sub-check-face--tick path {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}
.viva-builder-page__sub-check--on .viva-builder-page__sub-check-face--tick path {
  stroke-dashoffset: 0;
}
.viva-builder-page__sub-card--nested .viva-builder-page__sub-check--nested {
  position: static;
  transform: none;
  flex-shrink: 0;
  justify-self: end;
}
/* Nested third-order row: label + round control */
.viva-builder-page__sub-card--nested {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  column-gap: calc(0.5rem + 5%);
  padding-inline: 0.65rem;
}
.viva-builder-page__sub-card--nested .viva-builder-page__sub-card-nested-label-wrap {
  position: relative;
  z-index: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
  align-self: stretch;
}
.viva-builder-page__sub-card--nested .viva-builder-page__sub-card-label {
  width: 100%;
  word-wrap: break-word;
  overflow-wrap: anywhere;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__sub-check {
    transition:
      transform 0.28s cubic-bezier(0.34, 1.15, 0.64, 1),
      border-color 0.22s ease,
      background-color 0.22s ease,
      box-shadow 0.22s ease;
  }

  .viva-builder-page__sub-tier:not(.viva-builder-page__sub-tier--nested)
    > .viva-builder-page__sub-card
    > .viva-builder-page__sub-check:not(.viva-builder-page__sub-check--locked):hover:not(:focus-visible) {
    transform: translateY(-50%) scale(1.12);
    border-color: color-mix(in srgb, var(--text-h) 55%, var(--border));
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
      0 4px 12px color-mix(in srgb, var(--text-h) 14%, transparent);
  }

  .viva-builder-page__sub-tier:not(.viva-builder-page__sub-tier--nested)
    > .viva-builder-page__sub-card
    > .viva-builder-page__sub-check--on:not(.viva-builder-page__sub-check--locked):hover:not(:focus-visible) {
    transform: translateY(-50%) scale(1.12);
    border-color: var(--text-h);
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--text-h) 18%, transparent),
      0 5px 14px color-mix(in srgb, var(--text-h) 20%, transparent);
  }

  .viva-builder-page__sub-card--nested
    .viva-builder-page__sub-check--nested:not(.viva-builder-page__sub-check--locked):hover:not(:focus-visible) {
    transform: scale(1.12);
    border-color: color-mix(in srgb, var(--text-h) 55%, var(--border));
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--text-h) 12%, transparent),
      0 4px 12px color-mix(in srgb, var(--text-h) 14%, transparent);
  }

  .viva-builder-page__sub-card--nested
    .viva-builder-page__sub-check--nested.viva-builder-page__sub-check--on:not(.viva-builder-page__sub-check--locked):hover:not(:focus-visible) {
    transform: scale(1.12);
    border-color: var(--text-h);
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--text-h) 18%, transparent),
      0 5px 14px color-mix(in srgb, var(--text-h) 20%, transparent);
  }

  .viva-builder-page__sub-check-face--q {
    transition:
      opacity 0.2s cubic-bezier(0.33, 1, 0.36, 1),
      transform 0.3s cubic-bezier(0.33, 1.12, 0.4, 1);
  }

  .viva-builder-page__sub-check-face--tick {
    transition:
      opacity 0.22s cubic-bezier(0.33, 1, 0.36, 1),
      transform 0.4s cubic-bezier(0.26, 1.45, 0.36, 1);
  }

  .viva-builder-page__sub-check-face--tick path {
    transition: stroke-dashoffset 0.38s cubic-bezier(0.42, 0.02, 0.18, 1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .viva-builder-page__sub-tier:not(.viva-builder-page__sub-tier--nested)
    > .viva-builder-page__sub-card
    > .viva-builder-page__sub-check:hover:not(:focus-visible),
  .viva-builder-page__sub-tier:not(.viva-builder-page__sub-tier--nested)
    > .viva-builder-page__sub-card
    > .viva-builder-page__sub-check--on:hover:not(:focus-visible) {
    transform: translateY(-50%);
  }

  .viva-builder-page__sub-card--nested
    .viva-builder-page__sub-check--nested:hover:not(:focus-visible),
  .viva-builder-page__sub-card--nested
    .viva-builder-page__sub-check--nested.viva-builder-page__sub-check--on:hover:not(:focus-visible) {
    transform: none;
  }

  .viva-builder-page__sub-check-face--q,
  .viva-builder-page__sub-check-face--tick,
  .viva-builder-page__sub-check-face--tick path {
    transition: none !important;
  }
}
.viva-builder-page__sub-check:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__sub-tier:not(.viva-builder-page__sub-tier--nested) > .viva-builder-page__sub-card {
    opacity: 0;
    transform: translateY(6px) scale(0.96);
    animation: viva-builder-sub-card-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) forwards;
    animation-delay: calc(var(--vb-sub-i, 0) * 0.035s);
  }

  .viva-builder-page__sub-tier--nested > .viva-builder-page__sub-card {
    opacity: 0;
    transform: translateY(6px) scale(0.96);
    animation: viva-builder-sub-card-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) forwards;
    animation-delay: calc(var(--vb-nested-i, 0) * 0.035s);
  }
}
@media (prefers-reduced-motion: reduce) {
  .viva-builder-page__sub-tier:not(.viva-builder-page__sub-tier--nested) > .viva-builder-page__sub-card,
  .viva-builder-page__sub-tier--nested > .viva-builder-page__sub-card {
    opacity: 1;
    transform: none;
  }
}
@keyframes viva-builder-sub-card-in {
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
.viva-builder-page__card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  width: 100%;
  min-width: 0;
}
.viva-builder-page__card-head .directory-card__title {
  flex: 1;
  min-width: 0;
  max-width: 100%;
  margin: 0;
  /* Single-line titles; fluid size from card width so the longest label fits in 5-up layout. */
  font-size: clamp(0.68rem, calc(0.2rem + 5.55cqi), 0.86rem);
  font-weight: 600;
  line-height: calc(1.28 * var(--vb-section-card-vscale, 1));
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.viva-builder-page__ring-loader {
  --viva-ring-cycle: 2.6s;

  position: relative;
  width: 0.625rem;
  height: 0.625rem;
  flex-shrink: 0;
}
.viva-builder-page__ring-dot {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 2px;
  height: 2px;
  margin: -1px 0 0 -1px;
  border-radius: 50%;
  background: var(--text);
  box-sizing: border-box;
  transform-origin: center;
  opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__ring-dot:nth-child(1) {
    animation: viva-ring-d0 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(2) {
    animation: viva-ring-d1 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(3) {
    animation: viva-ring-d2 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(4) {
    animation: viva-ring-d3 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(5) {
    animation: viva-ring-d4 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(6) {
    animation: viva-ring-d5 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(7) {
    animation: viva-ring-d6 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(8) {
    animation: viva-ring-d7 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(9) {
    animation: viva-ring-d8 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(10) {
    animation: viva-ring-d9 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(11) {
    animation: viva-ring-d10 var(--viva-ring-cycle) linear infinite;
  }

  .viva-builder-page__ring-dot:nth-child(12) {
    animation: viva-ring-d11 var(--viva-ring-cycle) linear infinite;
  }
}
@media (prefers-reduced-motion: reduce) {
  .viva-builder-page__ring-dot {
    animation: none;
    opacity: 0.55;
  }

  .viva-builder-page__ring-dot:nth-child(1) {
    transform: rotate(0deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(2) {
    transform: rotate(30deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(3) {
    transform: rotate(60deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(4) {
    transform: rotate(90deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(5) {
    transform: rotate(120deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(6) {
    transform: rotate(150deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(7) {
    transform: rotate(180deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(8) {
    transform: rotate(210deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(9) {
    transform: rotate(240deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(10) {
    transform: rotate(270deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(11) {
    transform: rotate(300deg) translateY(-0.3125rem) scale(1);
  }

  .viva-builder-page__ring-dot:nth-child(12) {
    transform: rotate(330deg) translateY(-0.3125rem) scale(1);
  }
}
.viva-builder-page__card-body {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  margin: 0;
  padding: 0;
}
/*
 * Every main tile uses the same vertical rhythm as the open card: two-line topic block,
 * then “Questions” + toggle row pinned to the bottom so initial (collapsed) height matches selected.
 */
.viva-builder-page__card-main .viva-builder-page__card-body {
  flex: 1 1 auto;
  min-height: 0;
}
.page.viva-builder-page p.viva-builder-page__field {
  margin: 0;
  line-height: 1.35;
}
.viva-builder-page__card.directory-card
  .viva-builder-page__card-main
  p.viva-builder-page__field {
  line-height: calc(1.35 * var(--vb-section-card-vscale, 1));
}
.viva-builder-page__field {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  width: 100%;
  font-size: clamp(0.75rem, 1.5vw, 0.8125rem);
  color: var(--text-h);
}
.viva-builder-page__field-label {
  flex: 0 0 auto;
  color: var(--text-h);
}
/*
 * Topic summary: inline flow so continuation lines align with the card edge (under “Topic:”).
 * Outer has a single flex child so -webkit-line-clamp applies to the inner block; max-height
 * caps at exactly two lines. Each topic segment is nowrap so “Topic N (…)” is not broken.
 */
.viva-builder-page__field--topic {
  display: block;
  width: 100%;
  min-width: 0;
  margin: 0;
}
.viva-builder-page__topic-line-outer {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  line-height: calc(1.35 * var(--vb-section-card-vscale, 1));
  max-height: calc(2 * 1.35em * var(--vb-section-card-vscale, 1));
}
/* Always reserve exactly two topic lines so the lower block doesn’t shift when expanding. */
.viva-builder-page__card-main .viva-builder-page__topic-line-outer {
  min-height: calc(2 * 1.35em * var(--vb-section-card-vscale, 1));
}
.viva-builder-page__topic-line-inner {
  display: inline-block;
  width: 100%;
  min-width: 0;
  line-height: calc(1.35 * var(--vb-section-card-vscale, 1));
  vertical-align: top;
}
.viva-builder-page__field--topic .viva-builder-page__field-label {
  white-space: nowrap;
}
.viva-builder-page__topic-segment {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: bottom;
  color: var(--text-h);
  font-weight: 500;
}
.viva-builder-page__topic-tail-ellipsis {
  display: inline;
  white-space: nowrap;
  color: var(--text-h);
  font-weight: 500;
}
.viva-builder-page__questions-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.35rem;
  width: 100%;
  min-width: 0;
  font-size: clamp(0.75rem, 1.5vw, 0.8125rem);
}
.viva-builder-page__card.directory-card .viva-builder-page__questions-stack {
  gap: calc(0.35rem * var(--vb-section-card-vscale, 1));
}
.viva-builder-page__card-main .viva-builder-page__questions-stack {
  margin-top: auto;
  align-self: flex-start;
}
/*
 * Subdomain bulk toggle: slightly smaller than `.viva-builder-page__questions-stack` (0.9em) so the
 * pill reads as secondary; em padding/min-width scale with it. Negative margin offsets border +
 * padding so the pill aligns with that row. Label text is centred inside the pill.
 */
.viva-builder-page__subdomains-toggle-all {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  margin-inline-start: calc(-1px - var(--vb-toggle-pad-inline, 0.5em));
  flex: 0 0 auto;
  padding-block: 0.32em;
  padding-inline: 0.65em;
  border: 1px solid transparent;
  border-radius: 9999px;
  background: transparent;
  font-family: inherit;
  font-size: 0.9em;
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.25;
  white-space: nowrap;
  cursor: pointer;
  text-decoration: none;
  min-width: 7.5em;
  width: max-content;
  max-width: 100%;
  text-align: center;
  -webkit-tap-highlight-color: transparent;
}
/* Sub-stack bulk toggles (not main card): no Questions-row alignment offset */
.viva-builder-page__subdomains-toggle-all--in-nested {
  margin-inline-start: 0;
}
/* --text-h / --surface follow theme tokens (outline was hardcoded #000 and vanished on dark UI). */
.viva-builder-page__subdomains-toggle-all--fill {
  background: var(--text-h);
  border-color: var(--text-h);
  color: var(--surface);
}
.viva-builder-page__subdomains-toggle-all--fill:hover {
  background: color-mix(in srgb, var(--text-h) 85%, var(--surface));
  border-color: color-mix(in srgb, var(--text-h) 85%, var(--surface));
  color: var(--surface);
}
.viva-builder-page__subdomains-toggle-all--outline {
  background: transparent;
  border-color: color-mix(in srgb, var(--text-h) 92%, var(--border));
  color: var(--text-h);
}
.viva-builder-page__subdomains-toggle-all--outline:hover {
  background: color-mix(in srgb, var(--text-h) 10%, var(--surface));
  border-color: color-mix(in srgb, var(--text-h) 88%, var(--border));
}
.viva-builder-page__subdomains-toggle-all:disabled,
.viva-builder-page__subdomains-toggle-all--locked {
  cursor: not-allowed;
  opacity: 0.42;
  filter: grayscale(0.55);
}
.viva-builder-page__subdomains-toggle-all:disabled:hover,
.viva-builder-page__subdomains-toggle-all--locked:hover {
  background: transparent;
  border-color: color-mix(in srgb, var(--text-h) 92%, var(--border));
  color: var(--text-h);
}
/* Night: same secondary-chip language as `.viva-builder-page__choose-station` so the pill reads clearly on var(--bg). */
[data-theme='dark'] .viva-builder-page__subdomains-toggle-all--outline {
  background: color-mix(in srgb, var(--surface) 72%, var(--text-h) 14%);
  border-color: var(--border);
  color: var(--text-h);
}
[data-theme='dark'] .viva-builder-page__subdomains-toggle-all--outline:hover {
  background: color-mix(in srgb, var(--surface) 62%, var(--text-h) 22%);
  border-color: color-mix(in srgb, var(--text-h) 35%, var(--border));
  color: var(--text-h);
}
[data-theme='dark'] .viva-builder-page__subdomains-toggle-all--fill:hover {
  background: color-mix(in srgb, var(--text-h) 88%, var(--surface));
  border-color: color-mix(in srgb, var(--text-h) 88%, var(--surface));
}
.viva-builder-page__subdomains-toggle-all:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 2px;
}
/* Invisible stand-in when collapsed: keeps row height aligned with the real toggle button. */
.viva-builder-page__subdomains-toggle-all--height-placeholder {
  visibility: hidden;
  pointer-events: none;
  user-select: none;
}
.viva-builder-page__field--questions {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  column-gap: 0.5rem;
  width: 100%;
  min-width: 0;
  font-size: inherit;
}
/* Skeleton must be inline-block so width/height apply; sits in grid column 2 beside “Questions:” */
.viva-builder-page__field--questions .viva-builder-page__skeleton--questions {
  display: inline-block;
  box-sizing: border-box;
  flex: none;
  width: 2.75rem;
  min-width: 2rem;
  max-width: 100%;
  min-height: 0.75rem;
  vertical-align: middle;
  justify-self: start;
}
.viva-builder-page__field--questions .viva-builder-page__questions-count {
  display: inline-flex;
  align-items: center;
  justify-self: start;
  min-width: 0;
  min-height: 1em;
  font-variant-numeric: tabular-nums;
  color: var(--text-h, #000);
}
.viva-builder-page__field--questions .viva-builder-page__questions-count--viva-zero {
  color: #b71c1c;
  font-weight: 700;
}
[data-theme='dark'] .viva-builder-page__field--questions .viva-builder-page__questions-count--viva-zero {
  color: #fca5a5;
}
.viva-builder-page__skeleton {
  flex: 1 1 4rem;
  min-width: 3rem;
  min-height: 0.7rem;
  border-radius: 4px;
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--text-h) 7%, var(--site-index-bg)) 0%,
    color-mix(in srgb, var(--text-h) 16%, var(--site-index-bg)) 42%,
    color-mix(in srgb, var(--text-h) 7%, var(--site-index-bg)) 100%
  );
  background-size: 220% 100%;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__skeleton {
    animation: viva-builder-skeleton-shimmer 1.35s ease-in-out infinite;
  }
}
@keyframes viva-builder-skeleton-shimmer {
  0% {
    background-position: 100% 0;
  }

  100% {
    background-position: -100% 0;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__card.directory-card {
    transition: transform 0.32s cubic-bezier(0.34, 1.2, 0.64, 1);
  }

  .viva-builder-page__card.directory-card .directory-card__title {
    transform-origin: top left;
  }

  .viva-builder-page__card.directory-card:hover {
    transform: translateY(-4px);
  }
}
@media (prefers-reduced-motion: reduce) {
  .viva-builder-page__card.directory-card:hover {
    transform: none;
  }
}
@keyframes viva-ring-d0 {
  0%, 0.30% { opacity: 0; transform: rotate(0deg) translateY(-0.3125rem) scale(0.45); }
  0.40%, 41.90% { opacity: 1; transform: rotate(0deg) translateY(-0.3125rem) scale(1); }
  42.00%, 44.00% { opacity: 0; transform: rotate(0deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(0deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d1 {
  0%, 2.50% { opacity: 0; transform: rotate(30deg) translateY(-0.3125rem) scale(0.45); }
  2.60%, 45.10% { opacity: 1; transform: rotate(30deg) translateY(-0.3125rem) scale(1); }
  45.20%, 47.20% { opacity: 0; transform: rotate(30deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(30deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d2 {
  0%, 4.70% { opacity: 0; transform: rotate(60deg) translateY(-0.3125rem) scale(0.45); }
  4.80%, 48.30% { opacity: 1; transform: rotate(60deg) translateY(-0.3125rem) scale(1); }
  48.40%, 50.40% { opacity: 0; transform: rotate(60deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(60deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d3 {
  0%, 6.90% { opacity: 0; transform: rotate(90deg) translateY(-0.3125rem) scale(0.45); }
  7.00%, 51.50% { opacity: 1; transform: rotate(90deg) translateY(-0.3125rem) scale(1); }
  51.60%, 53.60% { opacity: 0; transform: rotate(90deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(90deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d4 {
  0%, 9.10% { opacity: 0; transform: rotate(120deg) translateY(-0.3125rem) scale(0.45); }
  9.20%, 54.70% { opacity: 1; transform: rotate(120deg) translateY(-0.3125rem) scale(1); }
  54.80%, 56.80% { opacity: 0; transform: rotate(120deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(120deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d5 {
  0%, 11.30% { opacity: 0; transform: rotate(150deg) translateY(-0.3125rem) scale(0.45); }
  11.40%, 57.90% { opacity: 1; transform: rotate(150deg) translateY(-0.3125rem) scale(1); }
  58.00%, 60.00% { opacity: 0; transform: rotate(150deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(150deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d6 {
  0%, 13.50% { opacity: 0; transform: rotate(180deg) translateY(-0.3125rem) scale(0.45); }
  13.60%, 61.10% { opacity: 1; transform: rotate(180deg) translateY(-0.3125rem) scale(1); }
  61.20%, 63.20% { opacity: 0; transform: rotate(180deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(180deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d7 {
  0%, 15.70% { opacity: 0; transform: rotate(210deg) translateY(-0.3125rem) scale(0.45); }
  15.80%, 64.30% { opacity: 1; transform: rotate(210deg) translateY(-0.3125rem) scale(1); }
  64.40%, 66.40% { opacity: 0; transform: rotate(210deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(210deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d8 {
  0%, 17.90% { opacity: 0; transform: rotate(240deg) translateY(-0.3125rem) scale(0.45); }
  18.00%, 67.50% { opacity: 1; transform: rotate(240deg) translateY(-0.3125rem) scale(1); }
  67.60%, 69.60% { opacity: 0; transform: rotate(240deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(240deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d9 {
  0%, 20.10% { opacity: 0; transform: rotate(270deg) translateY(-0.3125rem) scale(0.45); }
  20.20%, 70.70% { opacity: 1; transform: rotate(270deg) translateY(-0.3125rem) scale(1); }
  70.80%, 72.80% { opacity: 0; transform: rotate(270deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(270deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d10 {
  0%, 22.30% { opacity: 0; transform: rotate(300deg) translateY(-0.3125rem) scale(0.45); }
  22.40%, 73.90% { opacity: 1; transform: rotate(300deg) translateY(-0.3125rem) scale(1); }
  74.00%, 76.00% { opacity: 0; transform: rotate(300deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(300deg) translateY(-0.3125rem) scale(0.45); }
}
@keyframes viva-ring-d11 {
  0%, 24.50% { opacity: 0; transform: rotate(330deg) translateY(-0.3125rem) scale(0.45); }
  24.60%, 77.10% { opacity: 1; transform: rotate(330deg) translateY(-0.3125rem) scale(1); }
  77.20%, 79.20% { opacity: 0; transform: rotate(330deg) translateY(-0.3125rem) scale(0.45); }
  100% { opacity: 0; transform: rotate(330deg) translateY(-0.3125rem) scale(0.45); }
}
.viva-builder-page__done {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  margin: 0;
  padding: 0.65rem 1.85rem;
  border: none;
  border-radius: 999px;
  font-family: var(--heading, inherit);
  font-size: clamp(0.84rem, 1.5vw, 0.9375rem);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.2;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 8%, transparent),
    0 8px 32px color-mix(in srgb, var(--text-h) 18%, transparent);
  transition:
    background-color 0.24s ease,
    color 0.24s ease,
    border-color 0.24s ease,
    box-shadow 0.24s ease,
    transform 0.24s ease;
  -webkit-tap-highlight-color: transparent;
}
[data-theme='light'] .viva-builder-page__done {
  background: #1a1a1a;
  color: #fff;
}
[data-theme='light'] .viva-builder-page__done:not(:disabled):hover {
  background: #333333;
  color: #fff;
}
[data-theme='dark'] .viva-builder-page__done {
  background: var(--cta-pill-bg);
  color: var(--cta-pill-fg);
}
[data-theme='dark'] .viva-builder-page__done:not(:disabled):hover {
  background: var(--cta-pill-bg-hover);
  color: var(--cta-pill-fg-hover);
}
.viva-builder-page__done:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
/* Station builder hub CTA: grey pill (same family as option pills), not black Start viva */
.viva-builder-page__choose-station.viva-builder-page__done {
  box-shadow: none;
  animation: none;
}
[data-theme='light'] .viva-builder-page__choose-station.viva-builder-page__done {
  background: color-mix(in srgb, var(--site-index-bg) 90%, var(--text-h) 10%);
  color: var(--text-h);
  border: 1px solid var(--border);
}
[data-theme='light'] .viva-builder-page__choose-station.viva-builder-page__done:not(:disabled):hover {
  background: color-mix(in srgb, var(--site-index-bg) 82%, var(--text-h) 18%);
  border-color: color-mix(in srgb, var(--text-h) 22%, var(--border));
  color: var(--text-h);
}
[data-theme='dark'] .viva-builder-page__choose-station.viva-builder-page__done {
  background: color-mix(in srgb, var(--surface) 72%, var(--text-h) 14%);
  color: var(--text-h);
  border: 1px solid var(--border);
}
[data-theme='dark'] .viva-builder-page__choose-station.viva-builder-page__done:not(:disabled):hover {
  background: color-mix(in srgb, var(--surface) 62%, var(--text-h) 22%);
  border-color: color-mix(in srgb, var(--text-h) 35%, var(--border));
  color: var(--text-h);
}
.viva-builder-page__done:disabled {
  cursor: default;
}
.viva-builder-page__done--blocked {
  cursor: not-allowed;
}
.viva-builder-page__start-viva-warning {
  margin: 0;
  max-width: min(100%, 22rem);
  font-size: 0.875rem;
  line-height: 1.4;
  text-align: center;
  color: color-mix(in srgb, #c53030 82%, var(--text-h));
}
.viva-builder-page__start-viva-reorder-hint {
  margin: 0;
  max-width: min(100%, 22rem);
  font-size: 0.875rem;
  line-height: 1.4;
  text-align: center;
  color: var(--text-muted);
}
.viva-builder-page__start-viva-reorder-hint--mobile {
  display: none;
}
@media (max-width: 48rem) {
  .viva-builder-page__start-viva-reorder-hint--desktop {
    display: none;
  }

  .viva-builder-page__start-viva-reorder-hint--mobile {
    display: inline;
  }
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__done {
    animation: viva-builder-done-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) both;
  }

}
@media (prefers-reduced-motion: reduce) {
  .viva-builder-page__done {
    opacity: 1;
    transform: none;
  }
}
@keyframes viva-builder-done-in {
  from {
    opacity: 0;
    transform: scale(0.92);
  }

  to {
    opacity: 1;
    transform: scale(1);
  }
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__done--fade-out {
    animation: viva-builder-station-cta-fade-out 0.5s ease both !important;
  }

  .viva-builder-page__done--fade-in {
    animation: viva-builder-station-cta-fade-in 0.5s ease both !important;
  }
}
@keyframes viva-builder-station-cta-fade-out {
  0% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}
@keyframes viva-builder-station-cta-fade-in {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}
/* Full-viewport white fade when starting a viva (covers workspace chrome) */
.viva-builder-page__viva-fade-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: #fff;
  pointer-events: auto;
}
[data-theme='dark'] .viva-builder-page__viva-fade-overlay {
  background: #000;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__viva-fade-overlay {
    opacity: 0;
    animation: viva-builder-viva-fade-to-white 3s linear forwards;
  }
}
@media (prefers-reduced-motion: reduce) {
  .viva-builder-page__viva-fade-overlay {
    opacity: 1;
  }
}
@keyframes viva-builder-viva-fade-to-white {
  0% {
    opacity: 0;
  }
  33.333% {
    opacity: 1;
  }
  66.666% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
/* Builder → application: first half of 2s transition (holds at white until navigate). */
.viva-builder-page__application-route-fade-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: #fff;
  pointer-events: auto;
}
[data-theme='dark'] .viva-builder-page__application-route-fade-overlay {
  background: #000;
}
@media (prefers-reduced-motion: no-preference) {
  .viva-builder-page__application-route-fade-overlay {
    opacity: 0;
    animation: viva-builder-application-route-fade-in 1s linear forwards;
  }
}
@media (prefers-reduced-motion: reduce) {
  .viva-builder-page__application-route-fade-overlay {
    opacity: 1;
  }
}
@keyframes viva-builder-application-route-fade-in {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}
/* Free-plan locked topic / subdomain (replaces system `alert`) */
.viva-builder-subscription-notice {
  position: fixed;
  inset: 0;
  z-index: 10100;
  box-sizing: border-box;
}
.viva-builder-subscription-notice__backdrop {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: color-mix(in srgb, var(--text-h) 52%, transparent);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.viva-builder-subscription-notice__frame {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: max(1rem, env(safe-area-inset-top, 0px)) max(1rem, env(safe-area-inset-right, 0px))
    max(1rem, env(safe-area-inset-bottom, 0px)) max(1rem, env(safe-area-inset-left, 0px));
  pointer-events: none;
}
.viva-builder-subscription-notice__panel {
  pointer-events: auto;
  box-sizing: border-box;
  width: min(100%, min(92vw, 26rem));
  padding: 1.15rem 1.2rem 1.25rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: var(--elevated-photo-shadow);
}
.viva-builder-subscription-notice__title {
  margin: 0 0 0.65rem;
  font-family: var(--heading);
  font-size: 1.2rem;
  font-weight: 600;
  color: var(--text-h);
}
.viva-builder-subscription-notice__body {
  margin: 0 0 1.1rem;
  font-size: 0.98rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.viva-builder-subscription-notice__actions {
  display: flex;
  justify-content: flex-end;
}
.viva-builder-subscription-notice__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 5rem;
  margin: 0;
  padding: 0.5rem 1rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font: inherit;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--surface);
  background: var(--text-h);
  cursor: pointer;
  transition:
    opacity 0.15s ease,
    border-color 0.15s ease,
    background 0.15s ease;
}
.viva-builder-subscription-notice__btn:hover {
  opacity: 0.92;
}
.viva-builder-subscription-notice__btn:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 2px;
}
.guest-session-audio-notice__panel {
  text-align: center;
}
.guest-session-audio-notice__icon {
  display: flex;
  justify-content: center;
  margin: 0.15rem 0 0.85rem;
  color: var(--text-h);
}
.guest-session-audio-notice__icon svg {
  width: 1.75rem;
  height: 1.75rem;
}
.guest-session-audio-notice__actions {
  justify-content: center;
}
/* /faq — same tokens as pricing / values tiles; readable column + disclosure rows */
.page.faq-page {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin-inline: 0;
}
.faq-page__inner {
  width: 100%;
  max-width: min(40rem, 100%);
  margin-inline: auto;
  box-sizing: border-box;
}
.faq-page__title {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(2.25rem, 6vw, 3.25rem);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.12;
  color: var(--text-h);
}
.faq-page__intro {
  margin: clamp(0.85rem, 2vw, 1.15rem) 0 0;
  font-size: clamp(0.95rem, 1.8vw, 1.0625rem);
  line-height: 1.55;
  color: var(--text);
}
.faq-page__list {
  display: flex;
  flex-direction: column;
  gap: clamp(0.75rem, 2vw, 1rem);
  margin-top: clamp(1.5rem, 4vw, 2.25rem);
}
.faq-page__item {
  border: none;
  border-radius: 14px;
  background: var(--site-index-bg);
  box-sizing: border-box;
  overflow: hidden;
}
.faq-page__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: clamp(1.1rem, 2.5vw, 1.35rem) clamp(1.2rem, 2.5vw, 1.5rem);
  cursor: pointer;
  list-style: none;
  font-family: var(--heading);
  font-size: clamp(1rem, 2vw, 1.125rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.3;
  color: var(--text-h);
}
.faq-page__summary::-webkit-details-marker {
  display: none;
}
.faq-page__question {
  flex: 1 1 auto;
  min-width: 0;
  text-align: left;
}
.faq-page__chevron {
  flex-shrink: 0;
  width: 0.55rem;
  height: 0.55rem;
  border-right: 2px solid var(--text-muted);
  border-bottom: 2px solid var(--text-muted);
  transform: rotate(45deg);
  translate: 0 -0.15rem;
  transition: transform 0.2s ease, border-color 0.15s ease;
}
.faq-page__item[open] .faq-page__chevron {
  transform: rotate(225deg);
  translate: 0 0.1rem;
}
.faq-page__summary:hover .faq-page__chevron {
  border-color: var(--text-h);
}
.faq-page__answer {
  padding: 0 clamp(1.2rem, 2.5vw, 1.5rem) clamp(1.1rem, 2.5vw, 1.35rem);
  border-top: 1px solid color-mix(in srgb, var(--text-h) 8%, transparent);
}
.faq-page__answer p {
  margin: clamp(0.75rem, 2vw, 0.95rem) 0 0;
  font-size: 0.9125rem;
  line-height: 1.55;
  color: var(--text);
}
/* Beat `.page p { margin: 0 0 1rem }` — that shorthand was zeroing margin-top here */
.page.faq-page .faq-page__outro {
  margin: clamp(1.375rem, 3.5vw, 2rem) 0 1rem;
  text-align: center;
  font-size: 0.9125rem;
  line-height: 1.5;
  color: var(--text-muted);
}
.page.faq-page .faq-page__outro > p {
  margin: 0.65rem 0 0;
}
.page.faq-page .faq-page__outro > p:first-child {
  margin-top: 0;
}
.faq-page__link {
  color: var(--text-h);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.faq-page__link:hover {
  color: var(--text-interactive-hover);
}
[data-theme='dark'] .faq-page__item {
  background: var(--surface);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-panel-raised);
}
[data-theme='dark'] .faq-page__answer {
  border-top-color: var(--border);
}
/* /progress-info — reuse home strip layout */
.progress-info-page .home-article > .home-post-lede-strip-cq:first-of-type {
  margin-top: 2.85rem;
}
/*
 * Full progress dashboard in the marketing iframe: use the shared iframe downscale
 * (138.889% layout × scale(0.72) on narrow viewports in pages-home.css) so text
 * is laid out at readable sizes then scaled — not shrunk with sub-12px fonts.
 * Density inside the iframe comes from `.progress-page--demo-embed-full` + embedMobile padding.
 */
/* /progress/dashboard — analytics dashboard */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
body.progress-drawer-open {
  overflow: hidden;
}
/* Page shell */
.page.progress-page {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin-inline: 0;
  padding: clamp(1.25rem, 3vw, 2rem) clamp(1rem, 4vw, 2.5rem) clamp(2.5rem, 6vh, 4rem);
}
.progress-page--demo-embed.page {
  min-height: auto;
  margin: 0;
  padding: clamp(0.65rem, 1.8vw, 1.1rem);
  background: var(--bg);
}
.progress-page--demo-embed .progress-page__inner {
  gap: 0.75rem;
}
.progress-page--demo-embed .progress-readiness {
  padding: clamp(0.85rem, 2.2vw, 1.15rem);
}
.progress-page--demo-embed .progress-readiness__intro {
  gap: 0.35rem;
}
.progress-page--demo-embed .progress-domain-card {
  padding: 0.75rem 0.85rem;
}
/*
 * Marketing progress iframe on narrow viewports (`embedMobile=1` from parent).
 * Parent iframe uses layout downscale (pages-home.css); keep readable typography
 * here — only tighten spacing and allow scroll.
 */
.progress-page--demo-embed.progress-page--demo-embed-mobile.page {
  min-height: 0;
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding-block: 3px;
  padding-inline: 0;
  -webkit-font-smoothing: subpixel-antialiased;
}
.progress-page--demo-embed-mobile .progress-page__inner {
  gap: 0.45rem;
}
.progress-page--demo-embed-mobile .progress-readiness {
  padding: 0.55rem 0.65rem;
  gap: 0.5rem;
}
.progress-page--demo-embed-mobile .progress-readiness__hero {
  gap: 0.55rem;
}
.progress-page--demo-embed-mobile .progress-readiness__stats {
  gap: 0.4rem;
}
.progress-page--demo-embed-mobile .progress-domain-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.45rem;
}
.progress-page--demo-embed-mobile .progress-domain-card {
  padding: 0.55rem 0.6rem;
}
.progress-page--demo-embed-mobile .progress-section {
  padding: 0.55rem 0.65rem;
}
.progress-page--demo-embed-mobile .progress-speech__body {
  gap: 0.5rem;
}
.progress-page--demo-embed-mobile .progress-history__cards {
  gap: 0.5rem;
}
/* `/progress-info` iframe: full mock dashboard (speech + history) — denser + scrollable */
.progress-page--demo-embed-full.page {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.progress-page--demo-embed-full .progress-page__inner {
  gap: 0.55rem;
}
.progress-page--demo-embed-full .progress-readiness {
  padding: clamp(0.65rem, 1.6vw, 0.9rem);
  gap: 0.65rem;
}
.progress-page--demo-embed-full .progress-readiness__question {
  font-size: clamp(1.05rem, 2.8vw, 1.35rem);
}
.progress-page--demo-embed-full .progress-readiness__lede {
  font-size: 0.75rem;
  line-height: 1.4;
}
.progress-page--demo-embed-full .progress-readiness__hero {
  gap: 0.75rem;
}
.progress-page--demo-embed-full .progress-readiness__stats {
  gap: 0.45rem;
}
.progress-page--demo-embed-full .progress-section {
  padding: 0.65rem 0.75rem;
}
.progress-page--demo-embed-full .progress-section__header {
  margin-bottom: 0.55rem;
}
.progress-page--demo-embed-full .progress-section__title {
  font-size: 0.95rem;
}
.progress-page--demo-embed-full .progress-section__desc {
  font-size: 0.75rem;
  margin-top: 0.2rem;
}
.progress-page--demo-embed-full .progress-domain-card__main {
  padding: 0.5rem 0.6rem;
}
.progress-page--demo-embed-full .progress-speech__body {
  gap: 0.55rem;
}
.progress-page--demo-embed-full .progress-history__table th,
.progress-page--demo-embed-full .progress-history__table td {
  padding: 0.35rem 0.45rem;
  font-size: 0.72rem;
}
.progress-page--demo-embed-full .progress-history__table th {
  font-size: 0.65rem;
}
.progress-page__inner {
  display: flex;
  flex-direction: column;
  gap: clamp(1.5rem, 4vw, 2.25rem);
  width: 100%;
  max-width: min(72rem, 100%);
  margin-inline: auto;
}
.progress-page__stack {
  display: flex;
  flex-direction: column;
  gap: clamp(1rem, 2.5vw, 1.35rem);
}
/* Shared panel primitive — aligned with directory-card */
.progress-panel,
.progress-section,
.progress-readiness,
.progress-empty,
.progress-error {
  background: var(--site-index-bg);
  border: none;
  border-radius: 6px;
  box-shadow: var(--progress-panel-shadow);
}
.progress-panel--interactive {
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease;
}
.progress-panel--interactive:hover {
  transform: translateY(-2px);
  box-shadow: var(--progress-panel-shadow-hover);
}
.progress-panel--interactive:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
/* Segmented control */
.progress-segmented {
  display: inline-flex;
  padding: 0.2rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--text-h) 6%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--text-h) 10%, transparent);
}
.progress-segmented--compact {
  width: fit-content;
}
.progress-segmented__btn {
  padding: 0.4rem 0.85rem;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.progress-segmented__btn:hover:not(:disabled) {
  color: var(--text-h);
}
.progress-segmented__btn--active {
  background: var(--surface);
  color: var(--text-h);
  box-shadow: 0 1px 4px color-mix(in srgb, var(--text-h) 12%, transparent);
}
.progress-segmented__btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
/* Section panels */
.progress-section {
  padding: clamp(1rem, 3vw, 1.25rem);
}
.progress-section__header {
  margin-bottom: 1rem;
}
.progress-section__title {
  margin: 0;
  font-family: var(--heading);
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--text-h);
}
.progress-section__desc {
  margin: 0.35rem 0 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--text-muted);
}
/* Readiness hero */
.progress-readiness {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  padding: clamp(1.15rem, 3vw, 1.5rem);
}
.progress-readiness__intro {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.progress-readiness__eyebrow {
  margin: 0;
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.progress-readiness__question {
  margin: 0;
  font-family: var(--heading);
  font-size: clamp(1.35rem, 3.5vw, 1.85rem);
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--text-h);
}
.progress-readiness__lede {
  margin: 0.35rem 0 0;
  max-width: 38rem;
  font-size: 0.8125rem;
  line-height: 1.5;
  color: color-mix(in srgb, var(--text-muted) 92%, var(--text-h));
}
.progress-readiness__hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
  align-items: start;
}
@media (min-width: 768px) {
  .progress-readiness__hero {
    grid-template-columns: minmax(12rem, auto) 1fr;
    align-items: start;
  }
}
.progress-readiness__aside {
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  min-width: 0;
}
.progress-readiness__projection-card {
  padding: 0.85rem 1rem;
  border-radius: 6px;
  background: color-mix(in srgb, var(--surface) 55%, var(--site-index-bg));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 8%, transparent),
    0 2px 6px color-mix(in srgb, var(--text-h) 6%, transparent);
}
.progress-readiness__projection-title {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--text-muted);
}
.progress-readiness__projection-value {
  margin: 0.25rem 0 0;
  font-family: var(--heading);
  font-size: 1.35rem;
  font-weight: 600;
  color: var(--text-h);
}
.progress-readiness__projection-unit {
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--text-muted);
}
.progress-readiness__projection-note {
  margin: 0.35rem 0 0;
  font-size: 0.78rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.progress-readiness__stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 0;
}
@media (min-width: 640px) {
  .progress-readiness__stats {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
.progress-readiness__how {
  padding: 0.75rem 0.85rem;
  border-radius: 6px;
  background: color-mix(in srgb, var(--text-h) 3%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--text-h) 8%, transparent);
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--text-muted);
}
.progress-readiness__how summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--text-h);
}
.progress-readiness__how p {
  margin: 0.5rem 0 0;
}
/* Readiness skeleton */
.progress-readiness--loading {
  gap: 1rem;
}
.progress-readiness__skeleton-intro {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.progress-readiness__skeleton-hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 768px) {
  .progress-readiness__skeleton-hero {
    grid-template-columns: minmax(8rem, auto) 1fr;
    align-items: center;
  }
}
.progress-readiness__skeleton-gauge {
  width: clamp(7.5rem, 24vw, 9rem);
  aspect-ratio: 1;
  margin-inline: auto;
  border-radius: 50%;
}
.progress-readiness__skeleton-aside {
  min-height: 5rem;
  border-radius: 6px;
}
/* Gauge */
.progress-gauge {
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.65rem;
}
.progress-gauge--readiness {
  width: auto;
  min-height: 0;
  margin-inline: auto;
  gap: 0.5rem;
}
.progress-gauge--readiness .progress-gauge__ring {
  width: clamp(7.5rem, 24vw, 9rem);
  flex-shrink: 0;
}
.progress-segmented--gauge {
  width: fit-content;
  max-width: 100%;
  padding: 0.14rem 0.18rem;
  border-radius: 999px;
}
.progress-segmented--gauge .progress-segmented__btn--segment {
  flex: 0 1 auto;
  min-width: 0;
  padding: 0.2rem 0.45rem;
  font-size: clamp(0.625rem, 2.2vw, 0.6875rem);
  font-weight: 600;
  letter-spacing: 0;
  text-align: center;
  white-space: nowrap;
}
.progress-segmented__divider {
  flex-shrink: 0;
  align-self: center;
  padding: 0 0.08rem;
  font-size: clamp(0.58rem, 2vw, 0.625rem);
  font-weight: 500;
  line-height: 1;
  color: color-mix(in srgb, var(--text-muted) 70%, transparent);
  user-select: none;
  pointer-events: none;
}
.progress-gauge__ring {
  --gauge-pct: 0;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: clamp(7rem, 22vw, 8.5rem);
  aspect-ratio: 1;
  border-radius: 50%;
  background: conic-gradient(
    var(--cta-pill-bg) calc(var(--gauge-pct) * 1%),
    color-mix(in srgb, var(--text-h) 10%, transparent) 0
  );
}
.progress-gauge__ring::before {
  content: '';
  position: absolute;
  inset: 12%;
  border-radius: 50%;
  background: var(--site-index-bg);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--text-h) 6%, transparent);
}
.progress-gauge__value-row {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: baseline;
  justify-content: center;
  min-width: 4.25rem;
  width: 100%;
  line-height: 1;
  text-align: center;
}
.progress-gauge__value {
  font-family: var(--heading);
  font-size: clamp(1.75rem, 5vw, 2.25rem);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text-h);
}
.progress-gauge__unit {
  margin-left: 0.1rem;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--text-muted);
}
.progress-gauge__caption {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.2rem;
  text-align: center;
  font-size: 0.875rem;
  color: var(--text-muted);
}
.progress-gauge__status--on_track {
  color: color-mix(in srgb, var(--status-pass-fg) 90%, var(--text-h));
}
.progress-gauge__status--borderline {
  color: color-mix(in srgb, var(--status-borderline-fg) 90%, var(--text-h));
}
.progress-gauge__status--behind {
  color: color-mix(in srgb, var(--status-fail-fg) 85%, var(--text-h));
}
.progress-gauge__sub {
  display: block;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
  text-align: center;
}
/* Stat tiles */
.progress-stat {
  padding: 0.75rem 0.85rem;
  border-radius: 6px;
  background: color-mix(in srgb, var(--surface) 50%, var(--site-index-bg));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 6%, transparent);
}
.progress-stat dt {
  margin: 0 0 0.2rem;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
}
.progress-stat dd {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--text-h);
}
.progress-stat__hint {
  margin: 0.15rem 0 0 !important;
  font-size: 0.68rem !important;
  font-weight: 500 !important;
  line-height: 1.35;
  color: var(--text-muted) !important;
}
/* Domain grid */
.progress-domain-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  align-items: stretch;
  gap: 0.65rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
@media (max-width: 960px) {
  .progress-domain-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 640px) {
  .progress-domain-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 420px) {
  .progress-domain-grid {
    grid-template-columns: 1fr;
  }
}
.progress-domain-grid > li {
  display: flex;
}
.progress-domain-card {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  height: 100%;
  padding: 0;
  border: none;
  border-radius: 6px;
  background: var(--site-index-bg);
  box-shadow: var(--progress-panel-shadow);
  text-align: left;
  overflow: hidden;
  box-sizing: border-box;
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease;
}
.progress-domain-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--progress-panel-shadow-hover);
}
.progress-domain-card__main {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  width: 100%;
  height: 100%;
  padding: 0.65rem 0.75rem;
  box-sizing: border-box;
  text-align: left;
  color: inherit;
  cursor: default;
}
.progress-domain-card__header {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
}
.progress-domain-card__header h4 {
  margin: 0;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.25;
  color: var(--text-h);
}
.progress-domain-card__score {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--text-h);
}
.progress-domain-card__score-label {
  display: block;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
}
.progress-domain-card__verdict-bar {
  display: flex;
  width: 100%;
  height: 0.5rem;
  margin: 0.15rem 0 0;
  border-radius: 999px;
  overflow: hidden;
  box-sizing: border-box;
  background: linear-gradient(
    to right,
    color-mix(in srgb, var(--status-pass) 85%, var(--surface)) 0,
    color-mix(in srgb, var(--status-pass) 85%, var(--surface)) var(--verdict-pass, 0%),
    color-mix(in srgb, var(--status-borderline) 85%, var(--surface)) var(--verdict-pass, 0%),
    color-mix(in srgb, var(--status-borderline) 85%, var(--surface))
      calc(var(--verdict-pass, 0%) + var(--verdict-borderline, 0%)),
    color-mix(in srgb, var(--status-fail) 80%, var(--surface))
      calc(var(--verdict-pass, 0%) + var(--verdict-borderline, 0%)),
    color-mix(in srgb, var(--status-fail) 80%, var(--surface)) 100%
  );
}
.progress-domain-card__verdict-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  margin-bottom: 0;
  font-size: 0.68rem;
  color: var(--text-muted);
}
.progress-domain-card__verdict-key::before {
  content: '';
  display: inline-block;
  width: 0.55rem;
  height: 0.55rem;
  margin-right: 0.25rem;
  border-radius: 0.15rem;
  vertical-align: -0.05rem;
}
.progress-domain-card__verdict-key--pass::before {
  background: color-mix(in srgb, var(--status-pass) 85%, var(--surface));
}
.progress-domain-card__verdict-key--borderline::before {
  background: color-mix(in srgb, var(--status-borderline) 85%, var(--surface));
}
.progress-domain-card__verdict-key--fail::before {
  background: color-mix(in srgb, var(--status-fail) 80%, var(--surface));
}
.progress-domain-card__meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.35rem;
  margin: 0.15rem 0 0;
  font-size: 0.75rem;
}
.progress-domain-grid .progress-domain-card__meta > div {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.1rem;
  text-align: center;
}
.progress-domain-card__meta dt {
  margin: 0;
  color: var(--text-muted);
}
.progress-domain-card__meta dd {
  margin: 0;
  font-weight: 600;
  color: var(--text);
}
.progress-domain-card--insufficient {
  opacity: 0.72;
}
.progress-domain-card--insufficient:hover {
  transform: none;
  box-shadow: var(--progress-panel-shadow);
}
.progress-domain-card__score--attempts {
  font-size: 1.125rem;
}
.progress-domain-card__insufficient-msg {
  margin: 0.65rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
}
/* Evidence links */
.progress-evidence {
  margin-top: 0;
  padding: 0.65rem 0.9rem 0.85rem;
  border-top: 1px solid color-mix(in srgb, var(--text-h) 8%, transparent);
  width: 100%;
}
.progress-evidence__label {
  display: block;
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
}
.progress-evidence__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.65rem;
  margin: 0.3rem 0 0;
  padding: 0;
  list-style: none;
}
.progress-evidence__link {
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--accent);
  text-decoration: underline;
  cursor: pointer;
}
.progress-evidence__link:hover {
  color: var(--accent-hover);
}
/* Speech */
.progress-speech__body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.progress-speech__focus {
  padding: 0.85rem 1rem;
  border-radius: 8px;
  background: color-mix(in srgb, var(--accent) 8%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--accent) 18%, transparent);
}
.progress-speech__focus-eyebrow {
  margin: 0 0 0.25rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
}
.progress-speech__focus-line {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.45;
  color: var(--text-h);
}
.progress-speech__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 0;
}
@media (min-width: 900px) {
  .progress-speech__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
.progress-stat--delivery dd {
  font-size: 1.35rem;
}
.progress-stat__unit {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--text-muted);
}
.progress-speech__badge {
  display: inline-flex;
  margin-top: 0.35rem;
  padding: 0.12rem 0.45rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--text-muted);
  background: color-mix(in srgb, var(--text-h) 6%, var(--surface));
}
.progress-speech__badge--good {
  color: color-mix(in srgb, var(--status-pass-fg) 90%, var(--text-h));
  background: color-mix(in srgb, var(--status-pass) 14%, var(--surface));
}
.progress-speech__hint {
  display: block;
  margin-top: 0.25rem;
  font-size: 0.75rem;
  color: var(--text-muted);
}
.progress-speech__themes {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.progress-speech-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.progress-speech-chip {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 600;
}
.progress-speech-chip--good {
  color: color-mix(in srgb, var(--status-pass-fg) 90%, var(--text-h));
  background: color-mix(in srgb, var(--status-pass) 14%, var(--surface));
}
.progress-speech-chip--warn {
  color: color-mix(in srgb, var(--status-borderline-fg) 90%, var(--text-h));
  background: color-mix(in srgb, var(--status-borderline) 16%, var(--surface));
}
.progress-speech-chip--neutral {
  color: var(--text-muted);
  background: color-mix(in srgb, var(--text-h) 6%, var(--surface));
}
.progress-speech__empty,
.progress-history__empty {
  margin: 0;
  font-size: 0.875rem;
  color: var(--text-muted);
}
.progress-speech__tip {
  margin: 0;
  padding: 0.75rem 0.85rem;
  border-radius: 6px;
  background: color-mix(in srgb, var(--text-h) 3%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--text-h) 8%, transparent);
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
}
/* Verdict chips */
.progress-verdict {
  display: inline-flex;
  align-items: center;
  padding: 0.15rem 0.45rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.progress-verdict--pass {
  color: color-mix(in srgb, var(--status-pass-fg) 90%, var(--text-h));
  background: color-mix(in srgb, var(--status-pass) 14%, var(--surface));
}
.progress-verdict--borderline {
  color: color-mix(in srgb, var(--status-borderline-fg) 90%, var(--text-h));
  background: color-mix(in srgb, var(--status-borderline) 16%, var(--surface));
}
.progress-verdict--fail {
  color: color-mix(in srgb, var(--status-fail-fg) 90%, var(--text-h));
  background: color-mix(in srgb, var(--status-fail) 12%, var(--surface));
}
.progress-verdict--unknown {
  color: var(--text-muted);
  background: color-mix(in srgb, var(--text-h) 6%, var(--surface));
}
/* History */
.progress-history__table-wrap {
  display: none;
  overflow-x: auto;
}
.progress-history__table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  font-size: 0.8125rem;
}
.progress-history__table col {
  width: calc(100% / 6);
}
.progress-history__table th,
.progress-history__table td {
  padding: 0.55rem 0.65rem;
  text-align: left;
  border-bottom: 1px solid color-mix(in srgb, var(--text-h) 8%, transparent);
}
.progress-history__table th {
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
}
.progress-history__stem {
  max-width: 16rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.progress-history__action-btn {
  box-sizing: border-box;
  width: 100%;
  padding: 0.4rem 0.55rem;
  font-size: 0.8125rem;
  line-height: 1.2;
  white-space: nowrap;
}
.progress-history__col {
  vertical-align: middle;
  white-space: nowrap;
}
.progress-history__col--review {
  text-align: center;
}
.progress-history__col--retry {
  text-align: center;
}
.progress-history__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  justify-content: end;
  gap: 0.4rem;
  margin-top: 0.65rem;
}
.progress-history__cards {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.progress-history-card {
  padding: 0.85rem;
  border-radius: 6px;
  background: color-mix(in srgb, var(--surface) 40%, var(--site-index-bg));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 8%, transparent);
}
.progress-history-card__header {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--text-h);
}
.progress-history-card__type {
  margin: 0.25rem 0 0;
  font-size: 0.75rem;
  color: var(--text-muted);
}
.progress-history-card__stem {
  margin: 0.35rem 0 0.65rem;
  font-size: 0.875rem;
  line-height: 1.4;
  color: var(--text);
}
.progress-history-card__toggle {
  display: block;
  width: 100%;
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  text-align: left;
  color: inherit;
  cursor: pointer;
}
.progress-history-card--expanded {
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--accent) 28%, transparent),
    0 2px 8px color-mix(in srgb, var(--text-h) 8%, transparent);
}
@media (min-width: 720px) {
  .progress-history__table-wrap {
    display: block;
  }

  .progress-history__cards {
    display: none;
  }
}
.progress-history__mode {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-h);
}
.progress-history__type {
  display: block;
  font-size: 0.72rem;
  color: var(--text-muted);
}
.progress-history__action-btn--guest {
  opacity: 0.72;
  cursor: not-allowed;
}
.progress-history-row--guest {
  cursor: default;
}
.progress-history-row--guest:hover,
.progress-history-row--guest:focus-visible {
  background: transparent;
}
.progress-history-card__toggle--guest {
  cursor: default;
}
.progress-sign-in-prompt__actions {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.progress-sign-in-prompt__btn {
  text-decoration: none;
}
.progress-history-row {
  cursor: pointer;
  transition: background 0.15s ease;
}
.progress-history-row:hover,
.progress-history-row:focus-visible {
  background: color-mix(in srgb, var(--site-index-bg) 80%, var(--surface));
  outline: none;
}
.progress-history-row--detail {
  cursor: default;
  background: color-mix(in srgb, var(--text-h) 3%, var(--surface));
}
.progress-history-row--detail:hover {
  background: color-mix(in srgb, var(--text-h) 3%, var(--surface));
}
.progress-history-row__date {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.progress-history-row__chevron {
  display: inline-block;
  width: 0.75rem;
  font-size: 0.72rem;
  color: var(--text-muted);
}
.progress-history-expand {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  padding: 0.35rem 0 0.15rem;
  width: 100%;
  min-width: 0;
}
.progress-history-expand.feedback-page {
  --progress-history-feedback-inset: 0;
}
.progress-history-expand.feedback-page .feedback-page__builder-grid {
  width: 100%;
  min-width: 0;
}
.progress-history-expand.feedback-page--viva .feedback-page__builder-strip {
  flex-wrap: wrap;
}
.progress-history-expand.feedback-page .feedback-page__builder-card-slot {
  min-width: min(100%, 11rem);
  flex: 1 1 11rem;
}
@media (max-width: 719px) {
  .progress-history-expand.feedback-page--viva .feedback-page__builder-grid--has-expanded
    .feedback-page__builder-card-slot--feedback-peer-hidden {
    opacity: 1;
    pointer-events: auto;
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
  }

  .progress-history-expand.feedback-page--viva .feedback-page__builder-strip {
    flex-direction: column;
  }

  .progress-history-expand.feedback-page .feedback-page__question-panel {
    margin-top: 0.5rem;
  }
}
/* Drawer */
.progress-drawer {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  justify-content: flex-end;
}
.progress-drawer__backdrop {
  position: absolute;
  inset: 0;
  border: none;
  background: color-mix(in srgb, var(--text-h) 45%, transparent);
  cursor: pointer;
}
.progress-drawer__panel {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  width: min(100%, 28rem);
  max-height: 100%;
  background: var(--site-index-bg);
  box-shadow: var(--elevated-photo-shadow);
}
.progress-drawer__header {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 1rem 1rem 0.75rem;
  border-bottom: 1px solid color-mix(in srgb, var(--text-h) 8%, transparent);
}
.progress-drawer__meta {
  margin: 0;
  font-size: 0.75rem;
  color: var(--text-muted);
}
.progress-drawer__title {
  margin: 0.25rem 0 0;
  font-family: var(--heading);
  font-size: 1.05rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--text-h);
}
.progress-drawer__close {
  flex-shrink: 0;
  width: 2rem;
  height: 2rem;
  border: none;
  border-radius: 0.45rem;
  background: color-mix(in srgb, var(--text-h) 6%, var(--surface));
  color: var(--text-h);
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
}
.progress-drawer__body {
  flex: 1;
  overflow-y: auto;
  padding: 1rem;
}
.progress-drawer__overall {
  margin: 0 0 1rem;
  font-size: 0.875rem;
  color: var(--text-muted);
}
.progress-drawer__section-title {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-muted);
}
.progress-drawer__scores {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin: 0 0 1rem;
}
.progress-drawer__score-row {
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  font-size: 0.875rem;
}
.progress-drawer__score-row dt {
  color: var(--text-muted);
}
.progress-drawer__score-row dd {
  margin: 0;
  font-weight: 600;
  color: var(--text-h);
}
.progress-drawer__audio {
  width: 100%;
  margin-bottom: 1rem;
}
.progress-drawer__transcript,
.progress-drawer__feedback {
  margin: 0 0 1rem;
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--text);
  white-space: pre-wrap;
}
.progress-drawer__hint {
  margin: 0.5rem 0 0;
  font-size: 0.75rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.progress-drawer__suggestions {
  margin: 0 0 1rem;
  padding-left: 1.1rem;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--text);
}
.progress-drawer__suggestions--gaps li {
  color: color-mix(in srgb, var(--status-borderline-fg) 75%, var(--text));
}
.progress-drawer__footer {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  padding: 0.85rem 1rem 1rem;
  border-top: 1px solid color-mix(in srgb, var(--text-h) 8%, transparent);
}
/* Empty / error / skeleton */
.progress-empty,
.progress-error {
  padding: clamp(1.25rem, 4vw, 2rem);
  text-align: center;
}
.progress-empty__title,
.progress-error__title {
  margin: 0;
  font-family: var(--heading);
  font-size: 1.25rem;
  color: var(--text-h);
}
.progress-empty__message,
.progress-error__message {
  max-width: 28rem;
  margin: 0.65rem auto 0;
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--text-muted);
}
.progress-empty__actions,
.progress-error__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.65rem;
  margin-top: 1rem;
}
.progress-skeleton {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.progress-skeleton__row {
  height: 3.5rem;
  border-radius: 6px;
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--text-h) 5%, var(--surface)) 0%,
    color-mix(in srgb, var(--text-h) 10%, var(--surface)) 50%,
    color-mix(in srgb, var(--text-h) 5%, var(--surface)) 100%
  );
  background-size: 200% 100%;
  animation: progress-shimmer 1.2s ease-in-out infinite;
}
.progress-skeleton__row--short {
  height: 0.85rem;
  max-width: 12rem;
}
.progress-skeleton__row--medium {
  height: 1.35rem;
  max-width: 18rem;
}
.progress-skeleton__row--tall {
  height: 6rem;
}
@keyframes progress-shimmer {
  0% {
    background-position: 100% 0;
  }
  100% {
    background-position: -100% 0;
  }
}
/* /trial — centered decorative mic icon */
.page.trial-page {
  max-width: none;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  box-sizing: border-box;
}
.trial-page__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;
}
.trial-page__stage {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: min(72vh, calc(100dvh - 12rem));
  padding: 2rem 1rem;
  box-sizing: border-box;
}
/* Stack image + mic in .application-page__main; controls stay in .application-page__actions-dock so they do not shift with the image. */
.application-page .trial-page__stage {
  min-height: max(23rem, calc(100dvh - 12rem));
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
}
/* Second half of builder → application transition (1s fade out from white). */
@keyframes application-page-builder-white-reveal {
  from {
    opacity: 1;
  }

  to {
    opacity: 0;
  }
}
.application-page__builder-white-reveal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: #fff;
  pointer-events: none;
  animation: application-page-builder-white-reveal 1s linear forwards;
}
[data-theme='dark'] .application-page__builder-white-reveal {
  background: #000;
}
.application-page__main {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 0;
}
.application-page__actions-dock {
  flex-shrink: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  /* Reserve full dock height from first paint so the mic does not shift when actions mount. */
  --application-page-dock-pt: clamp(0.75rem, 2vh, 1.25rem);
  --application-page-dock-pb: max(0.35rem, env(safe-area-inset-bottom, 0px));
  --application-page-dock-row-h: 2.45rem;
  padding-top: var(--application-page-dock-pt);
  padding-bottom: var(--application-page-dock-pb);
  min-height: calc(
    var(--application-page-dock-pt) + var(--application-page-dock-row-h) +
      var(--application-page-dock-pb)
  );
  box-sizing: border-box;
}
/*
 * `/application` layout modes (see `getApplicationPageLayout` in src/lib/applicationPageLayout.ts):
 * - .application-page--layout-standard — mic only in .application-page__main
 * - .application-page--layout-with-image — image + mic in .application-page__main
 * Actions always sit in .application-page__actions-dock (same screen position either way).
 */
.application-page__preview-dock {
  position: fixed;
  right: max(0.75rem, env(safe-area-inset-right, 0px));
  bottom: max(0.75rem, env(safe-area-inset-bottom, 0px));
  z-index: 50;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.45rem;
  max-width: min(100vw - 1.5rem, 20rem);
  box-sizing: border-box;
}
.application-page__layout-switcher,
.application-page__mic-mode-switcher {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
  padding: 0.4rem 0.45rem;
  width: 100%;
  box-sizing: border-box;
  border-radius: 0.5rem;
  border: 1px solid var(--border);
  background: var(--element-bg);
  box-shadow:
    0 4px 18px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 1px 0 color-mix(in srgb, var(--text-h) 5%, transparent);
}
.application-page__layout-switcher__label {
  flex: 1 0 100%;
  margin: 0;
  padding: 0 0.1rem;
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 55%, transparent);
}
.application-page__layout-switcher__btn {
  margin: 0;
  padding: 0.32rem 0.55rem;
  border: 1px solid var(--border);
  border-radius: 0.35rem;
  font: inherit;
  font-size: 0.75rem;
  line-height: 1.2;
  color: var(--text-h);
  background: color-mix(in srgb, var(--text-h) 4%, var(--element-bg));
  cursor: pointer;
  transition:
    background-color 0.15s ease,
    border-color 0.15s ease,
    color 0.15s ease;
}
.application-page__layout-switcher__btn:hover {
  border-color: color-mix(in srgb, var(--text-h) 35%, var(--border));
  background: color-mix(in srgb, var(--text-h) 8%, var(--element-bg));
}
.application-page__layout-switcher__btn--active {
  border-color: color-mix(in srgb, var(--text-h) 45%, var(--border));
  background: color-mix(in srgb, var(--text-h) 12%, var(--element-bg));
  font-weight: 600;
}
.application-page__layout-switcher__btn:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--text-h) 50%, transparent);
  outline-offset: 2px;
}
.application-page__stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0;
  width: 100%;
}
.application-page__stack--with-image {
  gap: clamp(0.85rem, 2.5vh, 1.35rem);
  padding-top: 0;
  flex: 1 1 auto;
  justify-content: center;
}
.application-page__mic-caption-slot--under-image {
  flex: 0 0 auto;
}
/* Slot centers the mic; anchor shrink-wraps the mic so captions can sit at top:100% without reflow. */
.application-page__mic-caption-slot {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  box-sizing: border-box;
  overflow: visible;
}
.application-page__mic-caption-anchor {
  position: relative;
  display: inline-block;
  max-width: 100%;
  overflow: visible;
}
/*
 * EqualizerRingMic bars extend past the 4rem disc. Keep layout shrink-wrapped to the disc
 * (captions use top: 100% on the anchor) but paint the animation on a larger stage.
 */
.application-page__mic-caption-anchor .trial-mic-hero,
.application-page__image-mic-overlay .trial-mic-hero {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  overflow: visible;
  flex-shrink: 0;
}
.application-page__mic-caption-anchor .trial-reactive-mic__stage,
.application-page__image-mic-overlay .trial-reactive-mic__stage {
  position: absolute;
  left: 50%;
  top: 50%;
  width: calc(4rem * 2.2);
  height: calc(4rem * 2.2);
  transform: translate(-50%, calc(-50% - 0.65rem));
}
.application-page__mic-caption-anchor
  .trial-reactive-mic__animation
  .mic-design__canvas,
.application-page__image-mic-overlay
  .trial-reactive-mic__animation
  .mic-design__canvas {
  max-width: none;
  max-height: none;
}
.application-page__mic-below {
  position: absolute;
  left: 50%;
  top: 100%;
  transform: translateX(-50%);
  margin-top: 0.35rem;
  width: min(38rem, calc(100vw - 1.5rem));
  max-width: calc(100vw - 1.5rem);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.35rem;
  box-sizing: border-box;
  pointer-events: none;
}
.application-page__mic-caption-slot--under-image .application-page__mic-below {
  position: static;
  transform: none;
  margin-top: 0;
  width: 100%;
  max-width: min(38rem, calc(100vw - 1.5rem));
}
.application-page__mcminns-label {
  margin: 0;
  text-align: center;
  font-size: clamp(0.84rem, 2.2vw, 0.98rem);
  line-height: 1.48;
  color: var(--text-m, var(--text));
}
.application-page__mic-below .application-page__audio-caption-host {
  position: static;
  left: auto;
  top: auto;
  transform: none;
  margin-top: 2lh;
  width: 100%;
}
.application-page__mic-caption-slot--under-image .application-page__audio-caption-host {
  margin-top: 0;
}
.application-page__audio-caption-host {
  position: absolute;
  left: 50%;
  top: 100%;
  transform: translateX(-50%);
  margin-top: 1lh;
  width: min(38rem, calc(100vw - 1.5rem));
  max-width: calc(100vw - 1.5rem);
  margin-left: 0;
  margin-right: 0;
  margin-bottom: 0;
  padding: 0 0.75rem;
  box-sizing: border-box;
  pointer-events: none;
  font-size: clamp(0.84rem, 2.2vw, 0.98rem);
  line-height: 1.48;
}
.application-page__audio-caption {
  margin: 0;
  text-align: center;
  font-size: inherit;
  line-height: inherit;
  color: color-mix(in srgb, var(--text-h) 90%, transparent);
}
/* Stack two layouts while each mic’s circular ring wipes out / in (see ApplicationPage). */
.application-page__layout-surfaces {
  /* --application-page-mic-ring-ms / --application-page-image-fade-ms set inline on ApplicationPage */
  position: relative;
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
}
.application-page__layout-layer {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  pointer-events: none;
}
.application-page__layout-layer--outgoing {
  z-index: 1;
}
.application-page__layout-layer--incoming {
  z-index: 2;
}
/*
 * Layout transition: circular wipe on the idle disc ring only (SVG stroke-dashoffset).
 * CSS border is hidden so the animated ring is the sole outline; mic fill stays opaque.
 */
.application-page__mic-ring-host {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #000000;
}
[data-theme='dark'] .application-page__mic-ring-host {
  color: var(--text-h);
}
.application-page__mic-ring-host--enter .trial-mic__disc--idle,
.application-page__mic-ring-host--exit .trial-mic__disc--idle {
  border-color: transparent;
}
.application-page__mic-ring-svg {
  position: absolute;
  inset: 0;
  z-index: 2;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.application-page__mic-ring-host .trial-mic {
  position: relative;
  z-index: 0;
}
.application-page__mic-ring__stroke {
  stroke-width: 2px;
  vector-effect: non-scaling-stroke;
  stroke-dasharray: 100 100;
  /* stroke-dashoffset is driven by JS (inline style) during transitions; fixed CSS values
     override SVG attributes and broke the rAF ring wipe. */
}
/*
 * Fallback when ring circles are missing: both rings use CSS (may drift vs rAF).
 */
.application-page__layout-surfaces.application-page__layout-surfaces--animating
  .application-page__mic-ring-host--exit
  .application-page__mic-ring__stroke {
  stroke-dashoffset: 0;
  animation: application-page-mic-ring-wipe-out var(--application-page-mic-ring-ms, 500ms)
    linear forwards;
}
.application-page__layout-surfaces.application-page__layout-surfaces--animating
  .application-page__mic-ring-host--enter
  .application-page__mic-ring__stroke {
  stroke-dashoffset: 100;
  animation: application-page-mic-ring-wipe-in var(--application-page-mic-ring-ms, 500ms)
    linear forwards;
}
@keyframes application-page-mic-ring-wipe-out {
  from {
    stroke-dashoffset: 0;
  }

  to {
    stroke-dashoffset: 100;
  }
}
@keyframes application-page-mic-ring-wipe-in {
  from {
    stroke-dashoffset: 100;
  }

  to {
    stroke-dashoffset: 0;
  }
}
/* Mic rings finish first; then image fades in (delay = ring duration). */
.application-page__layout-layer--enter-image .application-page__image-panel {
  opacity: 0;
  animation: application-page-image-reveal var(--application-page-image-fade-ms, 225ms)
    cubic-bezier(0.45, 0, 0.2, 1) forwards;
  animation-delay: var(--application-page-mic-ring-ms, 500ms);
}
/* Image fades out completely before mic rings run (delay handled in JS for rings). */
.application-page__layout-layer--exit-image .application-page__image-panel {
  animation: application-page-image-hide var(--application-page-image-fade-ms, 225ms)
    cubic-bezier(0.4, 0, 0.8, 0.2) forwards;
}
@keyframes application-page-image-reveal {
  from {
    opacity: 0;
    transform: translateY(0.35rem) scale(0.985);
  }

  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
@keyframes application-page-image-hide {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }

  to {
    opacity: 0;
    transform: translateY(0.25rem) scale(0.99);
  }
}
@media (prefers-reduced-motion: reduce) {
  .application-page__mic-ring-host--enter .application-page__mic-ring__stroke,
  .application-page__mic-ring-host--exit .application-page__mic-ring__stroke {
    animation: none;
  }

  .application-page__mic-ring-host--enter .application-page__mic-ring__stroke {
    stroke-dashoffset: 0;
  }

  .application-page__mic-ring-host--exit .application-page__mic-ring__stroke {
    stroke-dashoffset: 100;
  }

  .application-page__layout-layer--enter-image .application-page__image-panel {
    animation: none;
    animation-delay: 0;
    opacity: 1;
  }

  .application-page__layout-layer--exit-image .application-page__image-panel {
    animation: none;
  }
}
.application-page__layout-switcher__btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.application-page__image-panel {
  margin: 0 auto;
  padding: 0;
  width: 100%;
  max-width: min(100%, 42rem);
  border-radius: 0.5rem;
  overflow: visible;
  border: none;
  background: transparent;
  box-sizing: border-box;
}
.application-page__image-panel-inner {
  position: relative;
  overflow: visible;
  border-radius: 0.5rem;
  border: 1px solid var(--border);
  background: var(--element-bg);
}
.application-page__image-mic-overlay {
  position: absolute;
  top: 0.65rem;
  left: 0.65rem;
  z-index: 2;
  overflow: visible;
}
.application-page__image-mic-overlay .trial-mic-hero__scale {
  transform: scale(0.53);
  transform-origin: top left;
}
@media (min-width: 64rem) {
  .application-page__image-mic-overlay .trial-mic-hero__scale {
    transform: scale(0.56);
  }
}
.application-page__question-image {
  display: block;
  width: 100%;
  height: auto;
  max-height: min(52vh, 28rem);
  object-fit: contain;
  border-radius: calc(0.5rem - 1px);
}
.application-page__question-image-trigger {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  cursor: zoom-in;
  font: inherit;
  text-align: inherit;
  border-radius: inherit;
  box-sizing: border-box;
  overflow: hidden;
}
.application-page__question-image-trigger:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.application-page__image-zoom-backdrop {
  position: fixed;
  inset: 0;
  z-index: 2000;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(1rem, env(safe-area-inset-top, 0px))
    max(1rem, env(safe-area-inset-right, 0px))
    max(1rem, env(safe-area-inset-bottom, 0px))
    max(1rem, env(safe-area-inset-left, 0px));
  background: color-mix(in srgb, var(--bg) 78%, #000000);
  animation: application-page-image-zoom-backdrop-in 0.2s ease forwards;
}
@keyframes application-page-image-zoom-backdrop-in {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}
.application-page__image-zoom-toggle {
  margin: 0;
  padding: 0;
  max-width: 100%;
  max-height: 100%;
  border: none;
  background: none;
  cursor: zoom-out;
  line-height: 0;
  border-radius: 0.35rem;
}
.application-page__image-zoom-toggle:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.application-page__image-zoom-img {
  display: block;
  max-width: calc(100vw - 2rem);
  max-height: calc(100vh - 2rem);
  max-width: calc(100dvw - 2rem);
  max-height: calc(100dvh - 2rem);
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: 0.35rem;
}
@media (prefers-reduced-motion: reduce) {
  .application-page__image-zoom-backdrop {
    animation: none;
  }
}
.application-page__actions {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.application-page__actions-inner {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  max-width: 100%;
  box-sizing: border-box;
  will-change: transform;
}
.application-page__actions-inner--settle {
  animation: application-page-dock-reveal 0.62s cubic-bezier(0.18, 1.12, 0.34, 1) both;
}
.application-page__actions-extra {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
@keyframes application-page-dock-reveal {
  from {
    opacity: 0;
    transform: translateX(1.85rem) translateY(0.42rem) scale(0.84);
  }
  52% {
    opacity: 1;
    transform: translateX(-0.14rem) translateY(-0.14rem) scale(1.06);
  }
  76% {
    transform: translateX(0.05rem) translateY(0.06rem) scale(0.985);
  }
  to {
    opacity: 1;
    transform: translateX(0) translateY(0) scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .application-page__actions-inner--settle {
    animation: application-page-dock-reveal-reduced 0.22s ease forwards;
  }

  @keyframes application-page-dock-reveal-reduced {
    from {
      opacity: 0;
    }
    to {
      opacity: 1;
    }
  }
}
/* Hover hints — same motion rules as header/college tooltips (layout.css). */
.application-page__pill-wrap {
  position: relative;
  display: inline-flex;
  vertical-align: middle;
  z-index: 0;
}
.application-page__pill-wrap:hover,
.application-page__pill-wrap:focus-within {
  z-index: 4;
}
.application-page__pill-hint {
  position: absolute;
  bottom: calc(100% + 6px);
  left: 50%;
  z-index: 5;
  padding: 0.35rem 0.55rem;
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1.2;
  color: var(--text-h);
  background: var(--element-bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: var(--elevated-photo-shadow);
  white-space: nowrap;
  max-width: min(16rem, 70vw);
  overflow: hidden;
  text-overflow: ellipsis;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate(-50%, 4px);
  transition:
    opacity 0.15s ease,
    visibility 0.15s ease,
    transform 0.15s ease;
}
.application-page__pill-wrap:not(:has(button:disabled)):hover .application-page__pill-hint,
.application-page__pill-wrap:not(:has(button:disabled)):focus-within .application-page__pill-hint {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}
@media (prefers-reduced-motion: reduce) {
  .application-page__pill-hint {
    transform: translate(-50%, 0);
    transition:
      opacity 0.12s ease,
      visibility 0.12s ease;
  }

  .application-page__pill-wrap:not(:has(button:disabled)):hover .application-page__pill-hint,
  .application-page__pill-wrap:not(:has(button:disabled)):focus-within .application-page__pill-hint {
    transform: translate(-50%, 0);
  }
}
.application-page__pill {
  margin: 0;
  padding: 0.28rem 0.55rem;
  border: 1px solid var(--border);
  border-radius: 9999px;
  font: inherit;
  font-size: 0.81rem;
  line-height: 1.2;
  color: var(--text-h);
  background: var(--element-bg);
  box-shadow: none;
  min-width: 0;
  width: 100%;
  min-height: 2.05rem;
  box-sizing: border-box;
  text-align: center;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.application-page__pill--icon {
  width: 2.45rem;
  height: 2.45rem;
  min-width: 2.45rem;
  min-height: unset;
  padding: 0;
  border-radius: 50%;
  aspect-ratio: 1;
  cursor: pointer;
  transition:
    transform 0.22s cubic-bezier(0.34, 1.2, 0.64, 1),
    box-shadow 0.22s ease,
    background-color 0.22s ease,
    border-color 0.22s ease,
    color 0.18s ease;
}
.application-page__pill--icon:hover {
  transform: scale(1.08) translateY(-2px);
  border-color: color-mix(in srgb, var(--text-h) 38%, var(--border));
  background-color: color-mix(in srgb, var(--text-h) 6%, var(--element-bg));
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 1px 0 color-mix(in srgb, var(--text-h) 6%, transparent);
}
.application-page__pill--icon:active {
  transform: scale(0.96) translateY(0);
  box-shadow: 0 2px 8px color-mix(in srgb, var(--text-h) 8%, transparent);
  transition-duration: 0.08s;
}
.application-page__pill--icon:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--text-h) 55%, transparent);
  outline-offset: 3px;
}
.application-page__pill--icon:disabled {
  cursor: not-allowed;
  opacity: 0.42;
  transform: none;
  box-shadow: none;
}
.application-page__pill--icon:disabled:hover {
  transform: none;
  border-color: var(--border);
  background-color: var(--element-bg);
  box-shadow: none;
}
.application-page__pill--icon:disabled:hover .application-page__pill-icon {
  transform: none;
}
/* Marketing iframe: dock matches the live app but must not steal clicks from the mic demo. */
.application-page__pill--preview-only {
  pointer-events: none;
  cursor: default;
}
.application-page__info-demo-prompt {
  margin: 0.75rem 0 0;
  text-align: center;
  font-size: 0.95rem;
  line-height: 1.35;
  color: var(--text-muted, rgba(255, 255, 255, 0.72));
}
.application-page__recording-prompt {
  margin: 0.75rem 0 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  text-align: center;
  width: 100%;
}
.application-page__recording-prompt-primary {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 500;
  line-height: 1.35;
  color: var(--text-h, var(--text));
}
.application-page__recording-prompt-hint {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.4;
  color: var(--text-muted, rgba(255, 255, 255, 0.72));
}
.application-page__welcome-proceed-hint {
  margin: 0.65rem 0 0;
  text-align: center;
  font-size: 0.875rem;
  line-height: 1.4;
  color: var(--text-muted, rgba(255, 255, 255, 0.72));
}
/* Standard layout: clear reactive mic rings when subtitles are off (no caption above). */
.application-page__mic-caption-slot:not(.application-page__mic-caption-slot--under-image)
  .application-page__mic-below
  > .application-page__welcome-proceed-hint:first-child {
  margin-top: 2lh;
}
.application-page__info-demo-loading {
  position: fixed;
  inset: 0;
  z-index: 40;
  display: grid;
  place-items: center;
  background: color-mix(in srgb, var(--page-bg, #0f1419) 88%, transparent);
  backdrop-filter: blur(6px);
}
.application-page__info-demo-loading-text {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--text, #f5f5f5);
}
/* `/application?infoDemo=1` in narrow marketing iframes (`embedMobile=1`). */
.application-page--info-demo-embed.application-page--embed-mobile.page {
  min-height: 0;
  height: 100%;
  overflow: hidden;
}
.application-page--info-demo-embed.application-page--embed-mobile .trial-page__stage {
  min-height: 0;
  height: 100%;
  overflow: hidden;
  padding-block: 3px;
  padding-inline: 0;
}
.application-page--info-demo-embed.application-page--embed-mobile .application-page__main {
  min-height: 0;
  overflow: hidden;
}
.application-page--info-demo-embed.application-page--embed-mobile
  .application-page__actions-dock {
  --application-page-dock-pt: clamp(0.45rem, 1.4vh, 0.65rem);
  --application-page-dock-pb: max(0.2rem, env(safe-area-inset-bottom, 0px));
}
.application-page__pill-icon {
  width: 1.35rem;
  height: 1.35rem;
  flex-shrink: 0;
  display: block;
  transition: transform 0.22s cubic-bezier(0.34, 1.2, 0.64, 1);
}
.application-page__pill--icon:hover .application-page__pill-icon {
  transform: scale(1.06);
}
@media (prefers-reduced-motion: reduce) {
  .application-page__pill--icon {
    transition: border-color 0.15s ease, background-color 0.15s ease;
  }

  .application-page__pill--icon:hover,
  .application-page__pill--icon:active {
    transform: none;
  }

  .application-page__pill--icon:hover .application-page__pill-icon {
    transform: none;
  }
}
.application-page__pill-icon--stroke {
  overflow: visible;
}
@media (max-width: 26rem) {
  .application-page__actions-inner {
    gap: 0.55rem;
  }
}
.application-page__info-dialog-backdrop {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right))
    max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
  box-sizing: border-box;
  background: color-mix(in srgb, var(--text-h) 38%, transparent);
  animation: application-page-info-dialog-in 0.2s ease forwards;
}
@keyframes application-page-info-dialog-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.application-page__info-dialog {
  width: min(100%, 22rem);
  padding: 1.15rem 1.2rem 1.05rem;
  border-radius: 0.65rem;
  border: 1px solid var(--border);
  background: var(--element-bg);
  color: var(--text-h);
  box-shadow:
    0 18px 48px color-mix(in srgb, var(--text-h) 18%, transparent),
    0 1px 0 color-mix(in srgb, var(--text-h) 6%, transparent);
  box-sizing: border-box;
}
.application-page__info-dialog-title {
  margin: 0 0 0.55rem;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.25;
}
.application-page__info-dialog-body {
  margin: 0 0 1rem;
  font-size: 0.88rem;
  line-height: 1.45;
  color: color-mix(in srgb, var(--text-h) 88%, transparent);
}
.application-page__info-dialog-close {
  margin: 0;
  padding: 0.4rem 0.85rem;
  border-radius: 0.4rem;
  border: 1px solid var(--border);
  font: inherit;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text-h);
  background: color-mix(in srgb, var(--text-h) 5%, var(--element-bg));
  cursor: pointer;
}
.application-page__info-dialog-close:hover {
  border-color: color-mix(in srgb, var(--text-h) 35%, var(--border));
  background: color-mix(in srgb, var(--text-h) 9%, var(--element-bg));
}
.application-page__info-dialog-close:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--text-h) 50%, transparent);
  outline-offset: 2px;
}
.application-page__report-dialog {
  width: min(100%, 26.5rem);
}
.application-page__report-intro {
  margin: 0 0 1rem;
  font-size: 0.86rem;
  line-height: 1.45;
  color: color-mix(in srgb, var(--text-h) 85%, transparent);
}
.application-page__report-success-body {
  margin: 0 0 1rem;
  font-size: 0.88rem;
  line-height: 1.45;
  color: color-mix(in srgb, var(--text-h) 88%, transparent);
}
.application-page__report-fieldset {
  margin: 0 0 0.35rem;
  padding: 0;
  border: none;
  min-inline-size: 0;
}
.application-page__report-legend {
  padding: 0;
  margin: 0 0 0.5rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 58%, transparent);
}
.application-page__report-options {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}
.application-page__report-option-label {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  margin: 0;
  padding: 0.65rem 0.75rem;
  border-radius: 0.45rem;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--text-h) 3%, var(--element-bg));
  cursor: pointer;
  transition:
    border-color 0.18s ease,
    background-color 0.18s ease,
    box-shadow 0.18s ease;
}
.application-page__report-option-label:hover {
  border-color: color-mix(in srgb, var(--text-h) 28%, var(--border));
  background: color-mix(in srgb, var(--text-h) 6%, var(--element-bg));
}
.application-page__report-option-label:has(:checked) {
  border-color: color-mix(in srgb, var(--text-h) 42%, var(--border));
  background: color-mix(in srgb, var(--text-h) 9%, var(--element-bg));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--text-h) 18%, transparent);
}
.application-page__report-option-input {
  margin: 0.15rem 0 0;
  flex-shrink: 0;
  width: 1rem;
  height: 1rem;
  accent-color: var(--text-h);
  cursor: pointer;
}
.application-page__report-option-text {
  font-size: 0.88rem;
  line-height: 1.35;
  color: var(--text-h);
}
.application-page__report-expand {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.42s cubic-bezier(0.22, 1, 0.36, 1);
}
.application-page__report-expand--open {
  grid-template-rows: 1fr;
}
.application-page__report-expand-measure {
  overflow: hidden;
  min-height: 0;
}
.application-page__report-expand-panel {
  padding-top: 0.65rem;
  padding-bottom: 0.1rem;
  opacity: 0;
  transform: translateY(-0.4rem);
  transition:
    opacity 0.32s ease 0.06s,
    transform 0.38s cubic-bezier(0.22, 1, 0.36, 1) 0.05s;
}
.application-page__report-expand--open .application-page__report-expand-panel {
  opacity: 1;
  transform: translateY(0);
}
.application-page__report-notes-label {
  display: block;
  margin-bottom: 0.35rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text-h);
}
.application-page__report-optional {
  font-weight: 400;
  color: color-mix(in srgb, var(--text-h) 55%, transparent);
}
.application-page__report-notes {
  width: 100%;
  margin: 0 0 0.85rem;
  padding: 0.55rem 0.65rem;
  border-radius: 0.4rem;
  border: 1px solid var(--border);
  font: inherit;
  font-size: 0.86rem;
  line-height: 1.4;
  color: var(--text-h);
  background: color-mix(in srgb, var(--text-h) 2%, var(--element-bg));
  resize: vertical;
  min-height: 5rem;
  box-sizing: border-box;
}
.application-page__report-notes::placeholder {
  color: color-mix(in srgb, var(--text-h) 48%, transparent);
}
.application-page__report-notes:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--text-h) 45%, transparent);
  outline-offset: 2px;
}
.application-page__report-primary-btn {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0.52rem 1rem;
  border-radius: 0.45rem;
  border: 1px solid var(--text-h);
  font: inherit;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--element-bg);
  background: var(--text-h);
  cursor: pointer;
  transition:
    filter 0.15s ease,
    opacity 0.15s ease;
}
.application-page__report-primary-btn:hover:not(:disabled) {
  filter: brightness(1.06);
}
.application-page__report-primary-btn:disabled {
  cursor: not-allowed;
  opacity: 0.45;
}
.application-page__report-primary-btn:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--text-h) 50%, transparent);
  outline-offset: 2px;
}
.application-page__report-cancel {
  display: block;
  margin: 0.85rem 0 0;
  padding: 0.4rem 0.5rem;
  width: 100%;
  border: none;
  background: transparent;
  font: inherit;
  font-size: 0.82rem;
  font-weight: 500;
  color: color-mix(in srgb, var(--text-h) 62%, transparent);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}
.application-page__report-cancel:hover {
  color: var(--text-h);
}
.application-page__report-cancel:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--text-h) 45%, transparent);
  outline-offset: 2px;
  border-radius: 0.25rem;
}
.application-page__review-dialog {
  width: min(100%, 28rem);
  max-height: min(85vh, 36rem);
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.application-page__review-intro {
  margin: 0 0 0.75rem;
  font-size: 0.86rem;
  line-height: 1.45;
  color: color-mix(in srgb, var(--text-h) 85%, transparent);
}
.application-page__review-empty {
  margin: 0 0 1rem;
  font-size: 0.88rem;
  line-height: 1.45;
  color: color-mix(in srgb, var(--text-h) 72%, transparent);
}
.application-page__review-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  margin: 0 0 1rem;
  padding-right: 0.15rem;
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
}
.application-page__review-section {
  margin: 0;
}
.application-page__review-section-heading {
  margin: 0 0 0.45rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 58%, transparent);
}
.application-page__review-list {
  margin: 0;
  padding: 0 0 0 1.1rem;
  list-style: decimal;
}
.application-page__review-list-item {
  margin: 0 0 0.45rem;
  padding: 0;
}
.application-page__review-list-item:last-child {
  margin-bottom: 0;
}
.application-page__review-item-btn {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0.35rem 0.45rem 0.35rem 0.15rem;
  border: none;
  border-radius: 0.35rem;
  background: transparent;
  font: inherit;
  font-size: 0.88rem;
  line-height: 1.45;
  color: var(--text-h);
  text-align: left;
  cursor: pointer;
  box-sizing: border-box;
  transition:
    background-color 0.15s ease,
    color 0.15s ease;
}
.application-page__review-item-btn:hover {
  background: color-mix(in srgb, var(--text-h) 6%, var(--element-bg));
}
.application-page__review-item-btn:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--text-h) 45%, transparent);
  outline-offset: 2px;
}
.application-page__review-item-text {
  display: block;
}
@media (prefers-reduced-motion: reduce) {
  .application-page__report-expand {
    transition: none;
  }

  .application-page__report-expand-panel {
    transition: none;
  }

  .application-page__report-expand--open .application-page__report-expand-panel {
    opacity: 1;
    transform: none;
  }

  .application-page__info-dialog-backdrop {
    animation: none;
  }
}
/* /application-written — step dots, question, textarea, next */
.application-written .trial-page__stage {
  align-items: flex-start;
  padding-top: clamp(2rem, 6vh, 3.5rem);
}
.application-written__panel {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 1.25rem;
  width: 100%;
  max-width: min(100%, 32rem);
  margin-inline: auto;
  transform: none;
}
.application-written__steps {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 0.65rem;
  margin: 0;
  padding: 0;
}
.application-written__step {
  margin: 0;
  padding: 0;
  width: 1.65rem;
  height: 1.65rem;
  border-radius: 50%;
  border: 1px solid var(--border);
  font: inherit;
  font-size: 0.7rem;
  font-weight: 600;
  line-height: 1;
  color: var(--text-muted);
  background: var(--element-bg);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  transition:
    background 0.15s ease,
    color 0.15s ease,
    border-color 0.15s ease;
}
.application-written__step:hover {
  border-color: var(--text-h);
  color: var(--text-h);
}
.application-written__step:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.application-written__step--active {
  border-color: var(--cta-pill-bg, var(--text-h));
  background: var(--cta-pill-bg);
  color: var(--cta-pill-fg);
}
.application-written__question {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--text-h);
  text-align: center;
}
.application-written__section {
  margin: 0;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--text-muted);
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.application-written__session-error {
  margin: 0;
  padding: 0.65rem 0.85rem;
  border-radius: 0.5rem;
  font-size: 0.875rem;
  color: var(--text-h);
  background: color-mix(in srgb, var(--danger, #c62828) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--danger, #c62828) 35%, transparent);
}
.application-written__image {
  display: block;
  width: 100%;
  max-height: min(40vh, 16rem);
  object-fit: contain;
  border-radius: 0.5rem;
}
.application-written__field-label {
  display: block;
  width: 100%;
}
.application-written__textarea {
  display: block;
  width: 100%;
  min-height: 8rem;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font: inherit;
  font-size: 0.9125rem;
  line-height: 1.45;
  color: var(--text-h);
  background: var(--element-bg);
  resize: vertical;
  box-sizing: border-box;
}
.application-written__textarea:focus {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: var(--focus-ring-offset);
}
.application-written__actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.65rem;
  margin-top: 0.25rem;
}
/* ~30% smaller than default .btn--primary; Previous / Next / Finish match */
.application-written__actions .application-written__btn-primary.btn--primary,
.application-written__actions .application-written__btn-secondary {
  box-sizing: border-box;
  margin: 0;
  min-width: 7.25rem;
  min-height: 2.05rem;
  padding: 0.385rem 1.12rem;
  font-size: 0.703rem;
  font-weight: 600;
  line-height: 1.25;
  border-radius: 9999px;
  justify-content: center;
}
.application-written__actions .application-written__btn-primary.btn--primary {
  border: 1px solid transparent;
}
.application-written__actions .application-written__btn-secondary {
  border: 1px solid var(--border);
  color: var(--text-h);
  background: transparent;
  cursor: pointer;
  transition:
    background 0.2s ease,
    border-color 0.2s ease,
    color 0.2s ease;
}
.application-written__actions .application-written__btn-secondary:hover {
  background: var(--element-bg);
  border-color: var(--text-h);
}
/*
 * Trial mic — `--trial-mic-disc` from `trialMicActiveWaves.layout.discRem` (TrialPlaybackMic)
 */
.trial-mic {
  --trial-mic-accent: #2a6bc9;
  --trial-mic-accent-rgb: 42 107 201;
  --trial-mic-rec: #b6171e;
  --trial-mic-rec-rgb: 182 23 30;
  --trial-mic-ink-active-rgb: 20 58 132;
  --trial-mic-ink-rec-rgb: 120 12 18;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
}
[data-theme='dark'] .trial-mic {
  --trial-mic-accent: #7eb8ff;
  --trial-mic-accent-rgb: 126 184 255;
  --trial-mic-rec: #f87171;
  --trial-mic-rec-rgb: 248 113 113;
  --trial-mic-ink-active-rgb: 74 154 232;
  --trial-mic-ink-rec-rgb: 224 79 79;
}
.trial-mic__frame {
  --trial-mic-ring-width: 2px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: var(--trial-mic-disc);
  height: var(--trial-mic-disc);
  overflow: visible;
  transition: none;
}
.trial-mic__disc-wrap {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--trial-mic-disc);
  height: var(--trial-mic-disc);
  overflow: visible;
  z-index: 1;
}
/*
 * Volume-reactive ring pulses (ported from ed-vivas VoiceMicButton).
 */
@-webkit-keyframes trial-mic-ring-1 {
  0% {
    -webkit-transform: scale(1);
    transform: scale(1);
    opacity: var(--trial-mic-ring-opacity-start, 0.6);
    box-shadow:
      0 0 var(--trial-mic-ring-glow, 0px) currentColor,
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 1.75) currentColor;
  }
  45% {
    opacity: calc(var(--trial-mic-ring-opacity-start, 0.6) * var(--trial-mic-ring-opacity-mid-mult, 0.32));
    box-shadow:
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 0.65) currentColor,
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 1.15) currentColor;
  }
  75% {
    opacity: calc(var(--trial-mic-ring-opacity-start, 0.6) * var(--trial-mic-ring-opacity-mid-mult, 0.32) * 0.22);
    box-shadow:
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 0.18) currentColor,
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 0.30) currentColor;
  }
  100% {
    -webkit-transform: scale(var(--trial-mic-ring-scale-end, 1.8));
    transform: scale(var(--trial-mic-ring-scale-end, 1.8));
    opacity: 0;
    box-shadow: 0 0 0 transparent, 0 0 0 transparent;
  }
}
@keyframes trial-mic-ring-1 {
  0% {
    transform: scale(1);
    opacity: var(--trial-mic-ring-opacity-start, 0.6);
    box-shadow:
      0 0 var(--trial-mic-ring-glow, 0px) currentColor,
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 1.75) currentColor;
  }
  45% {
    opacity: calc(var(--trial-mic-ring-opacity-start, 0.6) * var(--trial-mic-ring-opacity-mid-mult, 0.32));
    box-shadow:
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 0.65) currentColor,
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 1.15) currentColor;
  }
  75% {
    opacity: calc(var(--trial-mic-ring-opacity-start, 0.6) * var(--trial-mic-ring-opacity-mid-mult, 0.32) * 0.22);
    box-shadow:
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 0.18) currentColor,
      0 0 calc(var(--trial-mic-ring-glow, 0px) * 0.30) currentColor;
  }
  100% {
    transform: scale(var(--trial-mic-ring-scale-end, 1.8));
    opacity: 0;
    box-shadow: 0 0 0 transparent, 0 0 0 transparent;
  }
}
.trial-mic__ring {
  position: absolute;
  inset: -4px;
  border-radius: 9999px;
  border: var(--trial-mic-ring-border-width, 3px) solid currentColor;
  pointer-events: none;
  z-index: 1;
  animation-name: trial-mic-ring-1;
  animation-timing-function: ease-out;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
  -webkit-animation-name: trial-mic-ring-1;
  -webkit-animation-timing-function: ease-out;
  -webkit-animation-iteration-count: 1;
  -webkit-animation-fill-mode: forwards;
}
.trial-mic__ring-static {
  position: absolute;
  inset: -4px;
  border-radius: 9999px;
  border: 3px solid currentColor;
  pointer-events: none;
  z-index: 2;
}
.trial-mic__ring-static--recording {
  color: rgb(239, 68, 68);
}
.trial-mic__ring-static--playing {
  color: rgba(96, 165, 250, 0.88);
}
.trial-mic__ring--recording {
  color: rgb(239, 68, 68);
}
.trial-mic__ring--playing {
  color: rgba(96, 165, 250, 0.88);
}
@media (prefers-reduced-motion: reduce) {
  .trial-mic__ring {
    display: none !important;
  }
}
/*
 * Volume-reactive spiral rings — max diameter = 2× fixed mic ring.
 * SVG sits behind the disc; segments are drawn imperatively in TrialMicSpiralRings.
 */
.trial-mic__spiral-rings {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 0;
  width: calc(var(--trial-mic-disc) * var(--trial-mic-spiral-max-scale, 2));
  height: calc(var(--trial-mic-disc) * var(--trial-mic-spiral-max-scale, 2));
  transform: translate(-50%, -50%);
  overflow: visible;
  pointer-events: none;
}
.trial-mic__spiral-rings line {
  fill: none;
  stroke-linejoin: round;
}
.trial-mic__spiral-rings--active line {
  stroke: var(--trial-mic-accent);
}
.trial-mic__spiral-rings--recording line {
  stroke: var(--trial-mic-rec);
}
/*
 * Neutral: masked ray stack behind the mic.
 */
.trial-mic__glow-outer {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 0;
  width: calc(var(--trial-mic-disc) * 1.728);
  height: calc(var(--trial-mic-disc) * 1.728);
  transform: translate(-50%, -50%);
  pointer-events: none;
  overflow: visible;
}
.trial-mic__glow-stack {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 0;
  width: calc(var(--trial-mic-disc) * 1.728);
  height: calc(var(--trial-mic-disc) * 1.728);
  transform: translate(-50%, -50%);
  transform-origin: 50% 50%;
  pointer-events: none;
  overflow: visible;
  filter: blur(calc(var(--trial-mic-disc) * 0.08));
}
/*
 * Neutral idle: mask on outer only — `mask` + `filter: blur` on the same node often composites to nothing (Chrome/WebKit).
 * Inner .trial-mic__glow-stack stays blurred; outer clips the painted result to the mic silhouette.
 */
.trial-mic__glow-outer.trial-mic__glow-outer--neutral-mic-window {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z'/%3E%3C/svg%3E");
  -webkit-mask-mode: alpha;
  -webkit-mask-position: center;
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-size: calc(100% * 0.52 / 1.728);
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3zm5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72h-1.7z'/%3E%3C/svg%3E");
  mask-mode: alpha;
  mask-position: center;
  mask-repeat: no-repeat;
  mask-size: calc(100% * 0.52 / 1.728);
}
.trial-mic__glow-layer {
  position: absolute;
  inset: 0;
  transform-origin: 50% 50%;
  pointer-events: none;
}
.trial-mic__glow-layer--accent {
  z-index: 0;
}
.trial-mic__glow-layer--ink {
  z-index: 1;
}
.trial-mic__glow-ray {
  position: absolute;
  inset: 0;
  transform-origin: 50% 50%;
  pointer-events: none;
}
/*
 * Bottom = hub centre (overlaps button). Opaque through ~disc edge, then fade; tip (furthest out) is
 * always 0% opacity.
 */
.trial-mic__glow-ray__blade {
  position: absolute;
  left: 50%;
  bottom: 50%;
  width: 11%;
  height: 56%;
  transform-origin: bottom center;
  transition: none;
  border-radius: 55% 55% 0 0 / 28% 28% 0 0;
}
.trial-mic__glow-layer--ink .trial-mic__glow-ray__blade {
  background: linear-gradient(
    to top,
    rgb(0 0 0 / 0.96) 0%,
    rgb(0 0 0 / 0.96) 32%,
    rgb(0 0 0 / 0.88) 40%,
    rgb(0 0 0 / 0.42) 58%,
    rgb(0 0 0 / 0.12) 82%,
    rgb(0 0 0 / 0) 100%
  );
}
/* Accent — blue (neutral/active) or red (recording) via state overrides below */
.trial-mic__glow-layer--accent .trial-mic__glow-ray__blade {
  background: linear-gradient(
    to top,
    rgb(var(--trial-mic-accent-rgb) / 0.96) 0%,
    rgb(var(--trial-mic-accent-rgb) / 0.96) 32%,
    rgb(var(--trial-mic-accent-rgb) / 0.88) 40%,
    rgb(var(--trial-mic-accent-rgb) / 0.42) 58%,
    rgb(var(--trial-mic-accent-rgb) / 0.12) 82%,
    rgb(var(--trial-mic-accent-rgb) / 0) 100%
  );
}
.trial-mic--active .trial-mic__glow-layer--ink .trial-mic__glow-ray__blade {
  background: linear-gradient(
    to top,
    rgb(var(--trial-mic-ink-active-rgb) / 0.96) 0%,
    rgb(var(--trial-mic-ink-active-rgb) / 0.96) 32%,
    rgb(var(--trial-mic-ink-active-rgb) / 0.88) 40%,
    rgb(var(--trial-mic-ink-active-rgb) / 0.42) 58%,
    rgb(var(--trial-mic-ink-active-rgb) / 0.12) 82%,
    rgb(var(--trial-mic-ink-active-rgb) / 0) 100%
  );
}
.trial-mic--recording .trial-mic__glow-layer--accent .trial-mic__glow-ray__blade {
  background: linear-gradient(
    to top,
    rgb(var(--trial-mic-rec-rgb) / 0.96) 0%,
    rgb(var(--trial-mic-rec-rgb) / 0.96) 32%,
    rgb(var(--trial-mic-rec-rgb) / 0.88) 40%,
    rgb(var(--trial-mic-rec-rgb) / 0.42) 58%,
    rgb(var(--trial-mic-rec-rgb) / 0.12) 82%,
    rgb(var(--trial-mic-rec-rgb) / 0) 100%
  );
}
.trial-mic--recording .trial-mic__glow-layer--ink .trial-mic__glow-ray__blade {
  background: linear-gradient(
    to top,
    rgb(var(--trial-mic-ink-rec-rgb) / 0.96) 0%,
    rgb(var(--trial-mic-ink-rec-rgb) / 0.96) 32%,
    rgb(var(--trial-mic-ink-rec-rgb) / 0.88) 40%,
    rgb(var(--trial-mic-ink-rec-rgb) / 0.42) 58%,
    rgb(var(--trial-mic-ink-rec-rgb) / 0.12) 82%,
    rgb(var(--trial-mic-ink-rec-rgb) / 0) 100%
  );
}
.trial-mic--active .trial-mic__disc,
.trial-mic--recording .trial-mic__disc {
  z-index: 1;
  transition: none;
}
.trial-mic:hover .trial-mic__frame {
  transform: scale(1.08) translateY(-2px);
}
.trial-mic:active .trial-mic__frame {
  transform: scale(0.96) translateY(0);
}
.trial-mic__disc {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--trial-mic-disc);
  height: var(--trial-mic-disc);
  flex-shrink: 0;
  border-radius: 50%;
  box-sizing: border-box;
  transition: none;
  z-index: 3;
}
button.trial-mic__disc--clickable {
  cursor: pointer;
  appearance: none;
  padding: 0;
  font: inherit;
  outline-offset: 4px;
}
.trial-mic:hover .trial-mic__disc {
  box-shadow:
    0 6px 18px color-mix(in srgb, var(--text-h) 12%, transparent),
    0 1px 0 color-mix(in srgb, var(--text-h) 6%, transparent);
}
/* Neutral / loading — outlined circle; active / recording — solid coloured ring. */
.trial-mic__disc--idle {
  border: var(--trial-mic-ring-width) solid #000000;
  background: transparent;
  color: #000000;
}
[data-theme='dark'] .trial-mic__disc--idle {
  border-color: var(--text-h);
  color: var(--text-h);
}
.trial-mic__disc--idle.trial-mic__disc--loading {
  border-color: transparent;
  overflow: visible;
}
.trial-mic__loading-ring {
  position: absolute;
  /* Half stroke sits outside the padding box — expand so cardinal points aren't clipped. */
  inset: calc(var(--trial-mic-ring-width) * -0.5);
  width: auto;
  height: auto;
  overflow: visible;
  pointer-events: none;
}
/* Constant-speed draw + unwind; linear avoids ease-in-out hitches at the midpoint. */
.trial-mic__loading-ring__stroke {
  stroke-width: var(--trial-mic-ring-width);
  vector-effect: non-scaling-stroke;
  shape-rendering: geometricPrecision;
  will-change: stroke-dashoffset;
  stroke-dasharray: 100 100;
  stroke-dashoffset: 100;
  animation: trial-mic-border-draw 4s linear infinite;
}
.trial-mic__disc--loading .trial-mic__icon-svg {
  position: relative;
  z-index: 1;
}
.trial-mic__disc--active {
  border: var(--trial-mic-ring-width) solid var(--trial-mic-accent);
  background: transparent;
  color: var(--trial-mic-accent);
}
.trial-mic__disc--rec {
  border: var(--trial-mic-ring-width) solid var(--trial-mic-rec);
  background: transparent;
  color: var(--trial-mic-rec);
}
.trial-mic__icon-svg {
  display: block;
  width: 52%;
  height: 52%;
  transition: none;
}
.trial-mic:hover .trial-mic__icon-svg {
  transform: scale(1.06);
}
@keyframes trial-mic-border-draw {
  0% {
    stroke-dashoffset: 100;
  }

  100% {
    stroke-dashoffset: -100;
  }
}
@media (prefers-reduced-motion: reduce) {
  .trial-mic:hover .trial-mic__frame,
  .trial-mic:active .trial-mic__frame {
    transform: none;
  }

  .trial-mic:hover .trial-mic__icon-svg {
    transform: none;
  }

  .trial-mic__loading-ring__stroke {
    animation: none;
    stroke-dashoffset: 0;
  }
}
/* TrialReactiveMic — equalizer ring behind TrialPlaybackMic */
.trial-reactive-mic {
  display: contents;
}
.trial-reactive-mic__stage {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
  isolation: isolate;
}
.trial-reactive-mic__animation {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 0;
}
.trial-reactive-mic__mic {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.trial-reactive-mic__animation .mic-design__canvas {
  width: 100%;
  height: 100%;
  max-width: 100%;
  max-height: 100%;
}
.trial-reactive-mic__stage .trial-mic__disc--active,
.trial-reactive-mic__stage .trial-mic__disc--rec {
  background: var(--bg);
}
.trial-reactive-mic__stage .trial-mic__icon-svg {
  position: relative;
  z-index: 1;
}
.values-page__mic-artwork .trial-reactive-mic__stage .trial-mic__disc--active {
  background: var(--site-index-bg);
}
/* Fill the hero square; flex centering on the stage would shrink to mic content only. */
.home-text-hero__mic-stage .trial-reactive-mic__stage {
  position: absolute;
  inset: 0;
}
.home-text-hero__mic-stage .trial-reactive-mic__animation .mic-design__canvas {
  max-width: none;
  max-height: none;
}
/* /feedback — scope toggle in workspace header; narrow: single row with ellipsis (`layout.css`) */
.feedback-page.feedback-page--viva .trial-page__stage,
.feedback-page.feedback-page--station .trial-page__stage {
  align-items: stretch;
  max-width: 100%;
}
/* Viva: full-width strip of builder-style section cards (matches viva-builder grid) */
.feedback-page--viva .application-page__main {
  max-width: none;
  width: 100%;
  margin-inline: 0;
  align-self: stretch;
  justify-content: flex-start;
}
.feedback-page--viva .feedback-page__panels {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  width: 100%;
}
.feedback-page--demo-embed.page {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  min-height: 100vh;
  margin: 0;
  padding: clamp(0.65rem, 1.8vw, 1.1rem);
  background: var(--bg);
}
.feedback-page--demo-embed .trial-page__stage {
  min-height: calc(100vh - clamp(1.3rem, 3.6vw, 2.2rem));
  padding: 0;
}
.feedback-page--demo-embed .feedback-page__panels {
  gap: 0.75rem;
}
.feedback-page--demo-embed .feedback-page__question-detail {
  max-height: none;
  overflow: visible;
}
.feedback-page--demo-embed .feedback-page__mark-tier .feedback-page__detail-body {
  max-height: none;
  overflow: visible;
}
.feedback-page--demo-embed .feedback-page__pass-criteria-panel {
  margin-top: 1.35rem;
}
/* Marketing feedback iframe on narrow viewports (`embedMobile=1` from parent). */
.feedback-page--demo-embed.feedback-page--demo-embed-mobile.page,
.feedback-page--info-demo-embed.feedback-page--info-demo-embed-mobile.page {
  min-height: 0;
  height: 100%;
  overflow: hidden;
  padding-block: 3px;
  padding-inline: 0;
}
.feedback-page--demo-embed-mobile .trial-page__stage,
.feedback-page--info-demo-embed-mobile .trial-page__stage {
  min-height: 0;
  height: 100%;
  overflow: hidden;
  padding: 0;
}
.feedback-page--demo-embed-mobile .application-page__main,
.feedback-page--demo-embed-mobile .feedback-page__panels,
.feedback-page--demo-embed-mobile .feedback-page__panels-main,
.feedback-page--info-demo-embed-mobile .application-page__main,
.feedback-page--info-demo-embed-mobile .feedback-page__panels,
.feedback-page--info-demo-embed-mobile .feedback-page__panels-main {
  min-height: 0;
  overflow: hidden;
}
.feedback-page--demo-embed-mobile.feedback-page--viva .feedback-page__builder-grid,
.feedback-page--info-demo-embed-mobile.feedback-page--viva .feedback-page__builder-grid {
  grid-template-columns: 1fr;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}
.feedback-page--demo-embed-mobile.feedback-page--viva .feedback-page__builder-strip,
.feedback-page--info-demo-embed-mobile.feedback-page--viva .feedback-page__builder-strip {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  width: 100%;
  max-width: 100%;
}
.feedback-page--demo-embed-mobile.feedback-page--viva
  .feedback-page__builder-strip
  > .viva-builder-page__card-slot,
.feedback-page--info-demo-embed-mobile.feedback-page--viva
  .feedback-page__builder-strip
  > .viva-builder-page__card-slot {
  flex: 1 1 auto;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
.feedback-page--demo-embed-mobile .directory-card,
.feedback-page--demo-embed-mobile .viva-builder-page__card,
.feedback-page--info-demo-embed-mobile .directory-card,
.feedback-page--info-demo-embed-mobile .viva-builder-page__card {
  max-width: 100%;
  box-sizing: border-box;
}
.feedback-page--demo-embed-mobile .feedback-page__question-detail,
.feedback-page--demo-embed-mobile
  .feedback-page__mark-tier
  .feedback-page__detail-body,
.feedback-page--info-demo-embed-mobile .feedback-page__question-detail,
.feedback-page--info-demo-embed-mobile
  .feedback-page__mark-tier
  .feedback-page__detail-body {
  max-height: none;
  overflow: hidden;
}
.feedback-page--info-demo-embed .trial-page__stage {
  position: relative;
}
.feedback-page--info-demo-embed .feedback-page__panels {
  gap: 0.75rem;
}
.feedback-page--info-demo-embed .feedback-page__question-detail {
  max-height: none;
  overflow: visible;
}
.feedback-page__question-trigger--skeleton {
  cursor: default;
  pointer-events: none;
}
.feedback-page__question-update-badge--centered {
  justify-content: center;
  margin: 0.35rem auto 1rem;
}
.feedback-page__pass-criteria-panel--skeleton {
  display: grid;
  gap: 0.55rem;
}
.feedback-page__skeleton-line {
  display: block;
  width: 100%;
  min-height: 0.72rem;
  border-radius: 0.35rem;
  background: color-mix(in srgb, var(--text-h) 10%, var(--site-index-bg) 90%);
}
.feedback-page__skeleton-line--short {
  width: 42%;
}
.feedback-page__skeleton-line--medium {
  width: 72%;
}
.feedback-page__skeleton-line--score {
  width: 48%;
  min-height: 0.62rem;
}
.feedback-page__skeleton-line--prompt {
  width: 88%;
  min-height: 0.85rem;
}
.feedback-page__skeleton-line--tall {
  min-height: 3.2rem;
}
@media (prefers-reduced-motion: no-preference) {
  .feedback-page__skeleton-line {
    animation: feedback-skeleton-shimmer 1.35s ease-in-out infinite;
  }
}
@keyframes feedback-skeleton-shimmer {
  0%,
  100% {
    opacity: 0.45;
  }
  50% {
    opacity: 0.95;
  }
}
.feedback-page__session-actions {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.55rem;
  width: min(100%, 13.5rem);
  margin-left: auto;
  margin-right: auto;
  margin-top: 3.4rem;
  margin-bottom: 0.75rem;
}
.feedback-page__repeat-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 2.4rem;
  padding: 0.5rem 0.95rem;
  border: 1px solid color-mix(in srgb, var(--text-h) 18%, var(--border));
  border-radius: 999px;
  background: #fff;
  color: #000;
  font: inherit;
  font-size: clamp(0.74rem, 1.25vw, 0.84rem);
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 0.45rem 1.2rem color-mix(in srgb, #000 8%, transparent);
  transition:
    background 0.18s ease,
    border-color 0.18s ease,
    box-shadow 0.18s ease,
    transform 0.18s ease;
}
.feedback-page__repeat-button:hover:not(:disabled) {
  border-color: color-mix(in srgb, #000 34%, var(--border));
  background: color-mix(in srgb, #000 5%, #fff);
  box-shadow: 0 0.6rem 1.45rem color-mix(in srgb, #000 12%, transparent);
  transform: translateY(-1px);
}
.feedback-page__repeat-button--home {
  border-color: color-mix(in srgb, #000 52%, var(--border));
  background: linear-gradient(135deg, #000 0%, #2f2f2f 100%);
  color: #fff;
  box-shadow: 0 0.65rem 1.55rem color-mix(in srgb, #000 22%, transparent);
}
.feedback-page__repeat-button--home:hover:not(:disabled) {
  border-color: color-mix(in srgb, #000 72%, var(--border));
  background: linear-gradient(135deg, #111 0%, #3a3a3a 100%);
  box-shadow: 0 0.8rem 1.75rem color-mix(in srgb, #000 28%, transparent);
}
[data-theme='dark'] .feedback-page__repeat-button:not(.feedback-page__repeat-button--home) {
  border-color: color-mix(in srgb, #fff 20%, var(--border));
  background: linear-gradient(135deg, #070707 0%, #202020 100%);
  color: #fff;
  box-shadow: 0 0.65rem 1.55rem color-mix(in srgb, #000 32%, transparent);
}
[data-theme='dark'] .feedback-page__repeat-button:not(.feedback-page__repeat-button--home):hover:not(:disabled) {
  border-color: color-mix(in srgb, #fff 34%, var(--border));
  background: linear-gradient(135deg, #111 0%, #2b2b2b 100%);
  box-shadow: 0 0.8rem 1.75rem color-mix(in srgb, #000 38%, transparent);
}
[data-theme='dark'] .feedback-page__repeat-button--home {
  border-color: color-mix(in srgb, #fff 70%, var(--border));
  background: linear-gradient(135deg, #fff 0%, #e8e8e8 100%);
  color: #000;
  box-shadow: 0 0.65rem 1.55rem color-mix(in srgb, #000 34%, transparent);
}
[data-theme='dark'] .feedback-page__repeat-button--home:hover:not(:disabled) {
  border-color: color-mix(in srgb, #fff 86%, var(--border));
  background: linear-gradient(135deg, #f7f7f7 0%, #dcdcdc 100%);
  box-shadow: 0 0.8rem 1.75rem color-mix(in srgb, #000 42%, transparent);
}
.feedback-page__repeat-button:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
.feedback-page__repeat-button:disabled {
  cursor: not-allowed;
  opacity: 0.48;
}
/*
 * Same gap + responsive columns as `.viva-builder-page__grid` below 1200px; wide strip matches
 * station-builder flex row. When a section is expanded and viewport is < 5 columns, peers hide
 * (like viva builder solo-narrow + station peer-hidden).
 */
.feedback-page--viva .feedback-page__builder-grid {
  --vb-card-gap: clamp(0.5rem, 1.2vw, 0.85rem);
  width: 100%;
  min-width: 0;
  display: grid;
  gap: var(--vb-card-gap);
  grid-template-columns: 1fr;
  grid-auto-rows: auto;
  align-content: start;
  align-items: start;
}
@media (min-width: 480px) {
  .feedback-page--viva .feedback-page__builder-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 900px) {
  .feedback-page--viva .feedback-page__builder-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
/* Inner wrapper participates in grid as pass-through; ≥1200px it becomes the flex row */
.feedback-page--viva .feedback-page__builder-strip {
  display: contents;
}
@media (max-width: 1199px) {
  /* Multi-row grid: selected spans full width; peers fade then drop out of layout */
  .feedback-page--viva
    .feedback-page__builder-grid--has-expanded
    .feedback-page__builder-card-slot--solo-expanded {
    grid-column: 1 / -1;
  }

  .feedback-page--viva
    .feedback-page__builder-grid--has-expanded
    .feedback-page__builder-card-slot--feedback-peer-hidden:not(.feedback-page__builder-card-slot--feedback-peer-layout-gone) {
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.38s ease;
  }

  .feedback-page--viva
    .feedback-page__builder-grid--has-expanded
    .feedback-page__builder-card-slot--feedback-peer-layout-gone {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .feedback-page--viva .feedback-page__builder-grid {
    display: block;
  }

  .feedback-page--viva .feedback-page__builder-strip {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    gap: var(--vb-card-gap);
    width: 100%;
    min-width: 0;
  }

  .feedback-page--viva .feedback-page__builder-strip > .viva-builder-page__card-slot {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }

  /* 2× centre / 0.75 peers — mirrors `.viva-builder-page__station-cards-row--center-expanded` */
  .feedback-page--viva
    .feedback-page__builder-strip--expanded
    > .viva-builder-page__card-slot:has(.feedback-page__builder-card--primary) {
    flex: 2 1 0;
  }

  .feedback-page--viva
    .feedback-page__builder-strip--expanded
    > .viva-builder-page__card-slot:not(:has(.feedback-page__builder-card--primary)) {
    flex: 0.75 1 0;
  }
}
@media (min-width: 1200px) and (prefers-reduced-motion: no-preference) {
  .feedback-page--viva .feedback-page__builder-strip > .viva-builder-page__card-slot {
    transition:
      flex-grow 0.55s cubic-bezier(0.22, 1, 0.36, 1),
      flex-basis 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  }
}
.feedback-page--viva .feedback-page__builder-card-slot.viva-builder-page__card-slot {
  min-width: 0;
}
/* Primary tile: station centre-slot emphasis (width growth is main cue; no scale) */
.feedback-page--viva .feedback-page__builder-card--primary.directory-card {
  position: relative;
  z-index: 1;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--text-h) 10%, var(--border)),
    0 10px 28px color-mix(in srgb, var(--text-h) 12%, transparent);
}
@media (min-width: 1200px) and (prefers-reduced-motion: no-preference) {
  .feedback-page--viva .feedback-page__builder-card--primary.directory-card {
    transition:
      transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),
      box-shadow 0.32s ease;
  }

  .feedback-page--viva .feedback-page__builder-card--primary.directory-card:hover {
    transform: translateY(-4px);
  }
}
@media (min-width: 1200px) and (prefers-reduced-motion: reduce) {
  .feedback-page--viva .feedback-page__builder-card--primary.directory-card,
  .feedback-page--viva .feedback-page__builder-card--primary.directory-card:hover {
    transform: none;
  }
}
.feedback-page--viva .feedback-page__builder-card .viva-builder-page__card-main[role='button'] {
  cursor: pointer;
  width: 100%;
  touch-action: manipulation;
}
.feedback-page--viva
  .feedback-page__builder-card
  .viva-builder-page__card-main[role='button']:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 3px;
}
.feedback-page--viva
  .feedback-page__builder-card
  .viva-builder-page__card-main[role='button'][aria-expanded='true']:focus-visible {
  outline: none;
}
/*
 * Section header chevron — always visible accordion affordance (viva + station).
 */
.feedback-page .feedback-page__section-chevron {
  flex-shrink: 0;
  width: 1.1rem;
  height: 1.1rem;
  opacity: 0.62;
  color: color-mix(in srgb, var(--text-h) 58%, var(--site-index-bg) 42%);
  transition:
    opacity 0.15s ease,
    transform 0.2s ease;
}
.feedback-page
  .viva-builder-page__card-main[role='button']:hover
  .feedback-page__section-chevron,
.feedback-page
  .viva-builder-page__card-main[role='button'][aria-expanded='true']
  .feedback-page__section-chevron,
.feedback-page .feedback-page__section-chevron--open {
  opacity: 0.9;
}
.feedback-page .feedback-page__section-chevron--open {
  transform: rotate(180deg);
}
@media (prefers-reduced-motion: no-preference) {
  .feedback-page
    .viva-builder-page__card-main[role='button']:not([aria-expanded='true'])
    .feedback-page__section-chevron.feedback-page__section-chevron--discover {
    animation: feedback-question-chevron-pulse 1.6s ease-in-out infinite;
    transform-origin: center;
  }
}
/*
 * Legacy bottom chevron (builder parity) — section tiles now use header chevron.
 * Kept for any embed/skeleton paths that still reference card-more.
 */
@keyframes feedback-card-more-in {
  from {
    opacity: 0;
    transform: translate(-50%, 6px);
  }

  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}
.feedback-page--viva
  .feedback-page__builder-card
  .viva-builder-page__card-more.feedback-page__card-more {
  left: 50%;
  right: auto;
  /* Builder uses ~0.2–0.45rem; tuck chevron nearer the bottom edge on feedback tiles */
  bottom: clamp(0, 0.2vw, 0.08rem);
}
/*
 * Chevron on every tile (muted); after centre + FLIP the active tile gets reveal
 * (`feedback-page__card-more--visible`).
 */
@media (prefers-reduced-motion: no-preference) {
  .feedback-page--viva
    .feedback-page__builder-card
    .viva-builder-page__card-more.feedback-page__card-more:not(.feedback-page__card-more--visible) {
    opacity: 0.32 !important;
    visibility: visible !important;
    pointer-events: none;
    animation: none !important;
    animation-delay: 0s !important;
    transform: translate(-50%, 5px) !important;
  }

  .feedback-page--viva
    .feedback-page__builder-card
    .viva-builder-page__card-more.feedback-page__card-more--visible {
    visibility: visible !important;
    pointer-events: auto;
    animation: feedback-card-more-in 0.42s cubic-bezier(0.22, 1, 0.36, 1) forwards !important;
    animation-delay: 0.08s !important;
  }
}
@media (prefers-reduced-motion: reduce) {
  .feedback-page--viva
    .feedback-page__builder-card
    .viva-builder-page__card-more.feedback-page__card-more:not(.feedback-page__card-more--visible) {
    opacity: 0.32 !important;
    visibility: visible !important;
    pointer-events: none;
    animation: none !important;
    transform: translate(-50%, 4px) !important;
  }

  .feedback-page--viva
    .feedback-page__builder-card
    .viva-builder-page__card-more.feedback-page__card-more--visible {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto;
    animation: none !important;
    transform: translate(-50%, 0) !important;
  }
}
.feedback-page__facet-steps {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  width: 100%;
  margin-top: 0.8rem;
  padding-bottom: 0.15rem;
  box-sizing: border-box;
}
.feedback-page__facet-step {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.65rem;
  height: 1.65rem;
  margin: 0;
  padding: 0;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text-h);
  font-size: clamp(0.68rem, 1.35vw, 0.78rem);
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition:
    background 0.2s ease,
    color 0.2s ease,
    border-color 0.2s ease;
}
.feedback-page__facet-step:hover {
  border-color: color-mix(in srgb, var(--text-h) 35%, var(--border));
}
.feedback-page__facet-step:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 2px;
}
.feedback-page__facet-step--selected {
  background: #111;
  color: #fff;
  border-color: #111;
}
/*
 * Feedback strip: shorter tiles (≈ half builder min-height), no ring / Questions row.
 * Topic summary uses one line so overall card height stays compact.
 */
.feedback-page--viva .feedback-page__builder-card.viva-builder-page__card.directory-card {
  min-height: clamp(3.2rem, 8.8vh, 6rem);
  padding-block: clamp(0.25rem, 0.65vw, 0.4rem);
  padding-inline: clamp(0.65rem, 1.6vw, 1rem);
}
.feedback-page--viva .feedback-page__builder-card .viva-builder-page__card-main {
  gap: 0.22rem;
}
/* Reserve three summary lines (hint + band + score) so every section tile matches. */
.feedback-page
  .feedback-page__builder-card:not(.feedback-page__overall-grade)
  .viva-builder-page__card-body {
  min-height: calc(3 * 1.25 * clamp(0.7rem, 1.35vw, 0.78rem));
}
.feedback-page--viva .feedback-page__builder-card p.viva-builder-page__field {
  margin: 0;
  line-height: 1.25;
  font-size: clamp(0.7rem, 1.35vw, 0.78rem);
}
.feedback-page--viva .feedback-page__builder-card .viva-builder-page__topic-line-outer {
  -webkit-line-clamp: 1;
  line-clamp: 1;
  max-height: calc(1 * 1.25em);
  min-height: calc(1 * 1.25em);
  line-height: 1.25;
}
.feedback-page--viva .feedback-page__builder-card .viva-builder-page__topic-line-inner {
  line-height: 1.25;
}
/* Station: wide split — mirrors multi-station / circuit feel */
.feedback-page--station .application-page__main {
  max-width: min(72rem, 100%);
  width: 100%;
  margin-inline: auto;
  align-self: stretch;
}
.feedback-page--station .feedback-page__panels {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem 1.25rem;
  width: 100%;
  align-items: start;
}
@media (max-width: 640px) {
  .feedback-page--station .feedback-page__panels {
    grid-template-columns: 1fr;
  }
}
.feedback-page--station .feedback-page__panels-main {
  grid-column: 1 / -1;
  min-width: 0;
}
.feedback-history-card__hint {
  margin: 0;
  color: color-mix(in srgb, var(--text-h) 62%, var(--site-index-bg) 38%);
  font-size: clamp(0.68rem, 1.25vw, 0.76rem);
  line-height: 1.25;
}
.feedback-history-card__score {
  margin: 0;
  color: color-mix(in srgb, var(--text-h) 78%, var(--site-index-bg) 22%);
  font-size: clamp(0.68rem, 1.25vw, 0.76rem);
  font-weight: 700;
  line-height: 1.25;
}
.feedback-page__question-panel {
  width: 100%;
  min-width: 0;
  margin-top: 0.55rem;
  padding: 0.55rem 0.5rem 0.65rem;
  border-radius: 0.45rem;
  background: color-mix(in srgb, var(--site-index-bg) 88%, var(--text-h) 12%);
  border: 1px solid color-mix(in srgb, var(--text-h) 12%, var(--border));
  box-sizing: border-box;
}
.feedback-page__question-panel-intro {
  margin: 0 0 0.45rem;
  font-size: clamp(0.62rem, 1.1vw, 0.7rem);
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 55%, var(--site-index-bg) 45%);
}
.feedback-page__question-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.feedback-page__question-item {
  margin: 0;
  border-radius: 0.35rem;
  background: color-mix(in srgb, var(--surface) 94%, var(--text-h) 6%);
  border: 1px solid color-mix(in srgb, var(--text-h) 8%, var(--border));
  overflow: visible;
}
.feedback-page__question-trigger {
  display: flex;
  width: 100%;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 0.45rem 0.55rem;
  margin: 0;
  border: none;
  background: transparent;
  color: var(--text-h);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s ease;
}
.feedback-page__question-trigger:hover {
  background: color-mix(in srgb, var(--text-h) 6%, transparent);
}
.feedback-page__question-trigger:focus-visible {
  outline: var(--focus-ring-width) var(--focus-ring-style) var(--focus-ring-color);
  outline-offset: 2px;
}
.feedback-page__question-trigger--open {
  background: color-mix(in srgb, var(--text-h) 8%, transparent);
}
.feedback-page__question-prompt {
  flex: 1;
  min-width: 0;
  font-size: clamp(0.72rem, 1.28vw, 0.82rem);
  line-height: 1.35;
}
.feedback-page__question-cache-badge {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 45%;
  padding: 0.18rem 0.42rem;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, #059669 28%, var(--border));
  background: color-mix(in srgb, #059669 12%, var(--surface) 88%);
  color: #047857;
  font-size: clamp(0.58rem, 1vw, 0.66rem);
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1.1;
  text-transform: uppercase;
  white-space: nowrap;
}
.feedback-page__question-detail {
  position: relative;
  padding: 0 0.55rem 0.55rem;
  border-top: 1px solid color-mix(in srgb, var(--text-h) 10%, var(--border));
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  max-height: none;
  overflow: visible;
}
.feedback-page__question-detail--updating {
  padding-top: 0.45rem;
}
.feedback-page__style-format-panel {
  padding-top: 0.55rem;
}
.feedback-page__question-update-badge {
  position: absolute;
  top: 0.4rem;
  right: 0.55rem;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  max-width: calc(100% - 1.1rem);
  padding: 0.22rem 0.45rem;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--text-h) 12%, var(--border));
  background: color-mix(in srgb, var(--surface) 94%, var(--text-h) 6%);
  color: color-mix(in srgb, var(--text-h) 68%, var(--site-index-bg) 32%);
  font-size: clamp(0.58rem, 1vw, 0.66rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  box-shadow: 0 0.35rem 1rem color-mix(in srgb, var(--text-h) 8%, transparent);
}
@keyframes feedback-question-update-spin {
  to {
    transform: rotate(360deg);
  }
}
.feedback-page__question-update-spinner {
  width: 0.72rem;
  height: 0.72rem;
  border-radius: 50%;
  border: 2px solid color-mix(in srgb, var(--text-h) 18%, transparent);
  border-top-color: color-mix(in srgb, var(--text-h) 70%, var(--site-index-bg) 30%);
  animation: feedback-question-update-spin 0.8s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
  .feedback-page__question-update-spinner {
    animation: none;
  }
}
.feedback-page__style-format-body {
  white-space: pre-wrap;
}
.feedback-page__detail-block {
  min-width: 0;
}
.feedback-page__detail-heading {
  margin: 0 0 0.28rem;
  font-size: clamp(0.62rem, 1.05vw, 0.68rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 58%, var(--site-index-bg) 42%);
}
.feedback-page__detail-body {
  margin: 0;
  font-size: clamp(0.74rem, 1.3vw, 0.84rem);
  line-height: 1.45;
  color: color-mix(in srgb, var(--text-h) 92%, var(--site-index-bg) 8%);
}
/* Station scope uses the same tiles; align metrics with viva strip */
.feedback-page--station .feedback-page__builder-card.viva-builder-page__card.directory-card {
  min-height: clamp(3.2rem, 8.8vh, 6rem);
  padding-block: clamp(0.25rem, 0.65vw, 0.4rem);
  padding-inline: clamp(0.65rem, 1.6vw, 1rem);
}
.feedback-page--station .feedback-page__builder-card .viva-builder-page__card-main {
  gap: 0.22rem;
}
.feedback-page--station .feedback-page__builder-card p.viva-builder-page__field {
  margin: 0;
  line-height: 1.25;
  font-size: clamp(0.7rem, 1.35vw, 0.78rem);
}
.feedback-page__detail-heading-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.28rem;
}
.feedback-page__detail-heading-row .feedback-page__detail-heading {
  margin: 0;
}
.feedback-page__detail-status {
  font-size: clamp(0.62rem, 1.05vw, 0.68rem);
  font-weight: 600;
  color: color-mix(in srgb, var(--text-h) 50%, var(--site-index-bg) 50%);
}
.feedback-page__detail-body--pending {
  font-style: italic;
  color: color-mix(in srgb, var(--text-h) 62%, var(--site-index-bg) 38%);
}
.feedback-page__detail-body--error {
  color: color-mix(in srgb, #b42318 78%, var(--text-h) 22%);
}
.feedback-page__session-poll-hint,
.feedback-page__question-panel-intro--error {
  margin: 0 0 0.75rem;
  font-size: clamp(0.72rem, 1.2vw, 0.82rem);
  color: color-mix(in srgb, var(--text-h) 58%, var(--site-index-bg) 42%);
}
.feedback-page__pass-criteria-panel {
  margin-top: 1.35rem;
  padding: 0.75rem 0.85rem;
  border-radius: 0.65rem;
  background: color-mix(in srgb, var(--text-h) 4%, var(--bg) 96%);
  border: 1px solid color-mix(in srgb, var(--text-h) 8%, var(--border));
}
.feedback-page__mark-description {
  margin-bottom: 0;
  white-space: pre-wrap;
}
.feedback-page__mark-tier .feedback-page__pass-criteria-panel {
  margin-top: 1.35rem;
}
.feedback-page__pass-criteria-heading {
  margin: 0 0 0.55rem;
  font-size: clamp(0.62rem, 1.05vw, 0.68rem);
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 58%, var(--site-index-bg) 42%);
}
.feedback-page__pass-criteria-summary {
  margin: 0 0 0.55rem;
  font-size: clamp(0.68rem, 1.1vw, 0.76rem);
  color: color-mix(in srgb, var(--text-h) 68%, var(--site-index-bg) 32%);
}
.feedback-page__pass-criteria-empty {
  margin: 0;
  font-size: clamp(0.68rem, 1.1vw, 0.76rem);
  font-style: italic;
  color: color-mix(in srgb, var(--text-h) 52%, var(--site-index-bg) 48%);
}
.feedback-page__pass-criteria-group {
  margin-top: 0.65rem;
}
.feedback-page__pass-criteria-group:first-child {
  margin-top: 0;
}
.feedback-page__pass-criteria-group-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
  margin-bottom: 0.35rem;
}
.feedback-page__pass-criteria-group-name {
  font-size: clamp(0.62rem, 1.05vw, 0.68rem);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 62%, var(--site-index-bg) 38%);
}
.feedback-page__pass-criteria-group-meta {
  font-size: clamp(0.62rem, 1.05vw, 0.68rem);
  color: color-mix(in srgb, var(--text-h) 50%, var(--site-index-bg) 50%);
}
.feedback-page__pass-criteria-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.2rem 0.75rem;
}
@media (min-width: 640px) {
  .feedback-page__pass-criteria-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.feedback-page__pass-criteria-item {
  display: flex;
  align-items: flex-start;
  gap: 0.35rem;
  min-width: 0;
}
.feedback-page__pass-criteria-icon {
  flex-shrink: 0;
  width: 0.85rem;
  height: 0.85rem;
  margin-top: 0.1rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.68rem;
  color: color-mix(in srgb, var(--text-h) 42%, var(--site-index-bg) 58%);
}
.feedback-page__pass-criteria-icon--hit {
  color: #059669;
}
.feedback-page__pass-criteria-text {
  font-size: clamp(0.68rem, 1.1vw, 0.76rem);
  line-height: 1.35;
  word-break: break-word;
  color: color-mix(in srgb, var(--text-h) 92%, var(--site-index-bg) 8%);
}
.feedback-page__mark-tier {
  margin-top: 0.85rem;
}
.feedback-page__mark-tier:first-child {
  margin-top: 0;
}
.feedback-page__mark-tier-heading {
  margin: 0 0 0.4rem;
  font-size: clamp(0.62rem, 1.05vw, 0.68rem);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--text-h) 58%, var(--site-index-bg) 42%);
}
.feedback-page__mark-score {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  margin: 0 0 0.45rem;
  padding: 0.28rem 0.55rem;
  border-radius: 999px;
  background: #111;
  color: #fff;
  font-size: clamp(0.68rem, 1.1vw, 0.76rem);
  font-weight: 800;
  line-height: 1.2;
}
.feedback-page__mark-source-label {
  margin: 0 0 0.45rem;
  font-size: clamp(0.68rem, 1.1vw, 0.76rem);
  font-weight: 600;
  color: color-mix(in srgb, var(--text-h) 72%, var(--site-index-bg) 28%);
}
.feedback-page__cache-hit-note {
  margin: 0 0 0.45rem;
  padding: 0.45rem 0.55rem;
  border-radius: 0.45rem;
  font-size: clamp(0.68rem, 1.1vw, 0.76rem);
  font-weight: 600;
  color: #047857;
  background: color-mix(in srgb, #059669 10%, var(--bg) 90%);
  border: 1px solid color-mix(in srgb, #059669 22%, var(--border));
}
.feedback-page__detail-body--secondary {
  margin-top: 0.45rem;
  font-size: clamp(0.68rem, 1.1vw, 0.76rem);
  color: color-mix(in srgb, var(--text-h) 62%, var(--site-index-bg) 38%);
}
.feedback-page__detail-inline-label {
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.92em;
}
/* --- Overall grade summary (compact tile matching section cards) --- */
.feedback-page__overall-grade.viva-builder-page__card.directory-card {
  --overall-grade-accent: color-mix(in srgb, var(--text-h) 28%, var(--border));
  --overall-grade-surface: color-mix(in srgb, var(--site-index-bg) 94%, var(--text-h) 6%);

  position: relative;
  width: 100%;
  margin: 0 0 var(--vb-card-gap, clamp(0.5rem, 1.2vw, 0.85rem));
  min-height: clamp(3.2rem, 8.8vh, 6rem);
  padding-block: clamp(0.25rem, 0.65vw, 0.4rem);
  padding-inline: clamp(0.65rem, 1.6vw, 1rem);
  box-sizing: border-box;
  border: 1px solid color-mix(in srgb, var(--overall-grade-accent) 55%, var(--border));
  border-top: 3px solid var(--overall-grade-accent);
  border-radius: 0.55rem;
  background: var(--overall-grade-surface);
  cursor: default;
  user-select: text;
  pointer-events: auto;
}
.feedback-page__overall-grade.feedback-page__grade-tone--outstanding {
  --overall-grade-accent: #6366f1;
  --overall-grade-surface: color-mix(in srgb, #6366f1 8%, var(--site-index-bg) 92%);
}
.feedback-page__overall-grade.feedback-page__grade-tone--well-above {
  --overall-grade-accent: #2563eb;
  --overall-grade-surface: color-mix(in srgb, #2563eb 8%, var(--site-index-bg) 92%);
}
.feedback-page__overall-grade.feedback-page__grade-tone--above {
  --overall-grade-accent: #0d9488;
  --overall-grade-surface: color-mix(in srgb, #0d9488 8%, var(--site-index-bg) 92%);
}
.feedback-page__overall-grade.feedback-page__grade-tone--at-standard {
  --overall-grade-accent: #059669;
  --overall-grade-surface: color-mix(in srgb, #059669 8%, var(--site-index-bg) 92%);
}
.feedback-page__overall-grade.feedback-page__grade-tone--borderline {
  --overall-grade-accent: #d97706;
  --overall-grade-surface: color-mix(in srgb, #d97706 8%, var(--site-index-bg) 92%);
}
.feedback-page__overall-grade.feedback-page__grade-tone--fail {
  --overall-grade-accent: #dc2626;
  --overall-grade-surface: color-mix(in srgb, #dc2626 8%, var(--site-index-bg) 92%);
}
.feedback-page__overall-grade.feedback-page__overall-grade--pending,
.feedback-page__overall-grade.feedback-page__grade-tone--pending,
.feedback-page__overall-grade.feedback-page__grade-tone--default {
  --overall-grade-accent: color-mix(in srgb, var(--text-h) 28%, var(--border));
  --overall-grade-surface: color-mix(in srgb, var(--site-index-bg) 94%, var(--text-h) 6%);
}
.feedback-page__overall-grade .viva-builder-page__card-main {
  gap: 0.22rem;
  cursor: default;
}
.feedback-page__overall-grade.directory-card:hover {
  transform: none;
  box-shadow: none;
}
.feedback-page__overall-grade .viva-builder-page__card-body {
  min-height: calc(3 * 1.25 * clamp(0.7rem, 1.35vw, 0.78rem));
}
.feedback-page__overall-grade .feedback-history-card__band.feedback-page__grade-tone--pending {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.feedback-page__overall-grade-spinner {
  width: 0.62rem;
  height: 0.62rem;
  border-radius: 50%;
  border: 2px solid color-mix(in srgb, var(--text-h) 18%, transparent);
  border-top-color: color-mix(in srgb, var(--text-h) 70%, var(--site-index-bg) 30%);
  animation: feedback-question-update-spin 0.8s linear infinite;
  flex-shrink: 0;
}
.feedback-page__overall-grade-sr-full {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
@media (prefers-reduced-motion: reduce) {
  .feedback-page__overall-grade-spinner {
    animation: none;
  }
}
/* --- ACEM band tone colors --- */
.feedback-page__grade-tone--outstanding {
  color: #6366f1;
}
.feedback-page__grade-tone--well-above {
  color: #2563eb;
}
.feedback-page__grade-tone--above {
  color: #0d9488;
}
.feedback-page__grade-tone--at-standard {
  color: #059669;
}
.feedback-page__grade-tone--borderline {
  color: #d97706;
}
.feedback-page__grade-tone--fail {
  color: #dc2626;
}
.feedback-page__grade-tone--pending,
.feedback-page__grade-tone--default {
  color: color-mix(in srgb, var(--text-h) 55%, var(--site-index-bg) 45%);
}
/* --- Section card emoji + band --- */
.feedback-page__section-emoji {
  margin-right: 0.28rem;
  font-size: 1.05em;
  line-height: 1;
}
.feedback-history-card__band {
  margin: 0;
  font-size: clamp(0.68rem, 1.25vw, 0.76rem);
  font-weight: 800;
  line-height: 1.25;
}
/* --- Click-to-explore discovery hints --- */
.feedback-page__discover-hint {
  margin: 0 0 0.55rem;
  text-align: center;
  font-size: clamp(0.72rem, 1.3vw, 0.82rem);
  font-weight: 600;
  line-height: 1.35;
  color: color-mix(in srgb, var(--text-h) 68%, var(--site-index-bg) 32%);
}
.feedback-page__discover-hint--panel {
  margin-bottom: 0.45rem;
  text-align: left;
  text-transform: none;
  letter-spacing: normal;
  font-size: clamp(0.68rem, 1.15vw, 0.76rem);
}
.feedback-page__discover-hint--below {
  margin: clamp(1.35rem, 3vw, 1.85rem) 0 0;
}
@keyframes feedback-discover-pulse {
  0%,
  100% {
    opacity: 0.45;
    transform: translate(-50%, 5px);
  }

  50% {
    opacity: 0.92;
    transform: translate(-50%, 0);
  }
}
@media (prefers-reduced-motion: no-preference) {
  .feedback-page--viva
    .feedback-page__builder-card
    .viva-builder-page__card-more.feedback-page__card-more--discover:not(.feedback-page__card-more--visible) {
    opacity: 0.72 !important;
    animation: feedback-discover-pulse 1.6s ease-in-out infinite !important;
  }
}
/* --- Question row chevron --- */
.feedback-page__question-chevron {
  flex-shrink: 0;
  width: 1rem;
  height: 1rem;
  margin-top: 0.12rem;
  opacity: 0.62;
  color: color-mix(in srgb, var(--text-h) 55%, var(--site-index-bg) 45%);
  transition:
    opacity 0.15s ease,
    transform 0.2s ease;
}
.feedback-page__question-trigger:hover .feedback-page__question-chevron,
.feedback-page__question-trigger--discover .feedback-page__question-chevron,
.feedback-page__question-trigger--open .feedback-page__question-chevron,
.feedback-page__question-chevron--open {
  opacity: 0.9;
}
.feedback-page__question-chevron--open {
  transform: rotate(180deg);
}
@media (prefers-reduced-motion: no-preference) {
  .feedback-page__question-trigger--discover .feedback-page__question-chevron {
    animation: feedback-question-chevron-pulse 1.6s ease-in-out infinite;
    transform-origin: center;
  }
}
@keyframes feedback-question-chevron-pulse {
  0%,
  100% {
    opacity: 0.45;
  }

  50% {
    opacity: 0.95;
  }
}
@media (prefers-reduced-motion: reduce) {
  .feedback-page__question-trigger--discover .feedback-page__question-chevron {
    opacity: 0.88;
  }
}
/* /auth — sign in, sign up, forgot password */
.page.auth-page {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  flex: 1 1 auto;
  min-height: 0;
  max-width: 22rem;
  margin-inline: auto;
}
.page.auth-page.auth-page--signup {
  max-width: 28rem;
}
.page.auth-page.auth-page--contact {
  width: min(70vw, 100%);
  max-width: min(70vw, 100%);
}
/* Tighter band below the site header; centre in `.site-main` flex column */
.site-main > .page.auth-page.auth-page--contact {
  padding-top: 1rem;
  align-self: center;
}
.page.auth-page.auth-page--contact .auth-page__core {
  padding-top: clamp(1.25rem, 7vh, 3.5rem);
}
.page.auth-page.auth-page--contact .auth-page__foot {
  margin-top: 1rem;
  gap: 0.75rem;
}
/* Centre the form block in the viewport band below the header (see .site-main > :first-child) */
.site-main > .page.auth-page {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}
.auth-page__card {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
}
.auth-page__card--status-only {
  flex: 1 1 auto;
  min-height: 0;
}
.auth-page__card--status-only .auth-page__core {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.auth-page__card--status-only .auth-page__foot {
  margin-top: 0;
}
.auth-page__status-band {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 0;
}
/* Title + fields + CTA: stable block so /auth ↔ /auth/sign-up does not re-center inputs */
.auth-page__core {
  flex-shrink: 0;
  padding-top: clamp(2rem, 12vh, 6rem);
}
.auth-page__foot {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  margin-top: 2.5rem;
}
.auth-page__title {
  margin: 0;
  min-height: 2.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--heading);
  font-weight: 600;
  font-size: 1.5rem;
  letter-spacing: -0.024em;
  line-height: 1.25;
  color: var(--text-h);
  text-align: center;
}
.auth-page__form {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
}
.auth-page__form--signup-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.85rem 0.8rem;
}
.auth-page__field--span-2 {
  grid-column: 1 / -1;
}
.auth-page__field {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.auth-page__field--hidden {
  position: absolute;
  left: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.auth-page__field--with-sr-username {
  position: relative;
}
.auth-page__label {
  font-size: 0.83125rem;
  font-weight: 500;
  color: var(--text);
}
.auth-page__optional {
  font-weight: 400;
  color: var(--text-muted);
}
.auth-page__input {
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font: inherit;
  font-size: 0.9125rem;
  color: var(--text-h);
  background: var(--surface);
  transition:
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}
.auth-page__input::placeholder {
  color: var(--text-muted);
  opacity: 1;
}
.auth-page__input:hover {
  border-color: color-mix(in srgb, var(--border) 65%, var(--text-muted));
}
.auth-page__input:disabled {
  cursor: not-allowed;
  opacity: 0.72;
}
/* Same treatment for :focus and :focus-visible: text fields always match
   :focus-visible on click, which was swapping the accent glow for the global
   dashed ring. Keep the softer ring here; keyboard users still get a clear cue. */
.auth-page__input:focus,
.auth-page__input:focus-visible {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent);
}
textarea.auth-page__input.auth-page__input--multiline {
  min-height: 6.5rem;
  resize: vertical;
  line-height: 1.45;
}
.auth-page__link {
  font-size: 0.83125rem;
  font-weight: 500;
  color: var(--text);
  text-decoration: none;
}
.auth-page__link:hover {
  color: var(--text-interactive-hover);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.auth-page__link:focus {
  outline: none;
}
.auth-page__link:focus-visible {
  outline: none;
  color: var(--text-interactive-hover);
  text-decoration: underline;
  text-underline-offset: 2px;
}
/* Primary submit — match form fields (no global dashed :focus-visible on pills). */
.page.auth-page .btn.btn--primary:focus {
  outline: none;
}
.page.auth-page .btn.btn--primary:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 26%, transparent);
}
/* Primary submit in auth/contact forms — full width + spacing after fields */
.page.auth-page .auth-page__form button.btn--primary {
  width: 100%;
  margin-top: 0.25rem;
}
.page.auth-page .auth-page__form--signup-grid button.btn--primary {
  margin-top: 0;
}
.auth-page__status {
  margin: 0;
  padding: 0.7rem 0.75rem;
  border-radius: 10px;
  font-size: 0.875rem;
  line-height: 1.45;
}
.auth-page__status--success {
  border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--border));
  color: var(--text-h);
  background: color-mix(in srgb, var(--accent) 9%, transparent);
}
.auth-page__status--error {
  border: 1px solid color-mix(in srgb, #b91c1c 36%, var(--border));
  color: #7f1d1d;
  background: color-mix(in srgb, #b91c1c 8%, transparent);
}
.auth-page__footer {
  margin: 0;
  font-size: 0.9125rem;
  line-height: 1.5;
  color: var(--text);
  text-align: center;
}
.auth-page__footer .auth-page__link {
  font-size: inherit;
  font-weight: 600;
  color: var(--text-h);
}
.auth-page__footer .auth-page__link:hover,
.auth-page__footer .auth-page__link:focus-visible {
  color: var(--text-h);
}
.auth-page__home {
  font-size: 0.83125rem;
  text-align: center;
}
.auth-page__home .auth-page__link {
  font-weight: 500;
}
.auth-page__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;
}
.auth-page__identifier-summary {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: -0.15rem;
  font-size: 0.9125rem;
  line-height: 1.45;
  color: var(--text);
  text-align: center;
}
.auth-page__identifier-email {
  font-weight: 600;
  color: var(--text-h);
  max-width: min(100%, 16rem);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
button.auth-page__change-account {
  margin: 0;
  padding: 0;
  border: none;
  font: inherit;
  font-weight: 600;
  background: none;
  cursor: pointer;
}
button.auth-page__change-account:focus {
  outline: none;
}
button.auth-page__change-account:focus-visible {
  outline: none;
  color: var(--text-interactive-hover);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.auth-page__oauth-divider {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin: 0.65rem 0 0.15rem;
}
.auth-page__oauth-divider-line {
  flex: 1 1 auto;
  height: 1px;
  background: var(--border);
}
.auth-page__oauth-divider-text {
  flex: 0 0 auto;
  font-size: 0.775rem;
  color: var(--text-muted);
  text-transform: lowercase;
}
.page.auth-page .auth-page__oauth-btn {
  width: 100%;
  margin-top: 0.15rem;
  gap: 0.5rem;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text-h);
  font-weight: 600;
}
.auth-page__oauth-btn-icon {
  flex: 0 0 auto;
  width: 1.125rem;
  height: 1.125rem;
  object-fit: contain;
}
.page.auth-page .auth-page__oauth-btn:hover:not(:disabled) {
  border-color: color-mix(in srgb, var(--border) 65%, var(--text-muted));
}
.page.auth-page .auth-page__oauth-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 26%, transparent);
}
@media (max-width: 420px) {
  .auth-page__form--signup-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .auth-page__field--span-2 {
    grid-column: auto;
  }
}
/* Full-screen gate shown before any route content loads */
.site-access-gate {
  box-sizing: border-box;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(1.25rem, env(safe-area-inset-top)) 1.25rem
    max(1.25rem, env(safe-area-inset-bottom));
  background: var(--bg);
}
.site-access-gate__page {
  width: 100%;
  padding-top: 0;
  padding-bottom: 0;
}
.site-access-gate__intro {
  margin: 0.75rem 0 0;
  font-size: 0.98rem;
  line-height: 1.55;
  color: color-mix(in srgb, var(--text) 88%, var(--text-muted));
}
/* /admin/components — internal UI gallery */
.page.admin-components-page {
  box-sizing: border-box;
  width: 100%;
  max-width: min(56rem, 100%);
  margin-inline: auto;
  padding-bottom: 2.5rem;
  /* Allow flex/grid parents to shrink this column so hero/post-lede don’t overflow-x */
  min-width: 0;
}
.admin-components-page__crumb {
  margin: 0 0 0.75rem;
  font-size: 0.875rem;
  color: var(--text-muted);
}
.admin-components-page__crumb a {
  color: var(--text);
  text-decoration: underline;
  text-underline-offset: 0.12em;
}
.admin-components-page__crumb a:hover {
  color: var(--text-interactive-hover);
}
.admin-components-page__head {
  margin-bottom: 1.5rem;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--border);
}
.admin-components-page__head h1 {
  margin-bottom: 0.45rem;
}
.admin-components-page__intro {
  margin: 0;
  max-width: 40rem;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--text-muted);
}
.admin-components__section {
  margin-top: 1.75rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--border);
}
.admin-components__section:first-of-type {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}
.admin-components__section h2 {
  margin: 0 0 1rem;
  font-family: var(--heading);
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--text-h);
}
.admin-components__block {
  margin-top: 1.25rem;
}
.admin-components__block:first-of-type {
  margin-top: 0;
}
.admin-components__h3 {
  margin: 0 0 0.35rem;
  font-family: var(--heading);
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--text-h);
}
.admin-components__hint {
  margin: 0 0 0.6rem;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--text-muted);
  max-width: 42rem;
}
.admin-components__legal-embed {
  margin-top: 0.35rem;
  border-radius: 10px;
  border: 1px solid var(--border);
  overflow: hidden;
}
.admin-components__mock-header {
  overflow-x: auto;
  padding: 0.55rem 0.85rem;
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--surface);
  box-shadow: var(--shadow-panel-raised, none);
}
.admin-components__mock-header--compact {
  display: flex;
  align-items: center;
  width: fit-content;
  max-width: 100%;
}
.admin-components__site-index-shell {
  padding: 1rem 1.1rem;
  border-radius: 8px;
  background: var(--site-index-bg);
}
.admin-components__grid--footers {
  margin-top: 0.25rem;
}
.admin-components__home-sandbox {
  margin-top: 0.35rem;
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
  overflow-x: clip;
  /* Band heights: same :root tokens as `/` (pages-home.css). */
}
.admin-components__home-sandbox .home-hero-figure {
  margin: 0;
  min-width: 0;
  max-width: 100%;
}
.admin-components__home-sandbox .home-hero-figure--desktop .home-hero-figure__frame {
  min-width: 0;
  max-width: 100%;
  aspect-ratio: unset;
  height: var(--home-marketing-hero-h);
  min-height: var(--home-marketing-hero-h);
  max-height: var(--home-marketing-hero-h);
}
.admin-components__home-sandbox .home-post-lede-strip-cq:last-of-type {
  margin-bottom: 0;
  padding-bottom: 0;
}
.admin-components__grid {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
@media (min-width: 36rem) {
  .admin-components__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem 1.5rem;
    align-items: start;
  }

  .admin-components__grid--buttons {
    align-items: stretch;
  }

  .admin-components__cell--wide {
    grid-column: 1 / -1;
  }
}
/* Label + control: bottom-align controls in a row when labels differ in height */
.admin-components__grid--buttons .admin-components__cell {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.admin-components__grid--buttons .admin-components__cell > :last-child {
  margin-top: auto;
}
.admin-components__cell {
  min-width: 0;
}
.admin-components__label {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  color: var(--text-muted);
  line-height: 1.4;
}
.admin-components__label code {
  font-size: 0.78em;
}
.admin-components__playback-mic-states {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.25rem;
  overflow: visible;
}
.admin-components__playback-mic-state .admin-components__label {
  margin-bottom: 0.35rem;
}
.admin-components__mic-inline {
  display: flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  max-width: 100%;
  min-width: 9rem;
  min-height: 9.5rem;
  margin-inline: auto;
  padding: 1.35rem;
  color: var(--text-h);
  overflow: visible;
}
.admin-components__playback-mic-state {
  min-width: min-content;
  overflow: visible;
}
.admin-components__spiral-tuning-layout {
  display: grid;
  grid-template-columns: minmax(10rem, 12rem) minmax(0, 1fr);
  gap: 1.25rem 1.5rem;
  align-items: start;
  margin-top: 1.5rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--border);
}
.admin-components__mic-stage--spiral-lab {
  min-height: 10rem;
}
.admin-components__spiral-tuning-panel {
  min-width: 0;
}
.admin-components__spiral-tuning-sliders {
  display: grid;
  gap: 0.85rem;
}
.admin-components__spiral-slider {
  display: grid;
  gap: 0.35rem;
  cursor: pointer;
}
.admin-components__spiral-slider-label {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  font-size: 0.8125rem;
  color: var(--text-muted);
}
.admin-components__spiral-slider-value {
  font-variant-numeric: tabular-nums;
  color: var(--text-h);
}
.admin-components__spiral-slider input[type='range'] {
  width: 100%;
  accent-color: var(--trial-mic-accent, #2a6bc9);
}
.admin-components__spiral-tuning-reset {
  margin-top: 1rem;
}
@media (max-width: 640px) {
  .admin-components__spiral-tuning-layout {
    grid-template-columns: 1fr;
  }
}
.admin-components__mic-stage {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 8rem;
  padding: 1.25rem;
  border-radius: 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-panel-raised, none);
}
.admin-components__header-strip {
  display: flex;
  align-items: center;
  min-height: 2.75rem;
}
.admin-components__header-strip--spread {
  justify-content: flex-start;
  gap: 1rem;
  flex-wrap: wrap;
}
.admin-components__label--after-cta {
  margin-top: 1.25rem;
}
/* Mini auth form so full-width submit rule matches production selector */
.admin-components__form-surface.page.auth-page {
  box-sizing: border-box;
  display: block;
  flex: 0 0 auto;
  width: 100%;
  max-width: 22rem;
  margin-top: 1rem;
  margin-inline: 0;
  min-height: 0;
  padding: 1rem;
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--surface);
}
.admin-components__form-surface .auth-page__form {
  display: flex;
  flex-direction: column;
  gap: 0;
}
/* /admin/mic-design — audio-reactive microphone animation lab */
.page.admin-mic-design-page {
  box-sizing: border-box;
  width: 100%;
  max-width: min(64rem, 100%);
  margin-inline: auto;
  padding-bottom: 2.5rem;
  min-width: 0;
}
.admin-mic-design-page__crumb {
  margin: 0 0 0.75rem;
  font-size: 0.875rem;
  color: var(--text-muted);
}
.admin-mic-design-page__crumb a {
  color: var(--text);
  text-decoration: underline;
  text-underline-offset: 0.12em;
}
.admin-mic-design-page__crumb a:hover {
  color: var(--text-interactive-hover);
}
.admin-mic-design-page__head {
  margin-bottom: 1.5rem;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--border);
}
.admin-mic-design-page__head h1 {
  margin-bottom: 0.45rem;
}
.admin-mic-design-page__intro {
  margin: 0;
  max-width: 44rem;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--text-muted);
}
.mic-design__controls {
  margin-bottom: 1.75rem;
  padding: 1.1rem 1.15rem;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: var(--surface);
  box-shadow: var(--shadow-panel-raised, none);
}
.mic-design__controls-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1rem;
  margin-bottom: 1rem;
}
.mic-design__palette-toggle {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.mic-design__palette-btn--selected {
  box-shadow: inset 0 0 0 2px var(--text);
}
.mic-design__slider {
  display: block;
  margin-bottom: 0.75rem;
}
.mic-design__slider-label {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.35rem;
  font-size: 0.875rem;
  color: var(--text-h);
}
.mic-design__slider-value {
  font-variant-numeric: tabular-nums;
  color: var(--text-muted);
}
.mic-design__slider input[type='range'] {
  width: 100%;
}
.mic-design__slider-hint,
.mic-design__signal-status,
.mic-design__reduced-motion-note {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.mic-design__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
  gap: 1rem;
}
.mic-design__card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: var(--surface);
  box-shadow: var(--shadow-panel-raised, none);
  overflow: hidden;
}
.mic-design__card-head {
  padding: 0.85rem 1rem 0.65rem;
  border-bottom: 1px solid var(--border);
}
.mic-design__card-title {
  margin: 0 0 0.25rem;
  font-family: var(--heading);
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--text-h);
}
.mic-design__card-desc {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.mic-design__stage {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 14rem;
  padding: 1.5rem;
  overflow: visible;
  isolation: isolate;
}
.mic-design__stage--animation-behind-mic .mic-design__animation-layer {
  z-index: 0;
}
.mic-design__stage--animation-behind-mic .mic-design__mic {
  z-index: 1;
}
/* Opaque disc hides animation behind the mic (incl. on hover scale). */
.mic-design__stage .trial-mic__disc--active,
.mic-design__stage .trial-mic__disc--rec {
  background: var(--surface);
}
.mic-design__stage .trial-mic__icon-svg {
  position: relative;
  z-index: 1;
}
.mic-design__animation-layer {
  position: absolute;
  inset: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 0;
}
.mic-design__mic {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.mic-design__canvas,
.mic-design__svg {
  width: 100%;
  height: 100%;
  max-width: 12rem;
  max-height: 12rem;
}
.mic-design__svg--blob {
  overflow: visible;
}
.mic-design__blob-path {
  vector-effect: non-scaling-stroke;
}
.mic-design__aurora {
  position: relative;
  width: 100%;
  height: 100%;
  max-width: 12rem;
  max-height: 12rem;
  transform: rotate(var(--mic-design-aurora-rotate, 0deg)) scale(var(--mic-design-aurora-scale, 1));
  opacity: var(--mic-design-aurora-opacity, 0.45);
  filter: blur(var(--mic-design-aurora-blur, 12px));
  transition: opacity 0.12s linear;
}
.mic-design__aurora-layer {
  position: absolute;
  inset: 8%;
  border-radius: 50%;
}
.mic-design__aurora-layer--a {
  background: radial-gradient(circle at 35% 40%, var(--mic-design-aurora-color), transparent 68%);
  transform: scale(1.05);
}
.mic-design__aurora-layer--b {
  background: radial-gradient(circle at 62% 58%, var(--mic-design-aurora-soft), transparent 72%);
  transform: scale(0.92) rotate(28deg);
}
.mic-design__aurora-layer--c {
  background: radial-gradient(circle at 50% 50%, var(--mic-design-aurora-color), transparent 78%);
  transform: scale(1.18) rotate(-18deg);
  opacity: 0.65;
}
@media (prefers-reduced-motion: reduce) {
  .mic-design__aurora {
    transition: none;
  }
}
/* /admin/test-marking — internal test harness for written responses */
.page.admin-test-marking {
  box-sizing: border-box;
  width: 100%;
  max-width: min(40rem, 100%);
  margin-inline: auto;
  padding-bottom: 2.5rem;
  min-width: 0;
}
.admin-test-marking__crumb {
  margin: 0 0 0.75rem;
  font-size: 0.875rem;
  color: var(--text-muted);
}
.admin-test-marking__crumb a {
  color: var(--text);
  text-decoration: underline;
  text-underline-offset: 0.12em;
}
.admin-test-marking__crumb a:hover {
  color: var(--text-interactive-hover);
}
.admin-test-marking__head {
  margin-bottom: 1.5rem;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--border);
}
.admin-test-marking__head h1 {
  margin-bottom: 0.45rem;
}
.admin-test-marking__head > p:not(.admin-test-marking__meta) {
  margin: 0;
  max-width: 40rem;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--text-muted);
}
.admin-test-marking__meta {
  margin: 0.75rem 0 0;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--text-h);
}
.admin-test-marking__preload-hint {
  margin-top: 0.5rem;
  max-width: 52rem;
  line-height: 1.5;
  font-weight: 400;
  color: var(--text-muted);
}
.admin-test-marking__preload-hint code {
  font-size: 0.75rem;
  word-break: break-all;
}
.admin-test-marking__embedding-status {
  max-width: 52rem;
  padding: 0.65rem 0.85rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--surface);
  font-weight: 400;
  line-height: 1.5;
}
.admin-test-marking__embedding-status--ok {
  border-color: color-mix(in srgb, var(--success, #2d8a4e) 45%, var(--border));
  background: color-mix(in srgb, var(--success, #2d8a4e) 8%, var(--surface));
}
.admin-test-marking__embedding-status--error {
  border-color: color-mix(in srgb, var(--danger, #c53030) 45%, var(--border));
  background: color-mix(in srgb, var(--danger, #c53030) 8%, var(--surface));
}
.admin-test-marking__embedding-status-api {
  margin: 0 0 0.4rem;
  font-size: 0.8125rem;
  color: var(--text-muted);
}
.admin-test-marking__embedding-status-api code {
  font-size: 0.75rem;
  word-break: break-all;
}
.admin-test-marking__embedding-status-line {
  margin: 0;
}
.admin-test-marking__embedding-status-line code {
  font-size: 0.8125rem;
  word-break: break-all;
}
.admin-test-marking__embedding-status-hint {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  color: var(--text-muted);
}
.admin-test-marking__embedding-refresh {
  display: inline-block;
  margin-top: 0.5rem;
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--link, var(--accent));
  cursor: pointer;
  text-decoration: underline;
}
.admin-test-marking__embedding-refresh:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}
.admin-test-marking__mode-toggle {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.25rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: var(--surface);
}
.admin-test-marking__controls {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.85rem 1rem;
  margin-top: 1rem;
}
.admin-test-marking__model-field {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  min-width: min(100%, 18rem);
}
.admin-test-marking__model-label {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.admin-test-marking__model-select {
  width: 100%;
  padding: 0.5rem 0.65rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 0.875rem;
  color: var(--text-h);
  background: var(--element-bg);
}
.admin-test-marking__model-select:disabled {
  opacity: 0.65;
  cursor: not-allowed;
}
.admin-test-marking__mode-btn {
  padding: 0.4rem 0.75rem;
  border: none;
  border-radius: 6px;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--text-muted);
  background: transparent;
  cursor: pointer;
}
.admin-test-marking__mode-btn:hover {
  color: var(--text-h);
  background: color-mix(in srgb, var(--border) 40%, transparent);
}
.admin-test-marking__mode-btn--active {
  color: var(--text-h);
  background: var(--element-bg);
  box-shadow: 0 1px 2px color-mix(in srgb, var(--text) 8%, transparent);
}
.admin-test-marking__timing-compare {
  margin-top: 1rem;
  padding: 0.85rem 1rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--border) 25%, var(--surface));
}
.admin-test-marking__timing-compare--session {
  margin-top: 0;
  margin-bottom: 1.25rem;
}
.admin-test-marking__timing-compare-note {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.admin-test-marking__timing-compare--session .admin-test-marking__timing-compare-heading {
  margin-bottom: 0.25rem;
  font-size: 0.9375rem;
  text-transform: none;
  letter-spacing: normal;
  color: var(--text-h);
}
.admin-test-marking__timing-row--active {
  background: color-mix(in srgb, var(--border) 35%, transparent);
}
.admin-test-marking__timing-compare-heading {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
}
.admin-test-marking__timing-table-wrap {
  overflow-x: auto;
  margin: 0 -0.15rem;
  padding: 0 0.15rem;
}
.admin-test-marking__timing-table {
  width: 100%;
  min-width: 72rem;
  border-collapse: collapse;
  font-size: 0.8125rem;
}
.admin-test-marking__timing-table th,
.admin-test-marking__timing-table td {
  padding: 0.35rem 0.5rem;
  text-align: left;
  border-bottom: 1px solid var(--border);
  vertical-align: top;
}
.admin-test-marking__timing-table thead th {
  font-weight: 600;
  color: var(--text-muted);
  white-space: nowrap;
}
.admin-test-marking__timing-cell-model {
  max-width: 9rem;
  line-height: 1.35;
}
.admin-test-marking__timing-cell-cache {
  max-width: 10rem;
  line-height: 1.35;
  font-weight: 600;
}
.admin-test-marking__timing-cell-answer {
  max-width: 14rem;
  line-height: 1.35;
  color: var(--text-muted);
  word-break: break-word;
}
.admin-test-marking__timing-compare-deltas {
  margin: 0.65rem 0 0;
  padding-left: 1.1rem;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.admin-test-marking__timing-compare-deltas li + li {
  margin-top: 0.2rem;
}
.admin-test-marking__timing-row--fastest {
  background: color-mix(in srgb, var(--success-border, #2d8a4e) 10%, transparent);
}
.admin-test-marking__timing-speedup {
  margin: 0.5rem 0 0;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--success-text, #1a6b38);
}
.admin-test-marking__question-meta {
  margin: -0.5rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--text-muted);
  text-align: center;
}
.admin-test-marking__answer-mode {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  margin: 0.75rem 0 0.5rem;
}
.admin-test-marking__answer-mode-label {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--text-muted);
}
.admin-test-marking__answer-mode-toggle {
  flex: 1 1 auto;
}
.admin-test-marking__voice-panel {
  margin: 0.5rem 0 0.75rem;
  padding: 0.75rem 0.85rem;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--border) 18%, var(--surface));
}
.admin-test-marking__voice-hint {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  line-height: 1.45;
  color: var(--text-muted);
}
.admin-test-marking__voice-hint code {
  font-size: 0.75rem;
}
.admin-test-marking__voice-status {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--text-h);
}
.admin-test-marking__live-transcript {
  margin: 0 0 0.65rem;
  padding: 0.5rem 0.65rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--text-h);
  background: var(--element-bg);
  max-height: 6rem;
  overflow-y: auto;
}
.admin-test-marking__file-stt-provider {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  margin: 0.65rem 0 0.5rem;
}
.admin-test-marking__file-stt-toggle {
  flex: 1 1 auto;
}
.admin-test-marking__voice-status--warn {
  color: var(--error-text, #b42318);
}
.admin-test-marking__voice-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.admin-test-marking__voice-error {
  text-align: left;
  margin-bottom: 0.5rem;
}
.admin-test-marking__step--submitted:not(.application-written__step--active) {
  border-color: var(--warning-border, #c9a227);
  background: color-mix(in srgb, var(--warning-border, #c9a227) 12%, var(--element-bg));
}
.admin-test-marking__step--marked:not(.application-written__step--active) {
  border-color: var(--success-border, #2d8a4e);
  background: color-mix(in srgb, var(--success-border, #2d8a4e) 12%, var(--element-bg));
  color: var(--success-text, #1a6b38);
}
.admin-test-marking__marking {
  margin: 0.5rem 0 0;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--text-h);
  text-align: center;
}
.admin-test-marking__timer {
  font-variant-numeric: tabular-nums;
  color: var(--text-muted);
}
.admin-test-marking__error {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--error-text, #b42318);
  text-align: center;
}
.admin-test-marking__results {
  margin-top: 1.25rem;
  padding: 1rem 1.1rem;
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--surface);
}
.admin-test-marking__results-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
  margin-bottom: 0.75rem;
}
.admin-test-marking__band {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  border-radius: 6px;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.admin-test-marking__band--clear-fail {
  background: #fde8e8;
  color: #9b1c1c;
}
.admin-test-marking__band--borderline-fail {
  background: #fef3e2;
  color: #9a3412;
}
.admin-test-marking__band--borderline-pass {
  background: #fef9c3;
  color: #854d0e;
}
.admin-test-marking__band--at-standard {
  background: #e0f2fe;
  color: #0369a1;
}
.admin-test-marking__band--above-standard {
  background: #dcfce7;
  color: #166534;
}
.admin-test-marking__band--well-above-standard {
  background: #d1fae5;
  color: #065f46;
}
.admin-test-marking__marks {
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--text-h);
}
.admin-test-marking__verdict {
  font-size: 0.875rem;
  color: var(--text-muted);
}
.admin-test-marking__marking-time {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  color: var(--text-muted);
}
.admin-test-marking__cache-warning {
  margin: 0 0 0.75rem;
  padding: 0.65rem 0.75rem;
  border-radius: 8px;
  border: 1px solid color-mix(in srgb, var(--warning-border, #c9a227) 55%, var(--border));
  background: color-mix(in srgb, var(--warning-border, #c9a227) 12%, var(--surface));
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--text-h);
}
.admin-test-marking__cache-warning strong {
  font-weight: 600;
}
.admin-test-marking__why-mark {
  margin: 0 0 0.75rem;
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--text-h);
}
.admin-test-marking__marking-key {
  margin: 0 0 0.85rem;
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--text-muted);
}
.admin-test-marking__marking-key strong {
  color: var(--text-h);
}
.admin-test-marking__checklist-wrap {
  margin-top: 0.5rem;
}
.admin-test-marking__checklist-heading {
  margin: 0 0 0.5rem;
  font-size: 0.8125rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted);
}
.admin-test-marking__checklist--grouped {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.admin-test-marking__checklist-group-title {
  margin: 0 0 0.35rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--text-h);
}
.admin-test-marking__checklist-group-req {
  font-weight: 500;
  color: var(--text-muted);
}
.admin-test-marking__checklist-items {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.25rem 0.75rem;
}
@media (min-width: 36rem) {
  .admin-test-marking__checklist-items {
    grid-template-columns: 1fr 1fr;
  }
}
.admin-test-marking__checklist-item {
  display: flex;
  align-items: flex-start;
  gap: 0.35rem;
  font-size: 0.8125rem;
  line-height: 1.4;
}
.admin-test-marking__checklist-item span[aria-hidden] {
  flex-shrink: 0;
  width: 1rem;
  text-align: center;
  font-weight: 700;
}
.admin-test-marking__checklist-item--hit {
  color: var(--success-text, #1a6b38);
}
.admin-test-marking__checklist-item--hit span[aria-hidden] {
  color: var(--success-border, #2d8a4e);
}
.admin-test-marking__checklist-item--miss {
  color: var(--text-muted);
}
.admin-test-marking__checklist-item--miss span[aria-hidden] {
  color: var(--text-muted);
  opacity: 0.7;
}
/* Home footer sitemap band */
.home .site-index {
  flex-shrink: 0;
}
.site-index {
  display: flex;
  flex-direction: column;
  margin-left: calc(-1 * (var(--page-inline) + env(safe-area-inset-left, 0px)));
  margin-right: calc(-1 * (var(--page-inline) + env(safe-area-inset-right, 0px)));
  padding: 2.25rem calc(var(--page-inline) + env(safe-area-inset-right, 0px)) 2.25rem
    calc(var(--page-inline) + env(safe-area-inset-left, 0px));
  background: var(--site-index-bg);
  color: var(--text);
}
.site-index__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: flex-start;
  column-gap: 5.25rem;
  row-gap: 3rem;
}
@media (min-width: 641px) {
  .site-index__inner {
    column-gap: 6rem;
  }
}
@media (max-width: 640px) {
  .site-index__inner {
    flex-direction: column;
    row-gap: 3.75rem;
  }
}
.site-index__heading {
  margin: 0;
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: inherit;
}
.site-index__list {
  list-style: none;
  margin: 0.75rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.site-index__list--emphasis li {
  color: var(--text-h);
  font-size: 0.85625rem;
  font-weight: 400;
  line-height: 1.45;
}
.site-index__link {
  color: inherit;
  text-decoration: none;
}
.site-index__link:hover {
  color: var(--text-interactive-hover);
  text-decoration: underline;
}
/* Suppress dashed “fenestrated” focus outlines on every control (global + per-component rules). */
:focus,
:focus-visible {
  outline: none !important;
  outline-offset: 0 !important;
}
