/*
 * CAH Design System - component layer.
 * Every component is token-driven. No component hard-codes a colour or size.
 */

/* ==================================================================
 * Buttons
 * ================================================================== */
.cah-btn {
  --btn-bg: var(--cah-primary);
  --btn-fg: var(--cah-on-primary);
  --btn-bd: transparent;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--cah-space-2);
  min-height: var(--cah-control-h);
  padding: 0 var(--cah-space-6);
  border: 1px solid var(--btn-bd);
  border-radius: var(--cah-control-radius);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font: var(--cah-fw-semibold) var(--cah-fs-button)/1.2 var(--cah-font-sans);
  text-decoration: none;
  cursor: pointer;
  text-align: center;
  transition: background-color var(--cah-dur) var(--cah-ease-out),
              color var(--cah-dur) var(--cah-ease-out),
              border-color var(--cah-dur) var(--cah-ease-out),
              transform var(--cah-dur-fast) var(--cah-ease-out),
              box-shadow var(--cah-dur) var(--cah-ease-out);
}
.cah-btn:hover { background: var(--cah-primary-soft); color: var(--btn-fg); transform: translateY(-1px); box-shadow: var(--cah-shadow-md); }
.cah-btn:active { transform: translateY(0); box-shadow: var(--cah-shadow-xs); }
.cah-btn[disabled], .cah-btn[aria-disabled="true"] { opacity: .5; pointer-events: none; }

.cah-btn--lg { min-height: var(--cah-control-h-lg); padding-inline: var(--cah-space-8); font-size: var(--cah-fs-body-lg); }
.cah-btn--sm { min-height: var(--cah-control-h-sm); padding-inline: var(--cah-space-4); font-size: var(--cah-fs-small); }
.cah-btn--block { display: flex; width: 100%; }

.cah-btn--accent { --btn-bg: var(--cah-accent); --btn-fg: var(--cah-on-accent); }
.cah-btn--accent:hover { background: var(--cah-accent-strong); color: #fff; }

.cah-btn--secondary { --btn-bg: var(--cah-secondary); --btn-fg: var(--cah-on-secondary); }
.cah-btn--secondary:hover { background: var(--cah-secondary-strong); }

.cah-btn--outline { --btn-bg: transparent; --btn-fg: var(--cah-primary); --btn-bd: var(--cah-border-strong); }
.cah-btn--outline:hover { background: var(--cah-primary-tint); border-color: var(--cah-primary); color: var(--cah-primary); }

.cah-btn--ghost { --btn-bg: transparent; --btn-fg: var(--cah-primary); }
.cah-btn--ghost:hover { background: var(--cah-primary-tint); box-shadow: none; }

.cah-btn--on-dark { --btn-bg: #fff; --btn-fg: var(--cah-primary); }
.cah-btn--on-dark:hover { background: var(--cah-neutral-100); color: var(--cah-primary); }
.cah-btn--outline-on-dark { --btn-bg: transparent; --btn-fg: #fff; --btn-bd: rgba(255,255,255,.34); }
.cah-btn--outline-on-dark:hover { background: rgba(255,255,255,.10); border-color: rgba(255,255,255,.6); color: #fff; }

/* Arrow that advances on hover - part of the shared motion language. */
.cah-btn__arrow { transition: transform var(--cah-dur) var(--cah-ease-out); flex: none; }
.cah-btn:hover .cah-btn__arrow { transform: translateX(3px); }
@media (prefers-reduced-motion: reduce) {
  .cah-btn:hover { transform: none; }
  .cah-btn:hover .cah-btn__arrow { transform: none; }
}

/* ==================================================================
 * Surfaces and cards
 * ================================================================== */
.cah-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--cah-surface);
  border: 1px solid var(--cah-border-soft);
  border-radius: var(--cah-radius-lg);
  padding: var(--cah-space-6);
  box-shadow: var(--cah-shadow-xs);
}
.cah-card--flush { padding: 0; overflow: hidden; }
.cah-card--tint { background: var(--cah-surface-alt); }
.cah-card__title { font-size: var(--cah-fs-h4); margin-bottom: var(--cah-space-2); }
.cah-card__body { color: var(--cah-text-soft); font-size: var(--cah-fs-small); margin: 0; }
.cah-card__footer { margin-top: auto; padding-top: var(--cah-space-5); }

/* Whole-card link target without nesting interactive elements. */
.cah-card--linked .cah-card__link::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit;
}
.cah-card--linked:focus-within { outline: 3px solid var(--cah-focus-ring); outline-offset: 2px; }
.cah-card--linked .cah-card__link:focus-visible { outline: none; }

/* ==================================================================
 * Badges, pills, notices
 * ================================================================== */
.cah-badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px;
  border-radius: var(--cah-radius-pill);
  background: var(--cah-primary-tint);
  color: var(--cah-primary);
  font-size: var(--cah-fs-caption);
  font-weight: var(--cah-fw-semibold);
  line-height: 1.4;
}
.cah-badge--secondary { background: var(--cah-secondary-tint); color: var(--cah-secondary-strong); }
.cah-badge--accent { background: var(--cah-accent-tint); color: var(--cah-accent-strong); }
.cah-badge--neutral { background: var(--cah-bg-alt); color: var(--cah-text-muted); }

.cah-notice {
  display: flex; gap: var(--cah-space-3);
  padding: var(--cah-space-5);
  border-radius: var(--cah-radius-md);
  border: 1px solid var(--cah-border-soft);
  background: var(--cah-surface-alt);
  font-size: var(--cah-fs-small);
  color: var(--cah-text-soft);
}
.cah-notice__icon { flex: none; margin-top: 2px; color: var(--cah-text-muted); }
.cah-notice strong { color: var(--cah-text); }
.cah-notice--info { background: var(--cah-info-tint); border-color: #C9DCF2; }
.cah-notice--info .cah-notice__icon { color: var(--cah-info); }
.cah-notice--warning { background: var(--cah-warning-tint); border-color: #F0DDBE; }
.cah-notice--warning .cah-notice__icon { color: var(--cah-warning); }
.cah-notice--error { background: var(--cah-error-tint); border-color: #F0CDCB; }
.cah-notice--error .cah-notice__icon { color: var(--cah-error); }
.cah-notice--success { background: var(--cah-success-tint); border-color: #C4E3D3; }
.cah-notice--success .cah-notice__icon { color: var(--cah-success); }

/* Legal notices are deliberately plain and never visually de-emphasised. */
.cah-legal-notice {
  border-left: 3px solid var(--cah-secondary);
  background: var(--cah-surface-alt);
  padding: var(--cah-space-5) var(--cah-space-6);
  border-radius: 0 var(--cah-radius-md) var(--cah-radius-md) 0;
  font-size: var(--cah-fs-small);
  color: var(--cah-text-soft);
}
.cah-legal-notice p { margin-bottom: var(--cah-space-3); }

/* Unconfigured business facts are visibly flagged, never invented. */
.cah-placeholder {
  display: inline-block;
  padding: 1px 7px;
  border: 1px dashed var(--cah-warning);
  border-radius: var(--cah-radius-xs);
  background: var(--cah-warning-tint);
  color: var(--cah-warning);
  font-size: .82em;
  font-weight: var(--cah-fw-semibold);
  letter-spacing: .02em;
  white-space: nowrap;
}
.cah-review-flag {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: var(--cah-radius-xs);
  background: var(--cah-warning-tint);
  border: 1px dashed var(--cah-warning);
  color: var(--cah-warning);
  font-size: var(--cah-fs-caption);
  font-weight: var(--cah-fw-semibold);
}

/* ==================================================================
 * Empty / error / loading states
 * ================================================================== */
.cah-state {
  text-align: center;
  padding: var(--cah-space-16) var(--cah-space-6);
  border: 1px dashed var(--cah-border);
  border-radius: var(--cah-radius-lg);
  background: var(--cah-surface-alt);
}
.cah-state__icon { color: var(--cah-neutral-400); margin: 0 auto var(--cah-space-4); }
.cah-state__title { font-size: var(--cah-fs-h4); margin-bottom: var(--cah-space-2); }
.cah-state__body { color: var(--cah-text-muted); max-width: 46ch; margin-inline: auto; font-size: var(--cah-fs-small); }
.cah-state__actions { margin-top: var(--cah-space-6); display: flex; gap: var(--cah-space-3); justify-content: center; flex-wrap: wrap; }

/* ==================================================================
 * Forms
 * ================================================================== */
.cah-field { display: flex; flex-direction: column; gap: var(--cah-space-2); margin-bottom: var(--cah-space-5); }
.cah-label { font-size: var(--cah-fs-small); font-weight: var(--cah-fw-semibold); color: var(--cah-text); }
.cah-label__optional { font-weight: var(--cah-fw-regular); color: var(--cah-text-muted); }
.cah-hint { font-size: var(--cah-fs-caption); color: var(--cah-text-muted); }

.cah-input, .cah-select, .cah-textarea {
  width: 100%;
  min-height: var(--cah-control-h);
  padding: 12px 14px;
  border: 1px solid var(--cah-border-strong);
  border-radius: var(--cah-control-radius);
  background: var(--cah-surface);
  color: var(--cah-text);
  font: var(--cah-fw-regular) var(--cah-fs-body)/1.4 var(--cah-font-sans);
  transition: border-color var(--cah-dur) var(--cah-ease-out), box-shadow var(--cah-dur) var(--cah-ease-out);
}
.cah-textarea { min-height: 120px; padding-top: 12px; resize: vertical; }
.cah-input:hover, .cah-select:hover, .cah-textarea:hover { border-color: var(--cah-neutral-500); }
.cah-input:focus, .cah-select:focus, .cah-textarea:focus {
  outline: none;
  border-color: var(--cah-secondary);
  box-shadow: 0 0 0 3px var(--cah-secondary-tint);
}
.cah-input[aria-invalid="true"], .cah-select[aria-invalid="true"], .cah-textarea[aria-invalid="true"] {
  border-color: var(--cah-error);
  box-shadow: 0 0 0 3px var(--cah-error-tint);
}
.cah-error-text {
  display: flex; align-items: flex-start; gap: 6px;
  font-size: var(--cah-fs-caption);
  color: var(--cah-error);
  font-weight: var(--cah-fw-medium);
}

/* Large choice targets - used heavily by Case Check on mobile. */
.cah-choice {
  position: relative;
  display: flex; align-items: center; gap: var(--cah-space-4);
  min-height: 64px;
  padding: var(--cah-space-4) var(--cah-space-5);
  border: 1.5px solid var(--cah-border);
  border-radius: var(--cah-radius-md);
  background: var(--cah-surface);
  cursor: pointer;
  transition: border-color var(--cah-dur) var(--cah-ease-out), background-color var(--cah-dur) var(--cah-ease-out), box-shadow var(--cah-dur) var(--cah-ease-out);
}
.cah-choice:hover { border-color: var(--cah-secondary); background: var(--cah-secondary-tint); }
.cah-choice input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.cah-choice__mark {
  flex: none; width: 22px; height: 22px;
  border: 2px solid var(--cah-border-strong);
  border-radius: 50%;
  display: grid; place-items: center;
  transition: border-color var(--cah-dur) var(--cah-ease-out), background-color var(--cah-dur) var(--cah-ease-out);
}
.cah-choice--multi .cah-choice__mark { border-radius: 6px; }
.cah-choice__mark::after {
  content: ""; width: 10px; height: 10px; border-radius: inherit;
  background: #fff; transform: scale(0); transition: transform var(--cah-dur) var(--cah-ease-spring);
}
.cah-choice input:checked ~ .cah-choice__mark { border-color: var(--cah-secondary); background: var(--cah-secondary); }
.cah-choice input:checked ~ .cah-choice__mark::after { transform: scale(1); }
.cah-choice:has(input:checked) { border-color: var(--cah-secondary); background: var(--cah-secondary-tint); box-shadow: var(--cah-shadow-sm); }
.cah-choice:has(input:focus-visible) { outline: 3px solid var(--cah-focus-ring); outline-offset: 2px; }
.cah-choice__label { font-weight: var(--cah-fw-semibold); }
.cah-choice__desc { display: block; font-weight: var(--cah-fw-regular); font-size: var(--cah-fs-caption); color: var(--cah-text-muted); margin-top: 2px; }

/* ==================================================================
 * Accordion
 * ================================================================== */
.cah-accordion { border-top: 1px solid var(--cah-border-soft); }
.cah-accordion__item { border-bottom: 1px solid var(--cah-border-soft); }
.cah-accordion__trigger {
  width: 100%;
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--cah-space-4);
  padding: var(--cah-space-5) 0;
  background: none; border: 0;
  font: var(--cah-fw-semibold) var(--cah-fs-h4)/1.4 var(--cah-font-sans);
  color: var(--cah-primary);
  text-align: left; cursor: pointer;
  min-height: var(--cah-tap-min);
}
.cah-accordion__trigger:hover { color: var(--cah-secondary-strong); }
.cah-accordion__icon {
  flex: none; margin-top: 3px;
  transition: transform var(--cah-dur) var(--cah-ease-out);
}
.cah-accordion__trigger[aria-expanded="true"] .cah-accordion__icon { transform: rotate(180deg); }
.cah-accordion__panel { overflow: hidden; transition: height var(--cah-dur) var(--cah-ease-out); }
.cah-accordion__inner { padding-bottom: var(--cah-space-6); color: var(--cah-text-soft); max-width: var(--cah-reading-max); }
@media (prefers-reduced-motion: reduce) {
  .cah-accordion__panel { transition: none; }
  .cah-accordion__trigger[aria-expanded="true"] .cah-accordion__icon { transform: none; }
}

/* ==================================================================
 * Breadcrumbs
 * ================================================================== */
.cah-breadcrumbs { font-size: var(--cah-fs-caption); color: var(--cah-text-muted); }
.cah-breadcrumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.cah-breadcrumbs li { margin: 0; display: flex; align-items: center; gap: 6px; }
.cah-breadcrumbs a { color: var(--cah-text-muted); text-decoration: none; }
.cah-breadcrumbs a:hover { color: var(--cah-link); text-decoration: underline; }
.cah-breadcrumbs [aria-current] { color: var(--cah-text); font-weight: var(--cah-fw-medium); }
.cah-breadcrumbs__sep { color: var(--cah-neutral-400); }

/* ==================================================================
 * Table of contents
 * ================================================================== */
.cah-toc { font-size: var(--cah-fs-small); }
.cah-toc__title { font-size: var(--cah-fs-caption); text-transform: uppercase; letter-spacing: var(--cah-ls-eyebrow); color: var(--cah-text-muted); font-weight: var(--cah-fw-semibold); margin-bottom: var(--cah-space-3); }
.cah-toc ul { list-style: none; margin: 0; padding: 0; border-left: 2px solid var(--cah-border-soft); }
.cah-toc li { margin: 0; }
.cah-toc a {
  display: block; padding: 7px 0 7px 14px; margin-left: -2px;
  border-left: 2px solid transparent;
  color: var(--cah-text-muted); text-decoration: none; line-height: 1.4;
  transition: color var(--cah-dur) var(--cah-ease-out), border-color var(--cah-dur) var(--cah-ease-out);
}
.cah-toc a:hover { color: var(--cah-link); }
.cah-toc a[aria-current] { color: var(--cah-primary); border-left-color: var(--cah-secondary); font-weight: var(--cah-fw-semibold); }
@media (min-width: 1025px) { .cah-toc--sticky { position: sticky; top: calc(var(--cah-header-h) + 24px); max-height: calc(100vh - var(--cah-header-h) - 48px); overflow-y: auto; } }

/* ==================================================================
 * Long-form editorial content
 * ================================================================== */
.cah-prose { max-width: var(--cah-reading-max); font-size: var(--cah-fs-body-lg); line-height: var(--cah-lh-relaxed); color: var(--cah-text-soft); }
.cah-prose > * + * { margin-top: var(--cah-space-5); }
.cah-prose h2 { margin-top: var(--cah-space-12); font-size: var(--cah-fs-h2); }
.cah-prose h3 { margin-top: var(--cah-space-10); font-size: var(--cah-fs-h3); }
.cah-prose h2:first-child, .cah-prose h3:first-child { margin-top: 0; }
.cah-prose ul, .cah-prose ol { padding-left: 1.4em; }
.cah-prose li::marker { color: var(--cah-secondary); }
.cah-prose blockquote {
  margin: var(--cah-space-8) 0; padding: var(--cah-space-5) var(--cah-space-6);
  border-left: 3px solid var(--cah-secondary); background: var(--cah-secondary-tint);
  border-radius: 0 var(--cah-radius-md) var(--cah-radius-md) 0; font-size: var(--cah-fs-body);
}
.cah-prose table { width: 100%; border-collapse: collapse; font-size: var(--cah-fs-small); }
.cah-prose th, .cah-prose td { padding: 12px 14px; border: 1px solid var(--cah-border-soft); text-align: left; vertical-align: top; }
.cah-prose thead th { background: var(--cah-bg-alt); color: var(--cah-primary); font-weight: var(--cah-fw-semibold); }
.cah-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.cah-quick-answer {
  padding: var(--cah-space-6);
  background: var(--cah-primary-tint);
  border: 1px solid #D5DEEC;
  border-radius: var(--cah-radius-lg);
}
.cah-quick-answer__label { font-size: var(--cah-fs-caption); text-transform: uppercase; letter-spacing: var(--cah-ls-eyebrow); font-weight: var(--cah-fw-semibold); color: var(--cah-navy-600); margin-bottom: var(--cah-space-2); }
.cah-quick-answer p { font-size: var(--cah-fs-body-lg); color: var(--cah-text); margin: 0; }

.cah-checklist { list-style: none; padding: 0; }
.cah-checklist li { display: flex; gap: var(--cah-space-3); align-items: flex-start; margin-bottom: var(--cah-space-3); }
.cah-checklist li::before {
  content: ""; flex: none; width: 20px; height: 20px; margin-top: 3px;
  border-radius: 50%; background: var(--cah-secondary-tint);
  box-shadow: inset 0 0 0 1.5px var(--cah-secondary);
}

/* Sources and citations */
.cah-sources { font-size: var(--cah-fs-small); }
.cah-sources ol { padding-left: 1.3em; }
.cah-sources li { margin-bottom: var(--cah-space-3); color: var(--cah-text-muted); }
.cah-source__title { color: var(--cah-text); font-weight: var(--cah-fw-medium); }

/* Byline / review metadata */
.cah-byline { display: flex; flex-wrap: wrap; gap: var(--cah-space-4) var(--cah-space-6); align-items: center; font-size: var(--cah-fs-caption); color: var(--cah-text-muted); }
.cah-byline__item { display: flex; align-items: center; gap: 6px; }
.cah-byline strong { color: var(--cah-text); font-weight: var(--cah-fw-semibold); }

/* ==================================================================
 * Section header
 * ================================================================== */
.cah-section-header { max-width: 64ch; margin-bottom: var(--cah-space-12); }
.cah-section-header--center { margin-inline: auto; text-align: center; }
.cah-section-header__title { margin-bottom: var(--cah-space-4); }
.cah-section-header__intro { font-size: var(--cah-fs-body-lg); color: var(--cah-text-muted); margin: 0; }

/* ==================================================================
 * Statistic display
 * ================================================================== */
.cah-stat { display: flex; flex-direction: column; gap: 6px; }
.cah-stat__value { font-size: clamp(2rem, 1.4rem + 2.2vw, 2.75rem); font-weight: var(--cah-fw-bold); line-height: 1.05; letter-spacing: var(--cah-ls-display); color: var(--cah-primary); font-variant-numeric: tabular-nums; }
.cah-stat__label { font-size: var(--cah-fs-small); color: var(--cah-text-soft); font-weight: var(--cah-fw-medium); }
.cah-stat__source { font-size: var(--cah-fs-caption); color: var(--cah-text-muted); }
.cah-stat__source a { color: inherit; }
.cah-section--invert .cah-stat__value { color: #fff; }
.cah-section--invert .cah-stat__label { color: var(--cah-text-invert-muted); }

/* ==================================================================
 * Progressive timeline
 * ================================================================== */
.cah-timeline { position: relative; }
.cah-timeline__track { position: absolute; left: 19px; top: 8px; bottom: 8px; width: 2px; background: var(--cah-border); }
.cah-timeline__progress { position: absolute; left: 0; top: 0; width: 100%; height: 0; background: linear-gradient(180deg, var(--cah-secondary), var(--cah-teal-600)); transition: height var(--cah-dur-xslow) var(--cah-ease-out); }
.cah-timeline__step { position: relative; padding-left: 60px; padding-bottom: var(--cah-space-8); }
.cah-timeline__step:last-child { padding-bottom: 0; }
.cah-timeline__marker {
  position: absolute; left: 0; top: 0;
  width: 40px; height: 40px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--cah-surface);
  border: 2px solid var(--cah-border);
  color: var(--cah-text-muted);
  font-weight: var(--cah-fw-bold); font-size: var(--cah-fs-small);
  font-variant-numeric: tabular-nums;
  transition: border-color var(--cah-dur) var(--cah-ease-out), background-color var(--cah-dur) var(--cah-ease-out), color var(--cah-dur) var(--cah-ease-out);
  z-index: 1;
}
.cah-timeline__step.is-visible .cah-timeline__marker { border-color: var(--cah-secondary); background: var(--cah-secondary); color: #fff; }
.cah-timeline__title { font-size: var(--cah-fs-h4); margin-bottom: var(--cah-space-2); }
.cah-timeline__body { color: var(--cah-text-soft); font-size: var(--cah-fs-small); max-width: 62ch; }

/* ==================================================================
 * Header / navigation
 * ================================================================== */
.cah-header {
  position: sticky; top: 0; z-index: var(--cah-z-header);
  background: rgba(255,255,255,.86);
  backdrop-filter: saturate(1.6) blur(12px);
  -webkit-backdrop-filter: saturate(1.6) blur(12px);
  border-bottom: 1px solid transparent;
  transition: border-color var(--cah-dur) var(--cah-ease-out), box-shadow var(--cah-dur) var(--cah-ease-out), background-color var(--cah-dur) var(--cah-ease-out);
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .cah-header { background: #fff; }
}
.cah-header.is-stuck { border-bottom-color: var(--cah-border-soft); box-shadow: var(--cah-shadow-sm); background: rgba(255,255,255,.95); }
.cah-header__inner { display: flex; align-items: center; gap: var(--cah-space-6); min-height: var(--cah-header-h); }
.cah-header__brand { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--cah-primary); font-weight: var(--cah-fw-bold); font-size: 1.0625rem; letter-spacing: -0.02em; flex: none; }
.cah-header__brand:hover { color: var(--cah-primary); }
.cah-header__nav { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.cah-header__actions { display: flex; align-items: center; gap: var(--cah-space-3); flex: none; }

.cah-navlink {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 9px 12px; border-radius: var(--cah-radius-sm);
  color: var(--cah-text-soft); text-decoration: none;
  font: var(--cah-fw-medium) var(--cah-fs-nav)/1.2 var(--cah-font-sans);
  background: none; border: 0; cursor: pointer;
  transition: color var(--cah-dur) var(--cah-ease-out), background-color var(--cah-dur) var(--cah-ease-out);
}
.cah-navlink:hover { color: var(--cah-primary); background: var(--cah-primary-tint); }
.cah-navlink[aria-current="page"], .cah-navlink.is-active { color: var(--cah-primary); font-weight: var(--cah-fw-semibold); }
.cah-navlink__chev { transition: transform var(--cah-dur) var(--cah-ease-out); }
[data-cah-mega].is-open .cah-navlink__chev { transform: rotate(180deg); }
[data-cah-mega].is-open .cah-navlink { color: var(--cah-primary); background: var(--cah-primary-tint); }

.cah-mega { position: relative; }
.cah-mega__panel {
  position: absolute; top: calc(100% + 10px); left: 50%; transform: translateX(-50%);
  width: min(920px, calc(100vw - 48px));
  background: var(--cah-surface);
  border: 1px solid var(--cah-border-soft);
  border-radius: var(--cah-radius-xl);
  box-shadow: var(--cah-shadow-xl);
  padding: var(--cah-space-8);
  z-index: var(--cah-z-dropdown);
  animation: cah-mega-in var(--cah-dur) var(--cah-ease-out);
}
.cah-mega__panel[hidden] { display: none; }
@keyframes cah-mega-in { from { opacity: 0; transform: translateX(-50%) translateY(-6px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }
@media (prefers-reduced-motion: reduce) { .cah-mega__panel { animation: none; } }
.cah-mega__grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: var(--cah-space-6) var(--cah-space-8); }
.cah-mega__heading { font-size: var(--cah-fs-caption); text-transform: uppercase; letter-spacing: var(--cah-ls-eyebrow); color: var(--cah-text-muted); font-weight: var(--cah-fw-semibold); margin-bottom: var(--cah-space-3); }
.cah-mega__list { list-style: none; margin: 0; padding: 0; }
.cah-mega__link { display: block; padding: 9px 12px; margin-left: -12px; border-radius: var(--cah-radius-sm); text-decoration: none; color: var(--cah-text); transition: background-color var(--cah-dur) var(--cah-ease-out); }
.cah-mega__link:hover { background: var(--cah-bg-alt); color: var(--cah-primary); }
.cah-mega__link strong { display: block; font-weight: var(--cah-fw-semibold); font-size: var(--cah-fs-small); }
.cah-mega__link span { display: block; font-size: var(--cah-fs-caption); color: var(--cah-text-muted); margin-top: 1px; }
.cah-mega__feature { grid-column: span 1; background: var(--cah-primary-tint); border-radius: var(--cah-radius-lg); padding: var(--cah-space-5); }

.cah-nav-toggle { display: none; }

@media (max-width: 1200px) {
  .cah-header__nav { display: none; }
  .cah-header__actions .cah-btn--nav-cta { display: none; }
  .cah-nav-toggle {
    display: inline-flex; align-items: center; justify-content: center;
    width: var(--cah-tap-min); height: var(--cah-tap-min);
    margin-left: auto;
    border: 1px solid var(--cah-border); border-radius: var(--cah-radius-sm);
    background: var(--cah-surface); color: var(--cah-primary); cursor: pointer;
  }
  .cah-header__inner { min-height: var(--cah-header-h-mobile); gap: var(--cah-space-3); }
}

/* Mobile navigation is designed for thumbs, not a collapsed desktop menu. */
.cah-navpanel {
  position: fixed; inset: 0;
  width: 100%; height: 100%;
  height: 100dvh;
  z-index: var(--cah-z-modal);
  background: var(--cah-surface);
  display: flex; flex-direction: column;
  overscroll-behavior: contain;
}
.cah-navpanel[hidden] { display: none; }
html.cah-nav-open { overflow: hidden; }
.cah-navpanel__head { display: flex; align-items: center; justify-content: space-between; gap: var(--cah-space-4); padding: var(--cah-space-4) var(--cah-gutter-mobile); border-bottom: 1px solid var(--cah-border-soft); flex: none; }
.cah-navpanel__body { flex: 1; overflow-y: auto; padding: var(--cah-space-5) var(--cah-gutter-mobile) var(--cah-space-8); -webkit-overflow-scrolling: touch; }
.cah-navpanel__foot { flex: none; padding: var(--cah-space-4) var(--cah-gutter-mobile) calc(var(--cah-space-4) + env(safe-area-inset-bottom)); border-top: 1px solid var(--cah-border-soft); background: var(--cah-surface-alt); }
.cah-navpanel__group + .cah-navpanel__group { margin-top: var(--cah-space-2); border-top: 1px solid var(--cah-border-soft); padding-top: var(--cah-space-2); }
.cah-navpanel__link, .cah-navpanel__trigger {
  display: flex; align-items: center; justify-content: space-between; gap: var(--cah-space-4);
  width: 100%; min-height: 56px; padding: var(--cah-space-3) 0;
  background: none; border: 0; cursor: pointer; text-align: left; text-decoration: none;
  font: var(--cah-fw-semibold) var(--cah-fs-body-lg)/1.3 var(--cah-font-sans);
  color: var(--cah-primary);
}
.cah-navpanel__trigger .cah-accordion__icon { transition: transform var(--cah-dur) var(--cah-ease-out); }
.cah-navpanel__trigger[aria-expanded="true"] .cah-accordion__icon { transform: rotate(180deg); }
.cah-navpanel__sub { overflow: hidden; transition: height var(--cah-dur) var(--cah-ease-out); }
.cah-navpanel__sub[hidden] { display: none; }
.cah-navpanel__sub ul { list-style: none; margin: 0; padding: 0 0 var(--cah-space-4); }
.cah-navpanel__sub a { display: block; min-height: var(--cah-tap-min); padding: 11px 0 11px var(--cah-space-4); border-left: 2px solid var(--cah-border-soft); color: var(--cah-text-soft); text-decoration: none; font-size: var(--cah-fs-body); }
.cah-navpanel__sub a:hover { color: var(--cah-link); border-left-color: var(--cah-secondary); }

/* ==================================================================
 * Footer
 * ================================================================== */
.cah-footer { background: var(--cah-surface-invert); color: var(--cah-text-invert-muted); padding-block: var(--cah-space-16) var(--cah-space-8); }
.cah-footer a { color: var(--cah-text-invert-muted); text-decoration: none; }
.cah-footer a:hover { color: #fff; text-decoration: underline; }
.cah-footer__grid { display: grid; grid-template-columns: 1.4fr repeat(4, minmax(0,1fr)); gap: var(--cah-space-10) var(--cah-space-8); }
.cah-footer__heading { color: #fff; font-size: var(--cah-fs-caption); text-transform: uppercase; letter-spacing: var(--cah-ls-eyebrow); font-weight: var(--cah-fw-semibold); margin-bottom: var(--cah-space-4); }
.cah-footer__list { list-style: none; margin: 0; padding: 0; }
.cah-footer__list li { margin-bottom: var(--cah-space-3); font-size: var(--cah-fs-small); }
.cah-footer__brand { color: #fff; font-weight: var(--cah-fw-bold); font-size: 1.125rem; letter-spacing: -0.02em; margin-bottom: var(--cah-space-3); display: block; }
.cah-footer__blurb { font-size: var(--cah-fs-small); max-width: 42ch; }
.cah-footer__disclosure { margin-top: var(--cah-space-12); padding-top: var(--cah-space-8); border-top: 1px solid var(--cah-border-invert); font-size: var(--cah-fs-caption); line-height: 1.7; }
.cah-footer__disclosure p { margin-bottom: var(--cah-space-4); }
.cah-footer__bottom { margin-top: var(--cah-space-6); display: flex; flex-wrap: wrap; gap: var(--cah-space-4) var(--cah-space-6); justify-content: space-between; font-size: var(--cah-fs-caption); }
@media (max-width: 1024px) { .cah-footer__grid { grid-template-columns: repeat(2, minmax(0,1fr)); } .cah-footer__brandcol { grid-column: 1 / -1; } }
@media (max-width: 560px) { .cah-footer__grid { grid-template-columns: minmax(0,1fr); } }

/* ==================================================================
 * Trust indicators
 * ================================================================== */
.cah-trust { display: flex; flex-wrap: wrap; gap: var(--cah-space-4) var(--cah-space-8); }
.cah-trust__item { display: flex; align-items: center; gap: 9px; font-size: var(--cah-fs-small); color: var(--cah-text-soft); font-weight: var(--cah-fw-medium); }
.cah-trust__icon { flex: none; color: var(--cah-secondary); }
.cah-section--invert .cah-trust__item { color: var(--cah-text-invert-muted); }
.cah-section--invert .cah-trust__icon { color: var(--cah-teal-600); }
