/* ==========================================================================
   ICL Education & Training — Design tokens & global styles
   ========================================================================== */

:root {
  /* Colour tokens (navy/blue gradient system, sampled from ICL brand mark) */
  --color-navy-950: #050e1f;
  --color-navy-900: #0a1a35;
  --color-navy-800: #0f2547;
  --color-navy-700: #16335e;
  --color-blue-600: #1c5aa6;
  --color-blue-500: #2e7fd6;
  --color-blue-400: #4fa0e8;
  --color-blue-300: #7dbdf2;

  --color-white: #ffffff;
  --color-ink-900: #0b1220;
  --color-ink-700: #33415a;
  --color-slate-100: #eef2f8;
  --color-slate-200: #dbe3ee;
  --color-surface: #f6f8fb;
  --color-border: #e2e8f2;

  --color-primary: var(--color-blue-500);
  --color-primary-hover: var(--color-blue-400);
  --color-error: #b3261e;
  --color-on-primary: #ffffff;

  --gradient-navy: linear-gradient(135deg, var(--color-navy-950) 0%, var(--color-navy-800) 55%, var(--color-blue-600) 130%);
  --gradient-blue: linear-gradient(135deg, var(--color-blue-600) 0%, var(--color-blue-400) 100%);

  /* Typography */
  --font-heading: 'Lexend', 'Source Sans 3', system-ui, sans-serif;
  --font-body: 'Source Sans 3', system-ui, sans-serif;

  --fs-xs: 0.8125rem;
  --fs-sm: 0.9375rem;
  --fs-base: 1rem;
  --fs-md: 1.125rem;
  --fs-lg: 1.375rem;
  --fs-xl: 1.75rem;
  --fs-2xl: 2.25rem;
  --fs-3xl: 3rem;

  /* Spacing scale (8pt rhythm) */
  --space-1: 0.5rem;
  --space-2: 0.75rem;
  --space-3: 1rem;
  --space-4: 1.5rem;
  --space-5: 2rem;
  --space-6: 3rem;
  --space-7: 4rem;
  --space-8: 6rem;
  --space-9: 8rem;

  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 24px;
  --radius-full: 999px;

  --shadow-sm: 0 2px 8px rgba(5, 14, 31, 0.06);
  --shadow-md: 0 8px 24px rgba(5, 14, 31, 0.12);
  --shadow-lg: 0 20px 48px rgba(5, 14, 31, 0.22);

  --container-w: 1200px;
  --transition: 200ms ease;

  /* BRIDGES framework — exact brand colours, sourced from ICL's own toolkit assets */
  --bridges-b: #9f891d;
  --bridges-r: #d6732f;
  --bridges-i: #7db928;
  --bridges-d: #0a4799;
  --bridges-g: #6e2b9c;
  --bridges-e: #aa2b2e;
  --bridges-s: #173524;

  --cycle-design: #5b8def;
  --cycle-deliver: #2bb8b0;
  --cycle-review: #b07fe0;
  --cycle-improve: #9ad126;

  /* Embed environment — optional per-organisation brand colour. Stays ICL
     blue for every org unless js/embed-org.js finds a saved brand colour
     and sets --embed-brand + [data-embed-branded] on <html> at runtime, so
     the dashboard looks identical for everyone else. It tints the header
     and sub-nav (via a dark-blended derived token so white text still
     passes) and adds accents around the dashboard — but never the BRIDGES
     element colours, the radar or the status pills. See the
     html[data-embed-branded] block lower down for the derived tokens. */
  --embed-brand: var(--color-blue-500);

  /* Traffic-light status colours for review scores — deliberately distinct
     from the BRIDGES letter/cycle palette above so "this needs attention"
     never gets lost among decorative brand colour. */
  --status-good: #2f9e44;
  --status-warning: #e8a33d;
  --status-alert: #dc3d3d;
  --status-none: #b7c0cf;
}

/* ---- Reset ---- */
*, *::before, *::after { box-sizing: border-box; }
/* Without this, any element that also sets its own `display` (e.g. .btn's
   inline-flex) silently ignores the `hidden` attribute, since author rules
   always win over the UA stylesheet's default [hidden] { display: none }
   regardless of specificity. */
[hidden] { display: none !important; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-base);
  line-height: 1.6;
  color: var(--color-ink-900);
  background: var(--color-white);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4 {
  font-family: var(--font-heading);
  font-weight: 600;
  line-height: 1.2;
  margin: 0 0 var(--space-3);
  letter-spacing: -0.01em;
}
p { margin: 0 0 var(--space-3); }
button { font-family: inherit; cursor: pointer; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}

/* ---- Layout helpers ---- */
.container {
  width: 100%;
  max-width: var(--container-w);
  margin-inline: auto;
  padding-inline: var(--space-4);
}
.section { padding-block: var(--space-8); }
.section-light { background: var(--color-white); }
.section-surface { background: var(--color-surface); }
.section-navy { background: var(--gradient-navy); color: var(--color-white); }
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-blue-500);
  margin-bottom: var(--space-2);
}
.section-navy .eyebrow { color: var(--color-blue-300); }
.section-head { max-width: 640px; margin-bottom: var(--space-6); }
.section-head.center { margin-inline: auto; text-align: center; }
.text-muted { color: var(--color-ink-700); }
.visually-hidden {
  position: absolute; width: 1px; height: 1px; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.hidden-field { display: none; }
.skip-link {
  position: absolute; top: -60px; left: var(--space-3);
  background: var(--color-blue-500); color: #fff;
  padding: var(--space-2) var(--space-3); border-radius: var(--radius-sm);
  z-index: 1000; transition: top var(--transition);
}
.skip-link:focus { top: var(--space-3); }

/* ---- Scroll reveal ----
   Visible by default (no-JS / reduced-motion safe). Only animates once
   main.js confirms IntersectionObserver support and no motion preference
   against it, at which point it stamps html.js-reveal. */
.reveal { opacity: 1; transform: none; }
html.js-reveal .reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 700ms cubic-bezier(0.16, 1, 0.3, 1), transform 700ms cubic-bezier(0.16, 1, 0.3, 1);
}
html.js-reveal .reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  html.js-reveal .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
}
.panels .panel:nth-child(2) { transition-delay: 120ms; }
.audience-grid .audience-card:nth-child(2) { transition-delay: 80ms; }
.audience-grid .audience-card:nth-child(3) { transition-delay: 160ms; }
.audience-grid .audience-card:nth-child(4) { transition-delay: 240ms; }
.partners-grid .partner-logo:nth-child(2) { transition-delay: 80ms; }
.partners-grid .partner-logo:nth-child(3) { transition-delay: 160ms; }
.partners-grid .partner-logo:nth-child(4) { transition-delay: 240ms; }
.about-grid .quote-card { transition-delay: 120ms; }
.feature-grid .reveal:nth-child(2) { transition-delay: 80ms; }
.feature-grid .reveal:nth-child(3) { transition-delay: 160ms; }
.feature-grid .reveal:nth-child(4) { transition-delay: 240ms; }
.cycle-grid .reveal:nth-child(2) { transition-delay: 80ms; }
.cycle-grid .reveal:nth-child(3) { transition-delay: 160ms; }
.resource-grid .reveal:nth-child(2) { transition-delay: 80ms; }
.resource-grid .reveal:nth-child(3) { transition-delay: 160ms; }
.check-grid .reveal:nth-child(2) { transition-delay: 60ms; }
.check-grid .reveal:nth-child(3) { transition-delay: 120ms; }
.check-grid .reveal:nth-child(4) { transition-delay: 180ms; }
.check-grid .reveal:nth-child(5) { transition-delay: 240ms; }
.check-grid .reveal:nth-child(6) { transition-delay: 300ms; }
.contact-grid .reveal:nth-child(2) { transition-delay: 120ms; }
.two-col .reveal:nth-child(2) { transition-delay: 120ms; }

/* ---- Buttons ---- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: 0.875rem 1.75rem;
  border-radius: var(--radius-full);
  font-weight: 600;
  font-size: var(--fs-sm);
  line-height: 1.2;
  border: 1.5px solid transparent;
  transition: background 180ms ease, border-color 180ms ease, color 180ms ease;
  white-space: nowrap;
  vertical-align: middle;
}
.btn:focus-visible { outline: 3px solid var(--color-blue-300); outline-offset: 2px; }
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn.is-selected { background: var(--color-blue-500); border-color: var(--color-blue-500); color: #fff; }
@media (max-width: 480px) {
  .btn { white-space: normal; text-align: center; }
}
.btn svg { width: 18px; height: 18px; flex-shrink: 0; display: block; transition: transform 180ms ease; }
.btn:hover svg { transform: translateX(3px); }

.btn-primary {
  background: var(--color-blue-500);
  color: #fff;
}
.btn-primary:hover { background: var(--color-blue-400); }
.btn-primary:active { background: var(--color-blue-600); }

.btn-outline {
  background: transparent;
  border-color: rgba(255, 255, 255, 0.45);
  color: var(--color-white);
}
.btn-outline:hover { border-color: #fff; background: rgba(255,255,255,0.08); }

.btn-outline-dark {
  background: transparent;
  border-color: var(--color-navy-700);
  color: var(--color-navy-900);
}
.btn-outline-dark:hover { background: var(--color-navy-900); color: #fff; }

.btn-accent-green {
  background: var(--cycle-improve);
  border-color: var(--cycle-improve);
  color: var(--color-navy-950);
}
.btn-accent-green:hover { background: #86bc1f; border-color: #86bc1f; }

.btn-block { width: 100%; justify-content: center; }

/* ==========================================================================
   Header
   ========================================================================== */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(10, 26, 53, 0.92);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding-block: 0.625rem;
}
.brand {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  flex-shrink: 0;
}
.brand img { height: 63px; width: auto; flex-shrink: 0; }
/* A swapped-in organisation logo (set by js/embed-org.js on Embed pages):
   unknown aspect ratio, so cap both dimensions and letterbox rather than
   stretch. Capped at the ICL logo's own height so the header can't grow. */
/* max-width tracks the viewport on small screens so a wide wordmark logo
   can't crowd the menu toggle off the edge; stays 240px on desktop. */
.brand img.is-org-logo { height: auto; width: auto; max-height: 63px; max-width: min(240px, 42vw); object-fit: contain; }

.nav-primary {
  display: flex;
  align-items: center;
  gap: var(--space-5);
}
.nav-primary a {
  font-size: var(--fs-sm);
  font-weight: 500;
  color: rgba(255,255,255,0.85);
  padding-block: var(--space-1);
  border-bottom: 2px solid transparent;
  transition: color var(--transition), border-color var(--transition);
}
.nav-primary a:hover,
.nav-primary a[aria-current="page"] {
  color: #fff;
  border-color: var(--color-blue-400);
}

.header-actions { display: flex; align-items: center; gap: var(--space-3); }

.nav-toggle {
  display: none;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.3);
  border-radius: var(--radius-sm);
  padding: var(--space-1) var(--space-2);
  color: #fff;
}
.nav-toggle svg { width: 24px; height: 24px; }

@media (max-width: 900px) {
  .nav-primary {
    position: fixed;
    inset: 72px 0 0 0;
    background: var(--color-navy-900);
    flex-direction: column;
    align-items: stretch;
    padding: var(--space-4);
    /* Clear the fixed Log in/Dashboard + Get in touch stack pinned to the
       bottom, so the last menu items can scroll out from behind it.
       js/main.js measures the real stack and overrides --nav-cta-inset;
       this calc is the no-JS fallback (roomy enough for two buttons). */
    padding-bottom: var(--nav-cta-inset, calc(7rem + var(--space-2) + var(--space-4) * 2));
    gap: 0;
    transform: translateY(-12px);
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--transition), transform var(--transition);
    overflow-y: auto;
  }
  .nav-primary a {
    padding: var(--space-3) var(--space-1);
    border-bottom: 1px solid rgba(255,255,255,0.08);
    font-size: var(--fs-md);
  }
  body.nav-open .nav-primary {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }
  /* Below the desktop nav breakpoint the header keeps only the logo and the
     menu toggle. The CTA and the auth button (Log in / Dashboard) would
     otherwise crowd and squash the logo, so they drop out of the inline
     header and reappear as a stacked group pinned to the bottom of the
     open mobile menu. */
  .header-actions .btn { display: none; }
  body.nav-open .header-actions .btn-primary,
  body.nav-open .header-actions #header-login-link:not([hidden]),
  body.nav-open .header-actions #header-dashboard-link:not([hidden]) {
    display: inline-flex;
    position: fixed;
    left: var(--space-4);
    right: var(--space-4);
    bottom: var(--space-4);
    justify-content: center;
    z-index: 101;
  }
  /* Only one of Log in / Dashboard is ever shown; it stacks directly above
     "Get in touch". */
  body.nav-open .header-actions #header-login-link:not([hidden]),
  body.nav-open .header-actions #header-dashboard-link:not([hidden]) {
    bottom: calc(var(--space-4) + 3rem + var(--space-2));
  }
  .nav-toggle { display: inline-flex; }
}

/* BRIDGES nav dropdown — CSS-only (hover/focus-within), no JS needed.
   Desktop: absolutely-positioned panel revealed on hover or keyboard focus.
   Mobile (see media query below): unwrapped via display:contents so the
   trigger and its links just flow as extra items in the existing full-
   screen nav-primary list, always visible, no toggle of their own. */
.nav-dropdown { position: relative; }
.nav-dropdown-trigger { display: inline-flex !important; align-items: center; gap: 4px; }
.nav-dropdown-caret { width: 14px; height: 14px; transition: transform var(--transition); }
.nav-dropdown:hover .nav-dropdown-caret,
.nav-dropdown:focus-within .nav-dropdown-caret { transform: rotate(180deg); }
.nav-dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  margin-top: var(--space-2);
  min-width: 210px;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  padding: var(--space-2);
  display: flex;
  flex-direction: column;
  gap: 2px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity var(--transition), transform var(--transition), visibility var(--transition);
}
.nav-dropdown:hover .nav-dropdown-menu,
.nav-dropdown:focus-within .nav-dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.nav-primary .nav-dropdown-menu a {
  color: var(--color-ink-900) !important;
  padding: var(--space-2) var(--space-3) !important;
  border-radius: var(--radius-sm);
  border-bottom: none !important;
  font-size: var(--fs-sm);
}
.nav-primary .nav-dropdown-menu a:hover {
  background: var(--color-slate-100);
  color: var(--color-blue-600) !important;
}
/* "BRIDGES overview" link that js/main.js injects for the mobile accordion —
   the desktop trigger is already a working link to the hub, so hide it there. */
.nav-dropdown-menu [data-nav-hub] { display: none; }
@media (max-width: 900px) {
  .nav-dropdown { display: contents; }
  /* Trigger becomes an accordion header: label left, caret right, and the
     submenu stays collapsed until js/main.js toggles .is-open on tap. */
  .nav-dropdown-trigger { justify-content: space-between; }
  .nav-dropdown-caret {
    display: block;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
  }
  .nav-dropdown.is-open .nav-dropdown-caret { transform: rotate(180deg); }
  .nav-dropdown-menu {
    display: none;
    position: static;
    margin-top: 0;
    min-width: 0;
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 0;
    opacity: 1;
    visibility: visible;
    transform: none;
    gap: 0;
  }
  .nav-dropdown.is-open .nav-dropdown-menu { display: flex; }
  .nav-primary .nav-dropdown-menu a {
    padding: var(--space-2) var(--space-1) var(--space-2) var(--space-5) !important;
    font-size: var(--fs-sm);
    color: rgba(255,255,255,0.65) !important;
  }
  .nav-primary .nav-dropdown-menu [data-nav-hub] { display: block; }
}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero {
  position: relative;
  overflow: hidden;
  padding-block: var(--space-8);
}
@media (max-width: 640px) {
  .hero { padding-block: var(--space-6); }
  .hero .hero-grid { gap: var(--space-4); }
  .hero .hero-rule { margin: var(--space-3) 0 var(--space-4); }
  .hero .hero-copy p.lede { max-width: none; }
}
.hero::before,
.hero::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.08);
  pointer-events: none;
}
.hero::before { width: 640px; height: 640px; right: -220px; top: -160px; }
.hero::after { width: 420px; height: 420px; left: -160px; bottom: -180px; border-color: rgba(79,160,232,0.15); }

/* Photo hero: background photo (Clint delivering, BRIDGES on screen) +
   gradient scrim so the copy on the left stays legible while the
   presenter and screen stay visible under the floating cards. */
.hero-photo {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-size: 110% auto;
  background-position: min(58% + 70px, 0%) min(10% + 15px, 0%);
  background-repeat: no-repeat;
}
.hero-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(rgba(10, 22, 45, 0.24), rgba(10, 22, 45, 0.24)),
    radial-gradient(50% 48% at 76% 18%, rgba(28, 90, 166, 0.42) 0%, rgba(28, 90, 166, 0.2) 55%, rgba(28, 90, 166, 0) 90%),
    radial-gradient(48% 42% at 86% 88%, rgba(28, 90, 166, 0.5) 0%, rgba(28, 90, 166, 0.26) 55%, rgba(28, 90, 166, 0) 90%),
    linear-gradient(180deg, rgba(6, 15, 32, 0) 0%, rgba(6, 15, 32, 0) 62%, rgba(6, 15, 32, 0.35) 82%, rgba(6, 15, 32, 0.55) 100%),
    linear-gradient(100deg,
      var(--color-navy-950) 0%,
      var(--color-navy-950) 22%,
      rgba(6, 15, 32, 0.78) 38%,
      rgba(6, 15, 32, 0.4) 58%,
      rgba(6, 15, 32, 0.14) 78%,
      rgba(6, 15, 32, 0.05) 100%);
}
@media (max-width: 1080px) {
  .hero-photo {
    background-size: 190% auto;
    background-position: 34% 10%;
  }
  .hero-photo::after {
    background:
      linear-gradient(rgba(10, 22, 45, 0.24), rgba(10, 22, 45, 0.24)),
      radial-gradient(55% 45% at 78% 22%, rgba(28, 90, 166, 0.55) 0%, rgba(28, 90, 166, 0.3) 55%, rgba(28, 90, 166, 0) 85%),
      linear-gradient(100deg, var(--color-navy-950) 0%, var(--color-navy-950) 12%, rgba(6,15,32,0.82) 28%, rgba(6,15,32,0.4) 48%, rgba(6,15,32,0.1) 68%, rgba(6,15,32,0) 85%),
      linear-gradient(180deg, rgba(6,15,32,0) 0%, rgba(6,15,32,0) 50%, rgba(6,15,32,0.65) 68%, var(--color-navy-950) 85%, var(--color-navy-950) 100%);
  }
}
@media (max-width: 640px) {
  .hero-photo {
    background-size: 300% auto;
    background-position: 32% 12%;
  }
  .hero-photo::after {
    background:
      linear-gradient(rgba(10, 22, 45, 0.24), rgba(10, 22, 45, 0.24)),
      radial-gradient(60% 55% at 78% 32%, rgba(28, 90, 166, 0.6) 0%, rgba(28, 90, 166, 0.35) 55%, rgba(28, 90, 166, 0) 85%),
      linear-gradient(100deg, var(--color-navy-950) 0%, var(--color-navy-950) 12%, rgba(6,15,32,0.82) 28%, rgba(6,15,32,0.4) 48%, rgba(6,15,32,0.1) 68%, rgba(6,15,32,0) 85%),
      linear-gradient(180deg, rgba(6,15,32,0) 0%, rgba(6,15,32,0) 50%, rgba(6,15,32,0.65) 68%, var(--color-navy-950) 85%, var(--color-navy-950) 100%);
  }
}

.hero-grid {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: var(--space-7);
  align-items: center;
  position: relative;
  z-index: 1;
}
.hero .hero-grid { gap: var(--space-6); }
.hero .offer-cards { max-width: 500px; margin-inline: auto; width: 100%; }
.hero-copy h1 {
  font-size: var(--fs-3xl);
  color: #fff;
}
.hero-copy h1 .accent { color: var(--color-blue-300); }
/* Homepage hero carries three statement lines, so it needs a smaller,
   balanced scale than the single-line page-hero headings elsewhere. */
.hero .hero-copy h1 {
  font-size: clamp(1.4rem, 1rem + 1.3vw, 1.9rem);
  line-height: 1.2;
  text-wrap: balance;
}
.hero-rule {
  width: 64px;
  height: 4px;
  border-radius: var(--radius-full);
  background: var(--gradient-blue);
  margin: var(--space-4) 0 var(--space-5);
}
.hero-copy h1 .sm-break { display: none; }
@media (max-width: 560px) {
  .hero-copy h1 .sm-break { display: block; }
}
.hero-copy p.lede {
  font-size: var(--fs-md);
  color: rgba(255,255,255,0.82);
  max-width: 46ch;
}
.hero-ctas { display: flex; gap: var(--space-3); flex-wrap: wrap; margin-top: var(--space-5); }

/* ---- Homepage hero entrance ----
   Plays once on load (hero is always above the fold, so no scroll trigger
   needed). Heading leads, then the divider/paragraph/CTAs cascade in. */
@keyframes heroEnter {
  from { opacity: 0; transform: translateY(22px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes heroAccentGlow {
  0% { text-shadow: 0 0 0 rgba(79,160,232,0); }
  45% { text-shadow: 0 0 22px rgba(79,160,232,0.5); }
  100% { text-shadow: 0 0 0 rgba(79,160,232,0); }
}
.hero .hero-copy h1 {
  animation: heroEnter 900ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.hero .hero-copy h1 .accent {
  animation: heroAccentGlow 1500ms ease-out both;
  animation-delay: 250ms;
}
.hero .hero-rule {
  animation: heroEnter 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 280ms;
}
.hero .hero-copy p.lede {
  animation: heroEnter 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 380ms;
}
.hero .hero-ctas {
  animation: heroEnter 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 480ms;
}
.hero .offer-card {
  animation: heroEnter 900ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 1600ms;
}
.hero .offer-card-delivery {
  animation-delay: 1850ms;
}
@media (prefers-reduced-motion: reduce) {
  .hero .hero-copy h1,
  .hero .hero-copy h1 .accent,
  .hero .hero-rule,
  .hero .hero-copy p.lede,
  .hero .hero-ctas,
  .hero .offer-card {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    text-shadow: none !important;
  }
}

.hero-visual { position: relative; }
.hero-photo-frame {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  aspect-ratio: 4 / 5;
  background: linear-gradient(160deg, var(--color-navy-800), var(--color-navy-950));
  border: 1px solid rgba(255,255,255,0.12);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-lg);
}
.placeholder-tag {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  text-align: center;
  color: rgba(255,255,255,0.55);
  padding: var(--space-4);
}
.placeholder-tag svg { width: 44px; height: 44px; opacity: 0.7; }

/* Homepage hero: two coordinated cards, one per ICL offer */
.offer-cards {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.offer-card {
  --card-glow: rgba(79,160,232,0.14);
  --border-glow: rgba(255,255,255,0.32);
  position: relative;
  overflow: hidden;
  border: 1.5px solid transparent;
  background:
    radial-gradient(140% 120% at 100% 100%, var(--card-glow) 0%, transparent 55%) padding-box,
    linear-gradient(160deg, var(--color-navy-800), var(--color-navy-950)) padding-box,
    linear-gradient(135deg, var(--border-glow), rgba(255,255,255,0.03) 45%, rgba(255,255,255,0.12) 100%) border-box;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,0.07);
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--space-3);
  min-height: 148px;
  transition: transform 260ms ease, box-shadow 260ms ease;
}
.offer-card:hover {
  --border-glow: rgba(255,255,255,0.55);
  transform: translateY(-4px);
  box-shadow: 0 30px 64px rgba(2,6,15,0.5), inset 0 1px 0 rgba(255,255,255,0.09);
}
.offer-card-bridges { --card-glow: rgba(209,178,74,0.16); --decor-dot: rgba(214,183,84,0.65); }
.offer-card-delivery { --card-glow: rgba(79,160,232,0.18); --decor-dot: rgba(125,189,242,0.65); }
.offer-card-decor {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: radial-gradient(var(--decor-dot) 1.2px, transparent 1.2px);
  background-size: 15px 15px;
  background-position: right bottom;
  -webkit-mask-image: radial-gradient(ellipse 75% 75% at 100% 100%, black 0%, black 30%, transparent 72%);
  mask-image: radial-gradient(ellipse 75% 75% at 100% 100%, black 0%, black 30%, transparent 72%);
}
.offer-card-top { display: flex; align-items: center; gap: var(--space-3); position: relative; z-index: 1; }
.offer-card-arrow {
  margin-left: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  color: rgba(255,255,255,0.55);
  opacity: 0;
  transform: translateX(-6px);
  transition: opacity 220ms ease, transform 220ms ease, color 220ms ease;
}
.offer-card-arrow svg { width: 18px; height: 18px; }
.offer-card:hover .offer-card-arrow,
.offer-card:focus-visible .offer-card-arrow {
  opacity: 1;
  transform: translateX(0);
}
.offer-card-bridges:hover .offer-card-arrow,
.offer-card-bridges:focus-visible .offer-card-arrow { color: #d1b24a; }
.offer-card-delivery:hover .offer-card-arrow,
.offer-card-delivery:focus-visible .offer-card-arrow { color: var(--color-blue-300); }
@media (prefers-reduced-motion: reduce) {
  .offer-card-arrow { transition: none; }
}
.offer-card-icon {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: 1.5px solid;
}
.offer-card-icon::before {
  content: "";
  position: absolute;
  inset: -10px;
  border-radius: inherit;
  background: currentColor;
  opacity: 0.16;
  filter: blur(11px);
  z-index: -1;
}
.offer-card-icon svg { width: 22px; height: 22px; position: relative; z-index: 1; }
.offer-card-bridges .offer-card-icon {
  border-color: rgba(209,178,74,0.6);
  color: #d1b24a;
  background: linear-gradient(150deg, rgba(209,178,74,0.2), rgba(209,178,74,0.03));
}
.offer-card-delivery .offer-card-icon {
  border-color: rgba(125,189,242,0.6);
  color: var(--color-blue-300);
  background: linear-gradient(150deg, rgba(125,189,242,0.2), rgba(125,189,242,0.03));
}
.offer-card-name {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-lg);
  letter-spacing: 0.015em;
  color: #fff;
  margin: 0;
}
.offer-card-tagline {
  font-size: var(--fs-sm);
  color: rgba(255,255,255,0.7);
  letter-spacing: 0.01em;
  margin: 0;
  position: relative;
  z-index: 1;
}
.offer-card .bridges-bar { max-width: 200px; position: relative; z-index: 1; box-shadow: 0 0 14px rgba(0,0,0,0.25); }
.offer-card-bar {
  height: 6px;
  width: 100%;
  max-width: 200px;
  border-radius: var(--radius-full);
  background: var(--gradient-blue);
  box-shadow: 0 0 16px rgba(79,160,232,0.45);
  position: relative;
  z-index: 1;
}
.placeholder-tag span.label {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
  color: rgba(255,255,255,0.75);
}
.placeholder-tag span.hint { font-size: var(--fs-xs); max-width: 22ch; }

/* ==========================================================================
   BRIDGES tile system — exact brand colours, matches ICL's own toolkit assets
   ========================================================================== */
.tile {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: 22%;
  color: #fff;
  font-family: var(--font-heading);
  font-weight: 700;
  box-shadow: var(--shadow-sm);
}
.tile-sm { width: 34px; height: 34px; font-size: 1rem; border-radius: 9px; }
.tile-md { width: 52px; height: 52px; font-size: 1.4rem; border-radius: 12px; }
.tile-lg { width: 58px; height: 58px; font-size: 1.7rem; border-radius: 14px; box-shadow: var(--shadow-md); }

.tile-b { background: var(--bridges-b); }
.tile-r { background: var(--bridges-r); }
.tile-i { background: var(--bridges-i); }
.tile-d { background: var(--bridges-d); }
.tile-g { background: var(--bridges-g); }
.tile-e { background: var(--bridges-e); }
.tile-s { background: var(--bridges-s); }

.tile-strip {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

/* #framework — the seven moves named next to their brand tiles. Makes the
   BRIDGES acronym legible and ownable without turning it into a card grid. */
.framework-moves {
  list-style: none;
  margin: 0 auto var(--space-6);
  padding: 0;
  max-width: 720px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-2) var(--space-5);
}
.framework-moves li {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-white);
}
.framework-moves .tile-sm {
  width: 30px;
  height: 30px;
  font-size: 0.95rem;
}
@media (max-width: 640px) {
  .framework-moves {
    flex-direction: column;
    align-items: flex-start;
    width: max-content;
    max-width: 100%;
    gap: var(--space-2);
  }
}

.bridges-bar {
  display: flex;
  height: 6px;
  width: 100%;
  max-width: 380px;
  border-radius: var(--radius-full);
  overflow: hidden;
}
.bridges-bar span { flex: 1; }
.bridges-bar span:nth-child(1) { background: var(--bridges-b); }
.bridges-bar span:nth-child(2) { background: var(--bridges-r); }
.bridges-bar span:nth-child(3) { background: var(--bridges-i); }
.bridges-bar span:nth-child(4) { background: var(--bridges-d); }
.bridges-bar span:nth-child(5) { background: var(--bridges-g); }
.bridges-bar span:nth-child(6) { background: var(--bridges-e); }
.bridges-bar span:nth-child(7) { background: var(--bridges-s); }

/* Hero lockup: wordmark + colour bar + tile row, replaces generic photography */
.bridges-lockup {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  height: 100%;
  padding: var(--space-7) var(--space-4);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(120% 100% at 100% 100%, rgba(125,189,242,0.14) 0%, transparent 55%),
    linear-gradient(160deg, var(--color-navy-800), var(--color-navy-950));
  border: 1px solid rgba(255,255,255,0.12);
  box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,0.07);
  position: relative;
  overflow: hidden;
  transition: transform 260ms ease, box-shadow 260ms ease;
}
.bridges-lockup:hover,
.bridges-lockup:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 30px 64px rgba(2,6,15,0.5), inset 0 1px 0 rgba(255,255,255,0.09);
}
.lockup-hint {
  position: absolute;
  top: var(--space-4);
  right: var(--space-4);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-xs);
  font-weight: 600;
  color: rgba(255,255,255,0.85);
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.16);
  padding: 6px 12px;
  border-radius: var(--radius-full);
  opacity: 0;
  transform: translateY(-4px);
  transition: opacity 220ms ease, transform 220ms ease;
  z-index: 2;
}
.lockup-hint svg { width: 14px; height: 14px; }
.bridges-lockup:hover .lockup-hint,
.bridges-lockup:focus-visible .lockup-hint {
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  .lockup-hint { transition: none; }
}
.bridges-lockup::after {
  content: "";
  position: absolute;
  width: 340px;
  height: 340px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.08);
  right: -120px;
  bottom: -140px;
  pointer-events: none;
}
.bridges-lockup .wordmark {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: clamp(2.25rem, 5vw, 3.25rem);
  letter-spacing: 0.05em;
  color: #fff;
  margin: 0;
}
.bridges-lockup .lockup-caption {
  color: rgba(255,255,255,0.68);
  font-size: var(--fs-sm);
  margin: 0;
}
.bridges-lockup .tile-strip { margin-top: auto; gap: 6px; }
.bridges-lockup .tile-strip .tile-lg {
  width: 50px; height: 50px; font-size: 1.4rem; border-radius: 12px;
}

@media (max-width: 1080px) {
  .hero-grid { grid-template-columns: 1fr; }
  .hero-visual { max-width: 460px; margin-inline: auto; width: 100%; }
  .hero .hero-ctas { display: none; }
}
@media (max-width: 640px) {
  .bridges-lockup { padding-inline: var(--space-3); }
  .bridges-lockup .tile-strip,
  #framework .tile-strip {
    gap: 4px;
    flex-wrap: nowrap;
    width: 100%;
  }
  .bridges-lockup .tile-strip .tile-lg,
  #framework .tile-strip .tile-lg {
    flex: 1 1 0;
    flex-shrink: 1;
    width: auto;
    height: auto;
    min-width: 0;
    min-height: 0;
    aspect-ratio: 1 / 1;
    font-size: clamp(0.65rem, 4.5vw, 1.05rem);
    border-radius: 20%;
  }
}
@media (max-width: 560px) {
  .hero-copy h1 { font-size: var(--fs-2xl); }
  .tile-lg { width: 54px; height: 54px; font-size: 1.6rem; }
  .offer-card { padding: var(--space-4); min-height: 176px; }
  .offer-card-icon { width: 36px; height: 36px; }
  .offer-card-icon svg { width: 19px; height: 19px; }
  .offer-card-name { font-size: var(--fs-md); }
}

/* ==========================================================================
   Service panels
   ========================================================================== */
.panels {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
}
.panel {
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,0.07);
  transition: transform 260ms ease, box-shadow 260ms ease, border-color 260ms ease;
}
.panel:hover {
  transform: translateY(-4px);
  box-shadow: 0 30px 64px rgba(2,6,15,0.4), inset 0 1px 0 rgba(255,255,255,0.09);
}
.panel-bridges {
  background: var(--gradient-navy);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.1);
}
.panel-bridges:hover { border-color: rgba(255,255,255,0.2); }
.panel-leadership {
  background: var(--color-navy-800);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.08);
}
.panel-leadership:hover { border-color: rgba(255,255,255,0.18); }
.panel-icon {
  position: relative;
  width: 56px; height: 56px;
  border-radius: var(--radius-md);
  background: rgba(255,255,255,0.1);
  display: grid; place-items: center;
  margin-bottom: var(--space-1);
}
.panel-icon::before {
  content: "";
  position: absolute;
  inset: -10px;
  border-radius: inherit;
  background: var(--color-blue-400);
  opacity: 0.14;
  filter: blur(12px);
  z-index: -1;
}
.panel-icon svg { width: 28px; height: 28px; color: var(--color-blue-300); position: relative; }
.panel h3 { font-size: var(--fs-xl); margin-bottom: 0; }
.panel .panel-kicker { font-size: var(--fs-sm); color: rgba(255,255,255,0.7); margin-bottom: var(--space-2); }
.panel p { color: rgba(255,255,255,0.82); }
.panel-list { display: flex; flex-direction: column; gap: var(--space-2); margin: var(--space-2) 0 var(--space-4); }
.panel-list li { display: flex; align-items: flex-start; gap: var(--space-2); font-size: var(--fs-sm); color: rgba(255,255,255,0.9); }
.panel-list svg { width: 20px; height: 20px; flex-shrink: 0; color: var(--color-blue-300); margin-top: 1px; }
.panel-link { margin-top: auto; display: inline-flex; align-items: center; gap: 6px; font-weight: 600; color: #fff; }
.panel-link svg { width: 16px; height: 16px; transition: transform var(--transition); }
.panel-link:hover svg { transform: translateX(4px); }

@media (max-width: 860px) {
  .panels { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Who we work with
   ========================================================================== */
.audience-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-4);
}
.audience-card { text-align: center; padding: var(--space-4); }
.audience-icon {
  width: 64px; height: 64px;
  margin-inline: auto var(--space-3);
  margin-bottom: var(--space-3);
  border-radius: 50%;
  background: var(--color-slate-100);
  display: grid; place-items: center;
}
.audience-icon svg { width: 30px; height: 30px; color: var(--color-blue-500); }
.audience-card h3 { font-size: var(--fs-md); margin-bottom: var(--space-1); }
.audience-card p { font-size: var(--fs-sm); color: var(--color-ink-700); margin-bottom: 0; }

@media (max-width: 860px) {
  .audience-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  .audience-grid { grid-template-columns: minmax(0, 1fr); }
}

/* ==========================================================================
   Partners strip
   ========================================================================== */
.partners { background: var(--color-navy-950); padding-block: var(--space-6); }
.partners-label {
  text-align: center;
  color: rgba(255,255,255,0.65);
  font-size: var(--fs-sm);
  margin-bottom: var(--space-5);
}
.partners-grid {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-6);
}
.partner-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 76px;
  width: 160px;
  padding: var(--space-3);
  background: #fff;
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-sm);
}
.partner-logo img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.partners-note {
  text-align: center;
  margin-top: var(--space-4);
  font-size: var(--fs-xs);
  color: rgba(255,255,255,0.45);
}

/* ==========================================================================
   About teaser
   ========================================================================== */
.about-grid {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: var(--space-6);
  align-items: start;
}
.about-right {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}
.about-photo-frame {
  aspect-ratio: 3/4;
  border-radius: var(--radius-lg);
  background: var(--color-slate-100);
  border: 1px solid var(--color-border);
  overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  box-shadow: var(--shadow-sm);
}
.about-photo-frame img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.about-photo-frame .placeholder-tag { color: var(--color-ink-700); }
.about-photo-frame .placeholder-tag span.label { color: var(--color-ink-900); }
.about-photo-frame svg { color: var(--color-blue-500); }

.quote-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255,255,255,0.6);
}
.quote-card .quote-mark { color: var(--color-blue-300); font-size: 2.5rem; line-height: 1; font-family: var(--font-heading); }
.quote-card blockquote { margin: 0 0 var(--space-3); font-size: var(--fs-md); color: var(--color-ink-900); }
.quote-card cite { font-style: normal; font-size: var(--fs-sm); font-weight: 700; display: block; }
.quote-card .quote-role { font-size: var(--fs-xs); color: var(--color-ink-700); }

.testimonial-carousel { display: grid; }
.testimonial-slide {
  grid-area: 1 / 1;
  opacity: 0;
  pointer-events: none;
  transition: opacity 500ms ease;
}
.testimonial-slide.is-active { opacity: 1; pointer-events: auto; }
@media (prefers-reduced-motion: reduce) {
  .testimonial-slide { transition: none; }
}
.testimonial-dots { display: flex; gap: var(--space-2); margin-top: var(--space-4); }
.testimonial-dot {
  width: 8px;
  height: 8px;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: var(--color-border);
  cursor: pointer;
  transition: background 220ms ease, transform 220ms ease;
}
.testimonial-dot:hover { background: var(--color-blue-300); }
.testimonial-dot.is-active { background: var(--color-blue-500); transform: scale(1.3); }
.testimonial-dot:focus-visible { outline: 2px solid var(--color-blue-400); outline-offset: 2px; }

.about-content .eyebrow { color: var(--color-blue-600); }
.two-col {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: var(--space-6);
  align-items: start;
}

@media (max-width: 900px) {
  .about-grid, .two-col { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Page hero (sub-pages)
   ========================================================================== */
.page-hero {
  position: relative;
  overflow: hidden;
  padding-block: var(--space-8) var(--space-7);
}
@media (max-width: 640px) {
  .page-hero { padding-block: var(--space-6) var(--space-5); }
}
.delivery-hero { padding-bottom: var(--space-3); }
.delivery-hero .hero-grid { align-items: start; }
.page-hero::before {
  content: "";
  position: absolute;
  width: 520px;
  height: 520px;
  right: -180px;
  top: -220px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.08);
  pointer-events: none;
}
.page-hero .container { position: relative; z-index: 1; }
.breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--fs-xs);
  color: rgba(255,255,255,0.55);
  margin-bottom: var(--space-4);
}
.breadcrumb a { color: rgba(255,255,255,0.75); }
.breadcrumb a:hover { color: #fff; }
.page-hero h1 { color: #fff; font-size: var(--fs-2xl); max-width: 20ch; }
.page-hero .lede { color: rgba(255,255,255,0.82); font-size: var(--fs-md); max-width: 60ch; }
.page-hero .hero-ctas { margin-top: var(--space-4); }

/* Confirmation badge — flags a hero as a post-action / success state,
   distinct from the ordinary .eyebrow label */
.confirm-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--cycle-improve);
  background: rgba(154, 209, 38, 0.14);
  border: 1px solid rgba(154, 209, 38, 0.35);
  border-radius: var(--radius-full);
  padding: 8px 16px;
  margin: 0 0 var(--space-3);
}
.confirm-badge svg { width: 18px; height: 18px; flex-shrink: 0; }
.confirm-badge.is-develop { color: var(--color-blue-600); background: rgba(46, 127, 214, 0.12); border-color: rgba(46, 127, 214, 0.35); }

/* ---- BRIDGES page hero entrance ----
   Mirrors the homepage hero cascade, then staggers the wordmark, colour
   bar and individual letter tiles in the lockup card. */
.bridges-hero .breadcrumb,
.bridges-hero .eyebrow,
.bridges-hero h1,
.bridges-hero .lede,
.bridges-hero .hero-ctas,
.bridges-hero .bridges-lockup {
  animation: heroEnter 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.bridges-hero .breadcrumb { animation-delay: 0ms; }
.bridges-hero .eyebrow { animation-delay: 80ms; }
.bridges-hero h1 { animation-delay: 160ms; }
.bridges-hero .lede { animation-delay: 280ms; }
.bridges-hero .hero-ctas { animation-delay: 380ms; }
.bridges-hero .bridges-lockup { animation-delay: 480ms; }
.bridges-hero .bridges-lockup .wordmark {
  animation: heroEnter 600ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 620ms;
}
@keyframes bridgesBarWipe {
  from { transform: scaleX(0); opacity: 0; }
  to { transform: scaleX(1); opacity: 1; }
}
.bridges-hero .bridges-lockup .bridges-bar {
  transform-origin: left;
  animation: bridgesBarWipe 600ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 700ms;
}
.bridges-hero .bridges-lockup .lockup-caption {
  animation: heroEnter 600ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 780ms;
}
@keyframes tilePopIn {
  from { opacity: 0; transform: translateY(14px) scale(0.85); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.bridges-hero .bridges-lockup .tile-strip .tile {
  animation: tilePopIn 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.bridges-hero .bridges-lockup .tile-strip .tile:nth-child(1) { animation-delay: 900ms; }
.bridges-hero .bridges-lockup .tile-strip .tile:nth-child(2) { animation-delay: 1080ms; }
.bridges-hero .bridges-lockup .tile-strip .tile:nth-child(3) { animation-delay: 1260ms; }
.bridges-hero .bridges-lockup .tile-strip .tile:nth-child(4) { animation-delay: 1440ms; }
.bridges-hero .bridges-lockup .tile-strip .tile:nth-child(5) { animation-delay: 1620ms; }
.bridges-hero .bridges-lockup .tile-strip .tile:nth-child(6) { animation-delay: 1800ms; }
.bridges-hero .bridges-lockup .tile-strip .tile:nth-child(7) { animation-delay: 1980ms; }
@media (prefers-reduced-motion: reduce) {
  .bridges-hero .breadcrumb,
  .bridges-hero .eyebrow,
  .bridges-hero h1,
  .bridges-hero .lede,
  .bridges-hero .hero-ctas,
  .bridges-hero .bridges-lockup,
  .bridges-hero .bridges-lockup .wordmark,
  .bridges-hero .bridges-lockup .bridges-bar,
  .bridges-hero .bridges-lockup .lockup-caption,
  .bridges-hero .bridges-lockup .tile-strip .tile {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ==========================================================================
   Delivery & Coaching hero — three large overlapping glass panels
   ========================================================================== */
.delivery-panels {
  position: relative;
  width: 100%;
  min-height: 435px;
}
.glass-panel {
  position: absolute;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  width: 80%;
  height: 158px;
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-lg);
  border: 1px solid rgba(125, 189, 242, 0.38);
  background:
    radial-gradient(140% 120% at 100% 0%, rgba(79, 160, 232, 0.16) 0%, transparent 60%) padding-box,
    linear-gradient(160deg, rgba(255, 255, 255, 0.07), rgba(255, 255, 255, 0.02)) padding-box,
    linear-gradient(135deg, rgba(255, 255, 255, 0.38), rgba(255, 255, 255, 0.05) 60%) border-box;
  box-shadow: 0 28px 56px rgba(2, 6, 15, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  transition: transform 260ms ease, box-shadow 260ms ease, border-color 260ms ease;
  animation: heroEnter 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.glass-panel:hover {
  transform: translateY(-6px);
  border-color: rgba(125, 189, 242, 0.8);
  box-shadow: 0 34px 64px rgba(2, 6, 15, 0.48), 0 0 40px rgba(79, 160, 232, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}
.glass-panel-delivery { top: -21px; left: 0; z-index: 1; animation-delay: 200ms; }
.glass-panel-facilitation {
  top: 125px;
  left: 6.5%;
  z-index: 3;
  box-shadow: 0 34px 64px rgba(2, 6, 15, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.1);
  animation-delay: 380ms;
}
.glass-panel-facilitation:hover {
  box-shadow: 0 38px 70px rgba(2, 6, 15, 0.54), 0 0 46px rgba(79, 160, 232, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}
.glass-panel-coaching { top: 271px; left: 13%; z-index: 2; animation-delay: 560ms; }
.glass-panel-top { display: flex; align-items: center; gap: var(--space-3); }
.glass-panel-icon {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  border: 1.5px solid rgba(125, 189, 242, 0.6);
  color: var(--color-blue-300);
  background: linear-gradient(150deg, rgba(125, 189, 242, 0.22), rgba(125, 189, 242, 0.04));
  transition: border-color 260ms ease;
}
.glass-panel-icon::before {
  content: "";
  position: absolute;
  inset: -9px;
  border-radius: inherit;
  background: currentColor;
  opacity: 0.14;
  filter: blur(10px);
  z-index: -1;
  transition: opacity 260ms ease;
}
.glass-panel:hover .glass-panel-icon { border-color: rgba(125, 189, 242, 0.95); }
.glass-panel:hover .glass-panel-icon::before { opacity: 0.32; }
.glass-panel-icon svg { width: 22px; height: 22px; }
.glass-panel-label {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-lg);
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: #fff;
  margin: 0;
}
.glass-panel-rule {
  width: 44px;
  height: 4px;
  border-radius: var(--radius-full);
  background: var(--gradient-blue);
}
.glass-panel-copy {
  font-size: var(--fs-md);
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.72);
  margin: 0;
}
@media (max-width: 1080px) {
  .delivery-panels { max-width: 460px; margin-inline: auto; }
}
@media (max-width: 640px) {
  .delivery-panels {
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    width: 100%;
    max-width: 420px;
  }
  .glass-panel,
  .glass-panel-facilitation,
  .glass-panel-coaching {
    position: relative;
    top: auto;
    left: auto;
    width: 100%;
    height: auto;
    padding: var(--space-3) var(--space-4);
  }
  .glass-panel-icon { width: 40px; height: 40px; }
  .glass-panel-icon svg { width: 18px; height: 18px; }
  .glass-panel-label { font-size: var(--fs-md); }
  .glass-panel-rule { width: 36px; height: 3px; }
  .glass-panel-copy { font-size: var(--fs-sm); }
}
@media (prefers-reduced-motion: reduce) {
  .glass-panel {
    transition: none;
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* ==========================================================================
   Feature list (icon + text rows on light backgrounds)
   ========================================================================== */
.feature-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-4);
}
.feature-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--accent, var(--color-blue-500));
  border-radius: var(--radius-md);
  padding: var(--space-4);
  display: flex;
  gap: var(--space-3);
  box-shadow: var(--shadow-sm);
  transition: transform 240ms ease, box-shadow 240ms ease;
}
.feature-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}
.feature-card .feature-icon {
  width: 44px; height: 44px; flex-shrink: 0;
  border-radius: var(--radius-sm);
  background: var(--accent, var(--color-blue-500));
  box-shadow: 0 6px 16px -4px var(--accent, var(--color-blue-500));
  display: grid; place-items: center;
}
.feature-card .feature-icon svg { width: 22px; height: 22px; color: #fff; }
.feature-card h3 { font-size: var(--fs-md); margin-bottom: 4px; }
.feature-card p { font-size: var(--fs-sm); color: var(--color-ink-700); margin-bottom: 0; }
.feature-card.accent-design { --accent: var(--cycle-design); }
.feature-card.accent-improve { --accent: var(--cycle-improve); }
.feature-card.accent-review { --accent: var(--cycle-review); }
.feature-card.accent-gold { --accent: var(--bridges-b); }
@media (max-width: 720px) { .feature-grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   Framework list — the seven BRIDGES moves, exact colours + genuine copy
   ========================================================================== */
.non-linear-note {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: var(--fs-sm);
  color: rgba(255,255,255,0.75);
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: var(--radius-full);
  padding: 8px 16px;
  margin-bottom: var(--space-5);
}
.non-linear-note svg { width: 18px; height: 18px; flex-shrink: 0; color: var(--color-blue-300); }

.framework-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.framework-row {
  display: flex;
  gap: var(--space-4);
  align-items: flex-start;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: var(--radius-md);
  padding: var(--space-4);
}
.framework-row h3 {
  font-size: var(--fs-md);
  color: #fff;
  margin-bottom: 4px;
}
.framework-row p {
  font-size: var(--fs-sm);
  color: rgba(255,255,255,0.75);
  margin-bottom: 0;
}
@media (max-width: 560px) {
  .framework-row { flex-direction: column; align-items: flex-start; gap: var(--space-2); }
}

/* ==========================================================================
   Design / Review / Improve cycle
   ========================================================================== */
.cycle-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
}
.cycle-card {
  position: relative;
  background: var(--color-navy-800);
  border-radius: var(--radius-md);
  padding: var(--space-5) var(--space-5) var(--space-5) calc(var(--space-5) + 10px);
  overflow: hidden;
}
.cycle-card::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 6px;
}
.cycle-card.cycle-design::before { background: var(--cycle-design); }
.cycle-card.cycle-deliver::before { background: var(--cycle-deliver); }
.cycle-card.cycle-review::before { background: var(--cycle-review); }
.cycle-card h3 {
  font-size: var(--fs-md);
  color: #fff;
  margin-bottom: var(--space-2);
}
.cycle-card h3 .with {
  font-weight: 600;
  font-size: var(--fs-sm);
}
.cycle-card.cycle-design h3 .with { color: var(--cycle-design); }
.cycle-card.cycle-deliver h3 .with { color: var(--cycle-deliver); }
.cycle-card.cycle-review h3 .with { color: var(--cycle-review); }
.cycle-card p {
  font-size: var(--fs-sm);
  color: rgba(255,255,255,0.75);
  margin-bottom: 0;
}
@media (max-width: 860px) {
  .cycle-grid { grid-template-columns: 1fr; }
}

/* Outcome callout — the result of the Design/Deliver/Review cycle, not a fourth step */
.cycle-outcome {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  margin-top: var(--space-5);
  text-align: center;
}
.cycle-outcome svg { width: 22px; height: 22px; color: var(--cycle-improve); flex-shrink: 0; }
.outcome-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: var(--fs-md);
  font-weight: 600;
  color: var(--color-ink-900);
  background: var(--color-slate-100);
  border-radius: var(--radius-full);
  padding: 10px 20px;
  margin: 0;
}
.outcome-badge .outcome-label {
  font-size: var(--fs-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--cycle-improve);
}
@media (max-width: 480px) {
  .cycle-outcome { flex-direction: column; gap: var(--space-2); }
}

/* ==========================================================================
   Check grid — short "ways we work" style lists
   ========================================================================== */
.check-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3) var(--space-6);
}
.check-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  font-size: var(--fs-md);
  font-weight: 500;
}
.check-item svg { width: 22px; height: 22px; flex-shrink: 0; color: var(--color-blue-500); margin-top: 2px; }
@media (max-width: 640px) { .check-grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   Video frame — rounded, shadowed wrapper for embedded <video> elements
   ========================================================================== */
.video-frame {
  max-width: 860px;
  margin: 0 auto;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}
.video-frame video {
  display: block;
  width: 100%;
  height: auto;
}

.trust-badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-4);
}
.trust-badge {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-ink-900);
  background: var(--color-slate-100);
  border-radius: var(--radius-full);
  padding: 8px 14px;
}
.trust-badge svg { width: 18px; height: 18px; color: var(--color-blue-500); flex-shrink: 0; }

/* ==========================================================================
   Resource cards (BRIDGES tools & resources — mapped to Design/Deliver/Review)
   ========================================================================== */
.resource-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-4);
}
.resource-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--accent, var(--color-blue-500));
  border-radius: var(--radius-md);
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  box-shadow: var(--shadow-sm);
  transition: transform 240ms ease, box-shadow 240ms ease;
}
.resource-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.resource-card .resource-icon {
  width: 44px; height: 44px; flex-shrink: 0;
  border-radius: var(--radius-sm);
  background: var(--accent, var(--color-blue-500));
  box-shadow: 0 6px 16px -4px var(--accent, var(--color-blue-500));
  display: grid; place-items: center;
  margin-bottom: var(--space-2);
}
.resource-card .resource-icon svg { width: 22px; height: 22px; color: #fff; }
.resource-card .resource-kicker {
  font-size: var(--fs-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--accent, var(--color-blue-600));
  margin: 0;
}
.resource-card h3 { font-size: var(--fs-md); margin-bottom: 0; }
.resource-card p { font-size: var(--fs-sm); color: var(--color-ink-700); margin-bottom: 0; }
.resource-card.accent-design { --accent: var(--cycle-design); }
.resource-card.accent-deliver { --accent: var(--cycle-deliver); }
.resource-card.accent-review { --accent: var(--cycle-review); }
.resource-card.accent-gold { --accent: var(--bridges-b); }
.resource-card.accent-improve { --accent: var(--cycle-improve); }
@media (max-width: 900px) { .resource-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .resource-grid { grid-template-columns: 1fr; } }

/* When a resource-grid holds a trailing pair after full rows of 4 (Explore's
   6-resource grids), centre the pair instead of leaving it stranded on the
   left of a 4-column row. nth-child(5):nth-last-child(2) only matches when
   there are exactly 6 cards total, so this is a no-op everywhere else. */
.resource-grid > .resource-card:nth-child(5):nth-last-child(2) { grid-column: 2 / span 1; }
.resource-grid > .resource-card:nth-child(6):last-child { grid-column: 3 / span 1; }
@media (max-width: 900px) {
  /* At 2 columns, 6 cards already fill three full rows with no orphan —
     without this reset, card 6's line-3 placement above would force a
     stray implicit 3rd column into the 2-column grid. */
  .resource-grid > .resource-card:nth-child(5):nth-last-child(2),
  .resource-grid > .resource-card:nth-child(6):last-child { grid-column: auto; }
}

/* Three-column variant of the resource-card grid (BRIDGES Explore/Develop/Embed routes) */
.routes-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
}
@media (max-width: 860px) { .routes-grid { grid-template-columns: 1fr; } }

/* Explore -> Develop -> Embed: a faint chevron in the gap between the route
   cards so the three read as a progression, not three parallel options. The
   copy carries the distinction; this is only a nudge. Desktop layout only —
   the cards stack on mobile, where a left-to-right cue makes no sense. */
@media (min-width: 861px) {
  .routes-grid > .resource-card { position: relative; }
  .routes-grid > .resource-card:not(:last-child)::after {
    content: "";
    position: absolute;
    top: 50%;
    right: calc(var(--space-4) / -2);
    width: 8px;
    height: 8px;
    border-top: 2px solid var(--color-ink-700);
    border-right: 2px solid var(--color-ink-700);
    transform: translate(50%, -50%) rotate(45deg);
    opacity: 0.35;
    pointer-events: none;
  }
}

.resource-card .resource-price {
  font-size: var(--fs-sm);
  font-weight: 700;
  color: var(--accent, var(--color-blue-600));
  margin: -4px 0 0;
}
.resource-card .resource-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: auto;
  padding-top: var(--space-2);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--accent, var(--color-blue-600));
}
.resource-card .resource-cta svg { width: 16px; height: 16px; transition: transform var(--transition); }
.resource-card .resource-cta:hover svg { transform: translateX(4px); }
.resource-card .resource-cta[aria-disabled="true"] { color: var(--color-ink-700); cursor: default; }

/* ==========================================================================
   Contact page
   ========================================================================== */
.contact-grid {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: var(--space-6);
  align-items: start;
}
.contact-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255,255,255,0.6);
}
.contact-card h2 { font-size: var(--fs-lg); }
.contact-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding-block: var(--space-2);
  border-bottom: 1px solid var(--color-border);
}
.contact-detail:last-child { border-bottom: none; }
.contact-detail .contact-icon {
  width: 40px; height: 40px; flex-shrink: 0;
  border-radius: 50%;
  background: var(--color-slate-100);
  display: grid; place-items: center;
}
.contact-detail .contact-icon svg { width: 20px; height: 20px; color: var(--color-blue-500); }
.contact-detail h3 { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-ink-700); margin-bottom: 2px; }
.contact-detail p, .contact-detail a { font-size: var(--fs-sm); margin-bottom: 0; }
.contact-detail a { color: var(--color-blue-600); font-weight: 600; }

.contact-form-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255,255,255,0.6);
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
.form-field { margin-bottom: var(--space-4); }
.form-field label {
  display: block;
  font-size: var(--fs-sm);
  font-weight: 600;
  margin-bottom: 6px;
  color: var(--color-ink-900);
}
.form-field .optional { font-weight: 400; color: var(--color-ink-700); }
.form-field input,
.form-field select,
.form-field textarea {
  width: 100%;
  font: inherit;
  font-size: var(--fs-base);
  padding: 0.75rem 0.9rem;
  border: 1px solid var(--color-slate-200);
  border-radius: var(--radius-sm);
  background: var(--color-white);
  color: var(--color-ink-900);
  transition: border-color var(--transition), box-shadow var(--transition);
}
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus {
  outline: none;
  border-color: var(--color-blue-500);
  box-shadow: 0 0 0 3px rgba(46,127,214,0.18);
}
.form-field textarea { resize: vertical; min-height: 140px; }
.form-field select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 18px; padding-right: 2.5rem; }
.form-note { font-size: var(--fs-xs); color: var(--color-ink-700); margin-top: var(--space-3); }
.form-note.form-error { color: var(--color-error); }
.link-button {
  font: inherit;
  font-size: inherit;
  color: var(--color-blue-600);
  font-weight: 600;
  text-decoration: underline;
  background: none;
  border: none;
  padding: 0;
}
.link-button:hover { color: var(--color-blue-500); }
.link-button.is-danger { color: var(--status-alert); }
.link-button.is-danger:hover { color: var(--bridges-e); }
.link-button:disabled { opacity: 0.5; cursor: not-allowed; }

@media (max-width: 900px) {
  .contact-grid { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .form-row { grid-template-columns: 1fr; }
}

/* ==========================================================================
   CTA band
   ========================================================================== */
.cta-band {
  background: var(--gradient-navy);
  color: #fff;
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-5);
  flex-wrap: wrap;
}
.cta-band-copy { display: flex; align-items: center; gap: var(--space-4); max-width: 640px; }
.cta-band-icon {
  width: 56px; height: 56px; flex-shrink: 0;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.3);
  display: grid; place-items: center;
}
.cta-band-icon svg { width: 26px; height: 26px; }
.cta-band h2 { font-size: var(--fs-xl); margin-bottom: var(--space-1); }
.cta-band p { color: rgba(255,255,255,0.8); margin-bottom: 0; }
@media (max-width: 700px) {
  .cta-band { padding: var(--space-5); }
  .cta-band-copy { flex-direction: column; align-items: flex-start; gap: var(--space-3); max-width: 100%; }
  .cta-band .btn { width: 100%; justify-content: center; }
}

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer { background: var(--color-navy-950); color: rgba(255,255,255,0.75); padding-top: var(--space-7); }
.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr repeat(5, 1fr);
  gap: var(--space-5);
  padding-bottom: var(--space-6);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.footer-brand img { height: 40px; width: auto; margin-bottom: var(--space-3); }
.footer-brand p { font-size: var(--fs-sm); color: rgba(255,255,255,0.6); max-width: 32ch; }
.footer-col h4 {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: rgba(255,255,255,0.5);
  margin-bottom: var(--space-3);
}
.footer-col ul { display: flex; flex-direction: column; gap: var(--space-2); }
.footer-col a { font-size: var(--fs-sm); color: rgba(255,255,255,0.78); transition: color var(--transition); }
.footer-col a:hover { color: #fff; }
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  padding-block: var(--space-4);
  font-size: var(--fs-xs);
  color: rgba(255,255,255,0.45);
}
.footer-bottom nav { display: flex; gap: var(--space-4); }
.footer-social {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.2);
}
.footer-social svg { width: 16px; height: 16px; }

@media (max-width: 980px) {
  .footer-grid { grid-template-columns: repeat(3, 1fr); }
  .footer-brand { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
  .footer-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ==========================================================================
   Misc / focus
   ========================================================================== */
a:focus-visible, button:focus-visible {
  outline: 3px solid var(--color-blue-400);
  outline-offset: 2px;
}
.section-navy a:focus-visible { outline-color: #fff; }

.placeholder-banner {
  background: #fff7e6;
  border: 1px solid #ffdf9b;
  color: #6b4a00;
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
  font-size: var(--fs-xs);
  display: inline-flex;
  gap: 6px;
  align-items: center;
}

/* ==========================================================================
   FAQ accordion
   ========================================================================== */
.faq-group { margin-bottom: var(--space-7); }
.faq-group:last-child { margin-bottom: 0; }
.faq-group h2 { margin-bottom: var(--space-4); }
.faq-list { display: flex; flex-direction: column; gap: var(--space-3); }
.faq-item {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-white);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.faq-item summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-5);
  font-family: var(--font-heading);
  font-weight: 600;
  color: var(--color-ink-900);
  transition: color 180ms ease;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary:hover { color: var(--color-blue-600); }
.faq-item summary::after {
  content: "";
  flex-shrink: 0;
  width: 10px;
  height: 10px;
  margin-right: 4px;
  border-right: 2px solid var(--color-blue-500);
  border-bottom: 2px solid var(--color-blue-500);
  transform: rotate(45deg);
  transition: transform 200ms ease;
}
.faq-item[open] summary::after { transform: rotate(-135deg); }
.faq-item .faq-answer {
  padding: 0 var(--space-5) var(--space-5);
  color: var(--color-ink-700);
}
.faq-item .faq-answer p { margin: 0; }
@media (prefers-reduced-motion: reduce) {
  .faq-item summary::after { transition: none; }
}

/* ==========================================================================
   Digital BRIDGES Review — setup/QR, learner survey, live results
   ========================================================================== */
.review-shell { max-width: 560px; margin-inline: auto; }

/* -- Learner survey landing: session context + facilitator notes -- */
.review-go-meta { color: rgba(255,255,255,0.72); font-size: var(--fs-sm); margin-top: calc(-1 * var(--space-3)); }
.review-go-notes {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-left: 4px solid var(--color-blue-500);
  border-radius: var(--radius-sm);
  padding: var(--space-4);
  font-size: var(--fs-sm);
  color: var(--color-ink-900);
  margin-bottom: var(--space-6);
}

/* -- Setup page: QR + link card -- */
.review-qr-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255,255,255,0.6);
  text-align: center;
}
#review-qr svg { width: 100%; max-width: 260px; margin: 0 auto var(--space-4); border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); }
.review-link-output {
  display: block;
  word-break: break-all;
  font-size: var(--fs-sm);
  color: var(--color-blue-600);
  font-weight: 600;
  margin-bottom: var(--space-4);
}
.review-result-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); justify-content: center; }

/* -- Progress stepper (learner survey) -- */
.review-progress { display: flex; gap: 6px; margin-bottom: var(--space-5); }
.review-progress-dot {
  flex: 1 1 0;
  height: 6px;
  border-radius: var(--radius-full);
  background: var(--color-slate-200);
  transition: background var(--transition), transform var(--transition);
}
.review-progress-dot.is-done { background: var(--dot-color, var(--color-blue-500)); }
.review-progress-dot.is-current { background: var(--dot-color, var(--color-blue-500)); transform: scaleY(1.6); }

/* -- Step panel -- */
.review-step-badge {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-lg);
  color: #fff;
  background: var(--badge-color, var(--color-blue-500));
  margin-bottom: var(--space-3);
}
.review-step h2 { margin-bottom: 4px; }
.review-question { margin-top: var(--space-5); }
.review-question-text { font-weight: 600; color: var(--color-ink-900); margin-bottom: var(--space-3); }

/* -- Rating scale -- */
.review-scale { display: flex; gap: var(--space-2); }
.review-scale-btn {
  flex: 1 1 0;
  min-height: 48px;
  font: inherit;
  font-weight: 700;
  font-size: var(--fs-md);
  color: var(--color-ink-900);
  background: var(--color-white);
  border: 1.5px solid var(--color-slate-200);
  border-radius: var(--radius-sm);
  transition: border-color 160ms ease, background 160ms ease, color 160ms ease, transform 160ms ease;
}
.review-scale-btn:hover { border-color: var(--color-blue-400); }
.review-scale-btn.is-selected {
  background: var(--color-blue-500);
  border-color: var(--color-blue-500);
  color: #fff;
  transform: translateY(-2px);
}
.review-scale-labels {
  display: flex;
  justify-content: space-between;
  font-size: var(--fs-xs);
  color: var(--color-ink-700);
  margin-top: 6px;
}
.review-step-nav { display: flex; gap: var(--space-3); margin-top: var(--space-6); }
.review-step-nav .btn { flex: 1 1 0; }

/* -- Develop review builder (allowlisted facilitators only, setup page) -- */
.form-field-label-standalone { display: block; font-size: var(--fs-sm); font-weight: 600; margin-bottom: 6px; color: var(--color-ink-900); }
.review-builder-intro { margin-top: -2px; margin-bottom: var(--space-3); font-size: var(--fs-sm); }
.review-builder-groups { display: flex; flex-direction: column; gap: var(--space-2); }
.review-builder-letter {
  border: 1px solid var(--color-border);
  border-left: 4px solid var(--letter-color, var(--color-blue-500));
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}
.review-builder-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: var(--space-3) var(--space-4);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-ink-900);
}
.review-builder-row-label { transition: color 160ms ease; }
.review-builder-letter.is-off .review-builder-row-label,
.review-builder-letter.is-off .review-builder-count { color: var(--color-ink-700); }

/* -- On/off switch: flips every checkbox in this letter at once -- */
.review-builder-toggle {
  flex-shrink: 0;
  width: 34px;
  height: 20px;
  border-radius: var(--radius-full);
  border: none;
  background: var(--color-slate-200);
  position: relative;
  cursor: pointer;
  transition: background 160ms ease;
}
.review-builder-toggle::before {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--color-white);
  box-shadow: var(--shadow-sm);
  transition: transform 160ms ease;
}
.review-builder-toggle.is-on { background: var(--letter-color, var(--color-blue-500)); }
.review-builder-toggle.is-on::before { transform: translateX(14px); }

.review-builder-count { font-weight: 400; color: var(--color-ink-700); font-size: var(--fs-xs); margin-left: auto; }

/* -- Expand chevron: reveals individual questions for fine-tuning -- */
.review-builder-expand {
  flex-shrink: 0;
  border: none;
  background: none;
  padding: 4px;
  cursor: pointer;
  color: var(--color-blue-500);
  display: flex;
}
.review-builder-expand svg { width: 16px; height: 16px; transition: transform 200ms ease; }
.review-builder-expand.is-expanded svg { transform: rotate(180deg); }

.review-builder-items { display: flex; flex-direction: column; gap: 8px; padding: 0 var(--space-4) var(--space-4); }
.review-builder-item { display: flex; align-items: flex-start; gap: 10px; font-size: var(--fs-sm); color: var(--color-ink-900); cursor: pointer; font-weight: 400; }
.review-builder-item input[type="checkbox"] { margin-top: 3px; width: 16px; height: 16px; accent-color: var(--color-blue-500); flex-shrink: 0; }
.review-builder-custom { margin-top: 4px; padding-top: 10px; border-top: 1px solid var(--color-border); }
.review-builder-custom-input {
  width: 100%;
  font: inherit;
  font-size: var(--fs-sm);
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--color-slate-200);
  border-radius: var(--radius-sm);
  background: var(--color-white);
  color: var(--color-ink-900);
}
.review-builder-custom-input:focus {
  outline: none;
  border-color: var(--color-blue-500);
  box-shadow: 0 0 0 3px rgba(46,127,214,0.18);
}
@media (prefers-reduced-motion: reduce) {
  .review-builder-toggle::before,
  .review-builder-expand svg { transition: none; }
}

/* ==========================================================================
   Digital BRIDGES session planner — "My Plans" list, editor, print
   ========================================================================== */
.planner-list-items { display: flex; flex-direction: column; gap: var(--space-2); }
.planner-list-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
}
.planner-list-item-title { font-weight: 600; color: var(--color-blue-600); }
.planner-list-item-actions { display: flex; align-items: center; gap: var(--space-3); }
.planner-list-item-move {
  font: inherit;
  font-size: var(--fs-xs);
  padding: 5px 8px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-white);
  color: var(--color-ink-700);
}

/* Folders ("areas") sidebar on the "My Plans" list -- same persistent
   left-rail-with-mobile-drawer pattern as Span's workspace nav
   (.span-nav / .span-workspace), namespaced separately since it filters
   plans rather than switching views. */
.planner-nav-toggle {
  display: none;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: var(--space-3) var(--space-4);
  margin: 0 0 var(--space-5);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-ink-900);
}
.planner-nav-toggle svg { width: 20px; height: 20px; flex-shrink: 0; }

.planner-nav-scrim { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.4); z-index: 90; }

.planner-workspace {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: var(--space-7);
  align-items: start;
}

.planner-nav {
  position: sticky;
  top: var(--space-5);
  padding: var(--space-5) var(--space-4);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}

.planner-nav-list { display: flex; flex-direction: column; gap: 1px; margin-bottom: var(--space-4); }
.planner-nav-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  padding: 9px 10px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--color-ink-700);
  font-size: var(--fs-sm);
  text-align: left;
  position: relative;
  transition: background var(--transition), color var(--transition);
}
.planner-nav-item:hover { background: rgba(15, 23, 42, 0.06); color: var(--color-ink-900); }
.planner-nav-item.is-active { color: var(--color-blue-600); font-weight: 600; }
.planner-nav-item.is-active::before {
  content: '';
  position: absolute;
  left: -1px;
  top: 7px;
  bottom: 7px;
  width: 2px;
  border-radius: 2px;
  background: var(--color-blue-600);
}
.planner-nav-count { font-size: var(--fs-xs); color: var(--color-ink-700); flex-shrink: 0; }

.planner-nav-folder-actions { display: flex; gap: var(--space-3); margin: 0 0 var(--space-4) 10px; }
.planner-nav-folder-actions .link-button { font-size: var(--fs-xs); }

.planner-nav-new-folder { display: inline-block; margin-left: 10px; font-size: var(--fs-sm); }

.planner-main { min-width: 0; }

@media (max-width: 860px) {
  .planner-nav-toggle { display: inline-flex; }
  .planner-workspace { grid-template-columns: 1fr; }
  .planner-nav {
    position: fixed;
    inset: 0 25% 0 0;
    z-index: 91;
    border-radius: 0;
    padding: var(--space-5);
    overflow-y: auto;
    transform: translateX(-100%);
    transition: transform var(--transition);
    box-shadow: var(--shadow-md);
  }
  .planner-nav.is-open { transform: translateX(0); }
  .planner-nav-item { font-size: var(--fs-md); padding: var(--space-3) 12px; }
}
@media (max-width: 480px) { .planner-nav { inset: 0; } }
@media (prefers-reduced-motion: reduce) { .planner-nav { transition: none; } }

.plan-shell { max-width: 720px; margin-inline: auto; }
.plan-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.plan-toolbar-actions { display: flex; gap: var(--space-3); }

.plan-moves { display: flex; flex-direction: column; gap: var(--space-4); }
.plan-move-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-left: 4px solid var(--letter-color, var(--color-blue-500));
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
}
.plan-move-header { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-4); }
.plan-move-badge {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-family: var(--font-heading);
  font-weight: 700;
  color: #fff;
  background: var(--letter-color, var(--color-blue-500));
}
.plan-move-header h3 { margin: 0; }
.plan-move-header .text-muted { margin: 0; font-size: var(--fs-sm); }
.plan-move-ai-toggle { margin-left: auto; flex-shrink: 0; white-space: nowrap; }
.plan-move-row { display: grid; grid-template-columns: 140px 1fr; gap: var(--space-4); }

/* AI not enabled for this member's organisation — hide every AI affordance. */
.planner-ai-off .plan-ai-panel,
.planner-ai-off .plan-move-ai-toggle,
.planner-ai-off #plan-draft-ai-panel { display: none; }

.plan-ai-panel { margin-top: var(--space-4); padding-top: var(--space-4); border-top: 1px dashed var(--color-border); }
.plan-ai-intro { font-size: var(--fs-xs); margin: 0 0 var(--space-2); }
.plan-ai-panel textarea { font-family: var(--font-mono, monospace); font-size: var(--fs-xs); min-height: 110px; }
.plan-ai-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4); }
.plan-ai-status { font-size: var(--fs-xs); margin: var(--space-2) 0 0; }
.plan-ai-suggestion { margin-top: var(--space-3); padding: var(--space-3) var(--space-4); background: var(--color-surface); border-radius: var(--radius-sm); font-size: var(--fs-sm); color: var(--color-ink-900); }
.plan-ai-suggestion p { margin: 0 0 6px; }
.plan-ai-suggestion p:last-child { margin-bottom: 0; }

.ai-planning-steps { padding-left: 1.25em; margin: var(--space-4) 0; color: var(--color-ink-700); }
.ai-planning-steps li { margin-bottom: var(--space-2); }
#ai-planning-prompt { font-family: var(--font-mono, monospace); font-size: var(--fs-xs); min-height: 260px; }

/* -- Span (bridges/develop/coach/): an editorial coaching transcript, not
   a messenger UI -- turns are set apart by a role label and a thin accent
   border, never a filled chat bubble, gamification or scoring. -- */

.coach-welcome h2 { margin-bottom: 4px; }
.coach-welcome-lede { color: var(--color-ink-700); max-width: 60ch; }

.coach-recap {
  margin: var(--space-4) 0 var(--space-6);
  padding: var(--space-4) var(--space-5);
  background: var(--color-surface);
  border-radius: var(--radius-md);
  border-left: 3px solid var(--bridges-b);
}
.coach-recap-text { margin: 0 0 var(--space-3); color: var(--color-ink-900); font-size: var(--fs-sm); }
.coach-recap-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4); }

.coach-elements-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: var(--space-5) 0; }
.coach-elements-strip .tile { opacity: 0.32; filter: grayscale(35%); border: none; padding: 0; transition: opacity 240ms ease, filter 240ms ease, box-shadow 240ms ease; }
.coach-elements-strip .tile.is-lit { opacity: 1; filter: none; box-shadow: 0 0 0 3px rgba(15, 23, 42, 0.06), var(--shadow-sm); }
.coach-elements-caption { font-size: var(--fs-xs); color: var(--color-ink-700); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700; margin: 0 var(--space-2) 0 0; flex-basis: 100%; }
@media (min-width: 560px) { .coach-elements-caption { flex-basis: auto; margin-bottom: 0; } }

.coach-element-tile-wrap { position: relative; display: inline-flex; }
.coach-element-tip {
  position: absolute;
  bottom: calc(100% + 9px);
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  width: max-content;
  max-width: 220px;
  background: var(--color-ink-900);
  color: #fff;
  font-size: var(--fs-xs);
  line-height: 1.45;
  padding: 8px 10px;
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-md);
  opacity: 0;
  pointer-events: none;
  transition: opacity 160ms ease, transform 160ms ease;
  z-index: 5;
}
.coach-element-tip::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: var(--color-ink-900);
}
.coach-element-tile-wrap:hover .coach-element-tip,
.coach-element-tile-wrap:focus-within .coach-element-tip,
.coach-element-tile-wrap.is-open .coach-element-tip {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
  pointer-events: auto;
}
.coach-element-tile-wrap:first-of-type .coach-element-tip { left: 0; transform: translateY(4px); }
.coach-element-tile-wrap:first-of-type:hover .coach-element-tip,
.coach-element-tile-wrap:first-of-type:focus-within .coach-element-tip,
.coach-element-tile-wrap:first-of-type.is-open .coach-element-tip { transform: translateY(0); }
.coach-element-tile-wrap:first-of-type .coach-element-tip::after { left: 14px; transform: none; }
.coach-element-tile-wrap:last-of-type .coach-element-tip { left: auto; right: 0; transform: translateY(4px); }
.coach-element-tile-wrap:last-of-type:hover .coach-element-tip,
.coach-element-tile-wrap:last-of-type:focus-within .coach-element-tip,
.coach-element-tile-wrap:last-of-type.is-open .coach-element-tip { transform: translateY(0); }
.coach-element-tile-wrap:last-of-type .coach-element-tip::after { left: auto; right: 14px; transform: none; }

.coach-route-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-4); margin: var(--space-5) 0; }
.coach-route-card {
  text-align: left;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--accent, var(--color-blue-500));
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  transition: transform 200ms ease, box-shadow 200ms ease;
  font: inherit;
}
.coach-route-card:hover, .coach-route-card:focus-visible { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.coach-route-card { display: flex; flex-direction: column; gap: 4px; }
.coach-route-title { font-family: var(--font-heading); font-weight: 600; font-size: var(--fs-md); color: var(--color-ink-900); }
.coach-route-desc { color: var(--color-ink-700); font-size: var(--fs-sm); }
.coach-route-card:nth-child(1) { --accent: var(--cycle-design); }
.coach-route-card:nth-child(2) { --accent: var(--cycle-deliver); }
.coach-route-card:nth-child(3) { --accent: var(--bridges-e); }
.coach-route-card:nth-child(4) { --accent: var(--cycle-review); }
.coach-route-card:nth-child(5) { --accent: var(--cycle-improve); }
@media (max-width: 640px) { .coach-route-grid { grid-template-columns: 1fr; } }

.coach-examples { margin: var(--space-5) 0; }
.coach-examples .faq-item .faq-answer { display: flex; flex-direction: column; align-items: stretch; gap: 2px; padding-top: 2px; }
.coach-example-item { border-bottom: 1px dashed var(--color-border); }
.coach-examples .faq-answer .coach-example-item:last-child { border-bottom: none; }
.coach-example-btn {
  font: inherit;
  font-size: var(--fs-sm);
  text-align: left;
  color: var(--color-blue-600);
  background: none;
  border: none;
  padding: var(--space-2) 0;
  cursor: pointer;
  width: 100%;
}
.coach-example-btn:hover, .coach-example-btn:focus-visible { color: var(--color-blue-500); text-decoration: underline; }
.coach-example-btn[aria-expanded="true"] { color: var(--color-ink-900); font-weight: 600; text-decoration: none; }
.coach-example-answer { margin: 0 0 var(--space-3); font-size: var(--fs-sm); color: var(--color-ink-700); line-height: 1.6; }

.coach-mode-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin: var(--space-5) 0; }
.coach-mode-label { font-size: var(--fs-xs); color: var(--color-ink-700); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700; margin-right: 2px; flex-basis: 100%; }
@media (min-width: 560px) { .coach-mode-label { flex-basis: auto; } }
.coach-mode-chip {
  font: inherit;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-ink-700);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  padding: 6px 16px;
  cursor: pointer;
  transition: background 160ms ease, color 160ms ease, border-color 160ms ease;
}
.coach-mode-chip:hover { border-color: var(--color-blue-300); }
.coach-mode-chip[aria-pressed="true"] { background: var(--color-blue-600); border-color: var(--color-blue-600); color: #fff; }

.coach-chat-shell { border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-white); box-shadow: var(--shadow-sm); overflow: hidden; }
.coach-chat-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--color-border); background: var(--color-surface); }
.coach-chat-header p { margin: 0; font-size: var(--fs-xs); }
.coach-chat-title-row .coach-conversation-title {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-ink-900);
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  text-align: left;
}
.coach-chat-title-row .coach-conversation-title:hover,
.coach-chat-title-row .coach-conversation-title:focus-visible { text-decoration: underline; }
.coach-conversation-title-input {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-ink-900);
  border: 1px solid var(--color-blue-500);
  border-radius: var(--radius-sm);
  padding: 3px 7px;
  min-width: 240px;
  max-width: 100%;
}
.coach-conversation-title-input:focus { outline: none; box-shadow: 0 0 0 3px rgba(46,127,214,0.18); }
.coach-chat-thread { max-height: 520px; overflow-y: auto; padding: var(--space-5) var(--space-5) var(--space-3); display: flex; flex-direction: column; gap: var(--space-5); }
.coach-chat-empty { color: var(--color-ink-700); font-size: var(--fs-sm); text-align: center; padding: var(--space-6) var(--space-3); margin: 0; }

.coach-turn { padding-left: var(--space-4); border-left: 3px solid var(--color-border); }
.coach-turn.is-user { border-left-color: var(--color-blue-300); }
.coach-turn.is-assistant { border-left-color: var(--bridges-b); }
.coach-turn:not(:first-child) { padding-top: var(--space-1); }
.coach-turn-role { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; margin: 0 0 6px; }
.coach-turn.is-user .coach-turn-role { color: var(--color-blue-600); }
.coach-turn.is-assistant .coach-turn-role { color: var(--bridges-b); }
.coach-turn-text { font-size: var(--fs-md); color: var(--color-ink-900); white-space: pre-wrap; margin: 0 0 var(--space-2); line-height: 1.65; }
.coach-turn-text:last-child { margin-bottom: 0; }
.coach-turn-attachment { font-size: var(--fs-xs); color: var(--color-ink-700); margin: 0 0 var(--space-2); }

.coach-callout {
  margin: var(--space-3) 0;
  padding: var(--space-3) var(--space-4);
  background: var(--color-surface);
  border-radius: var(--radius-sm);
  border-left: 2px solid var(--cycle-improve);
}
.coach-callout-label { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-ink-700); margin: 0 0 2px; }
.coach-callout-text { font-size: var(--fs-sm); color: var(--color-ink-900); font-style: italic; margin: 0; line-height: 1.5; }

.coach-sees-card, .coach-action-card {
  margin: var(--space-3) 0;
  padding: var(--space-4) var(--space-5);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
}
.coach-sees-card h4, .coach-action-card h4 {
  font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: 0.06em;
  color: var(--bridges-b); margin: 0 0 var(--space-3);
}
.coach-sees-row, .coach-action-row { display: flex; gap: 8px; font-size: var(--fs-sm); margin: 0 0 var(--space-2); line-height: 1.5; }
.coach-sees-row:last-child, .coach-action-row:last-child { margin-bottom: 0; }
.coach-sees-row-label, .coach-action-row-label { flex-shrink: 0; font-weight: 700; color: var(--color-ink-900); }
.coach-sees-row-value, .coach-action-row-value { color: var(--color-ink-700); }
.coach-sees-action { margin-top: var(--space-3); }

.coach-attach-row { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-4); border-top: 1px solid var(--color-border); background: var(--color-surface); }
.coach-attach-row label { font-size: var(--fs-xs); color: var(--color-ink-700); flex-shrink: 0; }
.coach-attach-row select { font: inherit; font-size: var(--fs-xs); padding: 4px 6px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-white); color: var(--color-ink-900); max-width: 100%; }

.coach-link-row label, .coach-folder-link-row label { font-size: var(--fs-xs); color: var(--color-ink-700); flex-shrink: 0; }
.coach-link-row select, .coach-folder-link-row select { font: inherit; font-size: var(--fs-xs); padding: 4px 6px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-white); color: var(--color-ink-900); max-width: 100%; }
.coach-folder-link-row { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); margin: 0 0 var(--space-4) 10px; }
.coach-link-field { display: flex; align-items: center; gap: var(--space-2); }
.coach-chat-input-row { display: flex; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-top: 1px solid var(--color-border); align-items: flex-end; }
.coach-chat-input-row textarea { flex: 1; resize: vertical; min-height: 44px; max-height: 160px; padding: 10px var(--space-3); border: 1px solid var(--color-border); border-radius: var(--radius-sm); font: inherit; font-size: var(--fs-sm); }
.coach-chat-input-row textarea:focus { outline: none; border-color: var(--color-blue-500); box-shadow: 0 0 0 3px rgba(46,127,214,0.18); }
.coach-chat-input-row button:disabled { opacity: 0.6; cursor: not-allowed; }
.coach-chat-footer { display: flex; justify-content: flex-end; padding: 0 var(--space-4) var(--space-4); }
.coach-chat-footer button:disabled { opacity: 0.5; cursor: not-allowed; }
@media (max-width: 560px) { .coach-chat-thread { max-height: 400px; } }

/* ==========================================================================
   Span workspace (bridges/develop/coach/) — left-hand nav + main area
   ========================================================================== */
.span-topbar { border-bottom: 1px solid var(--color-border); background: var(--color-surface); padding-block: var(--space-3); }
.span-topbar .breadcrumb { margin: 0; }

.span-nav-toggle {
  display: none;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: var(--space-3) var(--space-4);
  margin: var(--space-4) auto 0;
  max-width: var(--container-w);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-ink-900);
}
.span-nav-toggle svg { width: 20px; height: 20px; flex-shrink: 0; }

.span-nav-scrim { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.4); z-index: 90; }

.span-workspace {
  display: grid;
  grid-template-columns: 250px 1fr;
  gap: var(--space-8);
  max-width: var(--container-w);
  margin-inline: auto;
  padding: var(--space-6) var(--space-5) var(--space-9);
  align-items: start;
}

.span-nav {
  position: sticky;
  top: var(--space-5);
  padding: var(--space-6) var(--space-4);
  background: var(--color-surface);
  border-right: 1px solid var(--color-border);
}
.span-nav-brand { margin: 0 0 var(--space-7) 10px; }
.span-nav-brand img { display: block; width: 100%; max-width: 190px; height: auto; }

.span-nav-list { display: flex; flex-direction: column; gap: 1px; }
.span-nav-item {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 11px 10px;
  border: none;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--color-ink-700);
  font-size: var(--fs-sm);
  font-weight: 400;
  text-align: left;
  position: relative;
  transition: background var(--transition), color var(--transition);
}
.span-nav-item svg { width: 18px; height: 18px; flex-shrink: 0; opacity: 0.7; transition: opacity var(--transition); }
.span-nav-item:hover { background: rgba(15, 23, 42, 0.045); color: var(--color-ink-900); }
.span-nav-item:hover svg { opacity: 1; }

/* Quiet navigation, not buttons: the active item is marked with a thin
   accent bar and a colour change, never a filled pill. */
.span-nav-item.is-active { color: var(--bridges-b); font-weight: 600; }
.span-nav-item.is-active svg { opacity: 1; }
.span-nav-item.is-active::before {
  content: '';
  position: absolute;
  left: -1px;
  top: 9px;
  bottom: 9px;
  width: 2px;
  border-radius: 2px;
  background: var(--bridges-b);
}

/* "New conversation" is the one primary action, so it stays quietly
   distinct (tinted, in the site's action blue) whether or not it's the
   current view -- everything else below it reads as plain navigation. */
.span-nav-item[data-view="coach"] {
  color: var(--color-blue-600);
  font-weight: 600;
  background: rgba(46, 127, 214, 0.07);
  margin-bottom: var(--space-5);
}
.span-nav-item[data-view="coach"] svg { opacity: 1; }
.span-nav-item[data-view="coach"]:hover { background: rgba(46, 127, 214, 0.12); }
.span-nav-item[data-view="coach"].is-active::before { display: none; }

.span-main { min-width: 0; }
.span-view h2 { margin-bottom: 4px; }

.span-list { display: flex; flex-direction: column; gap: var(--space-3); }
.span-list-item {
  padding: var(--space-4);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
}
.span-list-item-date { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--color-ink-700); margin: 0 0 4px; }
.span-list-item-title { font-family: var(--font-heading); font-weight: 600; font-size: var(--fs-md); color: var(--color-ink-900); margin: 0 0 4px; }
.span-list-item-desc { font-size: var(--fs-sm); color: var(--color-ink-700); margin: 0 0 var(--space-2); }
.span-list-item-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-2); }
.span-list-item-move {
  font: inherit;
  font-size: var(--fs-xs);
  padding: 5px 8px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-white);
  color: var(--color-ink-700);
}

@media (max-width: 900px) {
  .span-nav-toggle { display: inline-flex; }

  .span-workspace { grid-template-columns: 1fr; padding-top: var(--space-4); }

  .span-nav {
    position: fixed;
    inset: 0 25% 0 0;
    z-index: 91;
    border-right: none;
    padding: var(--space-5);
    overflow-y: auto;
    transform: translateX(-100%);
    transition: transform var(--transition);
    box-shadow: var(--shadow-md);
  }
  .span-nav.is-open { transform: translateX(0); }
  .span-nav-item { font-size: var(--fs-md); padding: var(--space-3) 12px; }
  .span-nav-item[data-view="coach"] { margin-bottom: var(--space-4); }
}
@media (max-width: 480px) { .span-nav { inset: 0; } }

.plan-theme-card .form-field:last-child { margin-bottom: 0; }
.plan-shell .form-field textarea { min-height: 64px; }

/* -- Header card: title/module/level/date/aims, styled after the PDF's
   own header band via a gradient top border rather than a second
   navy block, since the page already has its own navy hero above it -- */
.plan-header-card {
  border-top: 6px solid;
  border-image: linear-gradient(to right, var(--bridges-b), var(--bridges-r), var(--bridges-i), var(--bridges-d), var(--bridges-g), var(--bridges-e), var(--bridges-s)) 1;
}
.plan-print-title { font-family: var(--font-heading); font-size: var(--fs-lg); font-weight: 700; color: var(--color-navy-900); margin: var(--space-2) 0 var(--space-3); }
.plan-print-intro { font-size: var(--fs-sm); color: var(--color-ink-700); margin: 0 0 var(--space-3); }
.plan-header-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-4); }

/* -- Static reference copy (the PDF's "What it means" / "May include"
   columns) shown alongside each input, not vanishing like a placeholder -- */
.plan-field-meaning { font-size: var(--fs-xs); color: var(--color-ink-700); font-style: italic; margin: -4px 0 8px; }

/* -- Post-delivery review checklist -- */
.plan-checklist { display: flex; flex-direction: column; gap: 10px; }
.plan-checklist-item { display: flex; align-items: flex-start; gap: 10px; font-size: var(--fs-sm); color: var(--color-ink-900); cursor: pointer; }
.plan-checklist-item input[type="checkbox"] { margin-top: 3px; width: 16px; height: 16px; accent-color: var(--color-blue-500); flex-shrink: 0; }

/* -- Print style picker -- */
.plan-print-options { margin-bottom: var(--space-6); }
.plan-print-buttons { display: flex; flex-wrap: wrap; gap: var(--space-3); }

/* -- Bring-your-own slide template: read a .pptx/.potx theme (and an
   optional logo) in the browser and use it for the PowerPoint export.
   Sits inside .plan-print-options, so it inherits no-print. -- */
.slide-style { margin-top: var(--space-4); padding-top: var(--space-4); border-top: 1px solid var(--color-border); }
.slide-style-label { display: block; font-size: var(--fs-sm); font-weight: 600; color: var(--color-ink-900); margin: 0 0 2px; }
.slide-style-current { font-size: var(--fs-sm); color: var(--color-ink-700); margin: 0 0 var(--space-2); }
.slide-style-current b { color: var(--color-ink-900); }
.slide-style .btn { margin-right: var(--space-2); }
.slide-style-swatches { display: flex; gap: 4px; margin-top: var(--space-2); }
.slide-style-swatches i { width: 30px; height: 20px; border-radius: 3px; border: 1px solid var(--color-border); }
.slide-style-logo-previews { display: flex; gap: var(--space-2); margin-top: var(--space-2); }
.slide-style-logo-previews span {
  display: flex; align-items: center; justify-content: center;
  width: 88px; height: 52px; border-radius: var(--radius-sm);
  border: 1px solid var(--color-border);
}
.slide-style-logo-previews .on-light { background: #ffffff; }
.slide-style-logo-previews .on-dark { background: var(--color-navy-900); }
.slide-style-logo-previews img { max-width: 78px; max-height: 42px; display: block; }

/* -- Per-section "include in print" toggle (Cross-cutting themes,
   Contextual considerations) -- fields stay editable either way; this
   only controls whether the section appears in printed/saved output. -- */
.plan-section-toggle { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); font-weight: 600; color: var(--color-ink-900); cursor: pointer; margin: 0; }
.plan-section-toggle input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--color-blue-500); }

/* -- Shared chrome for the two literal-replica print views (Planner PDF
   and Canvas) -- built fresh from the form's values right before
   printing, so this only ever needs to look right as a document, not as
   an editable page. -- */
.print-doc { max-width: none; }
.print-doc-header {
  position: relative;
  background: var(--color-navy-900);
  color: #fff;
  padding: var(--space-5) var(--space-6) var(--space-4);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  margin-bottom: var(--space-5);
}
.print-doc-stripe {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 6px;
  background: linear-gradient(to right, var(--bridges-b), var(--bridges-r), var(--bridges-i), var(--bridges-d), var(--bridges-g), var(--bridges-e), var(--bridges-s));
}
.print-doc-title { font-family: var(--font-heading); font-size: var(--fs-xl); font-weight: 700; margin: var(--space-2) 0 var(--space-3); }
.print-doc-intro { font-size: var(--fs-sm); color: rgba(255,255,255,0.82); margin: 0 0 6px; }
.print-doc-heading { font-family: var(--font-heading); font-size: var(--fs-md); color: var(--color-navy-900); margin: var(--space-6) 0 var(--space-3); border-bottom: 2px solid var(--color-navy-900); padding-bottom: 6px; }
.print-doc-label { font-size: var(--fs-sm); font-weight: 700; color: var(--color-ink-900); margin: 0 0 4px; }
.print-doc-block { font-size: var(--fs-sm); color: var(--color-ink-900); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-sm); padding: var(--space-3); margin: 0 0 var(--space-4); min-height: 1.4em; white-space: pre-wrap; }

.print-doc-table { width: 100%; border-collapse: collapse; margin-bottom: var(--space-4); font-size: var(--fs-sm); }
.print-doc-table th, .print-doc-table td { border: 1px solid var(--color-border); padding: 8px 10px; text-align: left; vertical-align: top; }
.print-doc-table th { background: var(--color-navy-900); color: #fff; font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: 0.03em; }
.print-doc-info-table th { background: var(--color-surface); color: var(--color-ink-700); }
.print-doc-move-cell { color: #fff; font-weight: 700; white-space: nowrap; }
.print-doc-meaning { font-style: italic; color: var(--color-ink-700); font-size: var(--fs-xs); }

.print-doc-checklist { list-style: none; margin: 0 0 var(--space-4); padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: var(--fs-sm); }

/* -- Canvas: seven columns side by side, matching the source canvas's
   single-page grid rather than the planner's stacked table rows -- */
.print-doc-canvas-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: var(--space-2); margin-bottom: var(--space-5); }
.print-doc-canvas-col { border: 1px solid var(--color-border); border-radius: var(--radius-sm); overflow: hidden; break-inside: avoid; }
.print-doc-canvas-col-bar { height: 6px; background: var(--letter-color, var(--color-blue-500)); }
.print-doc-canvas-badge { width: 28px; height: 28px; margin: 10px auto 4px; border-radius: 50%; background: var(--letter-color, var(--color-blue-500)); color: #fff; font-family: var(--font-heading); font-weight: 700; font-size: var(--fs-sm); display: grid; place-items: center; }
.print-doc-canvas-label { text-align: center; font-weight: 700; font-size: var(--fs-sm); margin: 0 0 2px; }
.print-doc-canvas-prompt { text-align: center; font-style: italic; font-size: var(--fs-xs); color: var(--color-ink-700); margin: 0 0 8px; padding: 0 6px; }
.print-doc-canvas-text { font-size: var(--fs-xs); color: var(--color-ink-900); min-height: 2.5em; padding: 0 8px; margin: 0 0 8px; white-space: pre-wrap; }
.print-doc-canvas-meta { font-size: 10px; color: var(--color-ink-700); border-top: 1px solid var(--color-border); padding: 6px 8px; margin: 0; }
.print-doc-canvas-footer { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-4); }
.print-doc-canvas-page2 { margin-top: var(--space-6); padding-top: var(--space-6); border-top: 3px solid var(--color-border); break-before: page; }

@media (max-width: 900px) {
  .print-doc-canvas-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 640px) {
  .plan-move-row { grid-template-columns: 1fr; }
  .plan-header-row { grid-template-columns: 1fr; }
  .print-doc-canvas-grid { grid-template-columns: repeat(2, 1fr); }
  .print-doc-canvas-footer { grid-template-columns: 1fr; }
}

@media print {
  .no-print { display: none !important; }
  .plan-section-excluded { display: none !important; }
  body { background: #fff; }
  .plan-shell { max-width: none; }
  .contact-form-card, .plan-move-card {
    box-shadow: none;
    border: 1px solid #ccc;
    break-inside: avoid;
  }
  .plan-shell .form-field textarea { min-height: 0; }
  .plan-move-card { border-left-width: 6px; }
  .plan-move-badge { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .plan-header-card { border-image: linear-gradient(to right, var(--bridges-b), var(--bridges-r), var(--bridges-i), var(--bridges-d), var(--bridges-g), var(--bridges-e), var(--bridges-s)) 1; print-color-adjust: exact; -webkit-print-color-adjust: exact; }

  .print-doc,
  .print-doc-header,
  .print-doc-stripe,
  .print-doc-table th,
  .print-doc-move-cell,
  .print-doc-canvas-col-bar,
  .print-doc-canvas-badge {
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }
  .print-doc-header { border-radius: 0; }
  .print-doc-table { break-inside: auto; }
  .print-doc-table tr, .print-doc-canvas-col { break-inside: avoid; }
}

/* -- Live results -- */
.results-overall {
  text-align: center;
  padding: var(--space-5);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  margin-bottom: var(--space-5);
}
.results-overall .results-overall-score {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-3xl);
  color: var(--color-blue-600);
  line-height: 1;
}
.results-overall .results-overall-caption { font-size: var(--fs-sm); color: var(--color-ink-700); margin-top: var(--space-2); }

.results-legend { display: flex; flex-wrap: wrap; gap: var(--space-4); margin-bottom: var(--space-4); }
.results-legend-item { display: flex; align-items: center; gap: 6px; font-size: var(--fs-xs); color: var(--color-ink-700); }

.results-status-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--status-none);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-none) 18%, transparent);
}
.results-status-dot.is-good { background: var(--status-good); box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-good) 18%, transparent); }
.results-status-dot.is-warning { background: var(--status-warning); box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-warning) 18%, transparent); }
.results-status-dot.is-alert { background: var(--status-alert); box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-alert) 18%, transparent); }

.results-bar-grid { display: flex; flex-direction: column; gap: var(--space-1); margin-bottom: var(--space-6); }
.results-bar { border-radius: var(--radius-sm); }
.results-bar-summary {
  display: grid;
  grid-template-columns: 120px 1fr 44px 16px;
  align-items: center;
  gap: var(--space-3);
  padding: 6px 0;
  cursor: pointer;
  list-style: none;
}
.results-bar-summary::-webkit-details-marker { display: none; }
.results-bar-summary::after {
  content: "";
  justify-self: end;
  width: 8px;
  height: 8px;
  border-right: 2px solid var(--color-blue-500);
  border-bottom: 2px solid var(--color-blue-500);
  transform: rotate(45deg);
  transition: transform 200ms ease;
}
.results-bar[open] .results-bar-summary::after { transform: rotate(-135deg); }
.results-bar-label { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); font-weight: 600; color: var(--color-ink-900); }
.results-bar-track {
  height: 10px;
  border-radius: var(--radius-full);
  background: var(--color-slate-200);
  overflow: hidden;
}
.results-bar-fill {
  display: block;
  height: 100%;
  width: 0%;
  background: var(--bar-color, var(--color-blue-500));
  border-radius: var(--radius-full);
  transition: width 500ms ease;
}
.results-bar-score { font-size: var(--fs-sm); font-weight: 700; color: var(--color-ink-900); text-align: right; }

.results-bar-items {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 2px 0 var(--space-3) calc(120px + var(--space-3));
}
.results-bar-item { display: flex; justify-content: space-between; gap: var(--space-3); font-size: var(--fs-xs); color: var(--color-ink-700); }
.results-bar-item span:last-child { font-weight: 600; color: var(--color-ink-900); flex-shrink: 0; }

/* -- Custom per-element follow-up question (Develop builder, 3c) -- */
.results-bar-custom { margin-top: var(--space-2); padding-top: var(--space-2); border-top: 1px solid var(--color-border); }
.results-bar-custom-question { font-size: var(--fs-xs); font-weight: 600; color: var(--color-ink-900); margin: 0 0 6px; }
.results-bar-custom-answers { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; list-style: none; }
.results-bar-custom-answers li {
  font-size: var(--fs-xs);
  color: var(--color-ink-700);
  padding: 6px var(--space-3);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
}
@media (prefers-reduced-motion: reduce) {
  .results-bar-summary::after { transition: none; }
}

/* Flat variant: no expand chevron, no drill-down — used where there's
   deliberately no per-item detail to show (the Embed org dashboard only
   ever has element-level, anonymised averages). */
.results-bar-summary.is-flat { grid-template-columns: 120px 1fr 44px; cursor: default; }
.results-bar-summary.is-flat::after { content: none; }

/* Embed org dashboard radar chart (js/bridges-review.js renderOrgRadar) */
.org-radar-wrap { max-width: 360px; margin: var(--space-5) auto; transition: transform 200ms ease; }
.org-radar-wrap svg { width: 100%; height: auto; overflow: visible; }
.org-radar-wrap:hover { transform: scale(1.04); }
.org-radar-label { font-size: 11.5px; font-weight: 700; fill: var(--color-ink-700); }
.org-radar-score { font-size: 12px; font-weight: 800; fill: var(--color-blue-600); }
.org-radar-score-num { font-size: 14px; font-weight: 800; fill: var(--color-blue-600); }
.org-radar-score-unit { font-size: 9px; font-weight: 600; fill: var(--color-ink-700); }
.org-radar-label-muted { fill: var(--color-ink-700); font-style: italic; font-weight: 600; }
@media (prefers-reduced-motion: reduce) {
  .org-radar-wrap { transition: none; }
  .org-radar-wrap:hover { transform: none; }
}

/* Collapsible "Team members (N)" list — same chevron treatment as
   .results-bar-summary, so an org with a large staff list doesn't force a
   long roster onto the page by default. */
.org-member-details summary {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  cursor: pointer;
  font-weight: 600;
  color: var(--color-ink-900);
  list-style: none;
}
.org-member-details summary::-webkit-details-marker { display: none; }
.org-member-details summary::after {
  content: "";
  width: 8px;
  height: 8px;
  border-right: 2px solid var(--color-blue-500);
  border-bottom: 2px solid var(--color-blue-500);
  transform: rotate(45deg);
  transition: transform 200ms ease;
}
.org-member-details[open] summary::after { transform: rotate(-135deg); }
.org-member-details ul { margin-top: var(--space-4); }
@media (prefers-reduced-motion: reduce) {
  .org-member-details summary::after { transition: none; }
}

.results-trend { margin-top: var(--space-6); }
.results-trend h3 { margin-bottom: 4px; }
.results-trend-note { font-size: var(--fs-xs); color: var(--color-ink-700); margin-bottom: var(--space-4); }
.results-trend-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: var(--space-3);
}
.results-trend-tile {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-3);
}
.results-trend-tile-header { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); margin-bottom: var(--space-2); }
.results-trend-label { display: flex; align-items: center; gap: 6px; font-size: var(--fs-xs); font-weight: 600; color: var(--color-ink-900); }
.results-trend-label::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--trend-color, var(--color-blue-500));
  flex-shrink: 0;
}
.results-trend-arrow { width: 16px; height: 16px; flex-shrink: 0; }
.results-trend-arrow.is-up { color: var(--status-good); }
.results-trend-arrow.is-down { color: var(--status-alert); }
.results-trend-arrow.is-flat { color: var(--color-ink-700); }
.results-trend-spark { display: block; width: 100%; height: 28px; }

.results-comments { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5); }
.results-comments ul { display: flex; flex-direction: column; gap: var(--space-2); margin: 0; padding: 0 var(--space-4) var(--space-4); }
.results-comments li {
  font-size: var(--fs-sm);
  padding: var(--space-2) var(--space-3);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
}

.session-row {
  padding: var(--space-3);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  margin-bottom: var(--space-2);
}
.session-row-info { font-size: var(--fs-sm); color: var(--color-ink-900); margin-bottom: 6px; }
.session-row-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); font-size: var(--fs-xs); }
.session-row-qr {
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
  text-align: center;
}
.session-row-qr svg { width: 100%; max-width: 200px; margin: 0 auto var(--space-2); border-radius: var(--radius-sm); }
.session-row-qr .review-link-output { font-size: var(--fs-xs); margin-bottom: 0; }

.results-comments-panel {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.results-comments-panel summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: var(--fs-md);
  color: var(--color-ink-900);
  background: var(--color-surface);
  transition: color 180ms ease;
}
.results-comments-panel summary::-webkit-details-marker { display: none; }
.results-comments-panel summary:hover { color: var(--color-blue-600); }
.results-comments-panel .results-comments-count { font-weight: 400; font-size: var(--fs-sm); color: var(--color-ink-700); margin-right: auto; padding-left: var(--space-2); }
.results-comments-panel summary::after {
  content: "";
  flex-shrink: 0;
  width: 8px;
  height: 8px;
  border-right: 2px solid var(--color-blue-500);
  border-bottom: 2px solid var(--color-blue-500);
  transform: rotate(45deg);
  transition: transform 200ms ease;
}
.results-comments-panel[open] summary::after { transform: rotate(-135deg); }
@media (prefers-reduced-motion: reduce) {
  .results-comments-panel summary::after { transition: none; }
}

@media (max-width: 640px) {
  .results-bar-summary { grid-template-columns: 84px 1fr 36px 14px; }
  .results-bar-items { padding-left: calc(84px + var(--space-3)); }
  .results-comments { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Legal content (Privacy Policy, Terms & Conditions)
   ========================================================================== */
.legal-content { max-width: 760px; }
.legal-content .text-muted { margin-bottom: var(--space-6); }
.legal-content h2 { margin-top: var(--space-7); font-size: var(--fs-xl); }
.legal-content h2:first-of-type { margin-top: 0; }
.legal-content h3 { margin-top: var(--space-5); font-size: var(--fs-md); }
.legal-content p, .legal-content ul { color: var(--color-ink-700); }
.legal-content ul { list-style: disc; padding-left: 1.25em; margin: 0 0 var(--space-3); }
.legal-content li { margin-bottom: var(--space-1); }
.legal-content a { color: var(--color-blue-600); text-decoration: underline; text-underline-offset: 2px; }
.legal-content a:hover { color: var(--color-blue-500); }

/* ==========================================================================
   BRIDGES tier pages — shared premium layer (Explore / Develop / Embed)
   --------------------------------------------------------------------------
   One design language across the three tiers: a fine seven-segment BRIDGES
   seam, restrained letter accents, editorial spacing, and a quiet motion
   system that piggybacks on the existing .reveal / .is-visible observer in
   main.js. No new libraries. Everything degrades to visible + static with
   no JS or with prefers-reduced-motion.
   ========================================================================== */

/* ---- Shared hero architecture ----------------------------------------------
   Reuses .page-hero.section-navy.bridges-hero (the entrance cascade is
   already defined further up). Adds the short proposition + a supporting
   meta line, and a per-tier accent that shifts Explore -> Develop -> Embed
   without leaving the BRIDGES palette. */
.tier-hero { --tier-accent: var(--color-blue-300); }
.tier-hero[data-tier="develop"] { --tier-accent: var(--cycle-deliver); }
.tier-hero[data-tier="embed"]   { --tier-accent: var(--cycle-review); }

.tier-hero .hero-grid { align-items: center; }
.tier-hero .breadcrumb { margin-bottom: var(--space-3); }
.tier-hero .hero-copy .eyebrow { color: var(--tier-accent); }
.tier-hero h1 { max-width: 22ch; margin-bottom: var(--space-3); }
.tier-hero-prop {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: var(--fs-lg);
  line-height: 1.3;
  color: #fff;
  max-width: 26ch;
  margin: 0 0 var(--space-4);
  text-wrap: balance;
}
.tier-hero-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-3);
  font-size: var(--fs-sm);
  color: rgba(255,255,255,0.82);
  margin: 0 0 var(--space-5);
}
.tier-hero-meta .tier-meta-key { font-weight: 700; color: #fff; }
.tier-hero-meta .tier-meta-sep {
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--tier-accent); flex-shrink: 0;
}
/* join the .bridges-hero entrance cascade (heroEnter is defined above) */
.bridges-hero .tier-hero-prop {
  animation: heroEnter 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 240ms;
}
.bridges-hero .tier-hero-meta {
  animation: heroEnter 700ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 320ms;
}
.bridges-hero.tier-hero .hero-ctas { animation-delay: 420ms; }
@media (prefers-reduced-motion: reduce) {
  .bridges-hero .tier-hero-prop,
  .bridges-hero .tier-hero-meta { animation: none !important; opacity: 1 !important; transform: none !important; }
}

/* Hero signature: a lighter, non-interactive relative of .bridges-lockup.
   Wordmark + colour bar + seven tiles + caption; the per-tier caption is
   the only copy that changes. */
.tier-signature {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-6) var(--space-5);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(120% 100% at 100% 100%, rgba(125,189,242,0.12) 0%, transparent 58%),
    linear-gradient(160deg, var(--color-navy-800), var(--color-navy-950));
  border: 1px solid rgba(255,255,255,0.12);
  box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,0.06);
  position: relative;
  overflow: hidden;
}
.tier-signature::after {
  content: "";
  position: absolute;
  width: 320px; height: 320px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.07);
  right: -130px; bottom: -150px;
  pointer-events: none;
}
.tier-hero[data-tier="embed"] .tier-signature::before {
  content: "";
  position: absolute;
  width: 210px; height: 210px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.06);
  right: -70px; bottom: -90px;
  pointer-events: none;
}
.tier-signature .ts-wordmark {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: clamp(2rem, 4.5vw, 2.85rem);
  letter-spacing: 0.05em;
  color: #fff;
  margin: 0;
}
.tier-signature .bridges-bar { max-width: 100%; }
.tier-signature .tile-strip { gap: 6px; flex-wrap: nowrap; width: 100%; }
.tier-signature .tile-strip .tile-lg {
  flex: 1 1 0;
  min-width: 0;
  width: auto;
  height: auto;
  aspect-ratio: 1;
  font-size: clamp(0.9rem, 3.4vw, 1.3rem);
  border-radius: 20%;
}
.tier-signature .ts-caption {
  font-size: var(--fs-sm);
  color: rgba(255,255,255,0.66);
  margin: 0;
  letter-spacing: 0.01em;
}
.bridges-hero .tier-signature { animation: heroEnter 700ms cubic-bezier(0.16, 1, 0.3, 1) both; animation-delay: 480ms; }
.bridges-hero .tier-signature .bridges-bar {
  transform-origin: left;
  animation: bridgesBarWipe 600ms cubic-bezier(0.16, 1, 0.3, 1) both;
  animation-delay: 700ms;
}
.bridges-hero .tier-signature .tile-strip .tile {
  animation: tilePopIn 640ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.bridges-hero .tier-signature .tile-strip .tile:nth-child(1) { animation-delay: 820ms; }
.bridges-hero .tier-signature .tile-strip .tile:nth-child(2) { animation-delay: 960ms; }
.bridges-hero .tier-signature .tile-strip .tile:nth-child(3) { animation-delay: 1100ms; }
.bridges-hero .tier-signature .tile-strip .tile:nth-child(4) { animation-delay: 1240ms; }
.bridges-hero .tier-signature .tile-strip .tile:nth-child(5) { animation-delay: 1380ms; }
.bridges-hero .tier-signature .tile-strip .tile:nth-child(6) { animation-delay: 1520ms; }
.bridges-hero .tier-signature .tile-strip .tile:nth-child(7) { animation-delay: 1660ms; }
@media (prefers-reduced-motion: reduce) {
  .bridges-hero .tier-signature,
  .bridges-hero .tier-signature .bridges-bar,
  .bridges-hero .tier-signature .tile-strip .tile {
    animation: none !important; opacity: 1 !important; transform: none !important;
  }
}
@media (max-width: 1080px) {
  .tier-hero .hero-visual { max-width: 460px; margin-inline: auto; width: 100%; }
}
@media (max-width: 640px) {
  .tier-signature { padding: var(--space-5) var(--space-4); gap: var(--space-3); }
  .tier-signature .ts-wordmark { font-size: 1.85rem; }
  .tier-hero-meta { gap: var(--space-1) var(--space-2); }
}

/* ---- Recurring signature: a fine seven-segment BRIDGES seam --------------
   Drop <div class="bridges-seam reveal"> between sections. Each segment
   wipes in once when scrolled into view; static + full width otherwise. */
.bridges-seam {
  display: flex;
  gap: 3px;
  width: 100%;
  max-width: 260px;
  height: 3px;
}
.bridges-seam.center { margin-inline: auto; }
.bridges-seam span { flex: 1; border-radius: 1px; }
.bridges-seam span:nth-child(1) { background: var(--bridges-b); }
.bridges-seam span:nth-child(2) { background: var(--bridges-r); }
.bridges-seam span:nth-child(3) { background: var(--bridges-i); }
.bridges-seam span:nth-child(4) { background: var(--bridges-d); }
.bridges-seam span:nth-child(5) { background: var(--bridges-g); }
.bridges-seam span:nth-child(6) { background: var(--bridges-e); }
.bridges-seam span:nth-child(7) { background: var(--bridges-s); }
html.js-reveal .bridges-seam.reveal span {
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 460ms cubic-bezier(0.16, 1, 0.3, 1);
}
html.js-reveal .bridges-seam.reveal.is-visible span { transform: scaleX(1); }
html.js-reveal .bridges-seam.reveal.is-visible span:nth-child(2) { transition-delay: 55ms; }
html.js-reveal .bridges-seam.reveal.is-visible span:nth-child(3) { transition-delay: 110ms; }
html.js-reveal .bridges-seam.reveal.is-visible span:nth-child(4) { transition-delay: 165ms; }
html.js-reveal .bridges-seam.reveal.is-visible span:nth-child(5) { transition-delay: 220ms; }
html.js-reveal .bridges-seam.reveal.is-visible span:nth-child(6) { transition-delay: 275ms; }
html.js-reveal .bridges-seam.reveal.is-visible span:nth-child(7) { transition-delay: 330ms; }

/* ---- Editorial section head variant (open, no card) --------------------- */
.tier-lead { max-width: 46rem; }
.tier-lead p { font-size: var(--fs-md); color: var(--color-ink-700); }
.tier-lead p:last-child { margin-bottom: 0; }
.section-navy .tier-lead p { color: rgba(255,255,255,0.8); }

/* ---- Reassurance line: clean, immediate, not buried in body ------------- */
.tier-reassure {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--color-white);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-ink-900);
}
.tier-reassure svg { width: 18px; height: 18px; color: var(--cycle-improve); flex-shrink: 0; }
.tier-reassure .tier-reassure-sub { font-weight: 400; color: var(--color-ink-700); }
.section-navy .tier-reassure {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.16);
  color: #fff;
}
.section-navy .tier-reassure .tier-reassure-sub { color: rgba(255,255,255,0.75); }

/* ---- Explore: starter resources ---------------------------------------- */
/* Six starter resources as an editorial grid: a large numeral and a colour
   rule instead of a boxed icon, so it reads as a considered set rather than
   a SaaS feature wall. */
.resource-set {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-6) var(--space-5);
}
@media (max-width: 860px) { .resource-set { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .resource-set { grid-template-columns: 1fr; } }
.resource-item {
  --ri-accent: var(--color-blue-500);
  position: relative;
  padding: var(--space-4) 0 0;
  border-top: 2px solid var(--ri-accent);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.resource-item.accent-b { --ri-accent: var(--bridges-b); }
.resource-item.accent-r { --ri-accent: var(--bridges-r); }
.resource-item.accent-i { --ri-accent: var(--bridges-i); }
.resource-item.accent-d { --ri-accent: var(--bridges-d); }
.resource-item.accent-g { --ri-accent: var(--bridges-g); }
.resource-item.accent-e { --ri-accent: var(--bridges-e); }
.resource-item.accent-s { --ri-accent: var(--bridges-s); }
.resource-item-index {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-lg);
  line-height: 1;
  color: var(--ri-accent);
  letter-spacing: 0.02em;
}
.resource-item-kicker {
  font-size: var(--fs-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--color-ink-700);
  margin: 0;
}
.resource-item h3 { font-size: var(--fs-md); margin: 0; }
.resource-item p { font-size: var(--fs-sm); color: var(--color-ink-700); margin: 0; }
/* Card 06 is the one interactive tool — same card, one quiet marker: a small
   QR glyph pinned to the top-right so it still reads as "scan to use". */
.resource-item.is-tool .ri-tool-mark {
  position: absolute;
  top: var(--space-4);
  right: 0;
  width: 22px;
  height: 22px;
  color: var(--ri-accent);
  opacity: 0.5;
}
.resource-item.is-tool h3 { padding-right: 30px; }
/* CTA inside an editorial resource item (the post-signup resources page —
   the "Coming soon" span, and the download link the inline script swaps in
   with className "resource-cta"). Kept as a text link, not a button. */
.resource-item .resource-cta {
  margin-top: auto;
  padding-top: var(--space-3);
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--ri-accent);
}
.resource-item .resource-cta svg { width: 16px; height: 16px; transition: transform var(--transition); }
.resource-item .resource-cta[aria-disabled="true"] { color: var(--color-ink-700); cursor: default; }
.resource-item a.resource-cta:hover { text-decoration: underline; text-underline-offset: 3px; }
.resource-item a.resource-cta:hover svg { transform: translateX(4px); }

/* ---- Member home: a card-based workspace hub -------------------------- */
/* The public pages are editorial; this is a signed-in workspace. Each card
   is a real destination the member opens and uses, so cards are right here.
   Compact hero, compact status, then a scannable grid. */
.member-hero { padding-block: var(--space-6) var(--space-5); }
.member-hero h1 { margin-bottom: var(--space-2); }
.member-hero .lede { max-width: 44ch; }
.member-hub { padding-top: var(--space-6); }

.member-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
  margin-bottom: var(--space-6);
}
.member-access {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: 0;
}
.member-access-label {
  font-size: var(--fs-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-ink-700);
}
.tier-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: var(--fs-xs);
  font-weight: 700;
  padding: 4px 12px;
  border-radius: var(--radius-full);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-ink-900);
}
.tier-pill::before {
  content: "";
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--tp-accent, var(--color-blue-500));
  flex-shrink: 0;
}
.tier-pill-explore { --tp-accent: var(--bridges-i); }
.tier-pill-develop { --tp-accent: var(--cycle-deliver); }
.tier-pill-embed { --tp-accent: var(--cycle-review); }
.member-signin { font-size: var(--fs-xs); color: var(--color-ink-700); margin: 0; }

/* Sections. Develop tools lead and get room; the Explore row demotes to a
   quiet "also included" strip once the member has Develop; Organisation
   shows only for org admins. */
.member-tools { margin-top: var(--space-7); }
.member-tools-head { margin-bottom: var(--space-4); }
.member-tools-head h2 { font-size: var(--fs-lg); margin: 0; }
.member-tools-head p {
  font-size: var(--fs-sm);
  color: var(--color-ink-700);
  margin: var(--space-1) 0 0;
  max-width: 62ch;
}

.hub-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
}

@media (max-width: 900px) {
  .hub-grid { grid-template-columns: repeat(2, 1fr); }
  .member-tools-develop .hub-grid { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .hub-grid { grid-template-columns: 1fr; }
  .hub-card { padding: var(--space-4); }
  .member-tools-develop { padding: var(--space-4); }
}

.hub-card {
  --hc-accent: var(--color-blue-500);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-5);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--hc-accent);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
}
/* The whole-card lift is only for cards that are themselves links (the
   member hub). Where .hub-card is a plain container with an inner CTA
   (the Explore resources grid), only the CTA reacts. */
a.hub-card:hover,
a.hub-card:focus-visible {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}
.hub-card.accent-b { --hc-accent: var(--bridges-b); }
.hub-card.accent-r { --hc-accent: var(--bridges-r); }
.hub-card.accent-i { --hc-accent: var(--bridges-i); }
.hub-card.accent-d { --hc-accent: var(--bridges-d); }
.hub-card.accent-g { --hc-accent: var(--bridges-g); }
.hub-card.accent-e { --hc-accent: var(--bridges-e); }
.hub-card.accent-s { --hc-accent: var(--bridges-s); }
.hub-card-icon { color: var(--hc-accent); margin-bottom: var(--space-1); }
.hub-card-icon svg { width: 24px; height: 24px; display: block; }
.hub-card-tier {
  font-size: var(--fs-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--hc-accent);
  margin: 0;
}
.hub-card h3 { font-size: var(--fs-md); margin: 0; color: var(--color-ink-900); }
.hub-card > p:not(.hub-card-tier) { font-size: var(--fs-sm); color: var(--color-ink-700); margin: 0; }
.hub-card-cta {
  margin-top: auto;
  padding-top: var(--space-3);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--hc-accent);
}
.hub-card-cta svg { width: 16px; height: 16px; transition: transform var(--transition); }
a.hub-card:hover .hub-card-cta svg,
a.hub-card:focus-visible .hub-card-cta svg { transform: translateX(4px); }
a.hub-card-cta:hover { text-decoration: underline; text-underline-offset: 3px; }
a.hub-card-cta:hover svg { transform: translateX(4px); }
.hub-card-cta[aria-disabled="true"] { color: var(--color-ink-700); cursor: default; }

/* Develop tools: the main event. Held in a contained surface panel so the
   paid tools read as one distinct workspace; the cards themselves stay
   the standard size, set apart by the panel, a heavier accent and a
   stronger lift rather than by scale. */
.member-tools-develop {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
}
.member-tools-develop .hub-card {
  border-top-width: 4px;
  box-shadow: var(--shadow-md);
}
.member-tools-develop a.hub-card:hover,
.member-tools-develop a.hub-card:focus-visible { box-shadow: var(--shadow-lg); }

/* Organisation: one card, held to a normal width. */
.member-tools-org .hub-grid { grid-template-columns: minmax(0, 520px); }

/* Explore row when the member also has Develop: quiet and compact, set off
   by a hairline so the paid tools clearly lead. */
.member-tools.is-secondary {
  margin-top: var(--space-6);
  padding-top: var(--space-6);
  border-top: 1px solid var(--color-border);
}
.member-tools.is-secondary .member-tools-head h2 {
  font-size: var(--fs-md);
  color: var(--color-ink-700);
}
.member-tools.is-secondary .hub-grid { grid-template-columns: repeat(2, 1fr); gap: var(--space-3); }
.member-tools.is-secondary .hub-card { padding: var(--space-4); border-top-width: 2px; box-shadow: none; }
.member-tools.is-secondary .hub-card:hover,
.member-tools.is-secondary .hub-card:focus-visible { transform: none; box-shadow: var(--shadow-sm); }
.member-tools.is-secondary .hub-card-icon { display: none; }
.member-tools.is-secondary .hub-card h3 { font-size: var(--fs-sm); }
.member-tools.is-secondary .hub-card > p { font-size: var(--fs-xs); }
@media (max-width: 620px) { .member-tools.is-secondary .hub-grid { grid-template-columns: 1fr; } }

/* One signpost back to the Explore resources page, shown in place of the
   card grid once a member also has Develop. */
.explore-signpost {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-4);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--bridges-i);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  transition: transform 200ms ease, box-shadow 200ms ease;
}
.explore-signpost:hover,
.explore-signpost:focus-visible { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.explore-signpost-icon { color: var(--bridges-i); flex-shrink: 0; }
.explore-signpost-icon svg { width: 26px; height: 26px; display: block; }
.explore-signpost-body { display: flex; flex-direction: column; gap: 2px; }
.explore-signpost-title { font-weight: 700; font-size: var(--fs-sm); color: var(--color-ink-900); }
.explore-signpost-desc { font-size: var(--fs-xs); color: var(--color-ink-700); }
.explore-signpost-arrow { width: 18px; height: 18px; flex-shrink: 0; color: var(--bridges-i); margin-left: auto; transition: transform var(--transition); }
.explore-signpost:hover .explore-signpost-arrow,
.explore-signpost:focus-visible .explore-signpost-arrow { transform: translateX(4px); }
@media (max-width: 560px) {
  .explore-signpost { gap: var(--space-3); padding: var(--space-3); }
  .explore-signpost-arrow { display: none; }
}

/* ---- Explore: signup as a calm, contained close to the page ------------ */
.signup-panel {
  display: grid;
  grid-template-columns: 0.8fr 1.2fr;
  gap: var(--space-7);
  align-items: start;
  padding: var(--space-7);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-white);
  box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255,255,255,0.6);
}
.signup-panel-aside h2 { font-size: var(--fs-xl); margin-bottom: var(--space-3); }
.signup-panel-aside p { font-size: var(--fs-sm); color: var(--color-ink-700); }
.signup-panel-aside .tier-reassure { margin: var(--space-4) 0 var(--space-3); }
.signup-panel .contact-form-card {
  padding: 0;
  border: none;
  box-shadow: none;
  background: transparent;
}
@media (max-width: 860px) {
  .signup-panel { grid-template-columns: 1fr; gap: var(--space-5); padding: var(--space-5); }
}

/* ---- Develop: core capability triptych (Plan / Coach / Review) ---------
   Abstract, interface-inspired visuals built from divs — no screenshots,
   no fabricated data or copy. */
.capability-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
}
@media (max-width: 920px) { .capability-grid { grid-template-columns: 1fr; } }
.capability {
  --cap-accent: var(--cycle-deliver);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-5);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-white);
  box-shadow: var(--shadow-sm);
  transition: transform 220ms ease, box-shadow 220ms ease, border-color 220ms ease;
}
.capability.cap-plan   { --cap-accent: var(--cycle-design); }
.capability.cap-coach  { --cap-accent: var(--bridges-b); }
.capability.cap-review { --cap-accent: var(--cycle-review); }
.capability:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
  border-color: color-mix(in srgb, var(--cap-accent) 55%, var(--color-border));
}
.capability-kicker {
  font-size: var(--fs-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--cap-accent);
  margin: 0;
}
.capability h3 { font-size: var(--fs-lg); margin: 0; }
.capability > p { font-size: var(--fs-sm); color: var(--color-ink-700); margin: 0; }
.capability-visual {
  order: -1;
  height: 132px;
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  padding: var(--space-3);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 7px;
  justify-content: center;
}
/* Plan: seven weighted rows, one per BRIDGES move */
.cap-visual-plan i { display: block; height: 9px; border-radius: 2px; opacity: 0.9; }
.cap-visual-plan i:nth-child(1) { width: 92%; background: var(--bridges-b); }
.cap-visual-plan i:nth-child(2) { width: 68%; background: var(--bridges-r); }
.cap-visual-plan i:nth-child(3) { width: 84%; background: var(--bridges-i); }
.cap-visual-plan i:nth-child(4) { width: 55%; background: var(--bridges-d); }
.cap-visual-plan i:nth-child(5) { width: 76%; background: var(--bridges-g); }
.cap-visual-plan i:nth-child(6) { width: 62%; background: var(--bridges-e); }
.cap-visual-plan i:nth-child(7) { width: 80%; background: var(--bridges-s); }
/* Coach: a coaching exchange with Span — a question, Span's reply carrying
   its own mark, then an action to take (prompt -> thinking -> action). */
.cap-visual-coach { justify-content: center; gap: 10px; }
.cap-visual-coach i { display: block; border-radius: 7px; position: relative; }
.cap-visual-coach i:nth-child(1) {
  width: 44%; height: 11px;
  background: var(--color-slate-200);
  align-self: flex-start;
}
.cap-visual-coach i:nth-child(2) {
  align-self: stretch;
  margin-left: 30px;
  height: 26px;
  border-radius: 8px;
  background: rgba(159,137,29,0.14);
  border: 1px solid rgba(159,137,29,0.34);
}
.cap-visual-coach i:nth-child(2)::before {
  content: "S";
  position: absolute;
  left: -30px;
  top: 50%;
  transform: translateY(-50%);
  width: 22px; height: 22px;
  border-radius: 6px;
  background: var(--bridges-b);
  color: #fff;
  font: 700 11px/1 var(--font-heading);
  display: grid;
  place-items: center;
}
.cap-visual-coach i:nth-child(3) {
  width: 33%; height: 11px;
  background: var(--bridges-b);
  align-self: flex-start;
}
.cap-visual-coach i:nth-child(3)::after {
  content: "";
  position: absolute;
  right: -9px;
  top: 50%;
  transform: translateY(-50%);
  border: 5px solid transparent;
  border-left-color: var(--bridges-b);
}
/* Review: element bars over a faint baseline — feedback compared across moves */
.cap-visual-review { position: relative; flex-direction: row; align-items: flex-end; gap: 8px; justify-content: center; padding-bottom: var(--space-3); }
.cap-visual-review::after {
  content: "";
  position: absolute;
  left: var(--space-3); right: var(--space-3); bottom: var(--space-3);
  height: 1px;
  background: var(--color-border);
}
.cap-visual-review i { display: block; width: 12px; border-radius: 3px 3px 0 0; }
.cap-visual-review i:nth-child(1) { height: 62%; background: var(--bridges-b); }
.cap-visual-review i:nth-child(2) { height: 44%; background: var(--bridges-r); }
.cap-visual-review i:nth-child(3) { height: 72%; background: var(--bridges-i); }
.cap-visual-review i:nth-child(4) { height: 38%; background: var(--bridges-d); }
.cap-visual-review i:nth-child(5) { height: 58%; background: var(--bridges-g); }
.cap-visual-review i:nth-child(6) { height: 50%; background: var(--bridges-e); }
.cap-visual-review i:nth-child(7) { height: 66%; background: var(--bridges-s); }
html.js-reveal .capability-grid.reveal .capability-visual i {
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 420ms ease, transform 420ms ease;
}
html.js-reveal .capability-grid.reveal.is-visible .capability-visual i { opacity: 0.9; transform: none; }
html.js-reveal .capability-grid.reveal.is-visible .capability:nth-child(2) .capability-visual i { transition-delay: 90ms; }
html.js-reveal .capability-grid.reveal.is-visible .capability:nth-child(3) .capability-visual i { transition-delay: 180ms; }

/* ---- Pathway: a horizontal journey on desktop, vertical on mobile ------
   Used for Develop's practice loop and Embed's development cycle. The
   connecting line fills once on first scroll into view; labels are static
   and readable immediately. */
.pathway { position: relative; }
.pathway-steps {
  display: grid;
  grid-template-columns: repeat(var(--pathway-n, 5), 1fr);
  gap: var(--space-4);
  position: relative;
}
.pathway-line {
  position: absolute;
  top: 17px;
  left: 6%;
  right: 6%;
  height: 2px;
  background: var(--color-border);
  overflow: hidden;
}
.pathway-line::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
    var(--bridges-b), var(--bridges-r), var(--bridges-i), var(--bridges-d),
    var(--bridges-g), var(--bridges-e), var(--bridges-s));
  transform-origin: left;
}
/* Only collapse the coloured fill when it will actually be animated back in;
   no-JS / reduced-motion keeps the finished (full) state. */
html.js-reveal .pathway.reveal .pathway-line::after {
  transform: scaleX(0);
  transition: transform 1100ms cubic-bezier(0.16, 1, 0.3, 1);
}
html.js-reveal .pathway.reveal.is-visible .pathway-line::after { transform: scaleX(1); }
.section-navy .pathway-line { background: rgba(255,255,255,0.16); }
.pathway-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-2);
  position: relative;
}
.pathway-step-marker {
  width: 36px; height: 36px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 2px solid var(--pathway-accent, var(--color-blue-500));
  background: var(--color-white);
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-sm);
  color: var(--pathway-accent, var(--color-blue-600));
  position: relative;
  z-index: 1;
}
.section-navy .pathway-step-marker { background: var(--color-navy-900); color: #fff; border-color: rgba(255,255,255,0.4); }
.pathway-step h3 { font-size: var(--fs-sm); margin: 0; }
.pathway-step p { font-size: var(--fs-xs); color: var(--color-ink-700); margin: 0; }
.section-navy .pathway-step p { color: rgba(255,255,255,0.72); }
.pathway-step:nth-child(1) { --pathway-accent: var(--bridges-b); }
.pathway-step:nth-child(2) { --pathway-accent: var(--bridges-r); }
.pathway-step:nth-child(3) { --pathway-accent: var(--bridges-i); }
.pathway-step:nth-child(4) { --pathway-accent: var(--bridges-g); }
.pathway-step:nth-child(5) { --pathway-accent: var(--bridges-s); }
@media (max-width: 860px) {
  .pathway-steps { grid-template-columns: 1fr; gap: var(--space-4); }
  .pathway-line { top: 6%; bottom: 6%; left: 17px; right: auto; width: 2px; height: auto; }
  .pathway-line::after { transform-origin: top; }
  html.js-reveal .pathway.reveal .pathway-line::after { transform: scaleY(0); }
  html.js-reveal .pathway.reveal.is-visible .pathway-line::after { transform: scaleY(1); }
  .pathway-step {
    display: grid;
    grid-template-columns: 36px 1fr;
    column-gap: var(--space-3);
    row-gap: 2px;
    text-align: left;
  }
  .pathway-step-marker { grid-column: 1; grid-row: 1 / span 2; align-self: start; }
  .pathway-step h3 { grid-column: 2; grid-row: 1; align-self: center; }
  .pathway-step p  { grid-column: 2; grid-row: 2; }
}

/* ---- Element picker: choose a BRIDGES element, see what a session around
   it covers. Progressive enhancement — without JS the full list shows. --- */
.element-picker { display: grid; gap: var(--space-4); }
.element-picker-tiles {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.element-picker-tiles button {
  width: 48px; height: 48px;
  border-radius: 12px;
  border: 2px solid transparent;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 1.15rem;
  color: #fff;
  opacity: 0.62;
  transition: opacity 180ms ease, transform 180ms ease, box-shadow 180ms ease;
}
.element-picker-tiles button.tile-b { background: var(--bridges-b); }
.element-picker-tiles button.tile-r { background: var(--bridges-r); }
.element-picker-tiles button.tile-i { background: var(--bridges-i); }
.element-picker-tiles button.tile-d { background: var(--bridges-d); }
.element-picker-tiles button.tile-g { background: var(--bridges-g); }
.element-picker-tiles button.tile-e { background: var(--bridges-e); }
.element-picker-tiles button.tile-s { background: var(--bridges-s); }
.element-picker-tiles button:hover { opacity: 0.85; }
.element-picker-tiles button[aria-pressed="true"] {
  opacity: 1;
  transform: translateY(-2px);
  box-shadow: 0 0 0 3px rgba(11,18,32,0.08), var(--shadow-sm);
}
.element-picker-tiles button:focus-visible {
  outline: 3px solid var(--color-blue-300);
  outline-offset: 2px;
}
.element-picker-live {
  display: none;
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--epk-accent, var(--color-blue-500));
  border-radius: var(--radius-md);
  background: var(--color-white);
  padding: var(--space-4) var(--space-5);
  min-height: 116px;
}
.element-picker-live h3 { font-size: var(--fs-md); margin: 0 0 var(--space-1); }
.element-picker-live p { font-size: var(--fs-sm); color: var(--color-ink-700); margin: 0; }
.element-picker[data-active="b"] .element-picker-live { --epk-accent: var(--bridges-b); }
.element-picker[data-active="r"] .element-picker-live { --epk-accent: var(--bridges-r); }
.element-picker[data-active="i"] .element-picker-live { --epk-accent: var(--bridges-i); }
.element-picker[data-active="d"] .element-picker-live { --epk-accent: var(--bridges-d); }
.element-picker[data-active="g"] .element-picker-live { --epk-accent: var(--bridges-g); }
.element-picker[data-active="e"] .element-picker-live { --epk-accent: var(--bridges-e); }
.element-picker[data-active="s"] .element-picker-live { --epk-accent: var(--bridges-s); }
.element-picker-list { display: grid; gap: var(--space-2); }
.element-picker-list div {
  display: grid;
  grid-template-columns: 30px 1fr;
  gap: var(--space-3);
  align-items: start;
  font-size: var(--fs-sm);
  color: var(--color-ink-700);
}
.element-picker-list b { color: var(--color-ink-900); }
html.js-picker .element-picker-list { display: none; }
html.js-picker .element-picker-live { display: block; }
@media (max-width: 480px) {
  .element-picker-tiles { gap: 6px; }
  .element-picker-tiles button {
    flex: 1 1 0;
    min-width: 0;
    width: auto;
    aspect-ratio: 1;
    font-size: 1rem;
  }
}

/* ---- Embed: organisation-insight panel (dashboard-inspired, illustrative)
   A schematic of the real Organisation Dashboard — relative bar lengths
   and status dots only, no numbers, explicitly labelled illustrative. */
.insight-panel {
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(125,189,242,0.12) 0%, transparent 55%),
    var(--gradient-navy);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  box-shadow: var(--shadow-lg);
}
.insight-panel-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
  padding-bottom: var(--space-4);
  border-bottom: 1px solid rgba(255,255,255,0.12);
}
.insight-panel-head h3 { font-size: var(--fs-md); margin: 0; color: #fff; }
.insight-panel-head span { font-size: var(--fs-xs); color: rgba(255,255,255,0.6); }
.insight-panel-body {
  display: grid;
  grid-template-columns: minmax(0, 460px) 1fr;
  gap: var(--space-5) var(--space-6);
  align-items: center;
}
@media (max-width: 820px) {
  .insight-panel-body { grid-template-columns: 1fr; gap: var(--space-5); align-items: start; }
  .insight-bars { max-width: 460px; }
  .insight-aside { border-left: 0 !important; padding-left: 0 !important; }
}
@media (max-width: 560px) {
  .insight-panel { padding: var(--space-5); }
}
.insight-bars { display: grid; gap: var(--space-3); }
.insight-bar {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) 10px;
  align-items: center;
  gap: var(--space-3);
}
.insight-bar-tile {
  width: 22px; height: 22px;
  border-radius: 6px;
  display: grid; place-items: center;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-xs);
  color: #fff;
}
.insight-bar-track {
  display: block;
  height: 9px;
  border-radius: var(--radius-full);
  background: rgba(255,255,255,0.08);
  overflow: hidden;
}
.insight-bar-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, rgba(255,255,255,0.92), rgba(255,255,255,0.68));
  transform: scaleX(var(--v, 0.6));
  transform-origin: left;
}
.insight-bar-dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--status-good);
}
.insight-bar-dot.is-explore { background: var(--status-warning); }
.insight-aside {
  align-self: stretch;
  display: flex;
  flex-direction: column;
  justify-content: center;
  font-size: var(--fs-xs);
  color: rgba(255,255,255,0.62);
  border-left: 1px solid rgba(255,255,255,0.1);
  padding-left: var(--space-6);
}
.insight-legend { display: grid; gap: var(--space-2); margin: 0 0 var(--space-4); }
.insight-legend li { display: flex; align-items: center; gap: 8px; }
.insight-legend .dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--status-good);
  flex-shrink: 0;
}
.insight-legend .dot.is-explore { background: var(--status-warning); }
.insight-aside p { margin: 0; line-height: 1.5; }
html.js-reveal .insight-panel.reveal .insight-bar-fill {
  transform: scaleX(0);
  transition: transform 900ms cubic-bezier(0.16, 1, 0.3, 1);
}
html.js-reveal .insight-panel.reveal.is-visible .insight-bar-fill { transform: scaleX(var(--v, 0.6)); }
html.js-reveal .insight-panel.reveal.is-visible .insight-bar:nth-child(2) .insight-bar-fill { transition-delay: 70ms; }
html.js-reveal .insight-panel.reveal.is-visible .insight-bar:nth-child(3) .insight-bar-fill { transition-delay: 140ms; }
html.js-reveal .insight-panel.reveal.is-visible .insight-bar:nth-child(4) .insight-bar-fill { transition-delay: 210ms; }
html.js-reveal .insight-panel.reveal.is-visible .insight-bar:nth-child(5) .insight-bar-fill { transition-delay: 280ms; }
html.js-reveal .insight-panel.reveal.is-visible .insight-bar:nth-child(6) .insight-bar-fill { transition-delay: 350ms; }
html.js-reveal .insight-panel.reveal.is-visible .insight-bar:nth-child(7) .insight-bar-fill { transition-delay: 420ms; }

/* ---- Embed: bespoke-resources list (fine rules, not boxes) ------------- */
.bespoke-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0 var(--space-6);
}
@media (max-width: 720px) { .bespoke-list { grid-template-columns: 1fr; } }
.bespoke-list div {
  display: grid;
  grid-template-columns: 22px 1fr;
  gap: var(--space-3);
  align-items: start;
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--color-border);
  font-size: var(--fs-sm);
  color: var(--color-ink-700);
}
.bespoke-list div svg { width: 18px; height: 18px; color: var(--cycle-review); margin-top: 3px; }

/* ---- Autonomy statement: a full-width editorial moment ---------------- */
.autonomy-statement {
  max-width: 40rem;
  margin-inline: auto;
  text-align: center;
}
.autonomy-statement .bridges-seam { margin: 0 auto var(--space-5); }
.autonomy-statement blockquote {
  font-family: var(--font-heading);
  font-weight: 500;
  font-size: var(--fs-xl);
  line-height: 1.35;
  margin: 0 0 var(--space-4);
  color: #fff;
  text-wrap: balance;
}
.autonomy-statement p { color: rgba(255,255,255,0.8); font-size: var(--fs-sm); margin: 0; }

/* ---- Tier wayfinding: an editorial pathway, not comparison cards ------- */
.tier-path {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  align-items: start;
  gap: var(--space-2) var(--space-3);
}
.tier-path > svg {
  align-self: start;
  margin-top: 17px;
  width: 16px; height: 16px;
  color: var(--color-ink-700);
  opacity: 0.4;
}
.tier-step {
  --ts-accent: var(--color-blue-500);
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding-top: var(--space-3);
  border-top: 2px solid color-mix(in srgb, var(--ts-accent) 32%, var(--color-border));
  transition: border-color 180ms ease;
}
.tier-step.accent-explore { --ts-accent: var(--bridges-i); }
.tier-step.accent-develop { --ts-accent: var(--cycle-deliver); }
.tier-step.accent-embed   { --ts-accent: var(--cycle-review); }
.tier-step[aria-current="true"] { border-top-color: var(--ts-accent); }
a.tier-step:hover,
a.tier-step:focus-visible { border-top-color: var(--ts-accent); }
.tier-step-name {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-md);
  color: var(--color-ink-900);
}
a.tier-step:hover .tier-step-name { text-decoration: underline; text-underline-offset: 3px; }
.tier-step-role { font-size: var(--fs-sm); color: var(--color-ink-700); }
.tier-step-meta {
  margin-top: 2px;
  font-size: var(--fs-xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--ts-accent);
}
@media (max-width: 720px) {
  .tier-path { grid-template-columns: 1fr; gap: var(--space-4); }
  .tier-path > svg { transform: rotate(90deg); justify-self: center; margin-top: 0; }
}

/* ---- Register-interest: quietly stated, not a placeholder ------------- */
.develop-status {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-full);
  border: 1px solid var(--color-border);
  background: var(--color-white);
  font-size: var(--fs-sm);
  color: var(--color-ink-700);
}
.develop-status svg { width: 16px; height: 16px; color: var(--color-blue-500); flex-shrink: 0; }
.section-navy .develop-status {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.16);
  color: rgba(255,255,255,0.82);
}

/* ==========================================================================
   Embed BRIDGES — the organisation's development environment
   (bridges/embed/dashboard + elements + workshops + resources + team)

   A signed-in workspace, not a marketing page: a secondary nav under the
   site header, a compact dashboard intro (no dark hero), restrained
   summary cards, and the existing radar / hub-card / resource-card
   components reused. ICL navy anchors it; BRIDGES letter colours are
   accents only — never a RAG performance read.
   ========================================================================== */

/* ---- Secondary nav (shared by the Embed and Develop environments) ---- */
.embed-subnav,
.develop-subnav {
  position: sticky;
  top: 82px; /* under the sticky .site-header (logo 63px + 0.625rem block padding) */
  z-index: 99;
  background: var(--color-navy-900);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.embed-subnav-inner,
.develop-subnav-inner {
  display: flex;
  align-items: center;
  gap: var(--space-5);
  min-height: 48px;
}
.embed-subnav-brand,
.develop-subnav-brand {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-blue-300);
  flex-shrink: 0;
}
.develop-subnav-brand { color: var(--cycle-deliver); }
.embed-subnav-links,
.develop-subnav-links {
  display: flex;
  align-items: center;
  gap: var(--space-5);
  overflow-x: auto;
  scrollbar-width: none;
}
.embed-subnav-links::-webkit-scrollbar,
.develop-subnav-links::-webkit-scrollbar { display: none; }
.embed-subnav-links a,
.develop-subnav-links a {
  padding: 14px 0;
  font-size: var(--fs-sm);
  font-weight: 500;
  white-space: nowrap;
  color: rgba(255, 255, 255, 0.72);
  border-bottom: 2px solid transparent;
  transition: color var(--transition), border-color var(--transition);
}
.embed-subnav-links a:hover,
.develop-subnav-links a:hover { color: #fff; }
.embed-subnav-links a[aria-current="page"],
.develop-subnav-links a[aria-current="page"] {
  color: #fff;
  border-color: var(--color-blue-400);
}
/* Role-aware links: hidden until js/embed-subnav.js sets html[data-embed-nav]. */
.embed-subnav-links a[data-nav-role] { display: none; }
:root[data-embed-nav="admin"] .embed-subnav-links a[data-nav-role~="admin"],
:root[data-embed-nav="member"] .embed-subnav-links a[data-nav-role~="member"] { display: revert; }
@media (max-width: 720px) {
  .embed-subnav-inner, .develop-subnav-inner { gap: var(--space-4); }
  .embed-subnav-links, .develop-subnav-links { gap: var(--space-4); }
}
@media (max-width: 520px) {
  .embed-subnav-brand, .develop-subnav-brand { display: none; }
}

/* ---- Loading / gate states ------------------------------------------- */
.embed-loading { color: var(--color-ink-700); padding-block: var(--space-7); text-align: center; }
.embed-gate { padding-block: var(--space-8) var(--space-9); }

/* ---- Invite / join page (bridges/embed/join/) ---------------------- */
.embed-join { max-width: 560px; }
.embed-join-card { margin-top: var(--space-4); }
.embed-join-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-3);
  margin-top: var(--space-5);
}

/* ---- Dashboard intro (replaces the dark page-hero) ------------------- */
.embed-intro {
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  padding-block: var(--space-4) var(--space-5);
}
.embed-intro-utility {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2) var(--space-4);
  margin-bottom: var(--space-4);
  font-size: var(--fs-xs);
  color: var(--color-ink-700);
}
.embed-signin { margin: 0; }
.embed-personal-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  color: var(--color-blue-600);
}
.embed-personal-link svg { width: 14px; height: 14px; transition: transform var(--transition); }
.embed-personal-link:hover svg { transform: translateX(3px); }

.embed-intro-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-4);
  flex-wrap: wrap;
}
.embed-intro-head h1 {
  font-size: var(--fs-2xl);
  margin: 0 0 var(--space-1);
  letter-spacing: -0.02em;
}
.embed-intro-sub { margin: 0; color: var(--color-ink-700); max-width: 52ch; }
.embed-intro-head .btn { flex-shrink: 0; }

.embed-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-3);
  margin-top: var(--space-4);
}
.embed-meta-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 12px;
  border-radius: var(--radius-full);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--color-ink-900);
}
.embed-meta-chip svg { width: 15px; height: 15px; color: var(--color-blue-500); flex-shrink: 0; }

.embed-sections { padding-block: var(--space-6) var(--space-8); }
.embed-sections > .container > .embed-band:first-child { margin-top: 0; }

/* ---- Executive summary cards --------------------------------------- */
.embed-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}
.embed-summary-card {
  --embed-accent: var(--color-blue-500);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--embed-accent);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.embed-summary-card.is-primary { --embed-accent: var(--color-blue-500); }
.embed-summary-label {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-ink-700);
}
.embed-summary-icon { display: inline-flex; color: var(--embed-accent); }
.embed-summary-icon svg { width: 15px; height: 15px; display: block; }
.embed-summary-el {
  margin: var(--space-1) 0 0;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: var(--fs-md);
  color: var(--embed-accent);
}
.embed-summary-value {
  margin: 2px 0 0;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-2xl);
  line-height: 1;
  color: var(--color-ink-900);
  letter-spacing: -0.02em;
}
.embed-summary-caption { margin: 4px 0 0; font-size: var(--fs-xs); color: var(--color-ink-700); }

/* ---- Your BRIDGES picture ---------------------------------------- */
/* "By BRIDGES element" block on the Overview — heading + view-all link
   above the shared .embed-el-bars card. */
.embed-el-overview { margin-bottom: var(--space-6); }

.embed-picture {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: var(--space-5);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  margin-bottom: var(--space-6);
}
.embed-picture-narrative p:not(.eyebrow) {
  margin: 0;
  font-size: var(--fs-md);
  line-height: 1.55;
  color: var(--color-ink-900);
  text-wrap: pretty;
}
.embed-next-step {
  border-left: 1px solid var(--color-border);
  padding-left: var(--space-5);
}
.embed-next-step h3 { font-size: var(--fs-md); margin: 0 0 4px; }
.embed-next-step p:not(.eyebrow) { margin: 0 0 var(--space-3); font-size: var(--fs-sm); color: var(--color-ink-700); }
.embed-next-step-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-blue-600);
}
.embed-next-step-link svg { width: 16px; height: 16px; transition: transform var(--transition); }
.embed-next-step-link:hover svg { transform: translateX(4px); }

/* ---- Profile + development priorities --------------------------- */
.embed-profile {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-6);
  padding-top: var(--space-5);
  border-top: 1px solid var(--color-border);
}
.embed-profile-col { min-width: 0; }
.embed-profile-col h2 { font-size: var(--fs-lg); }
.embed-profile-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
}
.embed-period { display: flex; gap: 6px; }
.embed-period .btn { padding: 6px 12px; font-size: var(--fs-xs); }
.embed-profile .org-radar-wrap { max-width: 320px; margin: var(--space-3) auto; }
.embed-profile .org-radar-wrap svg { overflow: visible; }
.embed-scale-note { font-size: var(--fs-xs); text-align: center; max-width: 360px; margin-inline: auto; }
.embed-priorities-intro { font-size: var(--fs-sm); margin-bottom: var(--space-4); }

.embed-priorities { display: flex; flex-direction: column; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.embed-priorities li { margin: 0; }
.embed-priority {
  --embed-accent: var(--color-blue-500);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: start;
  gap: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--embed-accent);
  border-radius: var(--radius-sm);
  background: var(--color-white);
  transition: box-shadow var(--transition), transform var(--transition), border-color var(--transition);
}
.embed-priority:hover,
.embed-priority:focus-visible {
  box-shadow: var(--shadow-md);
  transform: translateY(-3px) scale(1.015);
  border-color: color-mix(in srgb, var(--embed-accent) 40%, var(--color-border));
}
@media (prefers-reduced-motion: reduce) {
  .embed-priority { transition: box-shadow var(--transition), border-color var(--transition); }
  .embed-priority:hover,
  .embed-priority:focus-visible { transform: none; }
}
.embed-priority-rank {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: var(--fs-md);
  color: var(--embed-accent);
  line-height: 1.3;
}
.embed-priority-main { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.embed-priority-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2); }
.embed-priority-label { font-family: var(--font-heading); font-weight: 600; font-size: var(--fs-sm); color: var(--color-ink-900); }
.embed-priority-score { font-weight: 700; font-size: var(--fs-sm); color: var(--color-ink-900); flex-shrink: 0; }
.embed-priority-desc { font-size: var(--fs-xs); color: var(--color-ink-700); }
.embed-priority-arrow { width: 16px; height: 16px; color: var(--color-ink-700); margin-top: 3px; transition: transform var(--transition); }
.embed-priority:hover .embed-priority-arrow { transform: translateX(3px); color: var(--embed-accent); }

/* ---- Developmental status pill (never RAG pass/fail) ----------- */
.embed-status-pill {
  align-self: flex-start;
  display: inline-flex;
  padding: 2px 10px;
  border-radius: var(--radius-full);
  font-size: var(--fs-xs);
  font-weight: 600;
  border: 1px solid transparent;
}
.embed-status-pill.is-developing { background: color-mix(in srgb, var(--status-good) 12%, transparent); color: #1c6b2f; border-color: color-mix(in srgb, var(--status-good) 30%, transparent); }
.embed-status-pill.is-exploring { background: color-mix(in srgb, var(--status-warning) 14%, transparent); color: #8a5a11; border-color: color-mix(in srgb, var(--status-warning) 34%, transparent); }
.embed-status-pill.is-growth { background: color-mix(in srgb, var(--color-blue-500) 12%, transparent); color: var(--color-blue-600); border-color: color-mix(in srgb, var(--color-blue-500) 30%, transparent); }
.embed-status-pill.is-none { background: var(--color-slate-100); color: var(--color-ink-700); border-color: var(--color-border); }

/* ---- "By BRIDGES element" bar breakdown (embed elements page) --- */
.embed-el-bars {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
  background: var(--color-white);
}
.embed-el-bars-legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  margin-bottom: var(--space-4);
  font-size: var(--fs-sm);
  color: var(--color-ink-700);
}
.embed-el-bars-key { display: inline-flex; align-items: center; gap: 8px; }
.embed-el-bars-dot {
  width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0;
  background: var(--status-none);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-none) 18%, transparent);
}
.embed-el-bars-dot.is-developing { background: var(--status-good); box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-good) 18%, transparent); }
.embed-el-bars-dot.is-exploring { background: var(--status-warning); box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-warning) 18%, transparent); }
.embed-el-bars-dot.is-growth { background: var(--color-blue-500); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-blue-500) 18%, transparent); }
.embed-el-bars-list { display: flex; flex-direction: column; gap: var(--space-3); }
.embed-el-bars-row {
  display: grid;
  grid-template-columns: 160px 1fr 44px;
  align-items: center;
  gap: var(--space-3);
}
.embed-el-bars-label {
  display: flex; align-items: center; gap: 10px;
  font-size: var(--fs-sm); font-weight: 600; color: var(--color-ink-900);
}
.embed-el-bars-track {
  height: 12px;
  border-radius: var(--radius-full);
  background: var(--color-slate-200);
  overflow: hidden;
}
.embed-el-bars-fill {
  display: block; height: 100%; width: 0;
  background: var(--bar-color, var(--color-blue-500));
  border-radius: var(--radius-full);
  transition: width 500ms ease;
}
.embed-el-bars-score { font-size: var(--fs-sm); font-weight: 700; color: var(--color-ink-900); text-align: right; }
.embed-el-bars-row.is-link {
  grid-template-columns: 160px 1fr 44px 16px;
  text-decoration: none;
  border-radius: var(--radius-sm);
  margin: 0 calc(var(--space-3) * -1);
  padding: 6px var(--space-3);
  transition: background var(--transition);
}
.embed-el-bars-row.is-link:hover,
.embed-el-bars-row.is-link:focus-visible {
  background: color-mix(in srgb, var(--bar-color) 9%, var(--color-white));
}
.embed-el-bars-arrow { width: 16px; height: 16px; color: var(--color-ink-700); transition: transform var(--transition); }
.embed-el-bars-row.is-link:hover .embed-el-bars-arrow,
.embed-el-bars-row.is-link:focus-visible .embed-el-bars-arrow { transform: translateX(3px); color: var(--bar-color); }
@media (max-width: 560px) {
  .embed-el-bars-row,
  .embed-el-bars-row.is-link { grid-template-columns: 110px 1fr 36px; gap: var(--space-2); }
  .embed-el-bars-arrow { display: none; }
  .embed-el-bars { padding: var(--space-3) var(--space-4); }
}
@media (prefers-reduced-motion: reduce) {
  .embed-el-bars-fill { transition: none; }
  .embed-el-bars-row.is-link:hover .embed-el-bars-arrow,
  .embed-el-bars-row.is-link:focus-visible .embed-el-bars-arrow { transform: none; }
}

/* ---- Trend ---------------------------------------------------- */
.embed-trend { margin-top: var(--space-6); padding-top: var(--space-5); border-top: 1px solid var(--color-border); }
.embed-trend h3 { font-size: var(--fs-md); margin-bottom: 4px; }

/* ---- Bands (Develop your practice / Workshops / Resources) ---- */
.embed-band { margin-top: var(--space-8); }
.embed-band-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
}
.embed-band-head .section-head { margin-bottom: var(--space-4); }
.embed-viewall {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-blue-600);
}
.embed-viewall svg { width: 16px; height: 16px; transition: transform var(--transition); }
.embed-viewall:hover svg { transform: translateX(4px); }

/* ---- Per-organisation brand colour (Embed) -------------------------
   All inert unless js/embed-org.js puts [data-embed-branded] + --embed-brand
   on <html> for an org with a saved brand colour.

   The org colour carries the top chrome (header + sub-nav), the footer, and
   a wash on the dashboard intro, plus the existing small accents.
   js/embed-org.js sets three companion values alongside --embed-brand — each
   is the picked colour left exactly as chosen when it is already legible,
   and only deepened (hue kept) as far as contrast needs otherwise:
     --embed-brand-dark : >= 5:1 vs white, for white text on the header /
                          sub-nav (nav links are lifted to near-full white
                          to sit on it).
     --embed-brand-deep : >= 10:1 vs white, for the footer — same hue as the
                          header, a deeper shade, so every footer text
                          opacity still clears AA with no per-element tweak.
     --embed-brand-ink  : >= 4.5:1 vs white, for the places the colour is
                          text / a fill on a light background.
   An optional second colour (js/embed-org.js only sets these when the org
   has saved one) drives the tab underlines and the header CTA:
     --embed-brand2     : raw, for the line under the nav tabs (a border on
                          the dark header).
     --embed-brand2-ink : >= 4.5:1 vs white, for the "Get in touch" fill.
   The seven BRIDGES element colours, the radar, the trend and the status
   pills set their own colour inline or via their own class and are never
   touched here. */
html[data-embed-branded] .site-header { background: var(--embed-brand-dark, var(--color-navy-900)); }
html[data-embed-branded] .embed-subnav { background: var(--embed-brand-dark, var(--color-navy-900)); }
/* Footer takes --embed-brand-deep (held to 10:1 vs white) — the same hue as
   the header but a deeper shade, so it reads as one environment instead of
   a navy block, and every existing footer text opacity still clears AA. */
html[data-embed-branded] .site-footer { background: var(--embed-brand-deep, var(--color-navy-950)); }

/* Slim "member footer": on the logged-in Embed pages, once an org brand is
   active it replaces the full ICL marketing footer so the tool reads as the
   organisation's, with a plain "powered by" credit and the legal links.
   Populated by the branding scripts ([data-embed-footer-name]). */
.embed-member-footer {
  display: none;
  background: var(--embed-brand-deep, var(--color-navy-950));
  color: rgba(255, 255, 255, 0.72);
  padding-block: var(--space-5);
  font-size: var(--fs-sm);
}
html[data-embed-branded] .embed-member-footer { display: block; }
html[data-embed-branded] .site-footer { display: none; }
.embed-member-footer .container {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  text-align: center;
}
.embed-member-footer p { margin: 0; }
.embed-member-footer-org {
  font-weight: 600;
  color: #fff;
  letter-spacing: 0.01em;
}
.embed-member-footer a {
  color: rgba(255, 255, 255, 0.85);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.embed-member-footer a:hover { color: #fff; }
.embed-member-footer-legal { display: flex; gap: var(--space-4); }
.embed-member-footer-fine {
  font-size: var(--fs-xs);
  color: rgba(255, 255, 255, 0.5);
}
/* --embed-brand-dark is only held to 5:1 vs white so more of the colour
   shows, so the nav text (normally dimmed further) is brought up to near
   full white to keep its own contrast on top; hover / current stay pure
   white from the base rules. */
html[data-embed-branded] .nav-primary a,
html[data-embed-branded] .embed-subnav-links a { color: rgba(255, 255, 255, 0.92); }
html[data-embed-branded] .embed-intro {
  background: color-mix(in srgb, var(--embed-brand, transparent) 8%, var(--color-surface));
  border-bottom-color: color-mix(in srgb, var(--embed-brand, transparent) 24%, var(--color-border));
}
html[data-embed-branded] .embed-summary-card {
  --embed-accent: var(--embed-brand, var(--color-blue-500));
}
/* Secondary accent (optional): the line under the top-nav tabs and the
   sub-nav's current tab, plus the header "Get in touch" button. Each falls
   back to the ICL blue it replaces, so an org that sets only a primary
   colour sees no change here. --embed-brand2-ink is the same secondary hue
   deepened to >= 4.5:1 vs white, for the button fill. */
html[data-embed-branded] .nav-primary a:hover,
html[data-embed-branded] .nav-primary a[aria-current="page"] {
  border-color: var(--embed-brand2, var(--color-blue-400));
}
html[data-embed-branded] .embed-subnav-links a[aria-current="page"] {
  border-color: var(--embed-brand2, var(--embed-brand, var(--color-blue-400)));
}
html[data-embed-branded] .header-actions .btn-primary {
  background: var(--embed-brand2-ink, var(--color-blue-500));
}
html[data-embed-branded] .header-actions .btn-primary:hover {
  background: var(--embed-brand2-ink, var(--color-blue-400));
  filter: brightness(1.12);
}
/* The sub-nav bar is now the org colour, so its label (ICL light-blue by
   default) goes white to stay legible on any brand hue. */
html[data-embed-branded] .embed-subnav-brand { color: rgba(255, 255, 255, 0.86); }
html[data-embed-branded] .embed-meta-chip svg { color: var(--embed-brand-ink, var(--color-blue-500)); }
html[data-embed-branded] .embed-viewall,
html[data-embed-branded] .embed-next-step-link { color: var(--embed-brand-ink, var(--color-blue-600)); }

/* Pushed further into the page body so a branded org's environment reads
   as theirs: primary actions, section headings, and the generic (non
   element-coloured) panels. Scoped to #main so the shared site header's
   own "Get in touch" button is left alone, and still nothing that encodes
   BRIDGES meaning is touched. --embed-brand-ink is the mid-dark shade of
   the org hue that stays >= AA against white either way round. */
html[data-embed-branded] #main .btn-primary,
html[data-embed-branded] #main .btn.is-selected {
  background: var(--embed-brand-ink, var(--color-blue-500));
  border-color: var(--embed-brand-ink, var(--color-blue-500));
}
html[data-embed-branded] #main .btn-primary:hover {
  background: var(--embed-brand-ink, var(--color-blue-500));
  filter: brightness(1.12);
}
html[data-embed-branded] #main .btn-primary:active { filter: brightness(0.9); }
html[data-embed-branded] #main .btn-outline-dark {
  border-color: var(--embed-brand-ink, var(--color-navy-700));
  color: var(--embed-brand-ink, var(--color-navy-900));
}
html[data-embed-branded] #main .btn-outline-dark:hover {
  background: var(--embed-brand-ink, var(--color-navy-900));
  color: #fff;
}

html[data-embed-branded] .embed-intro-head h1,
html[data-embed-branded] .embed-page-head h1,
html[data-embed-branded] .embed-band .section-head h2,
html[data-embed-branded] .embed-profile-col h2 {
  color: var(--embed-brand-ink, var(--color-ink-900));
}
/* These eyebrows carry an inline colour in the markup, so the themed
   override has to be marked important to win. */
html[data-embed-branded] .embed-page-head .eyebrow,
html[data-embed-branded] .embed-picture .eyebrow,
html[data-embed-branded] .embed-next-step .eyebrow {
  color: var(--embed-brand-ink, var(--color-blue-600)) !important;
}

html[data-embed-branded] .embed-summary-card.is-primary {
  background: color-mix(in srgb, var(--embed-brand, transparent) 4%, var(--color-white));
}
html[data-embed-branded] .embed-picture,
html[data-embed-branded] .contact-form-card {
  background: color-mix(in srgb, var(--embed-brand, transparent) 4%, var(--color-white));
  border-color: color-mix(in srgb, var(--embed-brand, transparent) 20%, var(--color-border));
}

/* Hold the header at its normal ICL height when a shorter org logo is
   swapped in, so the sub-nav's fixed sticky offset stays honest and a
   short logo just sits centred in the same band as every other page.
   83px = 63px (ICL logo) + 0.625rem block padding top and bottom. */
html[data-embed-branded] .header-inner { min-height: 83px; }

/* Seven element cards — reuse .hub-grid / .hub-card. Four-up (so the set
   reads as 4 + 3, roomy enough for the score + blurb), then 2-up, then 1. */
.embed-practice-grid { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) { .embed-practice-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .embed-practice-grid { grid-template-columns: 1fr; } }
.embed-practice-grid .hub-card { padding: var(--space-4); }
.embed-practice-grid .hub-card h3 { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.embed-card-score { font-family: var(--font-body); font-weight: 700; font-size: var(--fs-sm); color: var(--color-ink-700); }

/* ---- "Explore your Embed environment" signposts ------------------- */
/* Three quiet links to the deeper Embed sections (Elements / Workshops
   / Resources), on the Overview in place of the card grids that used to
   duplicate those pages. */
.embed-signpost-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
  margin-top: var(--space-4);
}
@media (max-width: 860px) { .embed-signpost-grid { grid-template-columns: 1fr; } }
.embed-signpost {
  display: grid;
  grid-template-columns: 40px 1fr 18px;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
  text-decoration: none;
  transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition);
}
.embed-signpost:hover,
.embed-signpost:focus-visible {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
  border-color: var(--color-blue-400);
}
.embed-signpost-icon {
  width: 40px; height: 40px; flex-shrink: 0;
  border-radius: var(--radius-sm);
  display: grid; place-items: center;
  background: color-mix(in srgb, var(--color-blue-500) 12%, transparent);
  color: var(--color-blue-600);
}
.embed-signpost-icon svg { width: 20px; height: 20px; }
.embed-signpost-title { display: block; font-family: var(--font-heading); font-weight: 600; color: var(--color-ink-900); }
.embed-signpost-desc { display: block; font-size: var(--fs-sm); color: var(--color-ink-700); margin-top: 2px; }
.embed-signpost-arrow { width: 18px; height: 18px; color: var(--color-ink-700); transition: transform var(--transition); }
.embed-signpost:hover .embed-signpost-arrow,
.embed-signpost:focus-visible .embed-signpost-arrow { transform: translateX(3px); color: var(--color-blue-600); }
html[data-embed-branded] .embed-signpost-icon {
  background: color-mix(in srgb, var(--embed-brand, var(--color-blue-500)) 14%, transparent);
  color: var(--embed-brand-ink, var(--color-blue-600));
}
html[data-embed-branded] .embed-signpost:hover,
html[data-embed-branded] .embed-signpost:focus-visible { border-color: var(--embed-brand, var(--color-blue-400)); }
html[data-embed-branded] .embed-signpost:hover .embed-signpost-arrow,
html[data-embed-branded] .embed-signpost:focus-visible .embed-signpost-arrow { color: var(--embed-brand-ink, var(--color-blue-600)); }
@media (prefers-reduced-motion: reduce) {
  .embed-signpost { transition: box-shadow var(--transition), border-color var(--transition); }
  .embed-signpost:hover,
  .embed-signpost:focus-visible { transform: none; }
  .embed-signpost:hover .embed-signpost-arrow,
  .embed-signpost:focus-visible .embed-signpost-arrow { transform: none; }
}

/* ---- Scheduled workshops (bridges/embed/workshops/) ----------------- */
.embed-workshops-head { font-size: var(--fs-lg); margin: var(--space-5) 0 var(--space-3); }
.embed-workshop-item {
  --embed-accent: var(--color-blue-500);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--embed-accent);
  border-radius: var(--radius-md);
  padding: var(--space-4);
  margin-bottom: var(--space-3);
}
.embed-workshop-item-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); }
.embed-workshop-item-head h3 { font-size: var(--fs-md); margin: 6px 0 0; }
.embed-workshop-pill {
  display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: 0.04em;
  text-transform: uppercase; padding: 2px 8px; border-radius: var(--radius-full);
  background: color-mix(in srgb, var(--embed-accent) 14%, transparent); color: var(--embed-accent);
  margin-right: 6px;
}
.embed-workshop-pill.is-muted { background: var(--color-slate-100); color: var(--color-ink-700); }
.embed-workshop-meta { font-size: var(--fs-sm); color: var(--color-ink-700); margin: var(--space-2) 0 0; font-weight: 600; }
.embed-workshop-desc { font-size: var(--fs-sm); color: var(--color-ink-900); margin: var(--space-2) 0 0; white-space: pre-line; text-wrap: pretty; }
.embed-workshop-item .embed-res-list { margin: var(--space-3) 0 0; }
.embed-workshop-capacity { display: flex; align-items: center; gap: var(--space-2); margin-top: var(--space-3); font-size: var(--fs-sm); }
.embed-workshop-bar { flex: 1; max-width: 180px; height: 8px; border-radius: var(--radius-full); background: var(--color-slate-100); overflow: hidden; }
.embed-workshop-bar i { display: block; height: 100%; background: var(--status-good); }
.embed-workshop-bar.is-full i { background: var(--status-alert); }
.embed-workshop-capacity span { font-weight: 600; color: var(--color-ink-900); }
.embed-workshop-join { font-size: var(--fs-sm); margin: var(--space-2) 0 0; }
.embed-workshop-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); margin-top: var(--space-4); }
.embed-workshop-going { font-size: var(--fs-sm); font-weight: 700; color: var(--status-good); }
.embed-workshop-roster { margin-top: var(--space-2); font-size: var(--fs-sm); color: var(--color-ink-700); }
.embed-workshop-roster ul { display: flex; flex-direction: column; gap: 4px; }

.embed-workshop-admin { margin-bottom: var(--space-5); }
.embed-workshop-form .form-field { margin-bottom: var(--space-3); }
.embed-workshop-form label { display: block; font-size: var(--fs-sm); font-weight: 600; margin-bottom: 4px; }
.embed-workshop-form textarea { width: 100%; min-height: 72px; }
.embed-workshop-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-3); }
@media (max-width: 560px) { .embed-workshop-form-row { grid-template-columns: 1fr; } }
.embed-workshop-res-row { display: grid; grid-template-columns: 1fr 1fr 110px 32px; gap: 6px; margin-bottom: 6px; align-items: center; }
.embed-workshop-res-row input, .embed-workshop-res-row select {
  width: 100%; font: inherit; font-size: var(--fs-sm);
  padding: 8px 10px; border: 1px solid var(--color-slate-200);
  border-radius: var(--radius-sm); background: var(--color-white); color: var(--color-ink-900);
}
.embed-workshop-res-row input:focus, .embed-workshop-res-row select:focus {
  outline: none; border-color: var(--color-blue-500); box-shadow: 0 0 0 3px rgba(46,127,214,0.18);
}
.embed-workshop-res-row [data-rr-remove] { font-size: var(--fs-md); line-height: 1; padding: 0; }
@media (max-width: 560px) { .embed-workshop-res-row { grid-template-columns: 1fr 1fr; } .embed-workshop-res-row select { grid-column: 1; } }

/* Resource-card BRIDGES element accents (adds to the existing accent set). */
.resource-card.accent-b { --accent: var(--bridges-b); }
.resource-card.accent-r { --accent: var(--bridges-r); }
.resource-card.accent-i { --accent: var(--bridges-i); }
.resource-card.accent-d { --accent: var(--bridges-d); }
.resource-card.accent-g { --accent: var(--bridges-g); }
.resource-card.accent-e { --accent: var(--bridges-e); }
.resource-card.accent-s { --accent: var(--bridges-s); }
.embed-resource-grid { margin-top: var(--space-4); }

/* ---- Elegant empty state ------------------------------------------ */
.embed-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  text-align: center;
  padding: var(--space-6) var(--space-4);
  border: 1px dashed var(--color-slate-200);
  border-radius: var(--radius-md);
  color: var(--color-ink-700);
  font-size: var(--fs-sm);
}
.embed-placeholder svg { width: 22px; height: 22px; color: var(--color-blue-400); }
.embed-placeholder-inline { padding: var(--space-4); font-size: var(--fs-xs); }

/* ---- Elements index / single element page ----------------------- */
.embed-page-head { padding-block: var(--space-5) 0; }
.embed-page-head h1 { font-size: var(--fs-xl); margin-bottom: var(--space-1); }
.embed-page-head .text-muted { max-width: 56ch; }

.embed-element-hero {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  flex-wrap: wrap;
  padding: var(--space-5);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-6);
}
.embed-element-hero .tile { flex-shrink: 0; }
.embed-element-hero-body { flex: 1; min-width: 200px; }
.embed-element-hero-body h1 { font-size: var(--fs-xl); margin: 0 0 4px; }
.embed-element-hero-body p { margin: 0; color: var(--color-ink-700); }
.embed-element-hero-score { display: flex; align-items: baseline; gap: var(--space-2); margin-top: var(--space-2); }
.embed-element-hero-score b { font-family: var(--font-heading); font-size: var(--fs-xl); color: var(--color-ink-900); }

.embed-element-sections { display: flex; flex-direction: column; gap: var(--space-5); }
.embed-element-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-5);
}
.embed-element-card > h2 { font-size: var(--fs-lg); margin-bottom: var(--space-1); }
.embed-element-card > .embed-card-lede { color: var(--color-ink-700); margin-bottom: var(--space-4); }
.embed-insight-row { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: baseline; }
.embed-insight-figure { display: flex; align-items: baseline; gap: var(--space-2); }
.embed-insight-figure b { font-family: var(--font-heading); font-size: var(--fs-2xl); line-height: 1; color: var(--color-ink-900); }
.embed-insight-figure span { font-size: var(--fs-sm); color: var(--color-ink-700); }
.embed-actions-list { display: flex; flex-direction: column; gap: var(--space-2); }
.embed-actions-list li {
  position: relative;
  padding-left: var(--space-4);
  font-size: var(--fs-sm);
  color: var(--color-ink-900);
}
.embed-actions-list li::before {
  content: "";
  position: absolute;
  left: 0; top: 9px;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--color-blue-500);
}
.embed-element-trend { margin-top: var(--space-4); max-width: 260px; }

/* Resource library — grouped read-only list on bridges/embed/resources/ */
.embed-res-groups { margin-top: var(--space-5); }
.embed-res-group + .embed-res-group { margin-top: var(--space-6); }
.embed-res-group-head {
  font-size: var(--fs-md); margin: 0 0 var(--space-3);
  padding-bottom: 6px; border-bottom: 1px solid var(--color-border);
}

/* Resource library (link list + add form) inside an element's Resources card */
.embed-res-empty { font-size: var(--fs-sm); margin: 0 0 var(--space-3); }
.embed-res-list { display: flex; flex-direction: column; gap: 6px; margin: 0 0 var(--space-4); }
.embed-res-row {
  display: flex; align-items: center; gap: var(--space-2);
  padding: 8px var(--space-3);
  border: 1px solid var(--color-border); border-radius: var(--radius-sm);
  background: var(--color-white);
}
.embed-res-link { display: flex; align-items: center; gap: var(--space-2); flex: 1; min-width: 0; }
.embed-res-icon { display: inline-flex; flex-shrink: 0; color: var(--color-ink-700); }
.embed-res-icon svg { width: 18px; height: 18px; }
.embed-res-title {
  font-size: var(--fs-sm); color: var(--color-ink-900); font-weight: 500;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.embed-res-link:hover .embed-res-title { text-decoration: underline; }
.embed-res-tag {
  flex-shrink: 0; font-size: 11px; font-weight: 700; letter-spacing: 0.04em;
  text-transform: uppercase; color: var(--color-ink-700);
  padding: 2px 7px; border-radius: var(--radius-full); background: var(--color-slate-100);
}
.embed-res-tag.is-shared { background: color-mix(in srgb, var(--color-blue-500) 14%, transparent); color: var(--color-blue-600); }
.embed-res-remove { flex-shrink: 0; font-size: var(--fs-xs); }
.embed-res-form { margin: 0; }
.embed-res-form .form-field { margin-bottom: var(--space-3); }
.embed-res-form label { display: block; font-size: var(--fs-sm); font-weight: 600; margin-bottom: 4px; }
.embed-res-shared {
  display: flex; align-items: center; gap: 8px;
  font-size: var(--fs-sm); font-weight: 400; margin-bottom: var(--space-3);
}
.embed-res-shared input { width: 15px; height: 15px; accent-color: var(--color-blue-500); }
.embed-element-trend .results-trend-spark { color: inherit; }
.embed-element-trend-note { font-size: var(--fs-xs); color: var(--color-ink-700); margin-top: 4px; }

/* ---- Team page --------------------------------------------------- */
.embed-participation {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-5);
  padding: var(--space-4) var(--space-5);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  margin-bottom: var(--space-6);
}
.embed-participation div { display: flex; flex-direction: column; }
.embed-participation b { font-family: var(--font-heading); font-size: var(--fs-xl); color: var(--color-ink-900); }
.embed-participation span { font-size: var(--fs-xs); color: var(--color-ink-700); text-transform: uppercase; letter-spacing: 0.05em; font-weight: 700; }
.embed-team-grid { display: grid; grid-template-columns: minmax(0, 380px) 1fr; gap: var(--space-6); align-items: start; }
.embed-team-list { margin-top: 0; }
@media (max-width: 780px) { .embed-team-grid { grid-template-columns: 1fr; } }

/* Collapsible "Team members" list */
.embed-disclosure { border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-white); }
.embed-disclosure-summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
}
.embed-disclosure-summary::-webkit-details-marker { display: none; }
.embed-disclosure-summary h2 { font-size: var(--fs-md); margin: 0; }
.embed-disclosure-summary::after {
  content: ""; width: 9px; height: 9px; flex-shrink: 0; margin-right: 4px;
  border-right: 2px solid var(--color-ink-700); border-bottom: 2px solid var(--color-ink-700);
  transform: rotate(45deg); transition: transform var(--transition);
}
.embed-disclosure[open] > .embed-disclosure-summary::after { transform: rotate(225deg); }
.embed-disclosure-summary:hover { background: var(--color-surface); }
.embed-disclosure-summary:focus-visible { outline: 3px solid var(--color-blue-300); outline-offset: -3px; }
.embed-disclosure-body { padding: 0 var(--space-4) var(--space-4); }

.session-row-role {
  appearance: none; font-family: inherit; font-size: var(--fs-xs); color: var(--color-ink-900);
  padding: 5px 26px 5px 9px; border: 1px solid var(--color-border); border-radius: var(--radius-sm);
  background: var(--color-white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 6px center;
  background-size: 14px; cursor: pointer;
}
.session-row-role:disabled { opacity: 0.5; cursor: wait; }

/* ---- Settings / branding (bridges/embed/settings/) ------------------- */
.embed-settings-grid { display: grid; grid-template-columns: minmax(0, 460px) 1fr; gap: var(--space-6); align-items: start; }
.embed-settings-card { margin: 0; }
.embed-settings-note { font-size: var(--fs-sm); }
.embed-settings-note h2 { font-size: var(--fs-md); }
.embed-settings-note p { margin-bottom: var(--space-3); }
@media (max-width: 860px) { .embed-settings-grid { grid-template-columns: 1fr; } }

.embed-brand-colour-row { display: flex; align-items: center; gap: var(--space-2); }
.embed-brand-colour-row input[type="color"] {
  width: 48px; height: 44px; padding: 4px; flex-shrink: 0;
  border: 1px solid var(--color-border); border-radius: var(--radius-sm);
  background: var(--color-white); cursor: pointer;
}
.embed-brand-colour-row input[type="text"] { flex: 1; min-width: 0; text-transform: lowercase; }

.embed-brand-logo-field .btn { margin-top: 4px; }
.embed-brand-nobg {
  display: flex; align-items: center; gap: 8px;
  margin-top: var(--space-2); font-size: var(--fs-xs); color: var(--color-ink-700);
}
.embed-brand-nobg input { width: 15px; height: 15px; accent-color: var(--color-blue-500); }
.embed-brand-previews { display: flex; gap: var(--space-2); margin-top: var(--space-3); }
.embed-brand-previews span {
  display: flex; align-items: center; justify-content: center;
  width: 132px; height: 60px; border-radius: var(--radius-sm);
  border: 1px solid var(--color-border);
}
/* the "on your header" swatch mirrors the real branded header colour so a
   transparent logo previews exactly as it will appear (and a logo with a
   baked-in background shows its mismatched block here, before saving). */
.embed-brand-previews .on-brand { background: var(--embed-brand-dark, var(--color-navy-900)); }
.embed-brand-previews .on-light { background: #ffffff; }
.embed-brand-previews img { max-width: 116px; max-height: 46px; width: auto; display: block; }
.embed-brand-previews-caption { font-size: var(--fs-xs); margin: 4px 0 0; }

.embed-settings-reset { margin: var(--space-4) 0 0; text-align: center; }
[data-embed-brand-status] { font-weight: 600; }
[data-embed-brand-status].is-error { color: var(--bridges-e); }

.embed-settings-privacy { margin-top: var(--space-5); max-width: 640px; }
.embed-toggle {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: var(--fs-sm); font-weight: 600; color: var(--color-ink-900); cursor: pointer;
}
.embed-toggle input { width: 16px; height: 16px; margin-top: 2px; accent-color: var(--color-blue-500); flex-shrink: 0; }
[data-embed-privacy-status] { font-weight: 600; }
[data-embed-privacy-status].is-error { color: var(--bridges-e); }

/* ==================================================================
   Embed member hub — the organisation's BRIDGES dashboard
   (bridges/embed/home/). Navy hero with BRIDGES-colour glows, then a
   framed panel of four premium modules, each with its own BRIDGES
   accent. Shares .hub-card / .accent-* / .hub-card-icon / .hub-card-tier
   with the Develop hub.
   ================================================================== */

/* ---- Hero ---- */
.embed-hero {
  padding-block: var(--space-7) var(--space-7);
  isolation: isolate;
}
.embed-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background:
    radial-gradient(650px circle at 88% -25%, color-mix(in srgb, var(--bridges-d) 62%, transparent), transparent 60%),
    radial-gradient(520px circle at 0% 130%, color-mix(in srgb, var(--bridges-i) 40%, transparent), transparent 55%),
    radial-gradient(420px circle at 62% 120%, color-mix(in srgb, var(--bridges-e) 30%, transparent), transparent 55%);
}
.embed-hero > .container { position: relative; }
.embed-hero-utility {
  position: absolute;
  top: calc(-1 * var(--space-4));
  right: 0;
  margin: 0;
  font-size: var(--fs-xs);
  color: rgba(255, 255, 255, 0.5);
}
.embed-hero-utility .link-button { color: rgba(255, 255, 255, 0.78); }
.embed-hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: var(--space-3);
  padding: 5px 13px 5px 11px;
  border-radius: 999px;
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: #fff;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.16);
}
.embed-hero-badge::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--bridges-i);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--bridges-i) 30%, transparent);
}
.embed-hero h1 {
  font-size: var(--fs-2xl);
  letter-spacing: -0.02em;
  margin: 0 0 var(--space-2);
}
.embed-hero .lede {
  max-width: 46ch;
  margin: 0;
  color: rgba(255, 255, 255, 0.82);
}
@media (max-width: 640px) {
  .embed-hero-utility { position: static; margin-bottom: var(--space-3); }
}

html[data-embed-branded] .embed-hero {
  background: linear-gradient(135deg,
    var(--embed-brand-deep, var(--color-navy-950)) 0%,
    var(--color-navy-900) 58%,
    var(--embed-brand-dark, var(--color-blue-600)) 135%);
}
html[data-embed-branded] .embed-hero::before {
  background:
    radial-gradient(650px circle at 88% -25%, color-mix(in srgb, var(--embed-brand) 52%, transparent), transparent 60%),
    radial-gradient(520px circle at 0% 130%, color-mix(in srgb, var(--bridges-i) 32%, transparent), transparent 55%),
    radial-gradient(420px circle at 62% 120%, color-mix(in srgb, var(--embed-brand2, var(--bridges-e)) 26%, transparent), transparent 55%);
}
html[data-embed-branded] .embed-hero-badge::before {
  background: var(--embed-brand2, var(--bridges-i));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--embed-brand2, var(--bridges-i)) 30%, transparent);
}

/* ---- Dashboard panel ---- */
.embed-hub-section { padding-block: var(--space-6) var(--space-8); background: var(--color-surface); }
.embed-hub-panel {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
}
.embed-hub-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-4);
}
@media (min-width: 1180px) { .embed-hub-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 600px)  {
  .embed-hub-grid { grid-template-columns: 1fr; }
  /* Drop the panel's card-in-card chrome on mobile: each hub card already
     carries its own surface, so the nested inset just crushed the content
     and pushed it out of line with the hero above. */
  .embed-hub-panel { padding: 0; background: none; border: 0; box-shadow: none; }
  .embed-hub-grid .embed-hub-card { padding: var(--space-4); }
}

/* ---- Card — premium module (extends .hub-card) ---- */
.embed-hub-card {
  gap: var(--space-2);
  padding: var(--space-5) var(--space-4);
  border-top-width: 4px;
  box-shadow: var(--shadow-sm);
  transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
}
.embed-hub-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
  border-color: color-mix(in srgb, var(--hc-accent) 45%, var(--color-border));
}
.embed-hub-card .hub-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 11px;
  background: color-mix(in srgb, var(--hc-accent) 13%, var(--color-white));
  color: var(--hc-accent);
  margin-bottom: var(--space-1);
  transition: background 200ms ease;
}
.embed-hub-card:hover .hub-card-icon { background: color-mix(in srgb, var(--hc-accent) 20%, var(--color-white)); }
.embed-hub-card .hub-card-icon svg { width: 21px; height: 21px; }
.embed-hub-card .hub-card-tier { font-size: var(--fs-xs); letter-spacing: 0.08em; }
.embed-hub-card h3 { font-size: var(--fs-md); line-height: 1.25; }
.embed-hub-card > p:not(.hub-card-tier) { font-size: var(--fs-sm); color: var(--color-ink-700); line-height: 1.5; }

/* Two stacked actions where ONE carries a tinted background. It sits on the
   primary by default and moves to the lower action while that one is
   hovered/focused. The tint is a real background on the action itself (not
   a fixed-size overlay) so it always wraps the label, at any text size or
   column width. On touch there's no hover, so js/embed-hub-cards.js slides
   a .embed-hub-tint-drop copy from the primary down to the lower action
   before following the link — see that file. */
.embed-hub-card-actions {
  position: relative;
  margin-top: auto;
  padding-top: var(--space-4);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.embed-hub-action.is-primary {
  background: color-mix(in srgb, var(--hc-accent) 14%, var(--color-white));
}
/* Slid on tap by js/embed-hub-cards.js: a tinted copy of the active pill that
   glides from the primary action down onto the lower one (Web Animations API),
   then navigation follows. Purely decorative, JS-positioned. */
.embed-hub-tint-drop {
  position: absolute;
  left: 0;
  right: 0;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--hc-accent) 22%, var(--color-white));
  pointer-events: none;
  z-index: 0;
}
.embed-hub-card:hover .embed-hub-action.is-primary {
  background: color-mix(in srgb, var(--hc-accent) 20%, var(--color-white));
}
.embed-hub-card-actions:has(.embed-hub-action:last-child:hover) .embed-hub-action.is-primary,
.embed-hub-card-actions:has(.embed-hub-action:last-child:focus-visible) .embed-hub-action.is-primary {
  background: transparent;
}
.embed-hub-card-actions:has(.embed-hub-action:last-child:hover) .embed-hub-action:last-child,
.embed-hub-card-actions:has(.embed-hub-action:last-child:focus-visible) .embed-hub-action:last-child {
  background: color-mix(in srgb, var(--hc-accent) 22%, var(--color-white));
}

.embed-hub-action {
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  min-height: 42px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-ink-700);
  transition: color 180ms ease, background 180ms ease;
}
.embed-hub-action.is-primary { font-weight: 700; color: var(--color-ink-900); }
.embed-hub-action svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
  color: var(--hc-accent);
  transition: transform 180ms ease;
}
.embed-hub-action:hover { color: var(--color-ink-900); }
.embed-hub-action:hover svg { transform: translateX(3px); }
/* when the tint is on the lower action, promote its label and quieten the primary */
.embed-hub-card-actions:has(.embed-hub-action:last-child:hover) .embed-hub-action.is-primary { color: var(--color-ink-700); font-weight: 600; }
.embed-hub-card-actions:has(.embed-hub-action:last-child:hover) .embed-hub-action:last-child { color: var(--color-ink-900); font-weight: 700; }

/* ---- Organisation sub-nav: a touch more dashboard, less menu bar ---- */
.embed-subnav { box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); }
.embed-subnav-brand::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 9px;
  border-radius: 50%;
  background: currentColor;
  vertical-align: middle;
  opacity: 0.8;
}
.embed-subnav-links a[aria-current="page"] { border-bottom-width: 3px; }

/* Per-review "in my organisation's picture" toggle in the Review Hub session list */
.session-row-share { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-xs); color: var(--color-ink-700); white-space: nowrap; }
.session-row-share input { width: 14px; height: 14px; }

/* ---- Responsive ------------------------------------------------- */
@media (max-width: 980px) {
  .embed-picture { grid-template-columns: 1fr; }
  .embed-next-step { border-left: 0; border-top: 1px solid var(--color-border); padding-left: 0; padding-top: var(--space-4); }
  .embed-profile { grid-template-columns: 1fr; gap: var(--space-5); }
}
@media (max-width: 840px) {
  .embed-summary-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
  .embed-summary-grid { grid-template-columns: 1fr; }
  .embed-intro-head h1 { font-size: var(--fs-xl); }
}

/* ---- Print ---------------------------------------------------- */
@media print {
  .embed-subnav, .develop-subnav, .embed-intro-utility, .embed-period,
  .embed-print, .embed-viewall, .embed-personal-link, [data-embed-print] { display: none !important; }
  .embed-intro { background: #fff; border: 0; }
  .embed-summary-card, .embed-picture, .embed-priority, .embed-signpost,
  .resource-card, .hub-card {
    box-shadow: none;
    border: 1px solid #ccc;
    break-inside: avoid;
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }
}

/* ==========================================================================
   Develop BRIDGES — the member's own development environment
   (secondary nav across bridges/explore/home + bridges/explore/dashboard +
   bridges/develop/elements/*). Reuses the Embed .embed-picture /
   .embed-priority / .embed-status-pill / .hub-card / .embed-element-*
   components; adds only a compact hub picture strip and a scoped status
   colour so the personal views read as development, not inspection.
   ========================================================================== */

/* Compact "your BRIDGES picture" strip on the member hub, above the tools. */
.develop-picture-strip {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
  margin-bottom: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.develop-picture-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-3);
  font-size: var(--fs-xs);
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--color-ink-700);
}
.develop-picture-text {
  margin: 0;
  font-size: var(--fs-md);
  line-height: 1.5;
  color: var(--color-ink-900);
  text-wrap: pretty;
}
.develop-picture-next {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  margin-top: 2px;
  padding: 4px 12px;
  border-radius: var(--radius-full);
  background: color-mix(in srgb, var(--cycle-deliver) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--cycle-deliver) 32%, transparent);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-blue-600);
}
.develop-picture-next svg { width: 15px; height: 15px; transition: transform var(--transition); }
.develop-picture-next:hover svg { transform: translateX(3px); }
.develop-picture-strip .btn { align-self: flex-start; }

/* Review Hub: developmental, not RAG. The lowest band goes blue, not red —
   scoped to the personal dashboard so the shared facilitator live-results
   view (review/results/) keeps its existing traffic lights. */
#review-dashboard .results-status-dot.is-alert {
  background: var(--color-blue-500);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-blue-500) 18%, transparent);
}
#review-dashboard .review-picture { margin-bottom: var(--space-5); }
#review-dashboard .embed-picture,
#develop-element .embed-picture { padding: var(--space-4); }
/* Keep the picture prose readable now the dashboard shell is wider. */
#review-dashboard .embed-picture-narrative p:not(.eyebrow) { max-width: 60ch; }
#review-dashboard .embed-priorities { margin-top: var(--space-3); }

/* Radar + priorities side by side, like the organisation dashboard. */
#review-dashboard .review-profile {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-5) var(--space-6);
  align-items: start;
  margin: var(--space-4) 0 var(--space-5);
}
@media (max-width: 860px) {
  #review-dashboard .review-profile { grid-template-columns: 1fr; }
}
#review-dashboard .review-profile h3 { font-size: var(--fs-md); margin: 0 0 var(--space-3); }
#review-dashboard .review-profile .org-radar-wrap { max-width: 340px; margin: 0 auto; }
#review-dashboard .review-profile .embed-priorities { margin-top: 0; }
#review-dashboard .review-profile-scale {
  font-size: var(--fs-xs);
  text-align: center;
  margin: var(--space-2) auto 0;
  max-width: 34ch;
}
#review-dashboard .review-sessions-panel { margin-top: var(--space-6); }
#review-dashboard .review-sessions-panel #review-dashboard-session-list { margin-top: var(--space-3); }

/* Develop element page: three real tools, linked with the element named. */
.develop-tool-list { display: flex; flex-direction: column; gap: var(--space-2); }
.develop-tool-list a {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-white);
  font-weight: 600;
  font-size: var(--fs-sm);
  color: var(--color-ink-900);
  transition: box-shadow var(--transition), transform var(--transition);
}
.develop-tool-list a:hover { box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.develop-tool-list svg { width: 18px; height: 18px; color: var(--cycle-deliver); flex-shrink: 0; }
.develop-tool-list a .develop-tool-arrow { margin-left: auto; color: var(--color-ink-700); width: 16px; height: 16px; }
