/* ============================================================================
   Safe Hands Disability - Design System v2 (redesign 2026-05)
   See memory/project-redesign-2026-05.md for full design DNA + phase plan.
   Mobile-first, warm + trustworthy, NOT slick SaaS.
   ============================================================================ */

/* Load Cabinet Grotesk (display) + Inter (body). Preconnected in <head> by pages that opt-in. */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
@import url('https://api.fontshare.com/v2/css?f[]=cabinet-grotesk@700,800&display=swap');

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent; /* Remove blue tap flash on iOS */
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 72px; /* Offset for sticky header so anchor links aren't hidden */
  -webkit-text-size-adjust: 100%; /* Prevent iOS from auto-scaling text on orientation change */
  text-size-adjust: 100%;
}

@media (max-width: 768px) {
  html {
    scroll-padding-top: 60px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

:root {
  /* === Color palette (warm, trustworthy, accessible — locked in design DNA) === */
  --ink:         #1a2238;  /* Primary text - warm dark slate */
  --ink-muted:   #5b6478;  /* Secondary text - warm grey */
  --ink-subtle:  #8b94a8;  /* Tertiary text - lighter warm grey */
  --surface:     #fafaf5;  /* Page background - warm off-white */
  --surface-alt: #f3f0e8;  /* Subtle alt section background - warm cream */
  --surface-card:#ffffff;  /* Card / elevated surface - clean white */
  --border:      #e6e1d4;  /* Default border - warm cream */
  --border-strong: #d4cdba; /* Stronger border for inputs */

  --brand:       #1a5f9e;  /* Brand blue - warmer/softer than original #0052A3 */
  --brand-deep:  #103e6e;  /* Brand blue darker - for hover/active */
  --brand-soft:  #e8eff7;  /* Brand blue background tint */

  --accent:      #c9784a;  /* Single accent - warm terracotta, used sparingly */
  --accent-deep: #a55c34;  /* Accent for hover/active */
  --accent-soft: #f7ede3;  /* Accent background tint */

  --success:     #2e7d4f;  /* Green - only for success states, not brand */
  --warning:     #b27110;  /* Amber - for callouts */
  --danger:      #b3261e;  /* Red - for errors only */

  /* === Legacy aliases (so existing pages don't break during the redesign) === */
  --primary:     var(--brand);
  --secondary:   var(--success);
  --text-dark:   var(--ink);
  --text-light:  var(--ink-muted);
  --bg-light:    var(--surface);
  --bg-white:    var(--surface-card);

  /* === Shadow scale - tinted with brand hue so they don't feel generic black === */
  --shadow-xs: 0 1px 2px rgba(26, 34, 56, 0.04);
  --shadow-sm: 0 2px 6px rgba(26, 34, 56, 0.06);
  --shadow:    0 8px 24px rgba(26, 34, 56, 0.08);
  --shadow-lg: 0 16px 48px rgba(26, 34, 56, 0.12);
  --shadow-xl: 0 24px 64px rgba(26, 34, 56, 0.15);

  /* === Spacing scale (4px base, modular) === */
  --space-1:  0.25rem;
  --space-2:  0.5rem;
  --space-3:  0.75rem;
  --space-4:  1rem;
  --space-5:  1.25rem;
  --space-6:  1.5rem;
  --space-8:  2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;

  /* === Type scale (fluid clamp() so it scales naturally) === */
  --display-1: clamp(2.4rem, 6vw, 4rem);      /* Hero headline */
  --display-2: clamp(2rem, 5vw, 3rem);        /* Section heading */
  --display-3: clamp(1.6rem, 4vw, 2.25rem);   /* Subsection heading */
  --heading:   clamp(1.2rem, 2.6vw, 1.45rem); /* Card heading */
  --body-lg:   clamp(1.05rem, 2vw, 1.18rem);  /* Lead paragraph */
  --body:      1rem;                          /* Default body (16px - prevents iOS zoom) */
  --body-sm:   0.92rem;                       /* Helper text */
  --label:     0.78rem;                       /* Uppercase labels */

  /* === Border radius scale === */
  --radius-sm:  6px;
  --radius:     10px;
  --radius-lg:  16px;
  --radius-xl:  24px;
  --radius-full: 999px;

  /* === Motion (respect prefers-reduced-motion) === */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --duration: 220ms;
  --duration-slow: 380ms;

  /* === Container === */
  --container-max: 1200px;
  --container-pad: 1.25rem;

  /* === Font stacks === */
  --font-display: 'Cabinet Grotesk', 'Outfit', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-body:    'Inter', system-ui, -apple-system, 'Segoe UI', Tahoma, sans-serif;

  /* === Nav-specific (keep existing dark mode override pattern) === */
  --nav-bg: var(--surface-card);
  --nav-text: var(--ink);
  --nav-dropdown-bg: var(--surface-card);
  --nav-dropdown-sub-bg: var(--surface);
  --nav-dropdown-border: var(--border);
  --nav-dropdown-text: var(--ink);
  --nav-border-bottom: var(--border);
}

@media (min-width: 768px) {
  :root {
    --container-pad: 2rem;
  }
}

body {
  font-family: var(--font-body);
  font-size: var(--body);
  font-weight: 400;
  font-feature-settings: 'cv11', 'ss01'; /* Inter alternative glyphs - friendlier 'a' and 'l' */
  color: var(--ink);
  line-height: 1.6;
  background: var(--surface);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* Display typography - Cabinet Grotesk with character */
h1, h2, h3, h4, h5, h6, .display {
  font-family: var(--font-display);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.02em;
  color: var(--ink);
  text-wrap: balance;
}

h1, .display-1 { font-size: var(--display-1); font-weight: 800; letter-spacing: -0.025em; }
h2, .display-2 { font-size: var(--display-2); }
h3, .display-3 { font-size: var(--display-3); }

p { text-wrap: pretty; }

/* Tabular numbers for prices, stats, dates */
.tabular, time, .price, .stat { font-variant-numeric: tabular-nums; }

/* Default link style */
a { color: var(--brand); text-decoration: none; transition: color var(--duration) var(--ease-out); }
a:hover { color: var(--brand-deep); }

/* Visible focus ring for accessibility */
*:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* ============================================================================
   v2 HERO - homepage (redesign 2026-05)
   Mobile-first stack, asymmetric on desktop, no overlay-gradient-on-stock-photo
   ============================================================================ */

.hero-v2 {
  position: relative;
  background:
    radial-gradient(ellipse 80% 60% at 100% 0%, rgba(26, 95, 158, 0.07), transparent 60%),
    radial-gradient(ellipse 70% 50% at 0% 100%, rgba(201, 120, 74, 0.05), transparent 55%),
    var(--surface);
  overflow: hidden;
  padding: var(--space-10) 0 var(--space-12);
}

.hero-v2::before {
  /* Subtle warm grain overlay - adds texture without screaming */
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.1  0 0 0 0 0.13  0 0 0 0 0.22  0 0 0 0.025 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  pointer-events: none;
  opacity: 0.6;
  z-index: 0;
}

.hero-v2 .hero-grid {
  position: relative;
  z-index: 1;
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--container-pad);
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-10);
  align-items: center;
}

@media (min-width: 880px) {
  .hero-v2 .hero-grid {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
    gap: var(--space-16);
  }
  .hero-v2 { padding: var(--space-16) 0 var(--space-16); }
}

.hero-v2 .hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-size: var(--label);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-deep);
  background: var(--accent-soft);
  padding: 0.4rem 0.85rem;
  border-radius: var(--radius-full);
  margin-bottom: var(--space-6);
}

.hero-v2 .hero-eyebrow .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent);
}

.hero-v2 h1.hero-headline {
  font-size: var(--display-1);
  font-weight: 800;
  line-height: 1.04;
  letter-spacing: -0.028em;
  color: var(--ink);
  margin: 0 0 var(--space-5);
}

.hero-v2 h1.hero-headline em {
  font-style: normal;
  color: var(--brand);
  /* Subtle underline that doesn't shout */
  background-image: linear-gradient(180deg, transparent 78%, rgba(201, 120, 74, 0.28) 78%);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  padding: 0 0.05em;
}

.hero-v2 .hero-sub {
  font-size: var(--body-lg);
  line-height: 1.55;
  color: var(--ink-muted);
  max-width: 36em;
  margin: 0 0 var(--space-8);
  text-wrap: pretty;
}

.hero-v2 .hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-5);
  margin-bottom: var(--space-8);
}

.hero-v2 .btn-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  background: var(--ink);
  color: #fff;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1rem;
  padding: 0.95rem 1.6rem;
  border-radius: var(--radius);
  border: none;
  text-decoration: none;
  transition: background var(--duration) var(--ease-out), transform var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out);
  box-shadow: var(--shadow-sm);
  min-height: 48px;
  cursor: pointer;
}
.hero-v2 .btn-primary:hover {
  background: var(--brand-deep);
  color: #fff;
  box-shadow: var(--shadow);
  transform: translateY(-1px);
}
.hero-v2 .btn-primary:active { transform: translateY(0) scale(0.98); }
.hero-v2 .btn-primary .arrow { transition: transform var(--duration) var(--ease-out); }
.hero-v2 .btn-primary:hover .arrow { transform: translateX(3px); }

.hero-v2 .hero-call {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-weight: 600;
  color: var(--ink);
  text-decoration: none;
  font-size: 1rem;
  transition: color var(--duration) var(--ease-out);
  min-height: 48px;
  padding: 0.5rem 0;
}
.hero-v2 .hero-call:hover { color: var(--brand); }
.hero-v2 .hero-call .phone-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px; height: 32px;
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 50%;
  font-size: 0.85rem;
}

.hero-v2 .hero-trust {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  padding-top: var(--space-5);
  border-top: 1px solid var(--border);
  font-size: var(--body-sm);
  color: var(--ink-muted);
}
.hero-v2 .hero-trust span {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.hero-v2 .hero-trust .check {
  color: var(--success);
  font-size: 0.85rem;
}

/* === Hero visual (right column on desktop, hidden or top on mobile) === */
.hero-v2 .hero-visual {
  position: relative;
  aspect-ratio: 4 / 5;
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-xl);
  background:
    linear-gradient(180deg, transparent 55%, rgba(26, 34, 56, 0.18) 100%),
    url('https://images.pexels.com/photos/5699487/pexels-photo-5699487.jpeg?auto=compress&cs=tinysrgb&w=900&h=1125&fit=crop&fm=webp') center/cover no-repeat;
  isolation: isolate;
  order: -1; /* On mobile, show photo above text for emotional grab */
}

@media (min-width: 880px) {
  .hero-v2 .hero-visual {
    order: 0; /* Right side on desktop */
    aspect-ratio: 4 / 4.5;
    max-height: 580px;
  }
}

/* Floating credibility card on the photo - one detail that proves we're real */
.hero-v2 .hero-badge {
  position: absolute;
  bottom: var(--space-5);
  left: var(--space-5);
  right: var(--space-5);
  background: rgba(255, 255, 255, 0.96);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  display: flex;
  align-items: center;
  gap: var(--space-3);
  box-shadow: var(--shadow);
  z-index: 1;
}
.hero-v2 .hero-badge .badge-icon {
  flex-shrink: 0;
  width: 44px; height: 44px;
  border-radius: 50%;
  background: var(--accent-soft);
  color: var(--accent-deep);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
}
.hero-v2 .hero-badge .badge-text {
  font-size: var(--body-sm);
  line-height: 1.4;
  color: var(--ink);
}
.hero-v2 .hero-badge .badge-text strong {
  display: block;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 2px;
}

/* ============================================================================
   v2 SECTIONS - general scaffolding (redesign 2026-05)
   ============================================================================ */

.section-v2 {
  padding: clamp(var(--space-10), 5vw, var(--space-16)) 0;
  position: relative;
}

.section-v2.surface-alt { background: var(--surface-alt); }
.section-v2.surface-card { background: var(--surface-card); }

.section-v2 .container-v2 {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--container-pad);
}

.section-v2 .section-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-size: var(--label);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-deep);
  margin-bottom: var(--space-4);
}
.section-v2 .section-eyebrow::before {
  content: '';
  display: inline-block;
  width: 24px; height: 1.5px;
  background: var(--accent);
}

.section-v2 .section-heading {
  font-family: var(--font-display);
  font-size: var(--display-2);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.025em;
  margin: 0 0 var(--space-5);
  color: var(--ink);
  max-width: 22ch;
}
.section-v2 .section-heading.center { margin-left: auto; margin-right: auto; text-align: center; }

.section-v2 .section-lede {
  font-size: var(--body-lg);
  color: var(--ink-muted);
  line-height: 1.6;
  max-width: 60ch;
  margin: 0 0 var(--space-8);
}
.section-v2 .section-lede.center { margin-left: auto; margin-right: auto; text-align: center; }

/* Reusable text-link with arrow */
.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-weight: 600;
  color: var(--brand);
  text-decoration: none;
  transition: color var(--duration) var(--ease-out), gap var(--duration) var(--ease-out);
}
.link-arrow .arrow { transition: transform var(--duration) var(--ease-out); display: inline-block; }
.link-arrow:hover { color: var(--brand-deep); }
.link-arrow:hover .arrow { transform: translateX(3px); }

/* ============================================================================
   v2 ABOUT INTRO - "Who we are"
   Mobile: stacks. Desktop: photo left (smaller) + content right.
   ============================================================================ */

.about-v2 {
  background: var(--surface-card);
}

.about-v2 .about-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-10);
  align-items: center;
}

@media (min-width: 880px) {
  .about-v2 .about-grid {
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    gap: var(--space-16);
  }
}

.about-v2 .about-visual {
  position: relative;
  aspect-ratio: 4 / 5;
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}
.about-v2 .about-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}

/* Decorative accent shape behind photo on desktop */
.about-v2 .about-visual::before {
  content: '';
  position: absolute;
  inset: var(--space-6) calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-6);
  background: var(--accent-soft);
  border-radius: var(--radius-xl);
  z-index: -1;
  display: none;
}
@media (min-width: 880px) {
  .about-v2 .about-visual { isolation: isolate; }
  .about-v2 .about-visual::before { display: block; }
}

.about-v2 .about-points {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
  margin: var(--space-8) 0;
  padding-top: var(--space-6);
  border-top: 1px solid var(--border);
}

@media (min-width: 600px) {
  .about-v2 .about-points {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-5) var(--space-6);
  }
}

.about-v2 .about-point {
  display: flex;
  gap: var(--space-3);
  align-items: flex-start;
}
.about-v2 .about-point-icon {
  flex-shrink: 0;
  width: 36px; height: 36px;
  border-radius: var(--radius-sm);
  background: var(--brand-soft);
  color: var(--brand);
  display: flex; align-items: center; justify-content: center;
  font-size: 0.95rem;
}
.about-v2 .about-point-text strong {
  display: block;
  font-weight: 700;
  color: var(--ink);
  font-size: 0.96rem;
  margin-bottom: 2px;
}
.about-v2 .about-point-text span {
  font-size: var(--body-sm);
  color: var(--ink-muted);
  line-height: 1.5;
}

/* ============================================================================
   v2 SERVICES GRID
   Mobile: single column. Desktop: 2-col with first card featured (spans 2).
   Cards have no shadow by default - they earn their existence through spacing
   and a quiet border, not heavy chrome.
   ============================================================================ */

.services-v2 {
  background: var(--surface);
}

.services-v2 .services-head {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
  align-items: end;
  margin-bottom: var(--space-10);
}

@media (min-width: 880px) {
  .services-v2 .services-head {
    grid-template-columns: 1fr auto;
  }
  .services-v2 .services-head .section-lede {
    max-width: 36ch;
    text-align: left;
    margin: 0;
  }
  .services-v2 .services-head-text {
    max-width: 32rem;
  }
}

.services-v2 .services-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

@media (min-width: 640px) {
  .services-v2 .services-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-5);
  }
}

@media (min-width: 960px) {
  .services-v2 .services-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-5);
  }
  /* First card spans 2 columns - breaks the equal-3-tile pattern */
  .services-v2 .services-grid > .service-card-v2.featured {
    grid-column: span 2;
    grid-row: span 1;
  }
  .services-v2 .services-grid > .service-card-v2.featured .service-image {
    aspect-ratio: 16 / 9;
  }
}

.service-card-v2 {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  position: relative;
  isolation: isolate;
}

.service-card-v2:hover {
  border-color: var(--ink-muted);
  box-shadow: var(--shadow);
  transform: translateY(-2px);
}

.service-card-v2 .service-image {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--surface-alt);
}
.service-card-v2 .service-image img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 600ms var(--ease-out);
}
.service-card-v2:hover .service-image img {
  transform: scale(1.04);
}

.service-card-v2 .service-body {
  padding: var(--space-5) var(--space-5) var(--space-6);
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.service-card-v2 h3.service-title {
  font-family: var(--font-display);
  font-size: var(--heading);
  font-weight: 700;
  letter-spacing: -0.015em;
  margin: 0;
  color: var(--ink);
  line-height: 1.2;
}

.service-card-v2 p.service-desc {
  margin: 0;
  font-size: var(--body-sm);
  color: var(--ink-muted);
  line-height: 1.55;
  flex: 1;
}

.service-card-v2 .service-cta {
  margin-top: var(--space-4);
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--brand);
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.service-card-v2 .service-cta .arrow { transition: transform var(--duration) var(--ease-out); }
.service-card-v2:hover .service-cta .arrow { transform: translateX(3px); }

/* "View all services" pill at the bottom of services section */
.services-v2 .services-foot {
  margin-top: var(--space-10);
  text-align: center;
}

.btn-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  background: transparent;
  color: var(--ink);
  border: 1.5px solid var(--border-strong);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.96rem;
  padding: 0.85rem 1.6rem;
  border-radius: var(--radius-full);
  text-decoration: none;
  transition: background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out), color var(--duration) var(--ease-out);
  min-height: 48px;
}
.btn-pill:hover {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}
.btn-pill .arrow { transition: transform var(--duration) var(--ease-out); }
.btn-pill:hover .arrow { transform: translateX(3px); }

/* ============================================================================
   v2 HOW IT WORKS — 4-step timeline
   Mobile: vertical stack with connecting line. Desktop: 4-col with horizontal flow.
   ============================================================================ */

.howitworks-v2 { background: var(--surface-card); }

.howitworks-v2 .how-head {
  text-align: center;
  max-width: 48ch;
  margin: 0 auto var(--space-10);
}
.howitworks-v2 .how-head .section-eyebrow { display: inline-flex; }
.howitworks-v2 .how-head .section-heading { margin-left: auto; margin-right: auto; text-align: center; }

.howitworks-v2 .how-steps {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  max-width: 720px;
  margin: 0 auto;
  position: relative;
}

@media (min-width: 880px) {
  .howitworks-v2 .how-steps {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-6);
    max-width: 100%;
    padding: 0 var(--space-4);
  }
}

.howitworks-v2 .how-step {
  display: grid;
  grid-template-columns: 56px 1fr;
  gap: var(--space-4);
  align-items: start;
  position: relative;
}

@media (min-width: 880px) {
  .howitworks-v2 .how-step {
    grid-template-columns: 1fr;
    text-align: left;
    gap: var(--space-3);
  }
}

.howitworks-v2 .how-step-num {
  width: 56px; height: 56px;
  border-radius: 50%;
  background: var(--accent-soft);
  color: var(--accent-deep);
  border: 1.5px solid var(--accent);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.4rem;
  letter-spacing: -0.02em;
  flex-shrink: 0;
  position: relative;
  z-index: 1;
}

/* Vertical connecting line (mobile) */
.howitworks-v2 .how-step:not(:last-child)::before {
  content: '';
  position: absolute;
  left: 27px;
  top: 56px;
  bottom: calc(-1 * var(--space-8));
  width: 2px;
  background: linear-gradient(180deg, var(--accent) 0%, var(--accent-soft) 50%, var(--border) 100%);
  z-index: 0;
}

@media (min-width: 880px) {
  .howitworks-v2 .how-step:not(:last-child)::before {
    /* Horizontal line on desktop */
    left: 56px;
    top: 27px;
    bottom: auto;
    right: calc(-1 * var(--space-6));
    width: auto;
    height: 2px;
    background: linear-gradient(90deg, var(--accent) 0%, var(--accent-soft) 50%, var(--border) 100%);
  }
}

.howitworks-v2 .how-step-body h3 {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: -0.015em;
  margin: 0 0 var(--space-2);
  color: var(--ink);
  line-height: 1.25;
}

.howitworks-v2 .how-step-body p {
  margin: 0;
  font-size: var(--body-sm);
  color: var(--ink-muted);
  line-height: 1.55;
}

.howitworks-v2 .how-foot {
  text-align: center;
  margin-top: var(--space-12);
}

/* ============================================================================
   v2 DUAL-PATH — "How would you like to get started"
   Mobile: stack. Desktop: 2-col side-by-side. Quiet borders, no gradients.
   ============================================================================ */

.dualpath-v2 { background: var(--surface-alt); }

.dualpath-v2 .dual-head {
  text-align: center;
  margin: 0 auto var(--space-10);
  max-width: 48ch;
}
.dualpath-v2 .dual-head .section-eyebrow { display: inline-flex; }
.dualpath-v2 .dual-head .section-heading { margin-left: auto; margin-right: auto; }

.dualpath-v2 .dual-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
  max-width: 920px;
  margin: 0 auto;
}

@media (min-width: 760px) {
  .dualpath-v2 .dual-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-6);
  }
}

.dual-card-v2 {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  transition: border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
  position: relative;
}

.dual-card-v2:hover {
  border-color: var(--ink-muted);
  box-shadow: var(--shadow);
  transform: translateY(-2px);
}

/* Primary one gets a small visual lift */
.dual-card-v2.primary {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}
.dual-card-v2.primary:hover {
  background: var(--brand-deep);
  border-color: var(--brand-deep);
}

.dual-card-v2 .dual-badge {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: var(--space-2);
  font-size: var(--label);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.35rem 0.75rem;
  border-radius: var(--radius-full);
  background: var(--brand-soft);
  color: var(--brand-deep);
  margin-bottom: var(--space-5);
}
.dual-card-v2.primary .dual-badge {
  background: rgba(255,255,255,0.12);
  color: #fff;
}

.dual-card-v2 h3.dual-title {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  margin: 0 0 var(--space-3);
  color: inherit;
  line-height: 1.2;
}

.dual-card-v2 .dual-desc {
  margin: 0 0 var(--space-5);
  font-size: var(--body);
  line-height: 1.6;
  color: var(--ink-muted);
  flex: 1;
}
.dual-card-v2.primary .dual-desc { color: rgba(255,255,255,0.85); }

.dual-card-v2 .dual-points {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-6);
  display: grid;
  gap: var(--space-2);
}
.dual-card-v2 .dual-points li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--body-sm);
  color: var(--ink);
}
.dual-card-v2.primary .dual-points li { color: rgba(255,255,255,0.92); }
.dual-card-v2 .dual-points li i {
  color: var(--success);
  font-size: 0.85rem;
  flex-shrink: 0;
}
.dual-card-v2.primary .dual-points li i { color: #7ce0a7; }

.dual-card-v2 .dual-cta {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.85rem 1.4rem;
  border-radius: var(--radius);
  font-weight: 600;
  text-decoration: none;
  font-size: 0.96rem;
  border: 1.5px solid var(--ink);
  background: var(--ink);
  color: #fff;
  min-height: 48px;
  transition: background var(--duration) var(--ease-out), color var(--duration) var(--ease-out);
}
.dual-card-v2:not(.primary) .dual-cta:hover {
  background: var(--brand-deep);
  border-color: var(--brand-deep);
}
.dual-card-v2.primary .dual-cta {
  background: #fff;
  color: var(--ink);
  border-color: #fff;
}
.dual-card-v2.primary .dual-cta:hover {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.dual-card-v2 .dual-cta .arrow { transition: transform var(--duration) var(--ease-out); }
.dual-card-v2:hover .dual-cta .arrow { transform: translateX(3px); }

.dualpath-v2 .dual-foot {
  text-align: center;
  margin-top: var(--space-8);
  font-size: var(--body-sm);
  color: var(--ink-muted);
}
.dualpath-v2 .dual-foot a {
  color: var(--brand);
  font-weight: 600;
}

/* ============================================================================
   v2 WHY US — 4 differentiators (asymmetric, editorial)
   Mobile: 2x2 grid. Desktop: 4-col with subtle staggered offset.
   ============================================================================ */

.whyus-v2 { background: var(--surface-card); }

.whyus-v2 .why-head {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
  align-items: end;
  margin-bottom: var(--space-10);
}
@media (min-width: 880px) {
  .whyus-v2 .why-head {
    grid-template-columns: 1.2fr 1fr;
  }
  .whyus-v2 .why-head .section-lede { max-width: 32ch; margin: 0; }
}

.whyus-v2 .why-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-5);
}
@media (min-width: 768px) {
  .whyus-v2 .why-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-6);
  }
}

.why-item-v2 {
  padding: var(--space-6) 0 var(--space-5);
  border-top: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  position: relative;
}

.why-item-v2 .why-num {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  color: var(--ink-subtle);
  font-variant-numeric: tabular-nums;
}

.why-item-v2 .why-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px; height: 44px;
  border-radius: var(--radius-sm);
  background: var(--brand-soft);
  color: var(--brand);
  font-size: 1.1rem;
}

.why-item-v2 h3 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.1rem;
  letter-spacing: -0.015em;
  margin: 0;
  color: var(--ink);
  line-height: 1.2;
}

.why-item-v2 p {
  font-size: var(--body-sm);
  color: var(--ink-muted);
  line-height: 1.55;
  margin: 0;
}

/* ============================================================================
   v2 LATEST NEWS / RESEARCH — 1+2 asymmetric layout
   Mobile: stack. Desktop: 1 feature on left + 2 stacked on right.
   ============================================================================ */

.news-v2 { background: var(--surface); }

.news-v2 .news-head {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
  align-items: end;
  margin-bottom: var(--space-10);
}
@media (min-width: 880px) {
  .news-v2 .news-head {
    grid-template-columns: 1fr auto;
  }
}

.news-v2 .news-head .news-head-link {
  font-family: var(--font-body);
  font-weight: 600;
  color: var(--brand);
  text-decoration: none;
  font-size: var(--body-sm);
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.news-v2 .news-head-link .arrow { transition: transform var(--duration) var(--ease-out); }
.news-v2 .news-head-link:hover .arrow { transform: translateX(3px); }

.news-v2 .news-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}

@media (min-width: 880px) {
  .news-v2 .news-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-8);
  }
  .news-v2 .news-grid .news-side {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--space-5);
  }
}

.news-card-v2 {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
}
.news-card-v2:hover {
  border-color: var(--ink-muted);
  box-shadow: var(--shadow);
  transform: translateY(-2px);
}

.news-card-v2 .news-image {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--surface-alt);
}
.news-card-v2 .news-image img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 600ms var(--ease-out);
}
.news-card-v2:hover .news-image img { transform: scale(1.04); }

.news-card-v2 .news-body {
  padding: var(--space-5) var(--space-5) var(--space-6);
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.news-card-v2.feature .news-image { aspect-ratio: 4 / 3; }
.news-card-v2.feature .news-body { padding: var(--space-6) var(--space-6) var(--space-8); }

/* Side cards are horizontal on desktop (image left, text right) */
@media (min-width: 880px) {
  .news-card-v2.side {
    display: grid;
    grid-template-columns: 160px 1fr;
  }
  .news-card-v2.side .news-image {
    aspect-ratio: auto;
    height: 100%;
  }
  .news-card-v2.side .news-body {
    padding: var(--space-4) var(--space-5);
  }
}

.news-v2 .news-meta {
  font-size: var(--label);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--ink-subtle);
  font-variant-numeric: tabular-nums;
}

.news-v2 .news-title {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: -0.015em;
  line-height: 1.25;
  margin: 0;
  color: var(--ink);
}
.news-card-v2.feature .news-title { font-size: 1.4rem; }

.news-v2 .news-excerpt {
  font-size: var(--body-sm);
  color: var(--ink-muted);
  line-height: 1.55;
  margin: 0;
  flex: 1;
}
.news-card-v2.side .news-excerpt { display: none; }

/* ============================================================================
   v2 FINAL CTA — dark warm-slate end-of-page invitation
   Replaces old blue-green gradient SaaS CTA.
   ============================================================================ */

.finalcta-v2 {
  background: var(--ink);
  color: #fff;
  position: relative;
  overflow: hidden;
}

/* Subtle warm gradient + noise so the dark feels alive, not flat */
.finalcta-v2::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 50% at 100% 0%, rgba(201, 120, 74, 0.15), transparent 70%),
    radial-gradient(ellipse 70% 60% at 0% 100%, rgba(26, 95, 158, 0.18), transparent 65%);
  pointer-events: none;
}
.finalcta-v2::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 0.95  0 0 0 0 0.86  0 0 0 0.03 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  pointer-events: none;
  opacity: 0.5;
}

.finalcta-v2 .finalcta-inner {
  position: relative;
  z-index: 1;
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
  padding: 0 var(--container-pad);
}

.finalcta-v2 .finalcta-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-size: var(--label);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--space-5);
}
.finalcta-v2 .finalcta-eyebrow::before {
  content: '';
  display: inline-block;
  width: 24px; height: 1.5px;
  background: var(--accent);
}

.finalcta-v2 h2 {
  font-family: var(--font-display);
  font-size: var(--display-2);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin: 0 0 var(--space-5);
  color: #fff;
  text-wrap: balance;
}

.finalcta-v2 p.finalcta-sub {
  font-size: var(--body-lg);
  line-height: 1.55;
  color: rgba(255,255,255,0.78);
  max-width: 38em;
  margin: 0 auto var(--space-8);
}

.finalcta-v2 .finalcta-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-3) var(--space-5);
}

.finalcta-v2 .finalcta-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  background: #fff;
  color: var(--ink);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1rem;
  padding: 0.95rem 1.6rem;
  border-radius: var(--radius);
  text-decoration: none;
  transition: background var(--duration) var(--ease-out), color var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
  min-height: 48px;
  border: none;
}
.finalcta-v2 .finalcta-btn:hover {
  background: var(--accent);
  color: #fff;
  transform: translateY(-1px);
}
.finalcta-v2 .finalcta-btn .arrow { transition: transform var(--duration) var(--ease-out); }
.finalcta-v2 .finalcta-btn:hover .arrow { transform: translateX(3px); }

.finalcta-v2 .finalcta-call {
  color: #fff;
  font-weight: 600;
  text-decoration: none;
  font-size: 1rem;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 48px;
  padding: 0.5rem 0;
}
.finalcta-v2 .finalcta-call:hover { color: var(--accent); }
.finalcta-v2 .finalcta-call .phone-icon {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: rgba(255,255,255,0.12);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  color: #fff;
}

.container {
  max-width: 1300px;
  margin: 0 auto;
  padding: 0 2rem;
}

/* ========== HEADER & NAV ========== */
header {
  background: var(--nav-bg);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
  position: sticky;
  top: 0;
  z-index: 100;
}

.header-content {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 2rem;
  max-width: 1300px;
  margin: 0 auto;
}

.logo {
  font-size: 1.8rem;
  font-weight: 800;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-decoration: none;
}

.logo img {
  display: inline-block;
  height: 48px;
  width: auto;
  object-fit: contain;
}

nav {
  display: flex;
  gap: 1.5rem;
  align-items: center;
}

nav a {
  text-decoration: none;
  color: var(--nav-text);
  font-weight: 600;
  transition: color 0.3s;
  font-size: 0.95rem;
}

nav a:hover,
nav a:focus-visible {
  color: var(--secondary);
}

.nav-btn {
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  color: white !important;
  padding: 0.6rem 1.2rem;
  border-radius: 50px;
  font-size: 0.9rem;
}

.nav-btn:hover {
  color: white !important;
  transform: translateY(-2px);
}

.mobile-menu {
  display: none;
  font-size: 1.5rem;
  cursor: pointer;
  background: none;
  border: none;
  padding: 0.5rem;
  min-width: 44px;
  min-height: 44px;
  color: inherit;
  touch-action: manipulation;
}

/* ========== DROPDOWN NAVIGATION ========== */
.nav-dropdown {
  position: relative;
  display: inline-block;
}

.nav-dropdown::after {
  content: '';
  position: absolute;
  left: 0;
  top: 100%;
  width: 100%;
  height: 12px;
}

.nav-dropdown > a {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.5rem 0;
}

.nav-dropdown-toggle::after {
  content: '\f078';
  font-family: 'Font Awesome 6 Free';
  font-weight: 900;
  font-size: 0.7rem;
  transition: transform 0.3s;
}

.nav-dropdown:hover > .nav-dropdown-toggle::after {
  transform: rotate(180deg);
}

.dropdown-menu {
  display: none;
  position: absolute;
  background: var(--nav-dropdown-bg);
  top: 100%;
  left: 0;
  min-width: 220px;
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  border-radius: 8px;
  margin-top: 0;
  z-index: 1000;
  border: 1px solid var(--nav-dropdown-border);
}

.nav-dropdown:hover > .dropdown-menu {
  display: block;
}

.nav-dropdown.open > .dropdown-menu {
  display: block;
}

.nav-dropdown.open > .nav-dropdown-toggle::after {
  transform: rotate(180deg);
}

.dropdown-menu a {
  display: block;
  padding: 0.8rem 1.2rem;
  color: var(--nav-dropdown-text);
  text-decoration: none;
  font-weight: 500;
  font-size: 0.9rem;
  transition: all 0.3s;
  border-left: 3px solid transparent;
}

.dropdown-menu a:hover,
.dropdown-menu a:focus-visible {
  background: var(--bg-light);
  color: var(--primary);
  border-left-color: var(--primary);
  padding-left: 1.5rem;
}

.dropdown-menu a:first-child {
  border-radius: 8px 8px 0 0;
}

.dropdown-menu a:last-child {
  border-radius: 0 0 8px 8px;
}

@media (max-width: 768px) {
  nav {
    display: none;
    flex-direction: column;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--nav-bg);
    color: var(--nav-text);
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    padding: 0.5rem 0;
    z-index: 999;
    color-scheme: light; /* Prevent browser auto-dark on nav */
  }
  nav a, nav .nav-dropdown > a {
    padding: 0.75rem 1.5rem;
    display: block;
    color: var(--nav-text);
    border-bottom: 1px solid var(--nav-border-bottom);
  }
  nav .nav-dropdown {
    display: block;
  }
  nav .nav-dropdown::after {
    display: none;
  }
  nav .dropdown-menu {
    position: static;
    box-shadow: none;
    border: none;
    border-radius: 0;
    min-width: 0;
    background: var(--nav-dropdown-sub-bg);
    display: none;
    color-scheme: light;
  }
  nav .nav-dropdown.open > .dropdown-menu {
    display: block;
  }
  nav .dropdown-menu a {
    padding-left: 2.5rem;
    font-size: 0.9rem;
    border-left: none;
    color: var(--nav-dropdown-text);
    border-bottom: 1px solid var(--nav-border-bottom);
  }
  nav .dropdown-menu a:hover {
    padding-left: 2.8rem;
  }
  .header-content {
    padding: 1rem;
    position: relative;
  }
  .mobile-menu {
    display: block;
  }
}

/* ========== HERO SECTION ========== */
.hero {
  background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
  color: white;
  padding: 3.4rem 1.5rem;
  text-align: center;
  position: relative;
  overflow: hidden;
}

.hero::before {
  content: '';
  position: absolute;
  top: 0;
  right: -100px;
  width: 400px;
  height: 400px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  animation: float 6s ease-in-out infinite;
}

@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(30px); }
}

.hero-content {
  position: relative;
  z-index: 2;
  max-width: 900px;
  margin: 0 auto;
}

.hero h1 {
  font-size: 2.35rem;
  margin-bottom: 0.7rem;
  font-weight: 800;
  line-height: 1.2;
}

.hero p {
  font-size: 1.02rem;
  opacity: 0.95;
  margin-bottom: 1rem;
  line-height: 1.6;
}

.hero-buttons {
  display: flex;
  gap: 1.5rem;
  justify-content: center;
  flex-wrap: wrap;
}

.btn {
  display: inline-block;
  padding: 1rem 2.5rem;
  background: white;
  color: var(--primary);
  text-decoration: none;
  border-radius: 50px;
  font-weight: 700;
  transition: all 0.3s;
  border: 2px solid white;
  cursor: pointer;
  font-size: 1rem;
}

.btn:hover {
  transform: translateY(-3px);
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}

.btn-secondary {
  background: rgba(255, 255, 255, 0.2);
  color: white;
  border-color: white;
}

.btn-secondary:hover,
.btn-secondary:focus-visible {
  background: white;
  color: var(--primary);
}

.btn-light {
  background: transparent;
  color: var(--primary);
  border: 2px solid var(--primary);
}

.btn-light:hover,
.btn-light:focus-visible {
  background: var(--primary);
  color: white;
}

.btn-accent {
  background: var(--accent);
  color: white;
  border-color: var(--accent);
}

.btn-accent:hover {
  background: #e67e22;
}

.btn-schedule {
  background: var(--secondary);
  color: white;
  border: 2px solid var(--secondary);
  box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.2);
  transition: all 0.25s ease;
}

.btn-schedule:hover {
  background: transparent;
  color: white;
  border-color: #fff;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.15);
}

@media (max-width: 768px) {
  .hero {
    padding: 2.2rem 0.9rem;
  }
  .hero h1 {
    font-size: 1.6rem;
  }
  .hero p {
    font-size: 0.95rem;
  }
  .hero-buttons {
    flex-direction: column;
  }
}

/* ========== SECTIONS ========== */
section {
  padding: 4rem 2rem;
  background: white;
  margin: 2rem 0;
  border-radius: 15px;
}

h2 {
  font-size: 2.8rem;
  margin-bottom: 1rem;
  color: var(--text-dark);
  text-align: center;
}

h3 {
  color: var(--text-dark);
}

/* ========== DARK-BG CTA BANNERS (white text on gradient) ==========
   These classes use gradient backgrounds with light text. The global
   `h2 { color: var(--text-dark) }` rule above would otherwise win on
   specificity and make headings unreadable. */
.about-cta, .cta-banner, .cta-section, .cat-header {
  color: #fff;
}
.about-cta h1, .about-cta h2, .about-cta h3, .about-cta h4,
.cta-banner h1, .cta-banner h2, .cta-banner h3, .cta-banner h4,
.cta-section h1, .cta-section h2, .cta-section h3, .cta-section h4,
.cat-header h1, .cat-header h2, .cat-header h3, .cat-header h4 {
  color: #fff;
}
.about-cta p, .about-cta li,
.cta-banner p, .cta-banner li,
.cta-section p, .cta-section li {
  color: rgba(255, 255, 255, 0.93);
}

/* ========== MOBILE OVERRIDES (improve phone UX) ========== */
@media (max-width: 600px) {
  .container { padding: 0 1rem; }
  .header-content { padding: 0.6rem 1rem; gap: 0.6rem; }
  .logo { font-size: 1.15rem; display: flex; align-items: center; gap: 0.5rem; }
  .logo img { display: none !important; }
  .mobile-menu { font-size: 1.6rem; }
  nav { display: none !important; }
  .hero { padding: 1.6rem 0.8rem; }
  .hero h1 { font-size: 1.4rem; }
  .hero p { font-size: 0.95rem; }
  .hero-buttons { flex-direction: column; gap: 0.6rem; }
  .btn { width: 100%; padding: 0.85rem 1rem; border-radius: 10px; font-size: 1rem; }
  .btn + .btn { margin-top: 0.6rem; }
  section { padding: 1.2rem; margin: 1rem 0; border-radius: 12px; }
  h2 { font-size: 1.6rem; }
  .field-grid { display: block; gap: 0.6rem; }
  .field { width: 100%; }
  input, textarea, select, .input { width: 100%; padding: 0.8rem; font-size: 1rem; border-radius: 8px; }
  textarea { min-height: 110px; }
  .info-note { font-size: 0.95rem; }
  .dropdown-selected { padding: 0.6rem; font-size: 0.98rem; }
  .ndis-card, .ndis-card-body, .ndis-card-header { padding: 0.8rem; }
  .header-content .logo { flex: 1; }
  .nav-btn { padding: 0.5rem 0.9rem; }
}

/* Mobile menu open state: make nav full-width panel */
@media (max-width: 768px) {
  header.mobile-open nav {
    display: flex !important;
    flex-direction: column;
    position: fixed;
    top: var(--header-height, 60px);
    left: 0;
    right: 0;
    background: var(--nav-bg);
    padding: 0.5rem 0 1.2rem 0;
    box-shadow: 0 12px 30px rgba(0,0,0,0.15);
    z-index: 1100;
    max-height: 72vh;
    overflow-y: auto;
    border-top: 1px solid var(--nav-dropdown-border);
  }
  header.mobile-open .mobile-menu { color: var(--primary); }
  header.mobile-open nav a { padding: 0.9rem 1.2rem; font-size: 1rem; }
}

/* Smaller phones tweaks */
@media (max-width: 420px) {
  .hero h1 { font-size: 1.25rem; }
  .logo img { display: none !important; }
  section { padding: 0.9rem; }
  .btn { padding: 0.7rem; font-size: 0.98rem; }
  .hero::before { display: none; }
}

/* Make images responsive */
img { max-width: 100%; height: auto; display: block; }

/* Cards and grids collapse to single column on small screens */
@media (max-width: 600px) {
  .card-grid, .service-grid, .three-col, .two-col { display: block; }
  .card, .service-card { margin-bottom: 1rem; }
}



.section-subtitle {
  text-align: center;
  color: var(--text-light);
  font-size: 1.2rem;
  margin-bottom: 3rem;
  max-width: 700px;
  margin-left: auto;
  margin-right: auto;
}

/* ========== STATS BANNER ========== */
.stats-banner {
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  color: white;
  padding: 3rem 2rem;
  margin: 2rem 0;
  border-radius: 15px;
}

.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 2rem;
  text-align: center;
}

.stat-item h3 {
  font-size: 2.5rem;
  color: white;
  margin-bottom: 0.5rem;
}

.stat-item p {
  font-size: 1.1rem;
  opacity: 0.9;
}

/* ========== CARDS ========== */
.services-grid, .team-grid, .news-grid, .resources-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2rem;
  margin-top: 2rem;
}

.service-card, .team-member, .news-card, .resource-card {
  background: white;
  border: 2px solid var(--border);
  border-radius: 12px;
  padding: 2rem;
  transition: all 0.3s;
}

.service-card:hover, .news-card:hover, .resource-card:hover {
  border-color: var(--secondary);
  box-shadow: var(--shadow);
  transform: translateY(-8px);
}

.service-card-icon {
  width: 70px;
  height: 70px;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  margin-bottom: 1rem;
}

.service-card h3 {
  color: var(--text-dark);
  margin-bottom: 0.8rem;
  font-size: 1.3rem;
}

.service-card p {
  color: var(--text-light);
  line-height: 1.7;
  margin-bottom: 1rem;
}

.service-card a {
  color: var(--secondary);
  text-decoration: none;
  font-weight: 600;
}

/* ========== TEAM ========== */
.team-member {
  text-align: center;
  background: var(--bg-light);
  padding: 2rem;
  border-radius: 12px;
  border: none;
  transition: all 0.3s;
}

.team-member:hover {
  background: white;
  box-shadow: var(--shadow);
}

.member-avatar {
  width: 140px;
  height: 140px;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  border-radius: 50%;
  margin: 0 auto 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 2.5rem;
  font-weight: bold;
}

.team-member h3 {
  color: var(--text-dark);
  margin-bottom: 0.3rem;
}

.team-member .role {
  color: var(--secondary);
  font-size: 0.9rem;
  margin-bottom: 0.8rem;
}

/* ========== NEWS ========== */
.news-card {
  background: white;
  border: 2px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
  padding: 0;
}

.news-image {
  width: 100%;
  height: 200px;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 3rem;
}

.news-content {
  padding: 1.5rem;
}

.news-date {
  color: var(--secondary);
  font-size: 0.85rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}

.news-card h3 {
  color: var(--primary);
  margin-bottom: 0.8rem;
  line-height: 1.4;
}

.news-card p {
  color: var(--text-light);
  font-size: 0.95rem;
  margin-bottom: 1rem;
}

/* ========== TESTIMONIALS ========== */
.testimonials-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2rem;
  margin-top: 2rem;
}

.testimonial {
  background: var(--bg-light);
  padding: 2rem;
  border-radius: 12px;
  border-left: 4px solid var(--secondary);
}

.stars {
  color: var(--accent);
  font-size: 1.2rem;
  margin-bottom: 1rem;
}

.testimonial p {
  color: var(--text-light);
  margin-bottom: 1rem;
  font-style: italic;
  line-height: 1.7;
}

.testimonial-author {
  font-weight: 700;
  color: var(--primary);
}

/* ========== RESOURCES ========== */
.resource-card {
  background: var(--bg-light);
  padding: 1.8rem;
  border-radius: 10px;
  text-align: center;
  border: none;
  transition: all 0.3s;
}

.resource-icon {
  font-size: 3rem;
  margin-bottom: 1rem;
}

.resource-card h3 {
  color: var(--primary);
  margin-bottom: 0.5rem;
  font-size: 1.1rem;
}

.resource-card p {
  font-size: 0.95rem;
  color: var(--text-light);
  margin-bottom: 1rem;
}

.resource-card a {
  display: inline-block;
  color: white;
  background: var(--secondary);
  padding: 0.5rem 1rem;
  border-radius: 25px;
  text-decoration: none;
  font-weight: 600;
  font-size: 0.85rem;
  transition: all 0.3s;
}

.resource-card a:hover {
  background: var(--primary);
}

/* ========== GLOBAL SEARCH ========== */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

/* Search live wrapper — positions the dropdown */
.search-live-wrap {
  position: relative;
  max-width: 290px;
}

.site-search-form {
  display: flex;
  align-items: center;
  border: 1px solid #d4e6f7;
  background: #fff;
  border-radius: 999px;
  overflow: hidden;
  width: 100%;
}

/* ── Live Autocomplete Dropdown ── */
.search-live-dropdown {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  width: 360px;
  max-width: 92vw;
  background: #fff;
  border: 1px solid #dbe6f1;
  border-radius: 14px;
  box-shadow: 0 10px 40px rgba(0,82,163,0.18);
  z-index: 9999;
  overflow: hidden;
  animation: sldIn 0.14s ease;
}
@keyframes sldIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.sld-item {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  padding: 0.7rem 0.9rem;
  text-decoration: none;
  color: inherit;
  border-bottom: 1px solid #f0f5fb;
  cursor: pointer;
  transition: background 0.12s;
}
.sld-item:last-of-type { border-bottom: none; }
.sld-item:hover, .sld-item.focused { background: #eef5ff; }
.sld-icon {
  width: 30px; height: 30px;
  background: #e3f0ff;
  border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  color: #0052A3;
  font-size: 0.8rem;
  margin-top: 0.05rem;
}
.sld-text { flex: 1; min-width: 0; }
.sld-title {
  font-size: 0.88rem;
  font-weight: 700;
  color: #1a1a2e;
  margin-bottom: 0.1rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sld-desc {
  font-size: 0.77rem;
  color: #666;
  line-height: 1.4;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.sld-badge {
  font-size: 0.67rem;
  font-weight: 700;
  padding: 0.12rem 0.42rem;
  border-radius: 5px;
  background: #e3f0ff;
  color: #0052A3;
  flex-shrink: 0;
  margin-top: 0.08rem;
  white-space: nowrap;
}
.sld-footer {
  padding: 0.55rem 1rem;
  background: #f5f9ff;
  text-align: center;
  font-size: 0.8rem;
  font-weight: 700;
  color: #0052A3;
  cursor: pointer;
  border-top: 1px solid #e0ecfa;
  transition: background 0.12s;
}
.sld-footer:hover { background: #dbeafe; }
.sld-empty {
  padding: 1rem;
  text-align: center;
  color: #888;
  font-size: 0.88rem;
}

/* Highlight matches */
mark {
  background: #fef08a;
  color: #333;
  border-radius: 2px;
  padding: 0 1px;
  font-style: normal;
}

/* Search result cards — enhanced */
.search-result-excerpt {
  font-size: 0.84rem;
  color: #666;
  line-height: 1.55;
  margin-top: 0.3rem;
}
.search-category-group { margin-bottom: 1.4rem; }
.search-category-group-label {
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #888;
  margin-bottom: 0.6rem;
  padding-bottom: 0.35rem;
  border-bottom: 1px solid #e8f0fb;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.search-result-card { position: relative; }

.site-search-form input {
  border: none;
  outline: none;
  padding: 0.45rem 0.75rem;
  min-width: 170px;
  font-size: 0.85rem;
}

.site-search-form button {
  border: none;
  background: var(--primary);
  color: #fff;
  padding: 0.48rem 0.7rem;
  cursor: pointer;
}

.site-search-form button:hover,
.site-search-form button:focus-visible {
  background: var(--secondary);
}

/* ========== SEARCH PAGE ========== */
.search-panel {
  background: #fff;
  border: 1px solid #dbe6f1;
  border-radius: 12px;
  padding: 1rem;
  margin-bottom: 1rem;
}

.search-panel form {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 0.6rem;
}

.search-panel input {
  width: 100%;
  border: 1px solid #cfe0ef;
  border-radius: 8px;
  padding: 0.7rem 0.8rem;
}

.search-panel button {
  border: 2px solid var(--primary);
  background: var(--primary);
  color: #fff;
  border-radius: 8px;
  padding: 0.68rem 1rem;
  font-weight: 700;
  cursor: pointer;
}

.search-filters {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.6rem;
  margin-top: 0.8rem;
}

.search-filters select {
  border: 1px solid #cfe0ef;
  border-radius: 8px;
  padding: 0.55rem 0.65rem;
  background: #fff;
}

.search-count {
  color: #4b5563;
  margin: 0.4rem 0 1rem;
}

.search-results-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.8rem;
}

.search-result-card {
  background: #fff;
  border: 1px solid #dbe6f1;
  border-radius: 10px;
  padding: 1rem;
}

.search-result-card h3 {
  margin: 0.35rem 0;
}

.search-result-card h3 a {
  color: var(--primary);
  text-decoration: none;
}

.search-result-card h3 a:hover {
  text-decoration: underline;
}

.search-result-card p {
  margin: 0;
  color: #4b5563;
}

.search-result-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
}

.search-badge {
  background: var(--primary);
  color: #fff;
  border-radius: 999px;
  padding: 0.1rem 0.55rem;
  font-size: 0.75rem;
  font-weight: 700;
}

.search-cat,
.search-updated {
  color: #6b7280;
  font-size: 0.8rem;
}

.search-empty-state {
  background: #fff;
  border: 1px solid #dbe6f1;
  border-radius: 10px;
  padding: 1rem;
}

@media (max-width: 1024px) {
  .search-live-wrap,
  .site-search-form {
    display: none;
  }
}

/* ========== LOCATIONS ========== */
.location-card {
  background: var(--bg-light);
  padding: 2rem;
  border-radius: 10px;
  border-top: 4px solid var(--secondary);
}

.location-card h3 {
  color: var(--primary);
  margin-bottom: 1rem;
}

.location-info {
  color: var(--text-light);
  line-height: 1.8;
  font-size: 0.95rem;
}

/* ========== FAQs ========== */
.faq-item {
  background: var(--bg-light);
  padding: 1.5rem;
  margin-bottom: 1rem;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.3s;
}

.faq-item:hover,
.faq-item:focus-within {
  background: white;
  box-shadow: var(--shadow);
}

.faq-item h3 {
  color: var(--primary);
  margin-bottom: 0.5rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 1.1rem;
}

.faq-item.open p {
  display: block;
}

.faq-item p {
  display: none;
  color: var(--text-light);
  margin-top: 1rem;
  line-height: 1.7;
}
/* faq-answer default hidden; .open shows it */
.faq-answer { display: none; padding: 0.9rem 1.2rem 1rem; color: var(--text-light); font-size: 0.94rem; line-height: 1.7; border-top: 1px solid #e8edf3; }
.faq-answer.open { display: block; }
.faq-answer.open p,
.faq-answer.open ul,
.faq-answer.open ol { display: block; }
.faq-answer.open li { display: list-item; }
.faq-answer.open strong,
.faq-answer.open a { display: inline; }

/* ── Global fix: h2/h3 text-align:center from base rule leaks into flex containers.
   Explicitly left-align inside all card, banner, panel, and portal components. ── */
.portal-card h2, .portal-card h3, .portal-card h4,
.admin-card h2, .admin-card h3,
.urgent-banner h2, .urgent-banner h3,
.ndis-cta h2, .ndis-cta h3, .ndis-cta h4,
.pay-method-banner h2, .pay-method-banner h3,
.pmb-self h2, .pmb-plan h2, .pmb-agency h2, .pmb-unknown h2,
.sidebar-card h2, .sidebar-card h3,
.info-card h2, .info-card h3,
.action-card h2, .action-card h3,
.feedback-card h2, .feedback-card h3,
.referral-form-wrap h2, .referral-form-wrap h3,
.ndis-card-header h2, .ndis-card-header h3,
.consent-card-header h2, .consent-card-header h3,
.pay-modal-hdr h2, .pay-modal-hdr h3,
.pay-success-panel h3,
.pay-info-panel h3,
.invoice-modal h2, .invoice-modal h3,
.shift-alert h3, .shift-alert h2,
.portal-card-header h2,
.admin-card-header h2,
.form-content h2, .form-content h3,
[class*="-card"] h2, [class*="-card"] h3,
[class*="-banner"] h2, [class*="-banner"] h3,
[class*="-panel"] h2, [class*="-panel"] h3,
[class*="modal"] h2, [class*="modal"] h3,
.queue-column h3,
.compliance-reminders h3,
.loading-box h2, .loading-box h3,
.tab-content h2, .tab-content h3,
.quick-card h3,
.link-card h2, .link-card h3 {
  text-align: left !important;
}

/* faq-a pattern (faq-q/faq-a pages) */
.faq-a { display: none; }
.faq-a.open,
.faq-item.open .faq-a { display: block; }
.faq-a p, .faq-a ul, .faq-a ol { display: block; }
.faq-a li { display: list-item; }

/* faq-content pattern (faq-header pages) */
.faq-content.open p,
.faq-content.open ul,
.faq-content.open ol { display: block; }
.faq-content.open li { display: list-item; }
.faq-content.open strong,
.faq-content.open a { display: inline; }

/* Chevron rotation for aria-expanded pattern */
.faq-question[aria-expanded="true"] i,
.faq-question.open i,
.faq-q[aria-expanded="true"] i,
.faq-q.open i { transform: rotate(180deg); }



.faq-toggle {
  font-size: 1.5rem;
  transition: transform 0.3s;
}

.faq-item.open .faq-toggle {
  transform: rotate(180deg);
}

/* ========== DONATION SECTION ========== */
.donation-banner {
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  color: white;
  padding: 3rem 2rem;
  border-radius: 15px;
  text-align: center;
  margin: 2rem 0;
}

.donation-banner h2 {
  color: white;
  margin-bottom: 1rem;
}

.donation-banner p {
  font-size: 1.1rem;
  margin-bottom: 2rem;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}

.donation-options {
  display: flex;
  gap: 1.5rem;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 1.5rem;
}

.donation-box {
  background: rgba(255, 255, 255, 0.15);
  padding: 1.5rem 2rem;
  border-radius: 10px;
  border: 2px solid rgba(255, 255, 255, 0.3);
  cursor: pointer;
  transition: all 0.3s;
}

.donation-box:hover {
  background: rgba(255, 255, 255, 0.25);
  border-color: white;
}

.donation-box h3 {
  color: white;
  margin-bottom: 0.3rem;
}

/* ========== CONTACT SECTION ========== */
.contact-wrapper {
  max-width: 1000px;
  margin: 0 auto;
}

.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  margin-bottom: 3rem;
}

.contact-info-group h3 {
  color: var(--primary);
  margin-bottom: 1.5rem;
  font-size: 1.3rem;
}

.contact-info-item {
  margin-bottom: 2rem;
}

.contact-info-item strong {
  color: var(--text-dark);
  display: block;
  margin-bottom: 0.5rem;
}

.contact-info-item p {
  color: var(--text-light);
  margin-bottom: 0.3rem;
}

.contact-info-item a {
  color: var(--secondary);
  text-decoration: none;
  font-weight: 600;
}

.form-group {
  margin-bottom: 1.5rem;
}

.form-group label {
  display: block;
  font-weight: 600;
  color: var(--text-dark);
  margin-bottom: 0.5rem;
}

.form-group input,
.form-group textarea,
.form-group select {
  width: 100%;
  padding: 0.9rem;
  border: 2px solid var(--border);
  border-radius: 8px;
  font-family: inherit;
  font-size: 1rem;
  transition: border-color 0.3s;
}

.form-group input:focus,
.form-group textarea:focus,
.form-group select:focus {
  outline: none;
  border-color: var(--secondary);
}

.form-submit {
  width: 100%;
  padding: 1rem;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  color: white;
  border: none;
  border-radius: 8px;
  font-weight: 700;
  font-size: 1rem;
  cursor: pointer;
  transition: all 0.3s;
}

.form-submit:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
}

.form-message {
  margin-top: 1rem;
  padding: 1rem;
  border-radius: 8px;
  text-align: center;
  font-weight: 600;
  display: none;
}

.form-message.success {
  background: #d4edda;
  color: #155724;
  display: block;
}

@media (max-width: 768px) {
  .contact-grid {
    grid-template-columns: 1fr;
  }
}

/* ========== FOOTER ========== */
footer {
  background: #0a1628;
  color: white;
  padding: 3.5rem 0 0;
  margin-top: 3rem;
  border-top: 3px solid;
  border-image: linear-gradient(90deg, var(--primary), var(--secondary)) 1;
}

footer a { color: rgba(255,255,255,0.78) !important; text-decoration: none; transition: color 0.2s; }
footer a:hover { color: #fff !important; }
footer p, footer li, footer small { color: rgba(255,255,255,0.7); }

/* ---- main grid ---- */
.footer-main {
  display: grid;
  grid-template-columns: 1.55fr 1fr 1fr 1fr;
  gap: 2.5rem;
  padding-bottom: 3rem;
}

.footer-brand {
  font-size: 1.55rem;
  font-weight: 800;
  color: #fff;
  line-height: 1.15;
  margin-bottom: 0.75rem;
  letter-spacing: -0.01em;
}
.footer-brand span { color: var(--secondary); }

.footer-tagline {
  font-size: 0.87rem;
  color: rgba(255,255,255,0.6);
  line-height: 1.65;
  margin-bottom: 1rem;
}

.footer-ndis-tag {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  background: rgba(0,155,77,0.15);
  border: 1px solid rgba(0,155,77,0.3);
  color: #6ee7b7;
  font-size: 0.75rem;
  font-weight: 700;
  padding: 0.28rem 0.8rem;
  border-radius: 999px;
  margin-bottom: 1.2rem;
  letter-spacing: 0.02em;
}

.footer-social { display: flex; gap: 0.55rem; }
.footer-social a {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.12);
  color: rgba(255,255,255,0.75) !important;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.88rem;
  transition: background 0.2s, border-color 0.2s, color 0.2s;
}
.footer-social a:hover {
  background: var(--secondary) !important;
  border-color: var(--secondary) !important;
  color: #fff !important;
}

.footer-col h4 {
  font-size: 0.7rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: rgba(255,255,255,0.35);
  margin-bottom: 1.1rem;
  padding-bottom: 0.6rem;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}

.footer-col ul {
  list-style: none;
  padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 0.6rem;
}
.footer-col ul li {
  display: flex; align-items: flex-start; gap: 0.5rem;
  font-size: 0.875rem;
  color: rgba(255,255,255,0.68);
  line-height: 1.4;
}
.footer-col ul li i {
  color: var(--secondary);
  width: 1rem; flex-shrink: 0;
  margin-top: 0.16rem; font-size: 0.78rem;
}
.footer-col ul li a { color: rgba(255,255,255,0.72) !important; font-size: 0.875rem; }
.footer-col ul li a:hover { color: #fff !important; }

/* ---- bottom bar ---- */
.footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.07);
  padding: 1.1rem 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem;
  font-size: 0.82rem;
}
.footer-bottom p { color: rgba(255,255,255,0.4); margin: 0; }
.footer-bottom-links { display: flex; gap: 1.2rem; flex-wrap: wrap; }
.footer-bottom-links a { color: rgba(255,255,255,0.5) !important; font-size: 0.82rem; }
.footer-bottom-links a:hover { color: rgba(255,255,255,0.85) !important; }
.footer-bottom a { color: rgba(255,255,255,0.5) !important; font-size: 0.82rem; }
.footer-bottom a:hover { color: rgba(255,255,255,0.85) !important; }
.site-version {
  font-size: 0.72rem;
  opacity: 0.35;
  font-family: monospace;
  letter-spacing: 0.5px;
  /* Keeps badge above iOS home indicator on notch phones */
  bottom: calc(0.4rem + env(safe-area-inset-bottom, 0px)) !important;
  right: max(0.6rem, env(safe-area-inset-right, 0.6rem)) !important;
}

/* ---- legacy footer classes (kept for any pages not yet migrated) ---- */
.footer-content {
  max-width: 1300px; margin: 0 auto;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 2rem; padding-bottom: 2.5rem;
}
.footer-section h3 { margin-bottom: 0.9rem; font-size: 0.75rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em; color: rgba(255,255,255,0.35); }
.footer-section p, .footer-section a { color: rgba(255,255,255,0.7); font-size: 0.875rem; line-height: 1.75; display: block; padding: 0.15rem 0; }
.footer-section a:hover { color: #fff; }

@media (max-width: 1024px) {
  .footer-main { grid-template-columns: 1.3fr 1fr 1fr; }
}
@media (max-width: 700px) {
  .footer-main { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .footer-main { grid-template-columns: 1fr; }
  .footer-bottom {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.5rem;
  }
  .footer-bottom-links { justify-content: center; }
}

/* ========== SCROLL REVEAL ========== */
.scroll-reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: all 0.6s ease;
}

.scroll-reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ========== BREADCRUMB ========== */
.breadcrumb {
  background: var(--bg-light);
  padding: 1rem 2rem;
  font-size: 0.9rem;
}

/* breadcrumbs inside coloured hero sections — transparent so the hero bg shows through */
.breadcrumb[style*="color:rgba(255,255,255"] {
  background: transparent !important;
  padding: 0 !important;
}

.breadcrumb a {
  color: var(--secondary);
  text-decoration: none;
}

.breadcrumb a:hover {
  text-decoration: underline;
}

/* ========== TABLE HEADERS — prevent mid-word breaking on mobile ========== */
/* All th elements stay on one line; scroll wrappers handle the overflow */
table th { white-space: nowrap; }

/* ========== PERFORMANCE & OPTIMIZATION ========== */

/* Lazy loading image support */
img {
  max-width: 100%;
  height: auto;
}

/* Enhanced image styling */
img[src*="unsplash"] {
  transition: transform 0.3s ease, filter 0.3s ease;
}

img[src*="unsplash"]:hover {
  transform: scale(1.02);
  filter: brightness(1.05);
}

/* Image container optimization */
.service-card img,
.news-card img,
.testimonial img {
  border-radius: 8px;
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}

/* ========== ACCESSIBILITY IMPROVEMENTS ========== */

/* Focus visible for keyboard navigation */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 3px solid var(--secondary);
  outline-offset: 2px;
}

/* Skip to main content for screen readers */
.skip-to-main {
  position: absolute;
  top: -100px;
  left: 0;
  background: var(--primary);
  color: white;
  padding: 0.6rem 1.2rem;
  z-index: 10000;
  text-decoration: none;
  border-radius: 0 0 6px 0;
  font-weight: 700;
  font-size: 0.9rem;
  transition: top 0.2s ease;
}
.skip-to-main:focus {
  top: 0;
  outline: 3px solid #fff;
  outline-offset: 2px;
}

.skip-to-main:focus {
  top: 0;
}

/* Better contrast for text */
h1, h2, h3, h4, h5, h6 {
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

/* Form validation states */
input:invalid:not(:placeholder-shown),
textarea:invalid:not(:placeholder-shown),
select:invalid:not(:placeholder-shown) {
  border-color: #dc3545 !important;
  background: rgba(220, 53, 69, 0.05);
}

input:valid:not(:placeholder-shown),
textarea:valid:not(:placeholder-shown),
select:valid:not(:placeholder-shown) {
  border-color: #28a745 !important;
  background: rgba(40, 167, 69, 0.05);
}

/* Error message styling */
.form-error {
  color: #dc3545;
  font-size: 0.85rem;
  margin-top: 0.25rem;
  display: block;
}

/* Success message styling */
.form-success {
  color: #28a745;
  font-size: 0.85rem;
  margin-top: 0.25rem;
  display: block;
}

/* ========== ENHANCED HOVER EFFECTS ========== */

/* Card lift on hover */
.service-card,
.news-card,
.resource-card,
.team-member {
  will-change: transform, box-shadow;
}

/* Enhanced button effects */
.btn {
  position: relative;
  overflow: hidden;
}

.btn::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.2);
  transition: left 0.3s ease;
  z-index: -1;
}

.btn:hover::before {
  left: 100%;
}

/* Link hover underline animation */
a:not(.btn):not(.logo) {
  position: relative;
  text-decoration: none;
}

a:not(.btn):not(.logo):hover {
  text-decoration: underline;
}

/* ========== MOBILE OPTIMIZATION ========== */

/* Responsive images */
@media (max-width: 768px) {
  img {
    max-width: 100%;
    height: auto;
  }

  .service-card,
  .news-card,
  .team-member {
    padding: 1.5rem;
  }

  .services-grid,
  .team-grid,
  .news-grid {
    grid-template-columns: 1fr;
  }

  h1 {
    font-size: 1.75rem;
  }

  h2 {
    font-size: 1.5rem;
  }

  section {
    padding: 2rem 1rem;
    margin: 1rem 0;
  }

  .btn {
    width: 100%;
    padding: 0.875rem 1.5rem;
    font-size: 0.9rem;
  }

  .donation-options {
    flex-direction: column;
  }

  .donation-box {
    width: 100%;
  }
}

@media (max-width: 480px) {
  .hero h1 {
    font-size: 1.5rem;
  }

  .hero p {
    font-size: 0.9rem;
  }

  .stats-grid {
    grid-template-columns: 1fr 1fr;
  }

  .stat-item h3 {
    font-size: 1.8rem;
  }

  nav {
    flex-direction: column;
    gap: 0.5rem;
  }

  .header-content {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    gap: 0.6rem;
    padding: 0.5rem 1rem;
  }

  .container {
    padding: 0 1rem;
  }
}

/* ========== LOADING & SHIMMER EFFECT ========== */

@keyframes shimmer {
  0% {
    background-position: -1000px 0;
  }
  100% {
    background-position: 1000px 0;
  }
}

.loading {
  animation: shimmer 2s infinite;
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 1000px 100%;
}

/* ========== PRINT STYLES ========== */

@media print {
  header,
  footer,
  .mobile-menu,
  .btn {
    display: none;
  }

  section {
    page-break-inside: avoid;
    box-shadow: none;
    border: 1px solid #ddd;
  }

  a {
    text-decoration: underline;
  }

  img {
    max-width: 100%;
    page-break-inside: avoid;
  }
}

/* ========== DARK MODE SUPPORT ========== */

@media (prefers-color-scheme: dark) {

  /* ── CSS variable overrides ── */
  :root {
    --bg-light:            #111827;
    --bg-white:            #1a2332;
    --text-dark:           #e8f0fe;
    --text-light:          #8faacc;
    --border:              #2a3a4a;
    --shadow:              0 4px 20px rgba(0,0,0,0.4);
    --shadow-lg:           0 8px 40px rgba(0,0,0,0.5);
    --nav-bg:              #0f1923;
    --nav-text:            #e8f0fe;
    --nav-dropdown-bg:     #1a2636;
    --nav-dropdown-sub-bg: #111f2e;
    --nav-dropdown-border: #2a3a4a;
    --nav-dropdown-text:   #e8f0fe;
    --nav-border-bottom:   #1e2e40;
  }

  /* ── Base ── */
  body {
    background: #0a0f1a;
    color: #e8f0fe;
  }

  /* ── Header & nav ── */
  header {
    background: #0f1923 !important;
    box-shadow: 0 2px 10px rgba(0,0,0,0.5);
  }

  .dropdown-menu {
    background: #1a2636 !important;
    border-color: #2a3a4a !important;
    box-shadow: 0 8px 24px rgba(0,0,0,0.6) !important;
  }

  .dropdown-menu a {
    color: #e8f0fe !important;
  }

  .dropdown-menu a:hover,
  .dropdown-menu a:focus-visible {
    background: #111f2e !important;
    color: #60c0ff !important;
    border-left-color: #60c0ff !important;
  }

  /* ── Sections & cards ── */
  section {
    background: #111827 !important;
  }

  .service-card,
  .news-card,
  .resource-card,
  .team-member {
    background: #1a2332 !important;
    border-color: #2a3a4a !important;
    color: #e8f0fe !important;
  }

  .service-card h3,
  .news-card h3,
  .team-member h3 {
    color: #e8f0fe !important;
  }

  .service-card p,
  .news-card p,
  .resource-card p,
  .team-member p {
    color: #8faacc !important;
  }

  .service-card:hover,
  .news-card:hover,
  .resource-card:hover {
    background: #1f2d42 !important;
  }

  /* ── FAQ ── */
  .faq-item {
    background: #111827 !important;
  }

  .faq-item:hover,
  .faq-item:focus-within {
    background: #1a2332 !important;
  }

  .faq-question,
  .faq-q {
    background: transparent !important;
    color: #e8f0fe !important;
  }

  .faq-answer,
  .faq-a {
    background: #0f1923 !important;
    color: #8faacc !important;
    border-top-color: #2a3a4a !important;
  }

  .faq-answer p,
  .faq-a p,
  .faq-answer li,
  .faq-a li {
    color: #8faacc !important;
  }

  /* ── Forms ── */
  .form-group input,
  .form-group textarea,
  .form-group select,
  input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]),
  select,
  textarea {
    background: #111827 !important;
    color: #e8f0fe !important;
    border-color: #2a3a4a !important;
  }

  .form-group input::placeholder,
  .form-group textarea::placeholder,
  input::placeholder,
  textarea::placeholder {
    color: #4a6a8a !important;
  }

  .form-group label {
    color: #e8f0fe !important;
  }

  input:valid:not(:placeholder-shown),
  textarea:valid:not(:placeholder-shown),
  select:valid:not(:placeholder-shown) {
    background: #0f1f12 !important;
    border-color: #28a745 !important;
  }

  input:invalid:not(:placeholder-shown),
  textarea:invalid:not(:placeholder-shown) {
    background: #1f0f0f !important;
    border-color: #dc3545 !important;
  }

  /* ── Search bar ── */
  .site-search-form {
    background: #111827 !important;
    border-color: #2a3a4a !important;
  }

  .site-search-form input {
    background: #111827 !important;
    color: #e8f0fe !important;
  }

  /* ── Search autocomplete dropdown ── */
  .search-live-dropdown {
    background: #1a2332 !important;
    border-color: #2a3a4a !important;
    box-shadow: 0 10px 40px rgba(0,0,0,0.5) !important;
  }

  .sld-item {
    color: #e8f0fe !important;
    border-bottom-color: #1f2d3d !important;
  }

  .sld-item:hover,
  .sld-item.focused {
    background: #1f2d42 !important;
  }

  .sld-icon {
    background: #1e2a3a !important;
    color: #60c0ff !important;
  }

  .sld-title {
    color: #e8f0fe !important;
  }

  .sld-desc {
    color: #8faacc !important;
  }

  .sld-badge {
    background: #1e2a3a !important;
    color: #60c0ff !important;
  }

  .sld-footer {
    background: #111827 !important;
    color: #60c0ff !important;
    border-top-color: #2a3a4a !important;
  }

  .sld-footer:hover {
    background: #1a2332 !important;
  }

  .sld-empty {
    color: #8faacc !important;
  }

  /* ── Search page ── */
  .search-panel,
  .search-result-card,
  .search-empty-state {
    background: #1a2332 !important;
    border-color: #2a3a4a !important;
  }

  .search-filters select {
    background: #111827 !important;
    color: #e8f0fe !important;
    border-color: #2a3a4a !important;
  }

  .search-result-card p,
  .search-result-excerpt,
  .search-count {
    color: #8faacc !important;
  }

  .search-category-group-label {
    color: #8faacc !important;
    border-bottom-color: #2a3a4a !important;
  }

  mark {
    background: #3a3000 !important;
    color: #ffd700 !important;
  }

  /* ── Inline-styled white cards ── */
  div[style*="background: #fff"],
  div[style*="background:#fff"],
  div[style*="background: white"],
  div[style*="background:white"] {
    background: #1a2332 !important;
  }

  /* ── Class-based white cards (page-specific head styles) ── */
  [class*="-card"],
  [class*="-step"],
  [class*="-panel"],
  .accred-badge,
  .section-alt,
  .policy-meta-item,
  .related-card,
  .portal-card,
  .session-block,
  .tip-card,
  .training-card,
  .benefit-card,
  .check-card,
  .goal-card,
  .who-card,
  .why-card,
  .culture-item,
  .perk,
  .qual-card,
  .practice-card,
  .interview-card {
    background: #1a2332 !important;
  }


  /* ── Misc text ── */
  h1, h2, h3, h4, h5, h6 {
    color: #e8f0fe !important;
  }

  p, li {
    color: #8faacc !important;
  }

  td, th, span, label {
    color: #8faacc;
  }

  a:not(.btn):not(.nav-btn):not(.logo) {
    color: #60c0ff;
  }

  .section-subtitle {
    color: #8faacc !important;
  }

  /* ── Testimonials ── */
  .testimonial {
    background: #111827 !important;
  }

  .testimonial p {
    color: #8faacc !important;
  }

  /* ── Location cards ── */
  .location-card {
    background: #111827 !important;
  }

  /* ── Breadcrumb ── */
  .breadcrumb {
    background: #0f1923 !important;
  }

  /* ── Loading shimmer ── */
  .loading {
    background: linear-gradient(90deg, #1a2332 25%, #1f2d42 50%, #1a2332 75%) !important;
  }

  /* ── Form success/error messages ── */
  .form-message.success {
    background: #0f2d1a !important;
    color: #6ee7b7 !important;
  }

  /* ── Dark-bg CTA banners: preserve gradient & white text ──
     Without these overrides, `section { background: #111827 !important }` flattens
     the gradient and `h2 { color: #e8f0fe !important }` tints the heading blue. */
  .about-cta,
  .cta-banner,
  .cta-section,
  section.about-cta,
  section.cta-banner,
  section.cta-section {
    background: linear-gradient(120deg, var(--primary), #009b4d) !important;
    color: #fff !important;
  }
  .about-cta h1, .about-cta h2, .about-cta h3, .about-cta h4,
  .cta-banner h1, .cta-banner h2, .cta-banner h3, .cta-banner h4,
  .cta-section h1, .cta-section h2, .cta-section h3, .cta-section h4,
  .cat-header h1, .cat-header h2, .cat-header h3, .cat-header h4 {
    color: #fff !important;
  }
  .about-cta p, .about-cta li,
  .cta-banner p, .cta-banner li,
  .cta-section p, .cta-section li {
    color: rgba(255, 255, 255, 0.93) !important;
  }
  /* Keep CTA buttons high-contrast in dark mode */
  .btn-cta-white, .cta-btn-white {
    background: #fff !important;
    color: var(--primary) !important;
  }
  .btn-cta-outline, .cta-btn-outline {
    color: #fff !important;
    border-color: rgba(255, 255, 255, 0.85) !important;
  }
}

/* ========== REDUCED MOTION ========== */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  .scroll-reveal {
    opacity: 1;
    transform: none;
  }
}

/* ========== MOBILE SAFETY LAYER (PHONE-ONLY) ========== */
@media (max-width: 768px) {
  body { overflow-x: hidden; }

  .container,
  main,
  section {
    max-width: 100%;
  }

  /* Keep mobile visuals high contrast and avoid blended text on tiny screens */
  body {
    background: var(--surface) !important;
    color: var(--ink) !important;
  }

  .logo {
    background: none !important;
    -webkit-text-fill-color: var(--ink) !important;
    color: var(--ink) !important;
  }

  .logo img {
    display: none !important;
  }

  /* Make long text wrap instead of creating horizontal overflow */
  h1,
  h2,
  h3,
  h4,
  h5,
  h6,
  p,
  li,
  a,
  span,
  td,
  th,
  label {
    overflow-wrap: anywhere;
    word-break: normal;
  }

  /* Reduce over-narrow reading columns created by inline max-width styles */
  p[style*="max-width"],
  div[style*="max-width"][style*="margin: 0 auto"],
  div[style*="max-width"][style*="margin:0 auto"] {
    max-width: 100% !important;
  }

  /* Remove glass/blur effects on phone to improve readability */
  [style*="backdrop-filter"],
  .hero-panel {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  /* Force common inline two-column and rigid grids to one column on phones */
  [style*="grid-template-columns: 1fr 1fr"],
  [style*="grid-template-columns:1fr 1fr"],
  [style*="grid-template-columns: 1.2fr 0.8fr"],
  [style*="grid-template-columns:1.2fr 0.8fr"],
  [style*="grid-template-columns: 0.82fr 1.18fr"],
  [style*="grid-template-columns:0.82fr 1.18fr"],
  [style*="grid-template-columns: 0.95fr 1.35fr"],
  [style*="grid-template-columns:0.95fr 1.35fr"],
  [style*="grid-template-columns: 1.15fr 0.85fr"],
  [style*="grid-template-columns:1.15fr 0.85fr"],
  [style*="grid-template-columns: repeat(3"],
  [style*="grid-template-columns:repeat(3"],
  [style*="grid-template-columns: repeat(4"],
  [style*="grid-template-columns:repeat(4"],
  [style*="grid-template-columns: minmax("],
  [style*="grid-template-columns:minmax("],
  .queue-grid,
  .form-grid,
  .field-grid,
  .action-grid,
  .quick-grid {
    grid-template-columns: 1fr !important;
  }

  /* Neutralize hard min-width values that force sideways scrolling */
  input[style*="min-width"],
  select[style*="min-width"],
  textarea[style*="min-width"],
  button[style*="min-width"],
  [style*="min-width"],
  [data-role="shift-employee"],
  [data-role="occurrence-employee"],
  #invoiceClientFilter,
  .period-nav span,
  .fy-nav span,
  .ndis-cta-text {
    min-width: 0 !important;
    max-width: 100% !important;
  }

  input,
  select,
  textarea,
  button,
  iframe,
  img,
  video {
    max-width: 100% !important;
  }

  .search-live-wrap,
  .site-search-form {
    max-width: 100%;
    width: 100%;
  }

  .site-search-form input {
    min-width: 0;
    width: 100%;
  }

  /* Keep large tables usable on phones by allowing horizontal scroll */
  .table-wrap,
  .table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  table {
    max-width: 100%;
    width: 100% !important;
  }

  th,
  td {
    word-break: break-word;
  }

  /* Tables inside overflow scroll wrappers: let class-level min-width take effect */
  div[style*="overflow-x"] table,
  .table-responsive table,
  .table-wrap table {
    width: auto !important;
  }

  /* ── Portal tab nav: grid on mobile so all tabs are visible ── */
  .portal-tabs {
    padding: 0.6rem 0.75rem !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 0.4rem !important;
    overflow-x: unset !important;
    border-bottom: 1px solid #e5e7eb !important;
    background: #f8fafc !important;
    align-items: stretch !important;
  }
  .portal-tab {
    margin-bottom: 0 !important;
    border: 1px solid #dbe7f2 !important;
    border-radius: 8px !important;
    background: #fff !important;
    justify-content: center !important;
    text-align: center !important;
    padding: 0.65rem 0.4rem !important;
    white-space: normal !important;
    font-size: 0.78rem !important;
    flex-shrink: unset !important;
  }
  .portal-tab:last-child:nth-child(odd) { grid-column: 1 / -1; }

  /* ── Prevent iOS auto-zoom on input focus (requires font-size >= 16px) ── */
  input[type="text"],
  input[type="email"],
  input[type="tel"],
  input[type="number"],
  input[type="date"],
  input[type="time"],
  input[type="datetime-local"],
  input[type="month"],
  input[type="week"],
  input[type="search"],
  input[type="password"],
  input[type="url"],
  textarea,
  select {
    font-size: 1rem !important;
  }

  /* ── Remove iOS native search styling so custom borders/radius apply ── */
  input[type="search"] {
    -webkit-appearance: none;
    appearance: none;
  }

  /* ── Jump links: bigger tap targets on mobile ────────────────────── */
  .jump-link,
  .step-jump-link {
    padding: 0.5rem 1rem !important;
    min-height: 36px;
  }
  /* ── Small CTA buttons: minimum tap target ────────────────────────── */
  .btn-card,
  .callout-cta,
  .filter-btn {
    min-height: 36px;
    padding-top: 0.55rem !important;
    padding-bottom: 0.55rem !important;
  }
}
@media (max-width: 380px) {
  .container { padding: 0 1rem; }
  /* ── Breadcrumb: reduce padding and allow wrap on small screens ── */
  .breadcrumb {
    padding: 0.6rem 1rem;
    font-size: 0.82rem;
    overflow-wrap: break-word;
    word-break: normal;
    line-height: 1.5;
  }

  .portal-main { padding: 0 0.5rem; }
}


/* On phones in dark mode - keep body light but let nav use dark theme */
@media (max-width: 768px) and (prefers-color-scheme: dark) {
  :root {
    --bg-light: #f0f7ff;
    --bg-white: #ffffff;
    --text-dark: #1f2937;
    --text-light: #6b7280;
    --border: #d4e6f7;
    /* Nav dark theme on mobile */
    --nav-bg: #1e2a3a;
    --nav-text: #f0f0f0;
    --nav-dropdown-bg: #1e2a3a;
    --nav-dropdown-sub-bg: #162030;
    --nav-dropdown-border: #2e4a6a;
    --nav-dropdown-text: #e8f0fe;
    --nav-border-bottom: #2a3a4a;
  }

  body {
    background: #f0f7ff !important;
    color: #1f2937 !important;
  }

  /* Ensure nav text is always visible */
  nav a,
  .dropdown-menu a,
  .mobile-menu {
    color: var(--nav-text) !important;
  }

  nav .dropdown-menu a {
    color: var(--nav-dropdown-text) !important;
  }
}

@media (max-width: 480px) {
  [style*="padding: 2rem"],
  [style*="padding:2rem"] {
    padding: 1rem !important;
  }

  [style*="height: 400px"],
  [style*="height:400px"] {
    height: auto !important;
  }

  h1 {
    font-size: 1.4rem !important;
    line-height: 1.25 !important;
  }

  h2 {
    font-size: 1.25rem !important;
    line-height: 1.3 !important;
  }
}

/* ========== PHONE GRID FIXES (prevent one-letter-per-row) ========== */
@media (max-width: 600px) {
  /* KPI tiles: 3-col grid collapses to 1 col on small phones */
  .kpi-grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }

  /* Payment method selector: 3-col → 1-col on phones */
  .pay-methods {
    grid-template-columns: 1fr !important;
  }

  /* Stat/KPI tiles: never let label text squeeze below a readable width */
  .kpi,
  .stat-item,
  .kpi-tile {
    min-width: 0;
    overflow: hidden;
  }

  .kpi .label,
  .kpi .value {
    word-break: break-word;
    overflow-wrap: anywhere;
    white-space: normal;
  }

  /* Portal toolbar: stack on very small screens */
  .portal-toolbar {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.7rem 1rem;
  }

  /* Prevent flex children from collapsing text to zero width */
  .portal-card-header,
  .action-card,
  .quick-card,
  .module-card,
  .ndis-cta {
    min-width: 0;
  }

  .portal-card-header > *,
  .ndis-cta-text {
    min-width: 0;
    flex-shrink: 1;
  }

  /* Tables inside cards: horizontal scroll instead of squished columns */
  .portal-card-body table,
  .card-body table,
  .ndis-card-body table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: nowrap;
    max-width: 100%;
  }

  /* Policy meta grid: single column on small screens */
  .policy-meta {
    grid-template-columns: 1fr 1fr !important;
  }

  /* Consent items: stack header on small screens */
  .consent-item-hdr {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.4rem;
  }

  /* Module links: stack vertically */
  .module-links {
    flex-direction: column;
    gap: 0.4rem;
  }

  .module-link {
    width: 100%;
    text-align: center;
  }
}

/* ========== POLICY SIGNATURE GRID: stack on mobile ========== */
@media (max-width: 600px) {
  .sig-grid {
    grid-template-columns: 1fr !important;
  }
}

/* ========== CONTENT TABLES: horizontal scroll on phones ========== */
@media (max-width: 700px) {
  .mgmt-table,
  .approach-table,
  .tier-table,
  .prompt-table,
  .cap-table,
  .barrier-table,
  .intensity-table,
  .guide-table,
  .di-table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ========== 4-COLUMN PHOTO STRIP: collapse to 2 on phones ========== */
@media (max-width: 640px) {
  .page-photo-strip,
  .blog-photo-strip {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  .page-photo-strip img,
  .blog-photo-strip img {
    height: 140px;
  }
}

/* ========== CIRCLE NUMBERS: always stay perfectly round ========== */
.step-num,
.step-number,
.how-num,
.ref-num,
.access-num,
.ref-step .ref-num,
.tip-num,
.tl-dot {
  flex-shrink: 0 !important;
  flex-grow: 0 !important;
  min-width: inherit;
  box-sizing: border-box;
  line-height: 1;
}

/* ── Mobile table scroll ─────────────────────────────────────── */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin-bottom: 1rem;
}
@media (max-width: 768px) {
  .table-scroll table,
  .table-scroll-wrap table {
    min-width: 480px;
  }
}

/* ── Hero heading sizes — prevent oversized text on small phones ────── */
@media (max-width: 480px) {
  /* Any element whose class contains "-hero" and has an h1/h2 child */
  [class*="-hero"] h1,
  [class*="hero"] h1,
  .hero h1 {
    font-size: clamp(1.4rem, 7vw, 1.9rem) !important;
    line-height: 1.25;
  }
  [class*="-hero"] p,
  [class*="hero"] p {
    font-size: clamp(0.88rem, 3.5vw, 1rem) !important;
  }
  /* Hero subtitle max-width: don't constrain on mobile */
  [class*="-hero"] p[style*="max-width"],
  [class*="hero"] p[style*="max-width"] {
    max-width: 100% !important;
  }
}

/* ── Ensure all inline max-width paragraph text doesn't overflow ─────── */
@media (max-width: 480px) {
  p[style*="max-width"],
  div[style*="max-width"] > p {
    max-width: 100% !important;
  }
}

/* ── Inline multi-column grids: collapse on mobile ───────────────────── */
@media (max-width: 640px) {
  [style*="grid-template-columns:repeat(3,1fr)"],
  [style*="grid-template-columns: repeat(3, 1fr)"],
  [style*="grid-template-columns:repeat(3,minmax(0,1fr))"] {
    grid-template-columns: 1fr !important;
  }
  /* 2-col inline grids collapse to 1 col on small phones */
  [style*="grid-template-columns:1fr 1fr"],
  [style*="grid-template-columns: 1fr 1fr"],
  [style*="grid-template-columns:1.15fr"],
  [style*="grid-template-columns: 1.15fr"],
  [style*="grid-template-columns:0.82fr"],
  [style*="grid-template-columns: 0.82fr"],
  [style*="grid-template-columns:1.2fr"] {
    grid-template-columns: 1fr !important;
  }
  [style*="grid-template-columns:repeat(4,minmax(0,1fr))"],
  [style*="grid-template-columns:repeat(4,1fr)"],
  [style*="grid-template-columns: repeat(4, 1fr)"] {
    grid-template-columns: 1fr 1fr !important;
  }
}
@media (max-width: 400px) {
  [style*="grid-template-columns:repeat(4,minmax(0,1fr))"],
  [style*="grid-template-columns:repeat(4,1fr)"],
  [style*="grid-template-columns: repeat(4, 1fr)"] {
    grid-template-columns: 1fr !important;
  }
}

@media (max-width: 480px) {
  /* Improve card text readability on small phones */
  [class*="card"] p,
  [class*="-card"] p,
  [class*="card-"] p {
    line-height: 1.6;
    font-size: max(0.85rem, 13.6px);
  }
}

@media (max-width: 480px) { .stats-grid { grid-template-columns: 1fr !important; } }

@media (max-width: 480px) { .hero { min-height: 300px !important; padding: 2.5rem 1rem !important; } }

/* Mobile: all custom page hero classes */
@media (max-width: 480px) {
  .at-hero, .cp-hero, .dl-hero, .es-hero, .fs-hero, .ls-hero,
  .ot-hero, .mh-hero, .ts-hero, .faq-hero, .fg-hero, .apply-hero,
  .gloss-hero, .sc-hero, .ndis-hero, .blog-hero, .finder-hero,
  .fam-hero, .tm-hero, .events-hero, .loc-hero, .res-hero, .di-hero,
  .about-hero, .referral-hero, .hero-image, .pt-hero, .sl-hero {
    min-height: 220px !important;
    padding-top: 2rem !important;
    padding-bottom: 2rem !important;
  }
}

/* Mobile: minmax() inline grids not caught by substring selectors */
@media (max-width: 600px) {
  [style*="minmax(0,"] { grid-template-columns: 1fr !important; }
}

/* Scroll indicator for tables on mobile */
@media (max-width: 600px) {
  div[style*='overflow-x:auto'], div[style*='overflow-x: auto'] {
    -webkit-overflow-scrolling: touch;
    position: relative;
  }
  div[style*='overflow-x:auto'] table,
  div[style*='overflow-x: auto'] table {
    font-size: 0.82rem !important;
  }
  div[style*='overflow-x:auto']::after,
  div[style*='overflow-x: auto']::after {
    content: 'scroll →';
    display: block;
    text-align: right;
    font-size: 0.72rem;
    color: #94a3b8;
    padding-top: 0.25rem;
  }
}

/* di-gallery: collapse to 1 col below 500px */
@media (max-width: 500px) {
  .di-gallery { grid-template-columns: 1fr !important; }
}

/* ── Reduce large inline section padding on mobile ───────────────── */
@media (max-width: 600px) {
  [style*='padding: 4rem'], [style*='padding:4rem'],
  [style*='padding: 3rem'], [style*='padding:3rem'] {
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
  }
  [style*='padding: 4rem 0'], [style*='padding:4rem 0'] {
    padding: 1.5rem 1rem !important;
  }
  [style*='padding: 3.5rem'], [style*='padding:3.5rem'] {
    padding-top: 1.2rem !important;
    padding-bottom: 1.2rem !important;
  }
}

/* ── Portal main content side padding on mobile ───────────────────── */
@media (max-width: 600px) {
  .portal-main {
    padding-left: 0.65rem !important;
    padding-right: 0.65rem !important;
  }
  .portal-toolbar {
    padding-left: 0.75rem !important;
    padding-right: 0.75rem !important;
  }
}

/* ── Submit buttons full-width on mobile ──────────────────────────── */
@media (max-width: 600px) {
  button[type='submit'],
  input[type='submit'],
  .btn-submit,
  .form-submit,
  [class*='submit-btn'],
  [class*='btn-submit'] {
    width: 100% !important;
    display: block !important;
  }
}

/* ── FIX: iOS input zoom — font-size must be ≥16px on all inputs ── */
@media (max-width: 768px) {
  input, select, textarea,
  input[type='text'], input[type='email'], input[type='tel'],
  input[type='password'], input[type='number'], input[type='search'],
  input[type='date'], input[type='time'] {
    font-size: 1rem !important;
  }
}

/* ── FIX: Portal tab tap targets — min 44px height on mobile ───── */
@media (max-width: 768px) {
  .portal-tab {
    padding: 0.85rem 0.5rem !important;
    min-height: 44px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
}

/* ── FIX: Mobile page links — min 44px tap target ───────────────── */
@media (max-width: 768px) {
  .mobile-page-link {
    min-height: 44px !important;
    padding: 0.75rem !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
}

/* ── FIX: Appointment assigner rows — stack vertically on mobile ─── */
@media (max-width: 600px) {
  .shift-assigner,
  .occurrence-assigner {
    flex-direction: column !important;
    align-items: stretch !important;
  }
  .shift-assigner select,
  .occurrence-assigner select {
    width: 100% !important;
  }
  .shift-assigner button,
  .occurrence-assigner button {
    width: 100% !important;
    text-align: center !important;
  }
}

/* ── FIX: Word-break on portal content areas ──────────────────────── */
@media (max-width: 600px) {
  .portal-main * {
    word-break: break-word;
    overflow-wrap: anywhere;
  }
  /* Exclude buttons and inputs from aggressive word-break */
  .portal-main button,
  .portal-main input,
  .portal-main select {
    word-break: normal;
    overflow-wrap: normal;
  }
}

/* ── FIX: Prevent badge/pill text wrapping in table cells ─────────── */
table td span[style*='border-radius'],
table td span[style*='background'],
table td .yes-badge,
table td .no-badge,
table td .limited-badge,
table td [class*='badge'],
table td [class*='chip'],
table td [class*='pill'],
table td [class*='label'],
table td [class*='status'],
table td [class*='tag'] {
  white-space: nowrap !important;
}

/* ── FIX: Portal tables — ensure readable column widths on mobile ── */
.portal-main table,
.admin-section table {
  min-width: 600px;
}
.portal-main div[style*='overflow-x'] table,
.admin-section div[style*='overflow-x'] table {
  min-width: 600px;
}

/* ============================================================================
   PHASE 3 — HEADER + FOOTER v2 (redesign 2026-05)

   Overrides existing header/footer styles using the same class names.
   No HTML changes needed across the 80+ pages — this CSS wins via being later
   in the cascade (later position + same specificity, or higher !important
   matching the existing pattern).
   ============================================================================ */

/* === HEADER v2 === */
body header {
  background: var(--surface-card);
  box-shadow: none;
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  z-index: 100;
  -webkit-backdrop-filter: saturate(180%) blur(10px);
  backdrop-filter: saturate(180%) blur(10px);
}

body header .header-content {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.85rem var(--container-pad);
  max-width: var(--container-max);
  margin: 0 auto;
  gap: var(--space-4);
}

/* Clean wordmark logo - no gradient text */
body .logo {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  background: none;
  -webkit-background-clip: initial;
  background-clip: initial;
  -webkit-text-fill-color: var(--ink);
  color: var(--ink);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  line-height: 1;
  position: relative;
  transition: color var(--duration) var(--ease-out);
}

body .logo span { color: var(--ink); }

/* Tiny terracotta dot accent before the wordmark */
body .logo::before {
  content: '';
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--accent);
  flex-shrink: 0;
  box-shadow: 0 0 0 3px var(--accent-soft);
}

body .logo:hover { color: var(--brand); }

body .logo img {
  display: inline-block;
  height: 40px;
  width: auto;
  object-fit: contain;
}

/* Nav typography - Inter, refined */
body nav {
  display: flex;
  gap: 1.7rem;
  align-items: center;
}

body nav a {
  font-family: var(--font-body);
  font-size: 0.94rem;
  font-weight: 500;
  color: var(--ink);
  text-decoration: none;
  position: relative;
  transition: color var(--duration) var(--ease-out);
  letter-spacing: -0.005em;
}

body nav a:hover,
body nav a:focus-visible {
  color: var(--brand);
}

/* Account button - clean dark filled */
body .nav-btn {
  background: var(--ink) !important;
  color: #fff !important;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.92rem;
  padding: 0.6rem 1.25rem !important;
  border-radius: var(--radius) !important;
  letter-spacing: -0.005em;
  border: none;
  transition: background var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
}
body .nav-btn:hover {
  background: var(--brand-deep) !important;
  color: #fff !important;
  transform: translateY(-1px);
}
body .nav-btn:active { transform: translateY(0) scale(0.98); }

/* Mobile hamburger - subtle */
body .mobile-menu {
  background: none;
  border: none;
  color: var(--ink);
  font-size: 1.35rem;
  padding: 0.6rem;
  min-width: 44px;
  min-height: 44px;
  cursor: pointer;
  display: none;
  border-radius: var(--radius-sm);
  transition: background var(--duration) var(--ease-out);
}
body .mobile-menu:hover { background: var(--surface-alt); }

/* === DROPDOWN NAV v2 === */
body .nav-dropdown-toggle::after {
  font-size: 0.62rem;
  margin-left: 0.2rem;
  opacity: 0.6;
}

body .nav-dropdown > a {
  padding: 0.5rem 0;
  gap: 0.35rem;
}

body .dropdown-menu {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 0.55rem;
  min-width: 240px;
  margin-top: 0.6rem;
  /* subtle entrance animation handled by display toggle */
}

body .dropdown-menu a {
  display: block;
  padding: 0.65rem 0.85rem;
  color: var(--ink);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.92rem;
  text-decoration: none;
  border-radius: var(--radius-sm);
  border-left: none;
  transition: background var(--duration) var(--ease-out), color var(--duration) var(--ease-out), padding var(--duration) var(--ease-out);
}

body .dropdown-menu a:hover,
body .dropdown-menu a:focus-visible {
  background: var(--surface-alt);
  color: var(--brand);
  border-left: none;
  padding-left: 0.85rem; /* override the old "slide on hover" pattern */
}

body .dropdown-menu a:first-child,
body .dropdown-menu a:last-child {
  border-radius: var(--radius-sm);
}

/* Mobile nav — when the hamburger is open, panel slides down clean */
@media (max-width: 768px) {
  body .mobile-menu { display: inline-flex; align-items: center; justify-content: center; }
  body nav {
    background: var(--surface-card);
    border-top: 1px solid var(--border);
    box-shadow: var(--shadow-lg);
    padding: 0.5rem 0;
  }
  body nav a {
    padding: 0.85rem 1.25rem;
    font-size: 1rem;
    border-radius: 0;
  }
  body nav a:hover {
    background: var(--surface-alt);
    color: var(--brand);
  }
  body .nav-btn {
    margin: 0.6rem 1.25rem 0.4rem;
    justify-content: center;
    text-align: center;
  }
  body .nav-dropdown {
    width: 100%;
  }
  body .dropdown-menu {
    position: static;
    box-shadow: none;
    border: none;
    background: var(--surface);
    border-radius: 0;
    margin-top: 0;
    padding: 0 0 0.3rem;
    min-width: 0;
  }
  body .dropdown-menu a {
    padding-left: 2.5rem;
    font-size: 0.92rem;
  }
  body .dropdown-menu a:hover {
    padding-left: 2.5rem;
  }
}

/* === FOOTER v2 === */
body footer {
  background: var(--ink);
  color: rgba(255,255,255,0.85);
  padding: var(--space-16) 0 0;
  margin-top: var(--space-16);
  border-top: none;
  border-image: none;
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

/* Subtle warm gradient + noise so the dark feels alive, not flat */
body footer::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 50% at 0% 0%, rgba(201, 120, 74, 0.10), transparent 65%),
    radial-gradient(ellipse 70% 50% at 100% 100%, rgba(26, 95, 158, 0.12), transparent 65%);
  pointer-events: none;
  z-index: 0;
}
body footer::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 0.95  0 0 0 0 0.86  0 0 0 0.025 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  pointer-events: none;
  opacity: 0.45;
  z-index: 0;
}

body footer > * { position: relative; z-index: 1; }

body footer a {
  color: rgba(255,255,255,0.78) !important;
  text-decoration: none;
  transition: color var(--duration) var(--ease-out);
}
body footer a:hover { color: var(--accent) !important; }

body footer p,
body footer li,
body footer small { color: rgba(255,255,255,0.78); }

body .footer-main {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: var(--space-12);
  padding-bottom: var(--space-12);
  max-width: var(--container-max);
  margin: 0 auto;
  padding-left: var(--container-pad);
  padding-right: var(--container-pad);
}

/* Brand column */
body .footer-brand {
  font-family: var(--font-display);
  font-size: 1.55rem;
  font-weight: 800;
  color: #fff;
  letter-spacing: -0.02em;
  line-height: 1.1;
  margin-bottom: var(--space-3);
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
/* Terracotta dot in the brand wordmark (matches header logo) */
body .footer-brand::before {
  content: '';
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--accent);
  flex-shrink: 0;
}
body .footer-brand span {
  color: rgba(255,255,255,0.65);
  font-weight: 500;
  letter-spacing: -0.01em;
}

body .footer-tagline {
  font-size: 0.9rem;
  color: rgba(255,255,255,0.65);
  line-height: 1.65;
  margin: 0 0 var(--space-5);
  max-width: 32ch;
}

body .footer-ndis-tag {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  background: rgba(201, 120, 74, 0.16);
  border: 1px solid rgba(201, 120, 74, 0.32);
  color: #f5b88f;
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 600;
  padding: 0.32rem 0.85rem;
  border-radius: var(--radius-full);
  margin-bottom: var(--space-5);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

body .footer-social {
  display: flex;
  gap: var(--space-2);
}
body .footer-social a {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.10);
  color: rgba(255,255,255,0.75) !important;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.9rem;
  transition: background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out), color var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
}
body .footer-social a:hover {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  color: #fff !important;
  transform: translateY(-2px);
}

/* Column headings */
body .footer-col h4 {
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--accent);
  margin: 0 0 var(--space-5);
  padding: 0;
  border-bottom: none;
}

body .footer-col ul {
  list-style: none;
  padding: 0; margin: 0;
  display: flex; flex-direction: column;
  gap: 0.75rem;
}
body .footer-col ul li {
  display: flex; align-items: flex-start; gap: 0.55rem;
  font-size: 0.9rem;
  color: rgba(255,255,255,0.72);
  line-height: 1.45;
}
body .footer-col ul li i {
  color: var(--accent);
  width: 1rem; flex-shrink: 0;
  margin-top: 0.2rem;
  font-size: 0.82rem;
}
body .footer-col ul li a {
  color: rgba(255,255,255,0.78) !important;
  font-size: 0.9rem;
  text-decoration: none;
}

/* Bottom bar */
body .footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.08);
  padding: var(--space-5) var(--container-pad);
  max-width: var(--container-max);
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-3);
  font-size: 0.82rem;
}
body .footer-bottom p {
  color: rgba(255,255,255,0.45);
  margin: 0;
  font-variant-numeric: tabular-nums;
}
body .footer-bottom-links {
  display: flex;
  gap: var(--space-5);
  flex-wrap: wrap;
}
body .footer-bottom-links a,
body .footer-bottom a {
  color: rgba(255,255,255,0.55) !important;
  font-size: 0.82rem;
}
body .footer-bottom-links a:hover,
body .footer-bottom a:hover {
  color: var(--accent) !important;
}

body .site-version {
  font-size: 0.7rem;
  opacity: 0.3;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: 0.5px;
  color: rgba(255,255,255,0.4) !important;
}

/* Responsive footer */
@media (max-width: 980px) {
  body .footer-main {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-10);
  }
}
@media (max-width: 560px) {
  body .footer-main {
    grid-template-columns: 1fr;
    gap: var(--space-8);
    padding-bottom: var(--space-8);
  }
  body footer {
    padding-top: var(--space-12);
    margin-top: var(--space-12);
  }
  body .footer-bottom {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
  }
}


/* ===========================================================================
 * PHASE 4 — SERVICE PAGES v2 OVERRIDES (2026-05-31)
 * Applies to all 8 service pages (daily-living, community-participation,
 * transport, support-coordination, youth, family, lifestyle, employment).
 * Pure CSS overrides — no HTML changes. `body .selector` wins cascade
 * against the inline <style> blocks at the top of each page.
 * =========================================================================== */

/* ----- HEROES (8 variants share one design) ----- */
body .dl-hero,
body .cp-hero,
body .ts-hero,
body .sc-hero,
body .ys-hero,
body .fs-hero,
body .ls-hero,
body .es-hero {
  position: relative;
  min-height: 380px;
  padding: var(--space-16) var(--space-5) var(--space-12);
  color: #fff;
  text-align: left;
  background-color: var(--ink);
  background-blend-mode: multiply, normal;
  background-image:
    linear-gradient(140deg, rgba(26, 34, 56, 0.92) 0%, rgba(26, 34, 56, 0.65) 50%, rgba(26, 34, 56, 0.85) 100%),
    radial-gradient(ellipse at 12% 18%, rgba(201, 120, 74, 0.22), transparent 55%),
    radial-gradient(ellipse at 88% 90%, rgba(26, 95, 158, 0.28), transparent 60%),
    var(--hero-photo, url('https://images.pexels.com/photos/4063506/pexels-photo-4063506.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp')) center/cover no-repeat;
  background-position: center;
  background-size: cover;
  overflow: hidden;
}
body .cp-hero { --hero-photo: url('https://images.pexels.com/photos/7551672/pexels-photo-7551672.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .ts-hero { --hero-photo: url('https://images.pexels.com/photos/5807627/pexels-photo-5807627.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .sc-hero { --hero-photo: url('https://images.pexels.com/photos/3760067/pexels-photo-3760067.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .ys-hero { --hero-photo: url('https://images.pexels.com/photos/8617715/pexels-photo-8617715.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .fs-hero { --hero-photo: url('https://images.pexels.com/photos/7551747/pexels-photo-7551747.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .ls-hero { --hero-photo: url('https://images.pexels.com/photos/7551627/pexels-photo-7551627.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .es-hero { --hero-photo: url('https://images.pexels.com/photos/3760069/pexels-photo-3760069.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }

body .dl-hero::before,
body .cp-hero::before,
body .ts-hero::before,
body .sc-hero::before,
body .ys-hero::before,
body .fs-hero::before,
body .ls-hero::before,
body .es-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.045 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  opacity: 0.5;
  mix-blend-mode: overlay;
  pointer-events: none;
}
body .dl-hero .container,
body .cp-hero .container,
body .ts-hero .container,
body .sc-hero .container,
body .ys-hero .container,
body .fs-hero .container,
body .ls-hero .container,
body .es-hero .container {
  position: relative;
  z-index: 2;
  max-width: 920px;
}
body .dl-hero h1,
body .cp-hero h1,
body .ts-hero h1,
body .sc-hero h1,
body .ys-hero h1,
body .fs-hero h1,
body .ls-hero h1,
body .es-hero h1 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.06;
  font-size: clamp(2.1rem, 6.2vw, 3.4rem);
  color: #fff;
  margin: 0 0 var(--space-5);
  text-wrap: balance;
}
body .dl-hero p,
body .cp-hero p,
body .ts-hero p,
body .sc-hero p,
body .ys-hero p,
body .fs-hero p,
body .ls-hero p,
body .es-hero p {
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.3vw, 1.15rem);
  line-height: 1.6;
  max-width: 640px;
  margin: 0 0 var(--space-8);
  color: rgba(255, 255, 255, 0.86);
  opacity: 1;
}
body .dl-hero .hero-btns,
body .cp-hero .hero-btns,
body .ts-hero .hero-btns,
body .sc-hero .hero-btns,
body .ys-hero .hero-btns,
body .fs-hero .hero-btns,
body .ls-hero .hero-btns,
body .es-hero .hero-btns {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  justify-content: flex-start;
}
body .dl-hero .hero-btns a,
body .cp-hero .hero-btns a,
body .ts-hero .hero-btns a,
body .sc-hero .hero-btns a,
body .ys-hero .hero-btns a,
body .fs-hero .hero-btns a,
body .ls-hero .hero-btns a,
body .es-hero .hero-btns a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.95rem 1.7rem;
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.97rem;
  letter-spacing: -0.005em;
  text-decoration: none;
  transition: transform var(--duration) var(--ease-out), background-color var(--duration) var(--ease-out), color var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .dl-hero .hero-btns a.btn-white,
body .cp-hero .hero-btns a.btn-white,
body .ts-hero .hero-btns a.btn-white,
body .sc-hero .hero-btns a.btn-white,
body .ys-hero .hero-btns a.btn-white,
body .fs-hero .hero-btns a.btn-white,
body .ls-hero .hero-btns a.btn-white,
body .es-hero .hero-btns a.btn-white {
  background: var(--accent);
  color: #fff;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body .dl-hero .hero-btns a.btn-white:hover,
body .cp-hero .hero-btns a.btn-white:hover,
body .ts-hero .hero-btns a.btn-white:hover,
body .sc-hero .hero-btns a.btn-white:hover,
body .ys-hero .hero-btns a.btn-white:hover,
body .fs-hero .hero-btns a.btn-white:hover,
body .ls-hero .hero-btns a.btn-white:hover,
body .es-hero .hero-btns a.btn-white:hover {
  background: var(--accent-deep);
  opacity: 1;
  transform: translateY(-1px);
}
body .dl-hero .hero-btns a.btn-outline,
body .cp-hero .hero-btns a.btn-outline,
body .ts-hero .hero-btns a.btn-outline,
body .sc-hero .hero-btns a.btn-outline,
body .ys-hero .hero-btns a.btn-outline,
body .fs-hero .hero-btns a.btn-outline,
body .ls-hero .hero-btns a.btn-outline,
body .es-hero .hero-btns a.btn-outline {
  background: transparent;
  color: #fff;
  border: 1.5px solid rgba(255, 255, 255, 0.42);
}
body .dl-hero .hero-btns a.btn-outline:hover,
body .cp-hero .hero-btns a.btn-outline:hover,
body .ts-hero .hero-btns a.btn-outline:hover,
body .sc-hero .hero-btns a.btn-outline:hover,
body .ys-hero .hero-btns a.btn-outline:hover,
body .fs-hero .hero-btns a.btn-outline:hover,
body .ls-hero .hero-btns a.btn-outline:hover,
body .es-hero .hero-btns a.btn-outline:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.7);
  opacity: 1;
}

/* ----- BREADCRUMB ----- */
body .breadcrumb {
  font-family: var(--font-body);
  font-size: 0.85rem;
  color: var(--ink-muted);
  letter-spacing: 0;
  margin: var(--space-5) 0 var(--space-4);
}
body .breadcrumb a {
  color: var(--ink-muted);
  text-decoration: none;
  transition: color var(--duration) var(--ease-out);
}
body .breadcrumb a:hover { color: var(--accent); }

/* ----- QUICK CONTACT STRIP (inline-styled in HTML) ----- */
body .container > div[style*="background:#f0f7ff"] {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: 1rem 1.3rem !important;
  box-shadow: var(--shadow-xs);
}
body .container > div[style*="background:#f0f7ff"] span,
body .container > div[style*="background:#f0f7ff"] strong {
  color: var(--ink) !important;
  font-family: var(--font-body);
}
body .container > div[style*="background:#f0f7ff"] i.fa-map-marker-alt {
  color: var(--accent) !important;
}
body .container > div[style*="background:#f0f7ff"] a[href^="tel:"] {
  background: var(--ink) !important;
  border-radius: var(--radius-full) !important;
}
body .container > div[style*="background:#f0f7ff"] a[href*="contact"] {
  background: var(--accent) !important;
  border-radius: var(--radius-full) !important;
}

/* ----- SECTION HEADINGS WITHIN SERVICE PAGES ----- */
body .container > section h2,
body .container > .dl-intro h2,
body .container > .funding-box h2,
body .container > .prompt-section h2 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.022em;
  line-height: 1.15;
  color: var(--ink);
  font-size: clamp(1.55rem, 3.2vw, 2rem);
  margin: 0 0 var(--space-4);
  text-wrap: balance;
}
body .container > section > p,
body .container > .dl-intro p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  line-height: 1.7;
  font-size: 1rem;
  max-width: 70ch;
}
body .container > section > p strong,
body .container > .dl-intro p strong {
  color: var(--ink);
}

/* ----- INTRO TWO-COL ----- */
body .dl-intro { gap: var(--space-10); margin: var(--space-10) 0; }
body .dl-callout {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  box-shadow: var(--shadow-sm);
}
body .dl-callout h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.15rem;
  margin-bottom: var(--space-3);
}
body .dl-callout h3 i.fa-map-marker-alt { color: var(--accent); }
body .dl-callout .stat-row { gap: var(--space-4); }
body .dl-stat .num {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--accent);
  font-size: 2rem;
  font-variant-numeric: tabular-nums;
}
body .dl-stat .lbl { color: var(--ink-muted); }
body .dl-callout p[style*="background:#e8f7ef"] {
  background: var(--accent-soft) !important;
  color: var(--accent-deep) !important;
  border-radius: var(--radius-sm) !important;
}

/* ----- DISTINCTION BOX (doing-for vs building-skills) ----- */
body .distinction-card {
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  border: 1px solid var(--border);
  background: var(--surface-card);
}
body .distinction-card.doing-for {
  background: var(--surface-card);
  border-color: var(--border);
  border-left: 3px solid var(--ink-muted);
}
body .distinction-card.building-skills {
  background: var(--surface-card);
  border-color: var(--border);
  border-left: 3px solid var(--accent);
}
body .distinction-card h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.05rem;
  margin-bottom: var(--space-3);
}
body .distinction-card ul li {
  font-family: var(--font-body);
  font-size: 0.92rem;
  color: var(--ink);
  line-height: 1.55;
  margin-bottom: var(--space-2);
}
body .distinction-note {
  color: var(--ink-muted);
  font-style: italic;
  font-size: 0.85rem;
  border-top: 1px solid var(--border);
  padding-top: var(--space-3);
  margin-top: var(--space-3);
}

/* ----- ACTIVITY GRID ----- */
body .activity-card {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  transition: transform var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .activity-card:hover {
  transform: translateY(-3px);
  border-color: var(--accent);
  box-shadow: var(--shadow-md, 0 8px 24px rgba(26, 34, 56, 0.08));
}
body .activity-card .act-icon {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-md, 10px);
  background: var(--accent-soft);
  color: var(--accent);
  font-size: 1.05rem;
  margin-bottom: var(--space-4);
}
body .activity-card h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.05rem;
  margin-bottom: var(--space-3);
}
body .activity-card ul li {
  font-family: var(--font-body);
  font-size: 0.9rem;
  color: var(--ink);
  line-height: 1.55;
  margin-bottom: 0.35rem;
}

/* ----- PLANNER ----- */
body .planner {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
}
body .planner-row { border-top: 1px solid var(--border); }
body .planner-row > div { font-family: var(--font-body); font-size: 0.9rem; color: var(--ink); }
body .planner-row.header {
  background: var(--ink);
  color: #fff;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
body .planner-row.header > div { color: #fff; }
body .planner-row:nth-child(even) > div { background: var(--surface-alt); }
body .planner-row .day-label {
  color: var(--accent);
  font-family: var(--font-display);
  font-weight: 700;
}
body .planner-row.header .day-label { color: #fff; }

/* ----- PROMPT SECTION + TABLE ----- */
body .prompt-section {
  background: var(--surface-alt);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  margin: var(--space-10) 0;
}
body .prompt-section h2 i { color: var(--accent) !important; }
body .prompt-table th {
  background: var(--ink);
  color: #fff;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.85rem 1rem;
}
body .prompt-table td {
  font-family: var(--font-body);
  color: var(--ink);
  border-bottom: 1px solid var(--border);
  padding: 0.85rem 1rem;
  background: var(--surface-card);
}
body .prompt-table tr:nth-child(even) td { background: var(--surface-alt); }
body .prompt-table td strong { color: var(--accent-deep); }

/* ----- PHASE GRID ----- */
body .phase-card {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  text-align: left;
  transition: transform var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .phase-card:hover { transform: translateY(-2px); border-color: var(--accent); }
body .phase-num {
  width: 44px;
  height: 44px;
  background: var(--ink);
  color: #fff;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.1rem;
  margin: 0 0 var(--space-4);
  border-radius: var(--radius-full);
}
body .phase-card h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.05rem;
  margin-bottom: var(--space-2);
}
body .phase-card p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.92rem;
  line-height: 1.55;
}

/* ----- EXPECT STEPS (numbered timeline) ----- */
body .expect-steps { gap: var(--space-5); }
body .expect-step { align-items: flex-start; gap: var(--space-4); }
body .step-num {
  width: 42px;
  height: 42px;
  background: var(--ink);
  color: #fff;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.05rem;
  border-radius: var(--radius-full);
  border: 2px solid var(--accent);
}
body .step-body h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.05rem;
  margin-bottom: var(--space-2);
}
body .step-body p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.95rem;
  line-height: 1.65;
}

/* ----- SESSION BLOCKS ----- */
body .session-block {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius-md, 10px);
  padding: var(--space-5);
}
body .session-block .sb-icon { font-size: 1.6rem; margin-bottom: var(--space-2); }
body .session-block h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1rem;
  margin-bottom: var(--space-2);
}
body .session-block p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.92rem;
  line-height: 1.6;
}

/* ----- FUNDING BOX (dark warm panel) ----- */
body .funding-box {
  position: relative;
  background: var(--ink);
  background-image:
    radial-gradient(ellipse at 8% 8%, rgba(201, 120, 74, 0.18), transparent 50%),
    radial-gradient(ellipse at 92% 92%, rgba(26, 95, 158, 0.22), transparent 55%);
  color: #fff;
  border-radius: var(--radius-lg);
  padding: var(--space-10);
  margin: var(--space-12) 0;
  overflow: hidden;
}
body .funding-box::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.035 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  opacity: 0.6;
  mix-blend-mode: overlay;
  pointer-events: none;
}
body .funding-box > * { position: relative; z-index: 1; }
body .funding-box h2 {
  font-family: var(--font-display);
  color: #fff;
  font-weight: 700;
  font-size: clamp(1.55rem, 3.2vw, 2rem);
  letter-spacing: -0.022em;
  margin-bottom: var(--space-3);
}
body .funding-box > p {
  font-family: var(--font-body);
  color: rgba(255, 255, 255, 0.82);
  opacity: 1;
  font-size: 1rem;
  line-height: 1.65;
  margin-bottom: var(--space-8);
  max-width: 65ch;
}
body .funding-items { gap: var(--space-4); }
body .funding-item {
  background: rgba(255, 255, 255, 0.07);
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: var(--radius-md, 10px);
  padding: var(--space-5);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
body .funding-item h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--accent);
  font-size: 0.95rem;
  margin-bottom: var(--space-2);
  letter-spacing: 0;
}
body .funding-item p {
  font-family: var(--font-body);
  color: rgba(255, 255, 255, 0.82);
  opacity: 1;
  font-size: 0.9rem;
  line-height: 1.6;
}

/* ----- WHO BENEFITS GRID ----- */
body .who-card {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  text-align: left;
  transition: transform var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .who-card:hover { transform: translateY(-2px); border-color: var(--accent); }
body .who-card .who-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-md, 10px);
  background: var(--accent-soft);
  color: var(--accent);
  font-size: 1.25rem;
  margin: 0 0 var(--space-4);
}
body .who-card h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.02rem;
  margin-bottom: var(--space-2);
}
body .who-card p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.92rem;
  line-height: 1.6;
}

/* ----- REFERRAL STEPS ----- */
body .ref-step {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  text-align: left;
}
body .ref-step .ref-num {
  width: 36px;
  height: 36px;
  background: var(--accent);
  color: #fff;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.95rem;
  margin: 0 0 var(--space-3);
  border-radius: var(--radius-full);
}
body .ref-step h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 0.98rem;
  margin-bottom: var(--space-2);
}
body .ref-step p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.88rem;
  line-height: 1.55;
}

/* ----- FAQ ----- */
body .faq-list { margin: var(--space-6) 0 var(--space-10); }
body .faq-item { border-bottom: 1px solid var(--border); }
body .faq-question {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.02rem;
  padding: 1.15rem 0.2rem;
  letter-spacing: -0.005em;
}
body .faq-question:hover { color: var(--accent); }
body .faq-question i { color: var(--accent); }
body .faq-answer {
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.95rem;
  line-height: 1.7;
  padding: 0 0.2rem 1.2rem;
}

/* ----- CTA SECTIONS (page-specific + shared cta-banner) ----- */
body .dl-cta,
body .cp-cta,
body .ts-cta,
body .sc-cta,
body .ys-cta,
body .fs-cta,
body .ls-cta,
body .es-cta,
body .cta-banner {
  position: relative;
  background: var(--ink);
  background-image:
    radial-gradient(ellipse at 18% 22%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 82% 78%, rgba(26, 95, 158, 0.3), transparent 60%);
  color: #fff;
  border-radius: var(--radius-xl);
  padding: var(--space-16) var(--space-8);
  margin: var(--space-12) 0;
  text-align: center;
  overflow: hidden;
}
body .dl-cta::before,
body .cp-cta::before,
body .ts-cta::before,
body .sc-cta::before,
body .ys-cta::before,
body .fs-cta::before,
body .ls-cta::before,
body .es-cta::before,
body .cta-banner::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.04 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  opacity: 0.6;
  mix-blend-mode: overlay;
  pointer-events: none;
}
body .dl-cta > *,
body .cp-cta > *,
body .ts-cta > *,
body .sc-cta > *,
body .ys-cta > *,
body .fs-cta > *,
body .ls-cta > *,
body .es-cta > *,
body .cta-banner > * { position: relative; z-index: 1; }
body .dl-cta h2,
body .cp-cta h2,
body .ts-cta h2,
body .sc-cta h2,
body .ys-cta h2,
body .fs-cta h2,
body .ls-cta h2,
body .es-cta h2,
body .cta-banner h2 {
  font-family: var(--font-display);
  font-weight: 700;
  color: #fff;
  font-size: clamp(1.7rem, 4vw, 2.4rem);
  letter-spacing: -0.025em;
  line-height: 1.15;
  margin-bottom: var(--space-3);
  text-wrap: balance;
}
body .dl-cta p,
body .cp-cta p,
body .ts-cta p,
body .sc-cta p,
body .ys-cta p,
body .fs-cta p,
body .ls-cta p,
body .es-cta p,
body .cta-banner p {
  font-family: var(--font-body);
  color: rgba(255, 255, 255, 0.84);
  opacity: 1;
  font-size: 1.02rem;
  line-height: 1.6;
  max-width: 56ch;
  margin: 0 auto var(--space-6);
}
body .dl-cta .cta-btns a,
body .cp-cta .cta-btns a,
body .ts-cta .cta-btns a,
body .sc-cta .cta-btns a,
body .ys-cta .cta-btns a,
body .fs-cta .cta-btns a,
body .ls-cta .cta-btns a,
body .es-cta .cta-btns a,
body .cta-banner a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.95rem 1.7rem;
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.97rem;
  text-decoration: none;
  transition: transform var(--duration) var(--ease-out), background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .dl-cta .btn-w,
body .cp-cta .btn-w,
body .ts-cta .btn-w,
body .sc-cta .btn-w,
body .ys-cta .btn-w,
body .fs-cta .btn-w,
body .ls-cta .btn-w,
body .es-cta .btn-w,
body .cta-banner .cta-btn-white {
  background: var(--accent);
  color: #fff;
  border: none;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body .dl-cta .btn-w:hover,
body .cta-banner .cta-btn-white:hover {
  background: var(--accent-deep);
  transform: translateY(-1px);
  opacity: 1;
}
body .dl-cta .btn-o,
body .cp-cta .btn-o,
body .ts-cta .btn-o,
body .sc-cta .btn-o,
body .ys-cta .btn-o,
body .fs-cta .btn-o,
body .ls-cta .btn-o,
body .es-cta .btn-o,
body .cta-banner .cta-btn-outline {
  background: transparent;
  color: #fff;
  border: 1.5px solid rgba(255, 255, 255, 0.42);
}
body .dl-cta .btn-o:hover,
body .cta-banner .cta-btn-outline:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.7);
  opacity: 1;
}
body .callout-cta {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.85rem 1.5rem;
  background: var(--accent) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--radius-full) !important;
  font-family: var(--font-body);
  font-weight: 600;
  text-decoration: none;
  box-shadow: 0 6px 18px rgba(201, 120, 74, 0.28);
  transition: transform var(--duration) var(--ease-out), background var(--duration) var(--ease-out);
}
body .callout-cta:hover { background: var(--accent-deep) !important; transform: translateY(-1px); }

/* ----- RELATED SERVICES GRID ----- */
body .related-card {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  transition: transform var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .related-card:hover {
  transform: translateY(-3px);
  border-color: var(--accent);
  box-shadow: 0 12px 32px rgba(26, 34, 56, 0.08);
}
body .related-card i {
  color: var(--accent);
  font-size: 1.7rem;
  margin-bottom: var(--space-3);
}
body .related-card h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1rem;
  margin-bottom: var(--space-2);
}
body .related-card p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.88rem;
  line-height: 1.55;
}

/* ----- SECTION DIVIDER (soften) ----- */
body .section-divider {
  border-top: 1px solid var(--border);
  margin: var(--space-12) 0;
  opacity: 0.7;
}

/* ----- IN-CONTENT BUTTONS (e.g. Request Daily Living Support) ----- */
body .container > section a.btn[style*="background:var(--primary)"],
body .container > section a.btn[style*="background: var(--primary)"] {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  border-radius: var(--radius-full) !important;
  padding: 0.95rem 1.8rem !important;
  font-family: var(--font-body);
  font-weight: 600;
  box-shadow: 0 6px 18px rgba(201, 120, 74, 0.28);
  transition: transform var(--duration) var(--ease-out), background var(--duration) var(--ease-out);
}
body .container > section a.btn[style*="background:var(--primary)"]:hover,
body .container > section a.btn[style*="background: var(--primary)"]:hover {
  background: var(--accent-deep) !important;
  border-color: var(--accent-deep) !important;
  transform: translateY(-1px);
}

/* ----- MOBILE TUNING (375-768px) ----- */
@media (max-width: 768px) {
  body .dl-hero,
  body .cp-hero,
  body .ts-hero,
  body .sc-hero,
  body .ys-hero,
  body .fs-hero,
  body .ls-hero,
  body .es-hero {
    min-height: 320px;
    padding: var(--space-12) var(--space-4) var(--space-10);
  }
  body .dl-hero .hero-btns,
  body .cp-hero .hero-btns,
  body .ts-hero .hero-btns,
  body .sc-hero .hero-btns,
  body .ys-hero .hero-btns,
  body .fs-hero .hero-btns,
  body .ls-hero .hero-btns,
  body .es-hero .hero-btns { flex-direction: column; align-items: stretch; }
  body .dl-hero .hero-btns a,
  body .cp-hero .hero-btns a,
  body .ts-hero .hero-btns a,
  body .sc-hero .hero-btns a,
  body .ys-hero .hero-btns a,
  body .fs-hero .hero-btns a,
  body .ls-hero .hero-btns a,
  body .es-hero .hero-btns a { justify-content: center; width: 100%; }

  body .container > div[style*="background:#f0f7ff"] {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: var(--space-3) !important;
  }
  body .container > div[style*="background:#f0f7ff"] > div:last-child {
    width: 100%;
    flex-direction: column;
    gap: var(--space-2) !important;
  }
  body .container > div[style*="background:#f0f7ff"] > div:last-child a {
    width: 100%;
    justify-content: center;
  }

  body .funding-box { padding: var(--space-6); }
  body .prompt-section { padding: var(--space-5); }
  body .dl-cta,
  body .cp-cta,
  body .ts-cta,
  body .sc-cta,
  body .ys-cta,
  body .fs-cta,
  body .ls-cta,
  body .es-cta,
  body .cta-banner {
    padding: var(--space-10) var(--space-5);
    border-radius: var(--radius-lg);
  }
  body .dl-cta .cta-btns,
  body .cp-cta .cta-btns,
  body .ts-cta .cta-btns,
  body .sc-cta .cta-btns,
  body .ys-cta .cta-btns,
  body .fs-cta .cta-btns,
  body .ls-cta .cta-btns,
  body .es-cta .cta-btns { flex-direction: column; align-items: stretch; gap: var(--space-3); }
  body .dl-cta .cta-btns a,
  body .cta-banner a { width: 100%; justify-content: center; }
}

/* ----- HERO BUTTON VARIANTS (.btn-hero-white / .btn-hero-outline) ----- */
/* Used by support-coordination + about + referral heroes */
body [class*="-hero"] .btn-hero-white,
body [class*="-hero"] .btn-hero-outline {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.95rem 1.7rem;
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.97rem;
  letter-spacing: -0.005em;
  text-decoration: none;
  transition: transform var(--duration) var(--ease-out), background-color var(--duration) var(--ease-out), color var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body [class*="-hero"] .btn-hero-white {
  background: var(--accent) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body [class*="-hero"] .btn-hero-white:hover {
  background: var(--accent-deep) !important;
  transform: translateY(-1px);
  box-shadow: 0 10px 28px rgba(165, 92, 52, 0.4);
}
body [class*="-hero"] .btn-hero-outline {
  background: transparent !important;
  color: #fff !important;
  border: 1.5px solid rgba(255, 255, 255, 0.42) !important;
}
body [class*="-hero"] .btn-hero-outline:hover {
  background: rgba(255, 255, 255, 0.1) !important;
  border-color: rgba(255, 255, 255, 0.7) !important;
}

/* ----- HERO BADGE (eyebrow pill) ----- */
body [class*="-hero"] .badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: rgba(255, 255, 255, 0.92);
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.45rem 0.95rem;
  border-radius: var(--radius-full);
  margin-bottom: var(--space-5);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
body [class*="-hero"] .badge i {
  color: var(--accent);
}

/* ----- STAT BAR (support-coordination .sc-stats) ----- */
body .sc-stats {
  background: var(--surface-card);
  color: var(--ink);
  border-bottom: 1px solid var(--border);
  padding: var(--space-5) 0;
}
body .sc-stats strong,
body .sc-stats .num {
  color: var(--accent);
  font-family: var(--font-display);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* ----- PHOTO STRIPS (support-coordination + community-participation) ----- */
body .photo-strip-wrap,
body .page-photo-strip {
  background: var(--surface);
  padding: 0;
}
body .photo-strip,
body .page-photo-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2px;
  background: var(--border);
}
body .photo-strip img,
body .page-photo-strip img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  filter: saturate(0.92);
}
@media (max-width: 768px) {
  body .photo-strip,
  body .page-photo-strip { grid-template-columns: repeat(2, 1fr); }
}

/* ----- JUMP NAV (support-coordination + others) ----- */
body .jump-nav {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  margin: var(--space-6) 0;
}
body .jump-nav p {
  font-family: var(--font-body);
  font-weight: 600;
  color: var(--ink);
  margin-bottom: var(--space-3);
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
body .jump-nav p i { color: var(--accent); }
body .jump-nav .jump-links { display: flex; flex-wrap: wrap; gap: var(--space-2); }
body .jump-nav .jump-link {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 0.95rem;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--ink);
  text-decoration: none;
  transition: background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out), color var(--duration) var(--ease-out);
}
body .jump-nav .jump-link:hover {
  background: var(--accent-soft);
  border-color: var(--accent);
  color: var(--accent-deep);
}


/* ===========================================================================
 * PHASE 5 — LOCATION PAGES v2 OVERRIDES (2026-05-31)
 * Applies to all 4 location pages (newcastle, lake-macquarie, maitland,
 * hunter-valley). Same `body .selector` override pattern as Phases 3-4.
 * =========================================================================== */

/* ----- LOC HERO ----- */
body .loc-hero {
  position: relative;
  min-height: 380px;
  padding: var(--space-16) var(--space-5) var(--space-12);
  color: #fff;
  text-align: left;
  background-color: var(--ink);
  background-image:
    linear-gradient(140deg, rgba(26, 34, 56, 0.92) 0%, rgba(26, 34, 56, 0.6) 50%, rgba(26, 34, 56, 0.88) 100%),
    radial-gradient(ellipse at 14% 20%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 86% 88%, rgba(26, 95, 158, 0.3), transparent 60%),
    var(--loc-photo, url('https://images.pexels.com/photos/10684107/pexels-photo-10684107.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp')) center/cover no-repeat;
  background-blend-mode: multiply, normal, normal, normal;
  background-position: center;
  background-size: cover;
  overflow: hidden;
}
body[data-page="ndis-support-newcastle"] .loc-hero,
body .loc-hero.loc-hero-newcastle { --loc-photo: url('https://images.pexels.com/photos/2473147/pexels-photo-2473147.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .loc-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.045 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  opacity: 0.5;
  mix-blend-mode: overlay;
  pointer-events: none;
}
body .loc-hero > * { position: relative; z-index: 1; max-width: 920px; margin-left: auto; margin-right: auto; }
body .loc-hero h1 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.06;
  font-size: clamp(2.1rem, 6.2vw, 3.4rem);
  color: #fff;
  margin: 0 0 var(--space-5);
  text-wrap: balance;
}
body .loc-hero p {
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.3vw, 1.15rem);
  line-height: 1.6;
  max-width: 640px;
  margin: 0 0 var(--space-8);
  color: rgba(255, 255, 255, 0.86);
  opacity: 1;
}
body .loc-hero-btns {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  justify-content: flex-start;
}
body .loc-hero-btns a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.95rem 1.7rem;
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.97rem;
  letter-spacing: -0.005em;
  text-decoration: none;
  transition: transform var(--duration) var(--ease-out), background-color var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .loc-hero-btns .btn-white {
  background: var(--accent);
  color: #fff;
  border: none;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body .loc-hero-btns .btn-white:hover {
  background: var(--accent-deep);
  transform: translateY(-1px);
  box-shadow: 0 10px 28px rgba(165, 92, 52, 0.4);
}
body .loc-hero-btns .btn-outline-w {
  background: transparent;
  color: #fff;
  border: 1.5px solid rgba(255, 255, 255, 0.42);
}
body .loc-hero-btns .btn-outline-w:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.7);
}

/* ----- LOC MAIN + SECTIONS ----- */
body .loc-main {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 var(--space-5) var(--space-16);
  background: var(--surface);
}
body .loc-section {
  padding: var(--space-12) 0;
  border-bottom: 1px solid var(--border);
}
body .loc-section h2 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.022em;
  line-height: 1.15;
  color: var(--ink);
  font-size: clamp(1.7rem, 3.5vw, 2.2rem);
  margin: 0 0 var(--space-5);
  text-wrap: balance;
}
body .loc-section h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.15rem;
  margin: var(--space-6) 0 var(--space-3);
}
body .loc-section p,
body .loc-section ul,
body .loc-section li {
  font-family: var(--font-body);
  color: var(--ink-muted);
  line-height: 1.7;
  font-size: 1rem;
}
body .loc-section p strong { color: var(--ink); }
body .loc-section a {
  color: var(--accent-deep);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  transition: color var(--duration) var(--ease-out);
}
body .loc-section a:hover { color: var(--accent); }

/* ----- SERVICES GRID + CHIPS ----- */
body .services-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-4);
  margin-top: var(--space-6);
}
body .service-chip {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  text-align: left;
  transition: transform var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out);
}
body .service-chip:hover {
  transform: translateY(-2px);
  border-color: var(--accent);
  box-shadow: 0 8px 24px rgba(26, 34, 56, 0.06);
}
body .service-chip i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  background: var(--accent-soft);
  color: var(--accent);
  border-radius: var(--radius-md, 10px);
  font-size: 1.05rem;
  margin-bottom: var(--space-3);
}
body .service-chip h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1rem;
  letter-spacing: -0.005em;
  margin: 0 0 var(--space-2);
}
body .service-chip p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.9rem;
  line-height: 1.55;
  margin: 0;
}

/* ----- SUBURB PILLS ----- */
body .suburb-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-top: var(--space-4);
}
body .suburb-pill {
  background: var(--accent-soft);
  border: 1px solid transparent;
  color: var(--accent-deep);
  border-radius: var(--radius-full);
  padding: 0.4rem 0.95rem;
  font-family: var(--font-body);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0;
  transition: background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .suburb-pill:hover {
  background: var(--surface-card);
  border-color: var(--accent);
}

/* ----- FAQ (loc-page variant) ----- */
body .loc-section .faq { margin-top: var(--space-5); }
body .loc-section .faq-item {
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  margin-bottom: var(--space-3);
  overflow: hidden;
  background: var(--surface-card);
  transition: border-color var(--duration) var(--ease-out);
}
body .loc-section .faq-item:hover { border-color: var(--accent); }
body .loc-section .faq-item.open { border-color: var(--accent); }
body .loc-section .faq-q {
  width: 100%;
  text-align: left;
  background: transparent;
  border: none;
  padding: 1.15rem 1.3rem;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: -0.005em;
  color: var(--ink);
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-3);
  transition: color var(--duration) var(--ease-out);
}
body .loc-section .faq-q:hover { color: var(--accent); }
body .loc-section .faq-q i {
  color: var(--accent);
  transition: transform var(--duration) var(--ease-out);
}
body .loc-section .faq-item.open .faq-q i { transform: rotate(180deg); }
body .loc-section .faq-a {
  padding: 0 1.3rem 1.2rem;
  font-family: var(--font-body);
  color: var(--ink-muted);
  font-size: 0.95rem;
  line-height: 1.7;
}

/* ----- LOC CTA BOX ----- */
body .cta-box {
  position: relative;
  background: var(--ink);
  background-image:
    radial-gradient(ellipse at 18% 22%, rgba(201, 120, 74, 0.28), transparent 55%),
    radial-gradient(ellipse at 82% 78%, rgba(26, 95, 158, 0.32), transparent 60%);
  color: #fff;
  border-radius: var(--radius-xl);
  padding: var(--space-12) var(--space-8);
  margin: var(--space-8) 0;
  text-align: center;
  overflow: hidden;
}
body .cta-box::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.04 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  opacity: 0.55;
  mix-blend-mode: overlay;
  pointer-events: none;
}
body .cta-box > * { position: relative; z-index: 1; }
body .cta-box h2 {
  font-family: var(--font-display);
  font-weight: 700;
  color: #fff;
  font-size: clamp(1.6rem, 3.6vw, 2.1rem);
  letter-spacing: -0.022em;
  line-height: 1.18;
  margin-bottom: var(--space-3);
  text-wrap: balance;
}
body .cta-box p {
  font-family: var(--font-body);
  color: rgba(255, 255, 255, 0.84);
  opacity: 1;
  font-size: 1rem;
  line-height: 1.6;
  max-width: 52ch;
  margin: 0 auto var(--space-6);
}
body .cta-box .cta-btns {
  display: flex;
  gap: var(--space-3);
  justify-content: center;
  flex-wrap: wrap;
}
body .cta-box .cta-btns a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.9rem 1.6rem;
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none;
  transition: transform var(--duration) var(--ease-out), background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .cta-box .cta-btns a:first-child,
body .cta-box .cta-btns a[style*="background:#fff"] {
  background: var(--accent) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body .cta-box .cta-btns a:first-child:hover,
body .cta-box .cta-btns a[style*="background:#fff"]:hover {
  background: var(--accent-deep) !important;
  transform: translateY(-1px);
}
body .cta-box .cta-btns a:last-child:not(:only-child),
body .cta-box .cta-btns a[href^="tel:"] {
  background: transparent !important;
  color: #fff !important;
  border: 1.5px solid rgba(255, 255, 255, 0.42) !important;
}
body .cta-box .cta-btns a:last-child:not(:only-child):hover,
body .cta-box .cta-btns a[href^="tel:"]:hover {
  background: rgba(255, 255, 255, 0.1) !important;
  border-color: rgba(255, 255, 255, 0.7) !important;
}

/* ----- MOBILE TUNING (loc pages) ----- */
@media (max-width: 768px) {
  body .loc-hero {
    min-height: 320px;
    padding: var(--space-12) var(--space-4) var(--space-10);
  }
  body .loc-hero-btns {
    flex-direction: column;
    align-items: stretch;
  }
  body .loc-hero-btns a {
    justify-content: center;
    width: 100%;
  }
  body .loc-main { padding: 0 var(--space-4) var(--space-12); }
  body .loc-section { padding: var(--space-8) 0; }
  body .cta-box {
    padding: var(--space-10) var(--space-5);
    border-radius: var(--radius-lg);
  }
  body .cta-box .cta-btns {
    flex-direction: column;
    align-items: stretch;
  }
  body .cta-box .cta-btns a {
    width: 100%;
    justify-content: center;
  }
}


/* ===========================================================================
 * PHASE 6 — INFORMATION PAGES v2 OVERRIDES (2026-05-31)
 * Applies to: what-is-ndis, ndis-faq, ndis-funding-guide, ndis-how-to-apply
 * =========================================================================== */

/* ----- INFO HEROES (4 variants share design) ----- */
body .ndis-hero,
body .fg-hero,
body .apply-hero,
body .faq-hero {
  position: relative;
  min-height: 340px;
  padding: var(--space-14) var(--space-5) var(--space-12);
  color: #fff;
  text-align: left;
  background-color: var(--ink);
  background-image:
    linear-gradient(140deg, rgba(26, 34, 56, 0.92) 0%, rgba(26, 34, 56, 0.62) 50%, rgba(26, 34, 56, 0.88) 100%),
    radial-gradient(ellipse at 12% 18%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 88% 90%, rgba(26, 95, 158, 0.3), transparent 60%),
    var(--info-hero-photo, url('https://images.unsplash.com/photo-1450101499163-c8848c66ca85?w=1600&h=800&fit=crop&fm=webp')) center/cover no-repeat;
  background-blend-mode: multiply, normal, normal, normal;
  background-position: center;
  background-size: cover;
  overflow: hidden;
  display: block;
}
body .fg-hero    { --info-hero-photo: url('https://images.pexels.com/photos/4386431/pexels-photo-4386431.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .apply-hero { --info-hero-photo: url('https://images.pexels.com/photos/3760067/pexels-photo-3760067.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .faq-hero   { --info-hero-photo: url('https://images.pexels.com/photos/10981242/pexels-photo-10981242.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }

body .ndis-hero::before,
body .fg-hero::before,
body .apply-hero::before,
body .faq-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.045 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  opacity: 0.5;
  mix-blend-mode: overlay;
  pointer-events: none;
}
body .ndis-hero > *,
body .fg-hero > *,
body .apply-hero > *,
body .faq-hero > * {
  position: relative;
  z-index: 1;
  max-width: 920px;
  margin-left: auto;
  margin-right: auto;
}
body .ndis-hero h1,
body .fg-hero h1,
body .apply-hero h1,
body .faq-hero h1 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.08;
  font-size: clamp(2rem, 5.5vw, 3rem);
  color: #fff;
  margin: 0 0 var(--space-4);
  text-wrap: balance;
}
body .ndis-hero p,
body .fg-hero p,
body .apply-hero p,
body .faq-hero p {
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.2vw, 1.12rem);
  line-height: 1.6;
  max-width: 640px;
  margin: 0 0 var(--space-4);
  color: rgba(255, 255, 255, 0.86);
  opacity: 1;
}

/* Apply-hero badges (eyebrow chips) */
body .apply-hero-badges {
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
  justify-content: flex-start;
  margin-top: var(--space-3);
}
body .apply-hero-badge {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: rgba(255, 255, 255, 0.92);
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  padding: 0.4rem 0.9rem;
  border-radius: var(--radius-full);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}

/* ----- SECTION HEADINGS ON INFO PAGES ----- */
body .guide-section h2,
body .elig-section h2,
body .mgmt-section h2,
body .journey-section h2,
body .not-funded-section h2,
body .rn-section h2,
body .terms-section h2,
body .local-section h2,
body .categories-section h2,
body .faq-section h2,
body .related-section h2,
body .faq-category .cat-header h2,
body .help-panel h2,
body .still-questions h2 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.022em;
  line-height: 1.18;
  color: var(--ink);
  font-size: clamp(1.55rem, 3vw, 1.95rem);
  margin-bottom: var(--space-4);
  text-wrap: balance;
}
body .guide-section h3,
body .journey-section h3,
body .local-section h3,
body .categories-section h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.15rem;
  margin: var(--space-5) 0 var(--space-3);
}
body .guide-section p,
body .elig-section p,
body .mgmt-section p,
body .journey-section p,
body .not-funded-section p,
body .rn-section p,
body .terms-section p,
body .local-section p,
body .categories-section p,
body .help-panel p,
body .still-questions p,
body .faq-intro {
  font-family: var(--font-body);
  color: var(--ink-muted);
  line-height: 1.7;
}
body .section-sub {
  font-family: var(--font-body);
  color: var(--ink-muted) !important;
  font-size: 1rem;
}

/* ----- ALT-BACKGROUND SECTIONS (use warm surface-alt instead of pastel blue) ----- */
body .elig-section,
body .mgmt-section,
body .not-funded-section,
body .terms-section {
  background: var(--surface-alt) !important;
  padding: var(--space-12) 0 !important;
  margin: var(--space-10) 0 !important;
}

/* ----- DEFINITION BOX (terracotta accent) ----- */
body .definition-box {
  background: var(--accent-soft) !important;
  border-left: 4px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-5) var(--space-6) !important;
  margin: var(--space-6) 0 !important;
}
body .definition-box p {
  font-family: var(--font-body);
  color: var(--ink) !important;
  font-size: 1.05rem;
  line-height: 1.7;
}
body .definition-box strong { color: var(--accent-deep) !important; }

/* ----- ELIGIBILITY ITEMS ----- */
body .elig-item {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-5) !important;
}
body .elig-item i { color: var(--accent) !important; }
body .elig-item p { font-family: var(--font-body); color: var(--ink); }
body .elig-note {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-4) var(--space-5) !important;
  font-family: var(--font-body);
  color: var(--ink-muted) !important;
}
body .elig-note i { color: var(--accent) !important; }

/* ----- CATEGORY CARDS (.cat-core, .cat-cb, .cat-capital — neutralize pastel rainbow) ----- */
body .category-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-top: 4px solid var(--accent) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
}
body .cat-core    { border-top-color: var(--accent) !important; }
body .cat-cb      { border-top-color: var(--brand) !important; }
body .cat-capital { border-top-color: var(--ink) !important; }
body .cat-label {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent-deep) !important;
}
body .cat-cb .cat-label { color: var(--brand-deep) !important; }
body .cat-capital .cat-label { color: var(--ink) !important; }
body .category-card h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.15rem;
}
body .category-card .cat-desc,
body .category-card li {
  font-family: var(--font-body);
  color: var(--ink-muted);
}
body .flex-note {
  background: var(--accent-soft) !important;
  color: var(--accent-deep) !important;
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 600;
  border-radius: var(--radius-full) !important;
  padding: 0.3rem 0.85rem !important;
}
body .cat-cb .flex-note { background: var(--brand-soft) !important; color: var(--brand-deep) !important; }
body .cat-capital .flex-note { background: rgba(26, 34, 56, 0.08) !important; color: var(--ink) !important; }

/* ----- MANAGEMENT CARDS ----- */
body .mgmt-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-top: 4px solid var(--accent) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
  box-shadow: var(--shadow-sm) !important;
}
body .mgmt-badge {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.03em;
  padding: 0.3rem 0.75rem !important;
  border-radius: var(--radius-full) !important;
}
body .badge-agency { background: var(--brand-soft) !important; color: var(--brand-deep) !important; }
body .badge-plan { background: var(--accent-soft) !important; color: var(--accent-deep) !important; }
body .badge-self { background: rgba(26, 34, 56, 0.08) !important; color: var(--ink) !important; }
body .mgmt-card h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.05rem;
}
body .mgmt-card li,
body .mgmt-card .best-for { font-family: var(--font-body); color: var(--ink-muted); }
body .mgmt-card .best-for { border-top: 1px solid var(--border) !important; }
body .mgmt-card .best-for strong { color: var(--accent-deep) !important; }

/* ----- JOURNEY STEPS ----- */
body .journey-step {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-5) var(--space-6) !important;
  transition: border-color var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
}
body .journey-step:hover { border-color: var(--accent) !important; transform: translateY(-1px); }
body .step-circle {
  background: var(--ink) !important;
  color: #fff !important;
  font-family: var(--font-display);
  font-weight: 700;
  border: 2px solid var(--accent) !important;
}
body .step-body h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
}
body .step-body p { font-family: var(--font-body); color: var(--ink-muted); }

/* ----- NOT-FUNDED ITEMS (neutralize red-pink theme) ----- */
body .not-funded-item {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-left: 3px solid var(--ink-muted) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-5) !important;
}
body .not-funded-item h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink) !important;
}
body .not-funded-item p { font-family: var(--font-body); color: var(--ink-muted); }
body .not-funded-note {
  background: var(--accent-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  font-family: var(--font-body);
  color: var(--ink) !important;
}

/* ----- R&N TEST + TERMS ----- */
body .rn-item,
body .term-item {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-5) !important;
}
body .rn-item h4,
body .term-item h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink) !important;
}
body .rn-item p,
body .term-item p { font-family: var(--font-body); color: var(--ink-muted); }

/* ----- FAQ PAGE: CATEGORY HEADERS (neutralize rainbow pastels) ----- */
body .faq-category .cat-header {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-4) var(--space-5) !important;
}
body .faq-category .cat-header i,
body .faq-category .cat-header h2 {
  color: var(--ink) !important;
}
body .faq-category .cat-header i { color: var(--accent) !important; }

/* ----- FAQ PAGE: ACCORDION ----- */
body .faq-item {
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  background: var(--surface-card) !important;
  transition: border-color var(--duration) var(--ease-out);
}
body .faq-item:has(.faq-question[aria-expanded="true"]) { border-color: var(--accent) !important; }
body .faq-question {
  background: transparent !important;
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink) !important;
  padding: 1.15rem 1.3rem !important;
  letter-spacing: -0.005em;
  font-size: 1rem;
}
body .faq-question:hover { background: var(--surface-alt) !important; color: var(--accent) !important; }
body .faq-question[aria-expanded="true"] {
  background: transparent !important;
  color: var(--ink) !important;
}
body .faq-question .faq-chevron { color: var(--accent) !important; }
body .faq-answer {
  font-family: var(--font-body);
  color: var(--ink-muted) !important;
  border-top: 1px solid var(--border) !important;
  padding: var(--space-4) 1.3rem !important;
  font-size: 0.95rem;
  line-height: 1.7;
}
body .faq-answer strong { color: var(--ink) !important; }

/* ----- STILL HAVE QUESTIONS (dark warm panel) ----- */
body .still-questions {
  background: var(--ink) !important;
  background-image:
    radial-gradient(ellipse at 18% 22%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 82% 78%, rgba(26, 95, 158, 0.3), transparent 60%) !important;
  border: none !important;
  border-radius: var(--radius-xl) !important;
  color: #fff !important;
  padding: var(--space-12) var(--space-8) !important;
  position: relative;
  overflow: hidden;
}
body .still-questions h2 { color: #fff !important; }
body .still-questions p { color: rgba(255, 255, 255, 0.84) !important; }
body .still-questions .contact-options {
  display: flex;
  gap: var(--space-3);
  justify-content: center;
  flex-wrap: wrap;
}
body .contact-opt {
  background: rgba(255, 255, 255, 0.08) !important;
  border: 1px solid rgba(255, 255, 255, 0.22) !important;
  color: #fff !important;
  border-radius: var(--radius-full) !important;
  padding: 0.85rem 1.5rem !important;
  font-family: var(--font-body);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  transition: background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .contact-opt:hover {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body .contact-opt i { color: var(--accent) !important; }
body .contact-opt:hover i { color: #fff !important; }

/* ----- FUNDING GUIDE: BUDGET/CLAIM/RATE/TIP CARDS ----- */
body .budget-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-top: 4px solid var(--accent) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
}
body .claim-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-5) !important;
}
body .rate-card {
  background: var(--surface-card) !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-sm) !important;
  padding: var(--space-3) var(--space-4) !important;
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
}
body .tip-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-5) var(--space-6) !important;
}

/* ----- HOW-TO-APPLY: STEP CARDS + OTHER BOXES ----- */
body .step-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
  box-shadow: var(--shadow-sm) !important;
}
body .step-card h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink) !important;
}
body .step-card p,
body .step-card li { font-family: var(--font-body); color: var(--ink-muted); }
body .phone-box {
  background: var(--ink) !important;
  color: #fff !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-5) !important;
  background-image: radial-gradient(ellipse at 20% 20%, rgba(201, 120, 74, 0.18), transparent 55%) !important;
}
body .phone-box-icon { color: var(--accent) !important; }
body .info-box {
  background: var(--brand-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--brand) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink) !important;
}
body .warn-box {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-left: 3px solid var(--ink-muted) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink) !important;
}
body .tip-box {
  background: var(--accent-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink) !important;
}
body .doc-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-5) !important;
  transition: border-color var(--duration) var(--ease-out);
}
body .doc-card:hover { border-color: var(--accent) !important; }
body .doc-card-icon {
  background: var(--accent-soft) !important;
  color: var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
}
body .expect-item,
body .ps-item,
body .ps-step {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-4) var(--space-5) !important;
}

/* ----- HELP PANEL (dark warm CTA) ----- */
body .help-panel {
  background: var(--ink) !important;
  background-image:
    radial-gradient(ellipse at 18% 22%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 82% 78%, rgba(26, 95, 158, 0.3), transparent 60%) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--radius-xl) !important;
  padding: var(--space-12) var(--space-8) !important;
  text-align: center;
  position: relative;
  overflow: hidden;
}
body .help-panel h2 { color: #fff !important; }
body .help-panel p { color: rgba(255, 255, 255, 0.84) !important; }
body .help-panel-btns { display: flex; gap: var(--space-3); justify-content: center; flex-wrap: wrap; }
body .help-panel-btns a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.95rem 1.7rem;
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.97rem;
  text-decoration: none;
  transition: transform var(--duration) var(--ease-out), background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .help-panel-btns a:first-child {
  background: var(--accent) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body .help-panel-btns a:first-child:hover {
  background: var(--accent-deep) !important;
  transform: translateY(-1px);
}
body .help-panel-btns a:nth-child(n+2) {
  background: transparent !important;
  color: #fff !important;
  border: 1.5px solid rgba(255, 255, 255, 0.42) !important;
}
body .help-panel-btns a:nth-child(n+2):hover {
  background: rgba(255, 255, 255, 0.1) !important;
  border-color: rgba(255, 255, 255, 0.7) !important;
}

/* ----- JUMP NAV (already styled in Phase 4 for service pages; reinforce for info pages) ----- */
body .jump-nav {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-5) !important;
}
body .jump-nav p { font-family: var(--font-body); font-weight: 600; color: var(--ink) !important; }
body .jump-link {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  color: var(--ink) !important;
  border-radius: var(--radius-full) !important;
  padding: 0.5rem 0.95rem !important;
  font-family: var(--font-body);
  font-weight: 500 !important;
  font-size: 0.85rem !important;
}
body .jump-link:hover {
  background: var(--accent-soft) !important;
  border-color: var(--accent) !important;
  color: var(--accent-deep) !important;
}

/* ----- PAGE PHOTO STRIP (already styled in Phase 4; ensure consistent for info pages) ----- */
body .page-photo-strip img { filter: saturate(0.92); }

/* ----- MOBILE TUNING (info pages) ----- */
@media (max-width: 768px) {
  body .ndis-hero,
  body .fg-hero,
  body .apply-hero,
  body .faq-hero {
    min-height: 300px;
    padding: var(--space-12) var(--space-4) var(--space-10);
  }
  body .still-questions,
  body .help-panel {
    padding: var(--space-10) var(--space-5) !important;
    border-radius: var(--radius-lg) !important;
  }
  body .help-panel-btns,
  body .still-questions .contact-options {
    flex-direction: column;
    align-items: stretch;
  }
  body .help-panel-btns a,
  body .contact-opt {
    width: 100%;
    justify-content: center;
    text-align: center;
  }
  body .elig-section,
  body .mgmt-section,
  body .not-funded-section,
  body .terms-section {
    padding: var(--space-10) 0 !important;
  }
}


/* ===========================================================================
 * PHASE 7 — AUDIENCE + CONVERSION PAGES v2 OVERRIDES (2026-05-31)
 * Applies to: for-families, for-self-managed, contact, referral, about
 * =========================================================================== */

/* ----- AUDIENCE HEROES (4 variants: about, fam, sm, referral) ----- */
body .about-hero,
body .fam-hero,
body .sm-hero,
body .referral-hero {
  position: relative;
  min-height: 360px;
  padding: var(--space-14) var(--space-5) var(--space-12);
  color: #fff;
  text-align: left;
  background-color: var(--ink);
  background-image:
    linear-gradient(140deg, rgba(26, 34, 56, 0.92) 0%, rgba(26, 34, 56, 0.6) 50%, rgba(26, 34, 56, 0.88) 100%),
    radial-gradient(ellipse at 14% 20%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 86% 88%, rgba(26, 95, 158, 0.3), transparent 60%),
    var(--audience-hero-photo, url('https://images.pexels.com/photos/3768114/pexels-photo-3768114.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp')) center/cover no-repeat;
  background-blend-mode: multiply, normal, normal, normal;
  overflow: hidden;
}
body .about-hero    { --audience-hero-photo: url('https://images.pexels.com/photos/3768114/pexels-photo-3768114.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .fam-hero      { --audience-hero-photo: url('https://images.pexels.com/photos/7551747/pexels-photo-7551747.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .sm-hero       { --audience-hero-photo: url('https://images.pexels.com/photos/3184465/pexels-photo-3184465.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .referral-hero { --audience-hero-photo: url('https://images.pexels.com/photos/4173251/pexels-photo-4173251.jpeg?auto=compress&cs=tinysrgb&w=1600&h=800&fit=crop&fm=webp'); }
body .about-hero::before,
body .fam-hero::before,
body .sm-hero::before,
body .referral-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.045 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  opacity: 0.5;
  mix-blend-mode: overlay;
  pointer-events: none;
}
body .about-hero > *,
body .fam-hero > *,
body .sm-hero > *,
body .referral-hero > * {
  position: relative;
  z-index: 1;
  max-width: 920px;
  margin-left: auto;
  margin-right: auto;
}
body .about-hero h1,
body .fam-hero h1,
body .sm-hero h1,
body .referral-hero h1 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.06;
  font-size: clamp(2.1rem, 6vw, 3.2rem);
  color: #fff;
  margin: 0 0 var(--space-4);
  text-wrap: balance;
}
body .about-hero p,
body .fam-hero p,
body .sm-hero p,
body .referral-hero p {
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.2vw, 1.13rem);
  line-height: 1.6;
  max-width: 640px;
  margin: 0 0 var(--space-6);
  color: rgba(255, 255, 255, 0.86);
  opacity: 1;
}
body .sm-hero-cta {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  justify-content: flex-start;
  margin-top: var(--space-5);
}
body .sm-hero-cta a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.95rem 1.7rem;
  border-radius: var(--radius-full);
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.97rem;
  text-decoration: none;
  transition: transform var(--duration) var(--ease-out), background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .sm-hero-cta a:first-child {
  background: var(--accent);
  color: #fff;
  border: none;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body .sm-hero-cta a:first-child:hover {
  background: var(--accent-deep);
  transform: translateY(-1px);
}
body .sm-hero-cta a:nth-child(n+2) {
  background: transparent;
  color: #fff;
  border: 1.5px solid rgba(255, 255, 255, 0.42);
}
body .sm-hero-cta a:nth-child(n+2):hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.7);
}

/* ----- ABOUT STATS BAR (was bright primary blue) ----- */
body .about-stats {
  background: var(--surface-card) !important;
  border-bottom: 1px solid var(--border) !important;
  padding: var(--space-6) 0 !important;
}
body .about-stats-inner {
  font-family: var(--font-body);
  color: var(--ink) !important;
}
body .about-stats-inner strong,
body .about-stats-inner .num {
  color: var(--accent) !important;
  font-family: var(--font-display);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* ----- ALT-BG SECTIONS (about + for-families + for-self-managed) ----- */
body .mvv-section,
body .how-section,
body .story-section,
body .accred-section,
body .roles-section,
body .transition-section,
body .gateway-section,
body .young-section,
body .respite-section,
body .planning-section,
body .faq-section {
  background: var(--surface-alt) !important;
  padding: var(--space-12) 0 !important;
  margin: 0 !important;
}
body .values-section,
body .team-section,
body .related-section {
  background: var(--surface) !important;
  padding: var(--space-12) 0 !important;
  margin: 0 !important;
}

/* ----- ABOUT: H2s + INTRO ----- */
body .intro-grid h2,
body .mvv-section h2,
body .values-section h2,
body .how-section h2,
body .team-section h2,
body .story-section h2,
body .sub-nav-grid + h2,
body .sub-nav-card h3,
body .accred-section h2,
body .roles-section h2,
body .planning-section h2,
body .gateway-section h2,
body .respite-section h2,
body .transition-section h2,
body .young-section h2,
body .faq-section h2,
body .related-section h2,
body .sm-section h2 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.022em;
  line-height: 1.18;
  color: var(--ink);
  font-size: clamp(1.55rem, 3vw, 2rem);
  text-wrap: balance;
}
body .intro-grid p,
body .sm-section p,
body .roles-section p,
body .respite-section p,
body .transition-section p,
body .planning-section p,
body .young-section p,
body .gateway-section p,
body .how-section p,
body .mvv-section p,
body .story-section p,
body .accred-section p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  line-height: 1.7;
}

/* ----- COMMON CARD PATTERN (used by many audience cards) ----- */
body .mvv-card,
body .value-card,
body .team-card,
body .sub-nav-card,
body .role-card,
body .respite-card,
body .transition-card,
body .how-card,
body .reason-card,
body .sidebar-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
  box-shadow: none !important;
  transition: transform var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out);
}
body .mvv-card:hover,
body .value-card:hover,
body .role-card:hover,
body .respite-card:hover,
body .transition-card:hover,
body .how-card:hover,
body .reason-card:hover,
body .sub-nav-card:hover {
  transform: translateY(-2px);
  border-color: var(--accent) !important;
  box-shadow: 0 8px 24px rgba(26, 34, 56, 0.06) !important;
}
body .mvv-card h3,
body .value-card h3,
body .team-card h3,
body .sub-nav-card h3,
body .role-card h3,
body .respite-card h3,
body .transition-card h3,
body .how-card h3,
body .reason-card h3,
body .sidebar-card h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink) !important;
  font-size: 1.05rem;
  margin-bottom: var(--space-2);
}
body .mvv-card p,
body .value-card p,
body .team-card p,
body .sub-nav-card p,
body .role-card p,
body .respite-card p,
body .transition-card p,
body .how-card p,
body .reason-card p,
body .sidebar-card p,
body .mvv-card li,
body .value-card li,
body .role-card li,
body .respite-card li,
body .transition-card li,
body .how-card li {
  font-family: var(--font-body);
  color: var(--ink-muted) !important;
  line-height: 1.6;
  font-size: 0.92rem;
}

/* Card icons (FontAwesome) - terracotta accent */
body .mvv-card i,
body .value-card i,
body .role-card i,
body .respite-card i,
body .transition-card i,
body .how-card i,
body .reason-card i,
body .sub-nav-card i {
  color: var(--accent) !important;
}

/* ----- TEAM CARDS (have body section + photo) ----- */
body .team-card { padding: 0 !important; overflow: hidden; }
body .team-card img { border-radius: 0 !important; }
body .team-card-body {
  padding: var(--space-5) !important;
}
body .team-card-body h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  font-size: 1.05rem;
}
body .team-card-body p { font-family: var(--font-body); color: var(--ink-muted); }

/* ----- SUB-NAV CARDS (about-page) ----- */
body .sub-nav-card { text-align: left !important; }
body .sub-nav-card-body { padding: 0 !important; }

/* ----- GATEWAY SECTION (was bright pink) - dark warm CTA panel ----- */
body .gateway-section {
  background: var(--ink) !important;
  background-image:
    radial-gradient(ellipse at 18% 22%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 82% 78%, rgba(26, 95, 158, 0.3), transparent 60%) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--radius-xl) !important;
  padding: var(--space-10) var(--space-8) !important;
  margin: var(--space-10) 0 !important;
  position: relative;
  overflow: hidden;
}
body .gateway-section h2,
body .gateway-section h3 { color: #fff !important; }
body .gateway-section p { color: rgba(255, 255, 255, 0.84) !important; }
body .gateway-item {
  background: rgba(255, 255, 255, 0.07) !important;
  border: 1px solid rgba(255, 255, 255, 0.16) !important;
  border-radius: var(--radius-md, 10px) !important;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
body .gateway-item h3,
body .gateway-item h4 { color: var(--accent) !important; }
body .gateway-item p { color: rgba(255, 255, 255, 0.82) !important; }

/* ----- YOUNG BOX (was bright accent — terracotta tinted card) ----- */
body .young-box {
  background: var(--accent-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
  color: var(--ink) !important;
}
body .young-box h3 { color: var(--accent-deep) !important; font-family: var(--font-display); font-weight: 700; }
body .young-box p { color: var(--ink) !important; font-family: var(--font-body); }

/* ----- FOR-SELF-MANAGED: STEPS + CTA BOX ----- */
body .sm-step {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-5) var(--space-6) !important;
  transition: border-color var(--duration) var(--ease-out);
}
body .sm-step:hover { border-color: var(--accent) !important; }
body .sm-step-num {
  background: var(--ink) !important;
  color: #fff !important;
  border: 2px solid var(--accent) !important;
  font-family: var(--font-display);
  font-weight: 700;
}
body .sm-step h3,
body .sm-step h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink) !important;
}
body .sm-step p { font-family: var(--font-body); color: var(--ink-muted) !important; }
body .sm-faq-item {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  margin-bottom: var(--space-3) !important;
}
body .sm-cta-box {
  background: var(--ink) !important;
  background-image:
    radial-gradient(ellipse at 18% 22%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 82% 78%, rgba(26, 95, 158, 0.3), transparent 60%) !important;
  color: #fff !important;
  border-radius: var(--radius-xl) !important;
  padding: var(--space-12) var(--space-8) !important;
  margin: var(--space-10) 0 !important;
  text-align: center;
  border: none !important;
}
body .sm-cta-box h2,
body .sm-cta-box h3 { color: #fff !important; font-family: var(--font-display); font-weight: 700; }
body .sm-cta-box p { color: rgba(255, 255, 255, 0.84) !important; }
body .sm-cta-box a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0.95rem 1.7rem;
  border-radius: var(--radius-full) !important;
  background: var(--accent) !important;
  color: #fff !important;
  border: none !important;
  font-family: var(--font-body);
  font-weight: 600;
  text-decoration: none;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
}
body .sm-cta-box a:hover { background: var(--accent-deep) !important; transform: translateY(-1px); }

/* ----- REFERRAL: PROCESS STEPS + FORM FIELDS ----- */
body .process-steps {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  padding: var(--space-6) !important;
}
body .form-section-title {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink) !important;
  border-left: 3px solid var(--accent) !important;
  padding-left: var(--space-3);
}
body .form-row { gap: var(--space-4) !important; }
body .form-group { margin-bottom: var(--space-4) !important; }
body label {
  font-family: var(--font-body);
  font-weight: 600;
  color: var(--ink);
  font-size: 0.92rem;
}
body input[type="text"],
body input[type="email"],
body input[type="tel"],
body input[type="date"],
body input[type="password"],
body select,
body textarea {
  font-family: var(--font-body) !important;
  background: var(--surface-card) !important;
  border: 1.5px solid var(--border-strong) !important;
  color: var(--ink) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: 0.75rem 0.9rem !important;
  transition: border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out);
}
body input:focus,
body select:focus,
body textarea:focus {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 4px rgba(201, 120, 74, 0.12) !important;
  outline: none !important;
}
body .form-hint {
  font-family: var(--font-body);
  color: var(--ink-muted) !important;
  font-size: 0.82rem;
}
body .form-divider {
  border-top: 1px solid var(--border) !important;
}
body .form-privacy-note {
  font-family: var(--font-body);
  color: var(--ink-muted) !important;
  font-size: 0.85rem;
}
body .btn-submit {
  display: inline-flex !important;
  align-items: center;
  gap: var(--space-2);
  background: var(--accent) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--radius-full) !important;
  padding: 0.95rem 1.8rem !important;
  font-family: var(--font-body) !important;
  font-weight: 600 !important;
  font-size: 1rem !important;
  cursor: pointer;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35);
  transition: background var(--duration) var(--ease-out), transform var(--duration) var(--ease-out);
}
body .btn-submit:hover {
  background: var(--accent-deep) !important;
  transform: translateY(-1px);
}
body .form-success {
  background: var(--accent-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink) !important;
  font-family: var(--font-body);
}
body input.is-invalid,
body select.is-invalid,
body textarea.is-invalid {
  border-color: var(--accent-deep) !important;
}
body .check-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important;
  gap: var(--space-3) !important;
}
body .info-box {
  background: var(--brand-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--brand) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink) !important;
  padding: var(--space-4) var(--space-5) !important;
  font-family: var(--font-body);
}
body .green-box {
  background: var(--accent-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink) !important;
  padding: var(--space-4) var(--space-5) !important;
  font-family: var(--font-body);
}

/* ----- CONTACT PAGE: TOP GRID + RICH CONTENT ----- */
body #contactTopLayout {
  background: var(--surface-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-8) !important;
  margin: var(--space-8) 0 var(--space-6) !important;
  gap: var(--space-8) !important;
}
body #contactTopLayout h1,
body #contactTopLayout h2 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.022em;
  color: var(--ink);
  font-size: clamp(1.8rem, 3.5vw, 2.3rem);
  text-wrap: balance;
  margin-bottom: var(--space-4);
}
body #contactTopLayout p {
  font-family: var(--font-body);
  color: var(--ink-muted);
  line-height: 1.65;
}
@media (max-width: 768px) {
  body #contactTopLayout {
    grid-template-columns: 1fr !important;
    padding: var(--space-6) !important;
  }
}

/* ----- MOBILE TUNING (audience pages) ----- */
@media (max-width: 768px) {
  body .about-hero,
  body .fam-hero,
  body .sm-hero,
  body .referral-hero {
    min-height: 300px;
    padding: var(--space-12) var(--space-4) var(--space-10);
  }
  body .sm-hero-cta {
    flex-direction: column;
    align-items: stretch;
  }
  body .sm-hero-cta a {
    width: 100%;
    justify-content: center;
  }
  body .gateway-section,
  body .sm-cta-box {
    padding: var(--space-10) var(--space-5) !important;
    border-radius: var(--radius-lg) !important;
  }
  body .mvv-section,
  body .how-section,
  body .story-section,
  body .roles-section,
  body .transition-section,
  body .respite-section,
  body .planning-section,
  body .young-section,
  body .faq-section,
  body .values-section,
  body .team-section,
  body .related-section,
  body .sm-section {
    padding: var(--space-10) 0 !important;
  }
}


/* ===========================================================================
 * PHASE 8 — PORTAL PAGES v2 OVERRIDES (2026-05-31)
 * Applies to: account (login), client-dashboard, client-appointments,
 * client-messages, client-billing, client-progress, client-settings,
 * client-ndis-profile, client-invoice-history,
 * employee-dashboard, employee-shifts, etc.
 *
 * IMPORTANT: This phase ONLY changes visual chrome (colors/fonts/borders).
 * NEVER touches:
 * - payment-config.js or Stripe DOM elements
 * - Booking flow JS or HTML structure
 * - Rate display logic (calcShiftBreakdown, formatAppointmentRateLabel)
 *
 * Dark mode (prefers-color-scheme: dark) rules in individual page <style>
 * blocks are intentionally NOT overridden — they keep working on system theme.
 * =========================================================================== */

/* ----- ACCOUNT (LOGIN) PAGE ----- */
body .account-container {
  padding: var(--space-8) var(--space-5) !important;
  gap: var(--space-12) !important;
}
body .account-info h2 {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  color: var(--ink) !important;
  letter-spacing: -0.022em;
  font-size: clamp(1.7rem, 3vw, 2.2rem) !important;
  text-wrap: balance;
}
body .account-info p {
  font-family: var(--font-body) !important;
  color: var(--ink-muted) !important;
  line-height: 1.7;
}
body .feature-list li {
  font-family: var(--font-body) !important;
  color: var(--ink) !important;
  padding: var(--space-3) 0 !important;
}
body .feature-list i {
  color: var(--accent) !important;
  width: 24px;
}
body .feature-copy strong {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
}
body .feature-copy span {
  font-family: var(--font-body);
  color: var(--ink-muted) !important;
}
body .account-form {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-xl) !important;
  padding: var(--space-8) !important;
  box-shadow: var(--shadow-lg) !important;
}
body .form-tabs {
  border-bottom: 1px solid var(--border) !important;
  gap: 0 !important;
}
body .form-tab {
  font-family: var(--font-display) !important;
  font-weight: 600 !important;
  color: var(--ink-muted) !important;
  font-size: 0.95rem !important;
  padding: 0.9rem 1rem !important;
  border-bottom: 2px solid transparent !important;
  transition: color var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .form-tab:hover {
  color: var(--accent) !important;
}
body .form-tab.active {
  color: var(--ink) !important;
  border-bottom-color: var(--accent) !important;
}
body .form-group label,
body .checkbox-group label {
  font-family: var(--font-body) !important;
  color: var(--ink) !important;
  font-weight: 600 !important;
  font-size: 0.92rem !important;
}
body .form-group input,
body .form-group select,
body .form-group textarea {
  font-family: var(--font-body) !important;
  border: 1.5px solid var(--border-strong) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: 0.75rem 0.9rem !important;
  color: var(--ink) !important;
  background: var(--surface-card) !important;
  transition: border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out);
}
body .form-group input:focus,
body .form-group select:focus,
body .form-group textarea:focus {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 4px rgba(201, 120, 74, 0.12) !important;
  outline: none !important;
}
body .form-section-title {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  color: var(--ink) !important;
  border-bottom: 1px solid var(--border) !important;
  letter-spacing: -0.005em !important;
  font-size: 0.95rem !important;
}
body .form-btn {
  background: var(--accent) !important;
  color: #fff !important;
  font-family: var(--font-body) !important;
  font-weight: 600 !important;
  border-radius: var(--radius-full) !important;
  padding: 1rem 1.5rem !important;
  border: none !important;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.35) !important;
  transition: background var(--duration) var(--ease-out), transform var(--duration) var(--ease-out) !important;
}
body .form-btn:hover {
  background: var(--accent-deep) !important;
  transform: translateY(-1px) !important;
}
body .social-btn {
  background: var(--surface-card) !important;
  border: 1.5px solid var(--border-strong) !important;
  color: var(--ink) !important;
  font-family: var(--font-body) !important;
  font-weight: 600 !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: 0.85rem !important;
  transition: border-color var(--duration) var(--ease-out), background var(--duration) var(--ease-out);
}
body .social-btn:hover {
  border-color: var(--accent) !important;
  background: var(--accent-soft) !important;
}
body .divider {
  color: var(--ink-muted) !important;
  font-family: var(--font-body);
  font-size: 0.85rem;
}
body .divider::before {
  background: var(--border) !important;
}
body .divider span {
  background: var(--surface-card) !important;
}
body .form-footer {
  font-family: var(--font-body);
  color: var(--ink-muted) !important;
}
body .form-footer a {
  color: var(--accent-deep) !important;
  text-decoration: none;
  font-weight: 600;
}
body .form-footer a:hover {
  color: var(--accent) !important;
  text-decoration: underline;
}
body .checkbox-group a {
  color: var(--accent-deep) !important;
}

/* ----- PORTAL CARDS (used by client-dashboard, client-appointments, etc.) ----- */
body .portal-card,
body .preview-card,
body .hub-card,
body .kpi-card,
body .confirm-card {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg) !important;
  overflow: hidden;
  transition: border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out);
}
body .hub-card:hover,
body .kpi-card:hover {
  border-color: var(--accent) !important;
  box-shadow: 0 8px 24px rgba(26, 34, 56, 0.06) !important;
}
body .portal-card-header,
body .preview-card-head,
body .confirm-card-header {
  background: var(--surface-alt) !important;
  border-bottom: 1px solid var(--border) !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  color: var(--ink) !important;
  padding: var(--space-4) var(--space-5) !important;
}
body .portal-card-body,
body .preview-card-body,
body .confirm-card-body {
  padding: var(--space-5) !important;
  font-family: var(--font-body);
  color: var(--ink);
}
body .confirm-card-footer {
  background: var(--surface-alt) !important;
  border-top: 1px solid var(--border) !important;
}

/* ----- KPI CARDS (dashboard stats) ----- */
body .kpi-card {
  padding: var(--space-5) !important;
}
body .kpi-card h3,
body .kpi-card .kpi-label {
  font-family: var(--font-body) !important;
  color: var(--ink-muted) !important;
  font-size: 0.82rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
body .kpi-card .kpi-value,
body .kpi-card strong {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  color: var(--ink) !important;
  font-variant-numeric: tabular-nums;
}
body .kpi-card i { color: var(--accent) !important; }

/* ----- PORTAL TABS ----- */
body .portal-tabs {
  border-bottom: 1px solid var(--border) !important;
  background: transparent !important;
}
body .portal-tab {
  font-family: var(--font-display) !important;
  font-weight: 600 !important;
  color: var(--ink-muted) !important;
  border-bottom: 2px solid transparent !important;
  padding: 0.85rem 1rem !important;
  transition: color var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .portal-tab:hover {
  color: var(--accent) !important;
}
body .portal-tab.active,
body .portal-tab[aria-selected="true"] {
  color: var(--ink) !important;
  border-bottom-color: var(--accent) !important;
}

/* ----- PORTAL BUTTONS (.portal-btn, .submit-btn, .confirm-btn) ----- */
body .portal-btn,
body .submit-btn,
body .ndis-cta-btn,
body .confirm-btn {
  background: var(--accent) !important;
  background-image: none !important;
  color: #fff !important;
  font-family: var(--font-body) !important;
  font-weight: 600 !important;
  border-radius: var(--radius-full) !important;
  padding: 0.75rem 1.4rem !important;
  border: none !important;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  box-shadow: 0 6px 18px rgba(201, 120, 74, 0.28);
  transition: background var(--duration) var(--ease-out), transform var(--duration) var(--ease-out) !important;
}
body .portal-btn:hover,
body .submit-btn:hover,
body .ndis-cta-btn:hover,
body .confirm-btn:hover {
  background: var(--accent-deep) !important;
  transform: translateY(-1px) !important;
}
body .portal-btn-danger,
body .confirm-btn-danger,
body .cancel-btn {
  background: var(--ink) !important;
  color: #fff !important;
  border-radius: var(--radius-full) !important;
  border: none !important;
  font-family: var(--font-body) !important;
  font-weight: 600 !important;
  box-shadow: none !important;
}
body .portal-btn-danger:hover,
body .confirm-btn-danger:hover,
body .cancel-btn:hover {
  background: #2a3654 !important;
}
body .confirm-btn-cancel {
  background: var(--surface-alt) !important;
  color: var(--ink) !important;
  border: 1px solid var(--border) !important;
}
body .confirm-btn-cancel:hover {
  background: var(--surface-card) !important;
  border-color: var(--ink-muted) !important;
}

/* ----- DASH HEADER / NOTIF / AVATAR ----- */
body .dash-notif-btn {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  color: var(--ink) !important;
  border-radius: var(--radius-full) !important;
}
body .dash-notif-btn:hover {
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}
body .dash-avatar-chip {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  color: var(--ink) !important;
  font-family: var(--font-body) !important;
  border-radius: var(--radius-full) !important;
}

/* ----- PSB PLAN SECTION (NDIS plan summary) ----- */
body .psb-plan-section {
  background: var(--accent-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  font-family: var(--font-body);
  color: var(--ink) !important;
}

/* ----- DAY PILLS (week-day selectors) ----- */
body .day-pill {
  background: var(--surface-card) !important;
  border: 1px solid var(--border-strong) !important;
  color: var(--ink-muted) !important;
  font-family: var(--font-display) !important;
  font-weight: 600 !important;
  border-radius: var(--radius-full) !important;
  transition: background var(--duration) var(--ease-out), color var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .day-pill:hover {
  border-color: var(--accent) !important;
  color: var(--accent) !important;
}
body .day-pill.active,
body .day-pill[aria-selected="true"],
body input[type="checkbox"]:checked + .day-pill {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  color: #fff !important;
}

/* ----- GROUP BOX (form grouping container) ----- */
body .group-box {
  background: var(--surface-alt) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: var(--space-4) !important;
}

/* ----- NIGHT SHIFT BOX + PRICE PREVIEW + LOADING BOX ----- */
body .night-shift-box,
body .price-preview {
  background: var(--accent-soft) !important;
  border: 1px solid transparent !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink) !important;
  font-family: var(--font-body);
}
body .loading-box {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink-muted) !important;
  font-family: var(--font-body);
}

/* ----- HUB CARDS (dashboard nav cards) ----- */
body .hub-card {
  padding: var(--space-5) !important;
}
body .hub-card h3,
body .hub-card h4 {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  color: var(--ink) !important;
}
body .hub-card p {
  font-family: var(--font-body) !important;
  color: var(--ink-muted) !important;
}
body .hub-card i {
  color: var(--accent) !important;
}

/* ----- PORTAL FORMS (general inputs across portal pages) ----- */
body .portal-card-body input[type="text"],
body .portal-card-body input[type="email"],
body .portal-card-body input[type="tel"],
body .portal-card-body input[type="date"],
body .portal-card-body input[type="time"],
body .portal-card-body input[type="number"],
body .portal-card-body input[type="password"],
body .portal-card-body select,
body .portal-card-body textarea {
  font-family: var(--font-body) !important;
  background: var(--surface-card) !important;
  border: 1.5px solid var(--border-strong) !important;
  color: var(--ink) !important;
  border-radius: var(--radius-md, 10px) !important;
  padding: 0.65rem 0.85rem !important;
  transition: border-color var(--duration) var(--ease-out), box-shadow var(--duration) var(--ease-out);
}
body .portal-card-body input:focus,
body .portal-card-body select:focus,
body .portal-card-body textarea:focus {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 4px rgba(201, 120, 74, 0.12) !important;
  outline: none !important;
}
body .portal-card-body label {
  font-family: var(--font-body) !important;
  font-weight: 600 !important;
  color: var(--ink) !important;
  font-size: 0.9rem !important;
}

/* ----- PORTAL TABLES (used in billing, invoice history, shifts, etc.) ----- */
body .portal-card-body table {
  font-family: var(--font-body) !important;
  border-collapse: collapse;
  width: 100%;
}
body .portal-card-body table th {
  background: var(--surface-alt) !important;
  color: var(--ink) !important;
  font-family: var(--font-display) !important;
  font-weight: 600 !important;
  font-size: 0.82rem !important;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  border-bottom: 1px solid var(--border) !important;
  padding: 0.75rem 0.9rem !important;
}
body .portal-card-body table td {
  color: var(--ink) !important;
  border-bottom: 1px solid var(--border) !important;
  padding: 0.75rem 0.9rem !important;
  font-variant-numeric: tabular-nums;
}
body .portal-card-body table tr:hover td {
  background: var(--surface-alt) !important;
}

/* ----- PAGE TITLE / SECTION HEADINGS ON PORTAL PAGES ----- */
body main h1,
body .portal-section > h2,
body .portal-section > h3 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--ink);
  letter-spacing: -0.022em;
}

/* ----- MOBILE TUNING (portal) ----- */
@media (max-width: 768px) {
  body .account-container {
    grid-template-columns: 1fr !important;
    padding: var(--space-6) var(--space-4) !important;
    gap: var(--space-8) !important;
  }
  body .account-form {
    padding: var(--space-6) !important;
  }
  body .form-grid-two,
  body .form-grid {
    grid-template-columns: 1fr !important;
  }
  body .social-login {
    grid-template-columns: 1fr !important;
  }
  body .portal-tabs {
    overflow-x: auto;
    flex-wrap: nowrap !important;
    -webkit-overflow-scrolling: touch;
  }
  body .portal-tab {
    white-space: nowrap;
    flex-shrink: 0;
  }
}

/* ----- DASHBOARD-SPECIFIC PATCHES (Phase 8.1) ----- */
/* Sign-out button (was red danger) - neutralize to ink */
body .psb-logout,
body .psb-mobile-logout {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  color: var(--ink) !important;
  font-family: var(--font-body) !important;
  font-weight: 600 !important;
  border-radius: var(--radius-full) !important;
  padding: 0.45rem 0.85rem !important;
  cursor: pointer;
  transition: background var(--duration) var(--ease-out), border-color var(--duration) var(--ease-out);
}
body .psb-logout:hover,
body .psb-mobile-logout:hover {
  background: var(--accent-soft) !important;
  border-color: var(--accent) !important;
  color: var(--accent-deep) !important;
}

/* Next-session banner (was blue+green gradient via inline style) */
body #nextSessionBanner {
  background: var(--ink) !important;
  background-image:
    radial-gradient(ellipse at 14% 20%, rgba(201, 120, 74, 0.25), transparent 55%),
    radial-gradient(ellipse at 86% 88%, rgba(26, 95, 158, 0.3), transparent 60%) !important;
  border-radius: var(--radius-lg) !important;
  color: #fff !important;
}
body #nextSessionTitle,
body #nextSessionMeta {
  font-family: var(--font-display);
  color: #fff !important;
}
body #nextSessionMeta { opacity: 0.85; }

/* Avatar circle (was blue+green gradient via inline) */
body #avatarCircle {
  background: var(--ink) !important;
  background-image: none !important;
  color: #fff !important;
  border: 2px solid var(--accent) !important;
  font-family: var(--font-display);
}

/* Floating book button (was gradient via inline) */
body a[href*="appointments"][style*="linear-gradient"] {
  background: var(--accent) !important;
  background-image: none !important;
  box-shadow: 0 8px 24px rgba(201, 120, 74, 0.4) !important;
  font-family: var(--font-body) !important;
}

/* Psb plan-section heading (already styled but reinforce) */
body .psb-plan-section h2,
body .psb-plan-section h3 {
  font-family: var(--font-display) !important;
  color: var(--ink) !important;
}

/* Hub-card book pill (when used as standalone button) */
body .hub-card[href*="book"] .hub-icon,
body .hub-card[href*="appointment"] .hub-icon {
  background: var(--accent-soft) !important;
}
body .hub-card[href*="book"] .hub-icon i,
body .hub-card[href*="appointment"] .hub-icon i {
  color: var(--accent) !important;
}


/* ===========================================================================
 * PHASE 9 — FINAL POLISH (2026-05-31)
 * Last cleanup pass before redesign ships:
 * - account.html top banner h1 (was leftover primary blue)
 * - for-families gateway-number (was bright magenta #880e4f)
 * - ndis-how-to-apply jump-to-step pills (were leftover brand-blue circles)
 * - universal focus-ring polish for keyboard accessibility
 * - hide scroll-reveal flicker on slow connections
 * =========================================================================== */

/* ----- ACCOUNT PAGE BANNER (h1 was using old --primary blue) ----- */
body section[id="main-content"] > h1#accountPageTitle {
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  color: var(--ink) !important;
  letter-spacing: -0.022em;
  font-size: clamp(1.8rem, 4vw, 2.5rem) !important;
  margin-top: var(--space-2) !important;
  text-wrap: balance;
}
body section[id="main-content"] > p#accountPageSubtitle {
  font-family: var(--font-body) !important;
  color: var(--ink-muted) !important;
  font-size: 1rem !important;
}
/* Subtle warm wash background for the page header band */
body section[id="main-content"][style*="background"] {
  background: var(--surface) !important;
  border-bottom: 1px solid var(--border);
  padding: var(--space-6) var(--space-5) !important;
}

/* ----- GATEWAY PHONE NUMBER (for-families) ----- */
body .gateway-section .gateway-number {
  color: var(--accent) !important;
  font-family: var(--font-display) !important;
  font-weight: 700 !important;
  font-variant-numeric: tabular-nums;
}

/* ----- JUMP-TO-STEP NAV (ndis-how-to-apply) ----- */
body .ps-step,
body .ps-item {
  background: var(--surface-card) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-md, 10px) !important;
  color: var(--ink) !important;
}
body .ps-step a,
body .ps-item a {
  color: var(--ink) !important;
  font-family: var(--font-body);
  font-weight: 600;
  text-decoration: none;
}
body .ps-step a:hover,
body .ps-item a:hover {
  color: var(--accent) !important;
}
/* Jump-to-step number circles */
body .ps-step span:first-child,
body .ps-step strong:first-child {
  background: var(--ink) !important;
  color: #fff !important;
  border: 2px solid var(--accent) !important;
  font-family: var(--font-display);
  font-weight: 700;
  border-radius: var(--radius-full) !important;
}

/* ----- UNIVERSAL FOCUS-RING POLISH (a11y) ----- */
body a:focus-visible,
body button:focus-visible,
body [role="button"]:focus-visible,
body [tabindex]:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}
body input:focus-visible,
body select:focus-visible,
body textarea:focus-visible {
  outline: none;
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 4px rgba(201, 120, 74, 0.18) !important;
}
/* Skip-to-main-content link (a11y) - shown when focused */
body a.skip-to-content,
body a[href="#main-content"]:not([class*="btn"]):not([class*="hero"]) {
  position: absolute;
  left: -9999px;
  top: 0;
  background: var(--ink);
  color: #fff;
  padding: 0.75rem 1.2rem;
  border-radius: var(--radius-md, 10px);
  font-family: var(--font-body);
  font-weight: 600;
  text-decoration: none;
  z-index: 9999;
}
body a.skip-to-content:focus,
body a[href="#main-content"]:not([class*="btn"]):not([class*="hero"]):focus {
  left: 1rem;
  top: 1rem;
}

/* ----- REDUCED-MOTION RESPECT (a11y) ----- */
@media (prefers-reduced-motion: reduce) {
  body *,
  body *::before,
  body *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ----- SCROLL-REVEAL FLICKER FIX ----- */
/* When JS hasn't loaded, scroll-reveal elements are invisible. Make them visible after a short delay so SEO crawlers and no-JS users see content. */
body .scroll-reveal:not(.revealed) {
  opacity: 1 !important;
  transform: none !important;
}
@media (min-width: 320px) {
  body.js-enabled .scroll-reveal:not(.revealed) {
    opacity: 0;
    transform: translateY(20px);
  }
}

/* ----- VERSION BUMP MARKER (so we can confirm at-a-glance) ----- */
body .site-version::before {
  content: "";
}


/* ===========================================================================
 * PHASE 10 — DESKTOP SPACING COMPRESSION (2026-05-31)
 * User feedback: "some spacing is just too much on desktop, do a big fix"
 *
 * Root cause: Global `section { margin: 2rem 0; padding: 4rem 2rem; }` rule
 * was layered ON TOP of v2 section padding. Result: every section had 64px
 * padding + 32px margins = 192px of empty space between content blocks.
 * Multiplied across 8-12 sections per page = 1500-2400px of wasted vertical.
 *
 * Fix: zero the global margins on v2/content sections + tighten v2 padding.
 * =========================================================================== */

/* ----- ZERO REDUNDANT SECTION MARGINS ----- */
body main section,
body .container > section,
body section.section-v2,
body section.hero-v2,
body section[class*="-hero"],
body section[class*="-section"],
body section[class*="-cta"],
body section.scroll-reveal {
  margin: 0 !important;
}

/* ----- TIGHTEN .section-v2 PADDING (homepage sections) ----- */
body .section-v2 {
  padding: clamp(2rem, 3.5vw, 2.75rem) 0 !important;
}

/* ----- TIGHTEN v2 HOMEPAGE HERO DESKTOP PADDING ----- */
@media (min-width: 880px) {
  body .hero-v2 {
    padding: var(--space-10) 0 var(--space-10) !important;
  }
}

/* ----- TIGHTEN ALL DARK-INK PAGE HEROES DESKTOP PADDING ----- */
@media (min-width: 880px) {
  body .dl-hero, body .cp-hero, body .ts-hero, body .sc-hero,
  body .ys-hero, body .fs-hero, body .ls-hero, body .es-hero,
  body .ndis-hero, body .fg-hero, body .apply-hero, body .faq-hero,
  body .about-hero, body .fam-hero, body .sm-hero, body .referral-hero,
  body .loc-hero {
    padding: var(--space-10) var(--space-5) var(--space-8) !important;
    min-height: 280px !important;
  }
}

/* ----- TIGHTEN IN-CONTAINER CONTENT SECTIONS (service pages, info pages) ----- */
body .container > section,
body .container > section.scroll-reveal {
  padding: var(--space-8) 0 !important;
}

/* ----- TIGHTEN SPECIAL PANELS (CTAs, funding boxes, etc.) ----- */
body .prompt-section,
body .funding-box,
body .dl-cta, body .cp-cta, body .ts-cta, body .sc-cta,
body .ys-cta, body .fs-cta, body .ls-cta, body .es-cta,
body .cta-banner, body .cta-box, body .gateway-section,
body .sm-cta-box, body .still-questions, body .help-panel {
  margin-top: var(--space-8) !important;
  margin-bottom: var(--space-8) !important;
  padding-top: var(--space-8) !important;
  padding-bottom: var(--space-8) !important;
}

@media (min-width: 880px) {
  body .dl-cta, body .cp-cta, body .ts-cta, body .sc-cta,
  body .ys-cta, body .fs-cta, body .ls-cta, body .es-cta,
  body .cta-banner, body .cta-box, body .gateway-section,
  body .sm-cta-box, body .still-questions, body .help-panel {
    padding: var(--space-10) var(--space-8) !important;
  }
}

/* ----- TIGHTEN SECTION DIVIDERS ----- */
body .section-divider {
  margin: var(--space-6) 0 !important;
}

/* ----- TIGHTEN FOOTER TOP MARGIN ----- */
body footer {
  margin-top: var(--space-10) !important;
  padding-top: var(--space-10) !important;
}

/* ----- TIGHTEN ALT-BG SECTIONS (info pages + audience pages) ----- */
body .elig-section, body .mgmt-section, body .not-funded-section,
body .terms-section, body .mvv-section, body .how-section,
body .story-section, body .accred-section, body .roles-section,
body .transition-section, body .respite-section, body .planning-section,
body .young-section, body .faq-section, body .values-section,
body .team-section, body .related-section, body .sm-section,
body .categories-section, body .journey-section, body .rn-section,
body .local-section, body .guide-section {
  padding: var(--space-8) 0 !important;
  margin: 0 !important;
}

/* ----- TIGHTEN LOCATION-PAGE SECTIONS ----- */
body .loc-section {
  padding: var(--space-8) 0 !important;
}

/* ----- TIGHTEN SECTION HEAD MARGIN-BOTTOM ----- */
body .services-v2 .services-head,
body .howitworks-v2 .how-head,
body .dualpath-v2 .dual-head,
body .whyus-v2 .why-head,
body .news-v2 .news-head {
  margin-bottom: var(--space-8) !important;
}

/* ----- MOBILE: KEEP SLIGHTLY MORE BREATHING ROOM ----- */
@media (max-width: 768px) {
  body .section-v2 { padding: var(--space-8) 0 !important; }
  body .container > section,
  body .container > section.scroll-reveal { padding: var(--space-6) 0 !important; }
  body .elig-section, body .mgmt-section, body .not-funded-section,
  body .terms-section, body .mvv-section, body .how-section,
  body .story-section, body .roles-section,
  body .transition-section, body .respite-section, body .planning-section,
  body .young-section, body .faq-section, body .values-section,
  body .team-section, body .related-section, body .sm-section,
  body .loc-section, body .categories-section, body .journey-section,
  body .rn-section, body .local-section, body .guide-section,
  body .accred-section {
    padding: var(--space-8) 0 !important;
  }
  body footer { margin-top: var(--space-8) !important; }
}


/* ===========================================================================
 * ANIMATION PHASE 1 — Motion foundation (2026-05-31)
 *
 * Philosophy:
 * - Calm + purposeful, never decorative for its own sake.
 * - Mobile-first audience with cognitive/visual/motor disabilities — animation
 *   confirms actions and directs attention, never distracts.
 * - All durations 180-400ms. Anything longer is jarring.
 * - All easings use ease-out (decelerate into rest) so motion feels natural.
 * - prefers-reduced-motion DISABLES all transitions/animations (see end).
 * =========================================================================== */

:root {
  /* Durations */
  --anim-fast:    140ms;   /* button press, focus ring */
  --anim-med:     220ms;   /* hover lift, card scale */
  --anim-slow:    380ms;   /* entrance reveals, panel slides */
  --anim-very-slow: 600ms; /* hero headline reveal */

  /* Easings */
  --ease-out-soft:   cubic-bezier(0.16, 1, 0.3, 1);      /* default — strong decelerate, organic feel */
  --ease-out-quick:  cubic-bezier(0.25, 0.46, 0.45, 0.94); /* snappier for micro-interactions */
  --ease-in-out:     cubic-bezier(0.4, 0, 0.2, 1);         /* symmetric, for state toggles */
  --ease-spring:     cubic-bezier(0.34, 1.56, 0.64, 1);    /* overshoot, use very sparingly */

  /* Stagger increments for grids/lists */
  --stagger-1: 60ms;
  --stagger-2: 120ms;
  --stagger-3: 180ms;
  --stagger-4: 240ms;
  --stagger-5: 300ms;
  --stagger-6: 360ms;
}

/* ----- BASELINE TRANSITION FOR INTERACTIVE ELEMENTS ----- */
/* Set a sensible default so we don't have to repeat it everywhere.
   More specific rules later override these. */
body a,
body button,
body input,
body select,
body textarea,
body .card,
body .service-card-v2,
body .hub-card,
body .related-card,
body .activity-card,
body .role-card,
body .respite-card,
body .transition-card,
body .how-card,
body .reason-card,
body .mvv-card,
body .value-card,
body .team-card,
body .sub-nav-card,
body .step-card,
body .doc-card,
body .who-card,
body .phase-card,
body .ref-step,
body .sidebar-card,
body .preview-card,
body .kpi-card,
body .portal-card {
  transition-property: transform, box-shadow, background-color, border-color, color, opacity;
  transition-duration: var(--anim-med);
  transition-timing-function: var(--ease-out-soft);
}

/* ----- UTILITY ANIMATION CLASSES ----- */
/* Apply these in HTML to opt into common animations.
   IntersectionObserver in script.js adds .anim-in when element enters viewport. */

.anim-fade-in,
.anim-slide-up,
.anim-slide-left,
.anim-slide-right,
.anim-zoom-in {
  opacity: 0;
  transition-property: opacity, transform;
  transition-duration: var(--anim-slow);
  transition-timing-function: var(--ease-out-soft);
  will-change: opacity, transform;
}
.anim-slide-up    { transform: translateY(24px); }
.anim-slide-left  { transform: translateX(24px); }
.anim-slide-right { transform: translateX(-24px); }
.anim-zoom-in     { transform: scale(0.96); }

.anim-fade-in.anim-in,
.anim-slide-up.anim-in,
.anim-slide-left.anim-in,
.anim-slide-right.anim-in,
.anim-zoom-in.anim-in {
  opacity: 1;
  transform: translate(0, 0) scale(1);
}

/* Stagger: parent gets .anim-stagger, children with .anim-* delay by index */
.anim-stagger > *:nth-child(1)  { transition-delay: 0ms; }
.anim-stagger > *:nth-child(2)  { transition-delay: var(--stagger-1); }
.anim-stagger > *:nth-child(3)  { transition-delay: var(--stagger-2); }
.anim-stagger > *:nth-child(4)  { transition-delay: var(--stagger-3); }
.anim-stagger > *:nth-child(5)  { transition-delay: var(--stagger-4); }
.anim-stagger > *:nth-child(6)  { transition-delay: var(--stagger-5); }
.anim-stagger > *:nth-child(7)  { transition-delay: var(--stagger-6); }
.anim-stagger > *:nth-child(8)  { transition-delay: 420ms; }

/* ----- KEYFRAMES (reusable) ----- */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes pulseSoft {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.015); }
}
@keyframes shimmer {
  from { background-position: -200% 0; }
  to   { background-position: 200% 0; }
}
@keyframes spinSlow {
  to { transform: rotate(360deg); }
}
@keyframes pressDown {
  from { transform: translateY(0) scale(1); }
  to   { transform: translateY(1px) scale(0.99); }
}

/* ----- LOADING SHIMMER UTILITY (for skeleton states) ----- */
.anim-shimmer {
  background: linear-gradient(90deg,
    var(--surface-alt) 0%,
    rgba(255, 255, 255, 0.7) 50%,
    var(--surface-alt) 100%);
  background-size: 200% 100%;
  animation: shimmer 1.5s ease-in-out infinite;
}

/* ----- REDUCED MOTION OVERRIDE ----- */
/* Honor user preference unconditionally. Animation tokens still resolve so
   nothing breaks, but durations collapse to ~0 and transforms reset. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  /* For reveals: just show the final state instantly */
  .anim-fade-in,
  .anim-slide-up,
  .anim-slide-left,
  .anim-slide-right,
  .anim-zoom-in {
    opacity: 1 !important;
    transform: none !important;
  }
}


/* ===========================================================================
 * ANIMATION PHASE 3 — Hero animations (2026-05-31)
 *
 * Subtle entrance on page load. Headline fades up word-by-word, photo gently
 * scales in, eyebrow chip's terracotta dot ambient-pulses, CTA shadow breathes.
 * All effects respect prefers-reduced-motion via the Phase 1 baseline.
 * =========================================================================== */

/* ----- HERO HEADLINE: WORD-BY-WORD REVEAL ----- */
/* Wrap is added by JS — h1.hero-headline > span.hero-word */
.hero-v2 .hero-word {
  display: inline-block;
  opacity: 0;
  transform: translateY(14px);
  animation: heroWordIn var(--anim-very-slow) var(--ease-out-soft) forwards;
}
@keyframes heroWordIn {
  to { opacity: 1; transform: translateY(0); }
}
/* Cascade delays applied via inline style by JS (--word-i: 0,1,2,...) */
.hero-v2 .hero-word { animation-delay: calc(var(--word-i, 0) * 60ms + 100ms); }

/* ----- HERO EYEBROW: GENTLE FADE IN ----- */
.hero-v2 .hero-eyebrow {
  opacity: 0;
  animation: heroEyebrowIn var(--anim-slow) var(--ease-out-soft) 0ms forwards;
}
@keyframes heroEyebrowIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ----- EYEBROW DOT: AMBIENT PULSE (very subtle, never aggressive) ----- */
.hero-v2 .hero-eyebrow .dot {
  animation: dotPulse 2.8s ease-in-out infinite;
  transform-origin: center;
}
@keyframes dotPulse {
  0%, 100% { transform: scale(1);   opacity: 1; box-shadow: 0 0 0 0 rgba(201, 120, 74, 0.55); }
  50%      { transform: scale(1.15); opacity: 0.9; box-shadow: 0 0 0 6px rgba(201, 120, 74, 0); }
}

/* ----- HERO BODY + ACTIONS: STAGGERED FADE UP ----- */
.hero-v2 .hero-sub,
.hero-v2 .hero-actions,
.hero-v2 .hero-trust {
  opacity: 0;
  transform: translateY(12px);
  animation: heroChildIn var(--anim-slow) var(--ease-out-soft) forwards;
}
.hero-v2 .hero-sub     { animation-delay: 420ms; }
.hero-v2 .hero-actions { animation-delay: 560ms; }
.hero-v2 .hero-trust   { animation-delay: 700ms; }
@keyframes heroChildIn {
  to { opacity: 1; transform: translateY(0); }
}

/* ----- HERO PHOTO: GENTLE SCALE + FADE ----- */
.hero-v2 .hero-photo,
.hero-v2 .hero-image,
.hero-v2 picture {
  opacity: 0;
  transform: scale(1.04);
  animation: heroPhotoIn 900ms var(--ease-out-soft) 200ms forwards;
}
@keyframes heroPhotoIn {
  to { opacity: 1; transform: scale(1); }
}

/* ----- HERO CREDIBILITY BADGE: FADE IN AFTER PHOTO ----- */
.hero-v2 .hero-photo-badge,
.hero-v2 .hero-floating-badge,
.hero-v2 .credibility-badge {
  opacity: 0;
  animation: heroBadgeIn var(--anim-slow) var(--ease-spring) 900ms forwards;
}
@keyframes heroBadgeIn {
  from { opacity: 0; transform: translateY(10px) scale(0.94); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* ----- HERO CTA: BREATHING SHADOW (very subtle, only the primary button) ----- */
.hero-v2 .btn-primary {
  animation: ctaBreathe 4s ease-in-out 2s infinite;
}
@keyframes ctaBreathe {
  0%, 100% { box-shadow: 0 8px 24px rgba(201, 120, 74, 0.25); }
  50%      { box-shadow: 0 12px 32px rgba(201, 120, 74, 0.42); }
}
/* Pause the breath on hover so user feels in control */
.hero-v2 .btn-primary:hover { animation-play-state: paused; }

/* ----- DARK-INK PAGE HEROES (service/info/audience/location): GENTLER FADE ----- */
/* These already have the dark warm ink background and per-page Pexels photo.
   They get a subtle background-position drift to feel alive without distraction. */
.dl-hero h1, .cp-hero h1, .ts-hero h1, .sc-hero h1,
.ys-hero h1, .fs-hero h1, .ls-hero h1, .es-hero h1,
.ndis-hero h1, .fg-hero h1, .apply-hero h1, .faq-hero h1,
.about-hero h1, .fam-hero h1, .sm-hero h1, .referral-hero h1,
.loc-hero h1 {
  opacity: 0;
  animation: pageHeroH1In var(--anim-very-slow) var(--ease-out-soft) 100ms forwards;
}
@keyframes pageHeroH1In {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
.dl-hero p, .cp-hero p, .ts-hero p, .sc-hero p,
.ys-hero p, .fs-hero p, .ls-hero p, .es-hero p,
.ndis-hero p, .fg-hero p, .apply-hero p, .faq-hero p,
.about-hero p, .fam-hero p, .sm-hero p, .referral-hero p,
.loc-hero p {
  opacity: 0;
  animation: pageHeroH1In var(--anim-slow) var(--ease-out-soft) 320ms forwards;
}
.dl-hero .hero-btns, .cp-hero .hero-btns, .ts-hero .hero-btns, .sc-hero .hero-btns,
.ys-hero .hero-btns, .fs-hero .hero-btns, .ls-hero .hero-btns, .es-hero .hero-btns,
.loc-hero .loc-hero-btns,
.sm-hero .sm-hero-cta {
  opacity: 0;
  animation: pageHeroH1In var(--anim-slow) var(--ease-out-soft) 480ms forwards;
}
.dl-hero .badge, .cp-hero .badge, .ts-hero .badge, .sc-hero .badge,
.ys-hero .badge, .fs-hero .badge, .ls-hero .badge, .es-hero .badge,
.about-hero .badge {
  opacity: 0;
  animation: pageHeroH1In var(--anim-med) var(--ease-out-soft) 0ms forwards;
}

/* ----- PAGE HERO BACKGROUND PHOTO: SLOW PAN ----- */
/* Very slow, very subtle background-position drift gives the photo a sense
   of breath. <30s cycle. Stops on hover/focus for users sensitive to motion. */
@keyframes heroBgDrift {
  0%   { background-position: 48% 50%, 12% 18%, 88% 90%, 50% 50%; }
  50%  { background-position: 52% 50%, 14% 20%, 86% 88%, 50% 50%; }
  100% { background-position: 48% 50%, 12% 18%, 88% 90%, 50% 50%; }
}
/* (Hero bg uses 4 layered images, see Phase 4 service overrides. The drift
   only nudges the photo layer subtly — radial gradients stay fixed.) */
body .dl-hero, body .cp-hero, body .ts-hero, body .sc-hero,
body .ys-hero, body .fs-hero, body .ls-hero, body .es-hero,
body .ndis-hero, body .fg-hero, body .apply-hero, body .faq-hero,
body .about-hero, body .fam-hero, body .sm-hero, body .referral-hero,
body .loc-hero {
  animation: heroBgDrift 28s ease-in-out infinite;
}
body .dl-hero:hover, body .cp-hero:hover, body .ts-hero:hover,
body .sc-hero:hover, body .ys-hero:hover, body .fs-hero:hover,
body .ls-hero:hover, body .es-hero:hover,
body .ndis-hero:hover, body .fg-hero:hover, body .apply-hero:hover,
body .faq-hero:hover, body .about-hero:hover, body .fam-hero:hover,
body .sm-hero:hover, body .referral-hero:hover, body .loc-hero:hover {
  animation-play-state: paused;
}

@media (prefers-reduced-motion: reduce) {
  .hero-v2 .hero-word,
  .hero-v2 .hero-eyebrow,
  .hero-v2 .hero-sub, .hero-v2 .hero-actions, .hero-v2 .hero-trust,
  .hero-v2 .hero-photo, .hero-v2 .hero-image, .hero-v2 picture,
  .hero-v2 .hero-photo-badge, .hero-v2 .hero-floating-badge,
  .hero-v2 .credibility-badge, .hero-v2 .btn-primary,
  .hero-v2 .hero-eyebrow .dot,
  body [class*="-hero"] h1, body [class*="-hero"] p,
  body [class*="-hero"] .hero-btns, body [class*="-hero"] .badge {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}


/* ===========================================================================
 * ANIMATION PHASE 4 — Card interactions (2026-05-31)
 *
 * Goal: cards feel responsive to mouse/touch without screaming.
 * - Lift on hover (transform translateY, NOT scale — scale shifts other things)
 * - Image zoom inside cards (the card stays, the photo subtly enlarges)
 * - Icon micro-rotation on hover (terracotta soft-bg icon squares)
 * - Border-accent draw-in on hover
 * =========================================================================== */

/* ----- BASELINE LIFT (already partially set in Phase 4-7 overrides, this is the canonical) ----- */
body .activity-card,
body .who-card,
body .phase-card,
body .role-card,
body .respite-card,
body .transition-card,
body .how-card,
body .reason-card,
body .mvv-card,
body .value-card,
body .sub-nav-card,
body .related-card,
body .service-card-v2,
body .step-card,
body .doc-card,
body .preview-card,
body .hub-card,
body .kpi-card {
  position: relative;
  transition: transform var(--anim-med) var(--ease-out-soft),
              box-shadow var(--anim-med) var(--ease-out-soft),
              border-color var(--anim-med) var(--ease-out-soft);
  will-change: transform;
}

body .activity-card:hover,
body .who-card:hover,
body .phase-card:hover,
body .role-card:hover,
body .respite-card:hover,
body .transition-card:hover,
body .how-card:hover,
body .reason-card:hover,
body .mvv-card:hover,
body .value-card:hover,
body .sub-nav-card:hover,
body .related-card:hover,
body .service-card-v2:hover,
body .step-card:hover,
body .doc-card:hover,
body .preview-card:hover,
body .hub-card:hover,
body .kpi-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 32px rgba(26, 34, 56, 0.10);
  border-color: var(--accent) !important;
}

/* Press feedback for clickable cards (e.g. .related-card, .sub-nav-card are <a>) */
body a.related-card:active,
body a.sub-nav-card:active,
body a.hub-card:active,
body a.service-card-v2:active,
body a.doc-card:active {
  transform: translateY(-1px) scale(0.995);
  transition-duration: var(--anim-fast);
}

/* ----- ICON MICRO-ANIMATION ON HOVER ----- */
/* Most cards have a terracotta-soft icon square at top — animate it subtly. */
body .activity-card .act-icon,
body .who-card .who-icon,
body .service-card-v2 .service-icon,
body .role-card > i,
body .respite-card > i,
body .transition-card > i,
body .how-card > i,
body .reason-card > i,
body .mvv-card > i,
body .value-card > i,
body .sub-nav-card > i,
body .related-card > i,
body .doc-card .doc-card-icon,
body .step-card > i,
body .hub-card .hub-icon {
  transition: transform var(--anim-med) var(--ease-out-soft),
              background-color var(--anim-med) var(--ease-out-soft);
}
body .activity-card:hover .act-icon,
body .who-card:hover .who-icon,
body .service-card-v2:hover .service-icon,
body .role-card:hover > i,
body .respite-card:hover > i,
body .transition-card:hover > i,
body .how-card:hover > i,
body .reason-card:hover > i,
body .mvv-card:hover > i,
body .value-card:hover > i,
body .sub-nav-card:hover > i,
body .related-card:hover > i,
body .doc-card:hover .doc-card-icon,
body .step-card:hover > i,
body .hub-card:hover .hub-icon {
  transform: rotate(-4deg) scale(1.08);
}

/* ----- IMAGE ZOOM INSIDE CARD FRAMES ----- */
body .news-card-v2,
body .team-card,
body .service-card-v2.has-image {
  overflow: hidden;
}
body .news-card-v2 img,
body .team-card img,
body .service-card-v2 img {
  transition: transform 520ms var(--ease-out-soft);
  will-change: transform;
}
body .news-card-v2:hover img,
body .team-card:hover img,
body .service-card-v2:hover img,
a:hover > .news-card-v2 img,
a:hover > .team-card img {
  transform: scale(1.04);
}

/* ----- ACCENT BAR DRAW-IN (for cards with left-border accent) ----- */
/* Many cards use border-left: 3px var(--accent) — animate the border's
   opacity/width on hover so it pulses subtly. */
body .session-block,
body .young-box,
body .definition-box,
body .info-box,
body .green-box,
body .warn-box,
body .tip-box,
body .elig-note,
body .rn-item,
body .term-item,
body .claim-card,
body .rate-card,
body .not-funded-item,
body .distinction-card,
body .form-section-title {
  transition: border-left-width var(--anim-med) var(--ease-out-soft),
              transform var(--anim-med) var(--ease-out-soft);
}
body .session-block:hover,
body .rn-item:hover,
body .term-item:hover,
body .claim-card:hover {
  border-left-width: 5px !important;
  transform: translateX(2px);
}

/* ----- CHEVRON HINT FOR LINK-CARDS ----- */
/* Cards that are anchor tags should hint the click affordance. */
body a.related-card::after,
body a.sub-nav-card::after,
body a.hub-card::after {
  content: '→';
  display: inline-block;
  margin-left: 8px;
  opacity: 0;
  transform: translateX(-6px);
  transition: opacity var(--anim-med) var(--ease-out-soft),
              transform var(--anim-med) var(--ease-out-soft);
  color: var(--accent);
  font-weight: 700;
}
body a.related-card:hover::after,
body a.sub-nav-card:hover::after,
body a.hub-card:hover::after {
  opacity: 1;
  transform: translateX(0);
}

/* ----- LINK ARROW EXISTING UTILITY ANIMATION ----- */
body .link-arrow,
body a[class*="link-arrow"] {
  position: relative;
  transition: color var(--anim-med) var(--ease-out-soft);
}
body .link-arrow::after,
body a[class*="link-arrow"]::after {
  content: ' →';
  display: inline-block;
  transition: transform var(--anim-med) var(--ease-out-soft);
}
body .link-arrow:hover::after,
body a[class*="link-arrow"]:hover::after {
  transform: translateX(4px);
}

@media (prefers-reduced-motion: reduce) {
  body .activity-card, body .who-card, body .phase-card,
  body .role-card, body .respite-card, body .transition-card,
  body .how-card, body .reason-card, body .mvv-card, body .value-card,
  body .sub-nav-card, body .related-card, body .service-card-v2,
  body .step-card, body .doc-card, body .preview-card, body .hub-card,
  body .kpi-card, body .news-card-v2 img, body .team-card img {
    transform: none !important;
    transition-duration: 0.001ms !important;
  }
}


/* ===========================================================================
 * ANIMATION PHASE 5 — Button + form micro-interactions (2026-05-31)
 *
 * Every interactive element should give immediate feedback. Critical for
 * keyboard / assistive-tech users — they need to know their action registered.
 * - Button press: scale down 99% (haptic feel)
 * - Button hover: lift 1px + shadow grow
 * - Focus rings: animated outline grow
 * - Form inputs: label float + focus ring scale
 * - Submit: loading spinner overlay
 * - Success: subtle checkmark scale-in
 * =========================================================================== */

/* ----- ALL BUTTONS / CTA LINKS: PRESS FEEDBACK ----- */
body .btn,
body button:not(.faq-question):not(.mobile-menu):not(.nav-item):not(.theme-toggle),
body .btn-primary,
body .btn-secondary,
body .btn-pill,
body .btn-white,
body .btn-outline,
body .btn-hero-white,
body .btn-hero-outline,
body .form-btn,
body .submit-btn,
body .portal-btn,
body .callout-cta,
body a[class*="cta"],
body .hero-btns a,
body .hero-actions a,
body .loc-hero-btns a,
body .sm-hero-cta a {
  transition: transform var(--anim-fast) var(--ease-out-quick),
              background-color var(--anim-med) var(--ease-out-soft),
              border-color var(--anim-med) var(--ease-out-soft),
              box-shadow var(--anim-med) var(--ease-out-soft),
              color var(--anim-med) var(--ease-out-soft);
}
body .btn:active,
body button:not(.faq-question):not(.mobile-menu):active,
body .btn-primary:active,
body .form-btn:active,
body .submit-btn:active,
body .hero-btns a:active,
body .hero-actions a:active,
body .loc-hero-btns a:active,
body .callout-cta:active {
  transform: translateY(1px) scale(0.985);
}

/* ----- BUTTON RIPPLE EFFECT ON PRIMARY CTAS (via ::after) ----- */
/* Subtle expanding ring on click — gives haptic-like confirmation. */
body .btn-primary,
body .form-btn,
body .submit-btn,
body .hero-btns a.btn-white,
body .hero-actions a.btn-primary,
body .hero-actions a:first-child,
body .callout-cta {
  position: relative;
  overflow: hidden;
}
body .btn-primary::after,
body .form-btn::after,
body .submit-btn::after,
body .hero-btns a.btn-white::after,
body .callout-cta::after {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.4);
  transform: translate(-50%, -50%) scale(0);
  opacity: 0;
  pointer-events: none;
}
body .btn-primary:active::after,
body .form-btn:active::after,
body .submit-btn:active::after,
body .hero-btns a.btn-white:active::after,
body .callout-cta:active::after {
  animation: rippleOut 480ms var(--ease-out-soft);
}
@keyframes rippleOut {
  0%   { transform: translate(-50%, -50%) scale(0);   opacity: 0.65; }
  100% { transform: translate(-50%, -50%) scale(20); opacity: 0; }
}

/* ----- FOCUS RING ANIMATION ----- */
/* Already have basic :focus-visible from Phase 9 polish; add a subtle grow */
body :focus-visible {
  transition: outline-offset var(--anim-fast) var(--ease-out-soft),
              box-shadow var(--anim-fast) var(--ease-out-soft);
}
body a:focus-visible,
body button:focus-visible {
  animation: focusRingPop var(--anim-med) var(--ease-out-soft);
}
@keyframes focusRingPop {
  from { outline-offset: 0; }
  to   { outline-offset: 3px; }
}

/* ----- FORM INPUTS: ANIMATED FOCUS RING SCALE ----- */
body input[type="text"],
body input[type="email"],
body input[type="tel"],
body input[type="date"],
body input[type="time"],
body input[type="number"],
body input[type="password"],
body select,
body textarea {
  transition: border-color var(--anim-med) var(--ease-out-soft),
              box-shadow var(--anim-med) var(--ease-out-soft),
              background-color var(--anim-med) var(--ease-out-soft);
}
body input:focus,
body select:focus,
body textarea:focus {
  animation: inputFocusGrow var(--anim-med) var(--ease-out-soft);
}
@keyframes inputFocusGrow {
  from { box-shadow: 0 0 0 0 rgba(201, 120, 74, 0); }
  to   { box-shadow: 0 0 0 4px rgba(201, 120, 74, 0.18); }
}

/* ----- INVALID INPUT: GENTLE SHAKE (on blur if .is-invalid) ----- */
body input.is-invalid,
body select.is-invalid,
body textarea.is-invalid {
  animation: inputShake 380ms var(--ease-out-quick);
}
@keyframes inputShake {
  0%, 100% { transform: translateX(0); }
  20%      { transform: translateX(-4px); }
  40%      { transform: translateX(4px); }
  60%      { transform: translateX(-2px); }
  80%      { transform: translateX(2px); }
}

/* ----- SUBMIT BUTTON LOADING STATE ----- */
/* Add .is-loading class via JS during submit. */
body .submit-btn.is-loading,
body .form-btn.is-loading,
body button.is-loading {
  position: relative;
  pointer-events: none;
  color: transparent !important;
}
body .submit-btn.is-loading::before,
body .form-btn.is-loading::before,
body button.is-loading::before {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  width: 18px; height: 18px;
  margin: -9px 0 0 -9px;
  border: 2px solid rgba(255, 255, 255, 0.4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: spinSlow 700ms linear infinite;
}

/* ----- FORM SUCCESS: ANIMATED REVEAL ----- */
body .form-success {
  animation: successIn 480ms var(--ease-spring);
  transform-origin: top center;
}
@keyframes successIn {
  from { opacity: 0; transform: translateY(-12px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* ----- CHECKBOX / RADIO TICK ANIMATION ----- */
/* Browsers don't allow keyframe on the check, but we can animate the
   surrounding container's accent. */
body input[type="checkbox"],
body input[type="radio"] {
  transition: transform var(--anim-fast) var(--ease-out-quick);
}
body input[type="checkbox"]:checked,
body input[type="radio"]:checked {
  animation: tickPop 320ms var(--ease-spring);
}
@keyframes tickPop {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.18); }
  100% { transform: scale(1); }
}

/* ----- PHONE LINKS / TEL LINKS: PULSE ON HOVER (subtle) ----- */
body a[href^="tel:"]:not(.btn) {
  transition: color var(--anim-med) var(--ease-out-soft);
}
body a[href^="tel:"]:not(.btn):hover {
  color: var(--accent-deep);
}
body a[href^="tel:"] i,
body a[href^="tel:"] .fa-phone {
  display: inline-block;
  transition: transform var(--anim-med) var(--ease-out-soft);
}
body a[href^="tel:"]:hover i,
body a[href^="tel:"]:hover .fa-phone {
  transform: rotate(-15deg) scale(1.1);
}

@media (prefers-reduced-motion: reduce) {
  body .btn, body button, body .form-btn, body .submit-btn,
  body input, body select, body textarea, body .form-success {
    animation: none !important;
    transition-duration: 0.001ms !important;
  }
  body .submit-btn.is-loading::before,
  body .form-btn.is-loading::before {
    animation: none !important;
  }
}


/* ===========================================================================
 * ANIMATION PHASE 6 — Navigation animations (2026-05-31)
 *
 * Nav is touched on every page interaction — animations must feel snappy
 * but never jarring. All transitions <300ms.
 * - Nav links: animated underline that grows from left
 * - Dropdown menus: fade + slide-down + item stagger
 * - Mobile menu: smooth slide-down panel (replaces abrupt show/hide)
 * - Hamburger: morph to X icon
 * =========================================================================== */

/* ----- NAV LINK UNDERLINE (top nav + footer nav) ----- */
body header nav > a,
body header .nav-dropdown > .nav-dropdown-toggle {
  position: relative;
  transition: color var(--anim-med) var(--ease-out-soft);
}
body header nav > a::after,
body header .nav-dropdown > .nav-dropdown-toggle::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -3px;
  height: 2px;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--anim-med) var(--ease-out-soft);
  border-radius: 1px;
}
body header nav > a:hover::after,
body header .nav-dropdown:hover > .nav-dropdown-toggle::after,
body header nav > a:focus-visible::after {
  transform: scaleX(1);
}

/* ----- DROPDOWN MENU OPEN ANIMATION ----- */
body .dropdown-menu {
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity var(--anim-med) var(--ease-out-soft),
              visibility 0s linear var(--anim-med),
              transform var(--anim-med) var(--ease-out-soft);
}
body .nav-dropdown:hover .dropdown-menu,
body .nav-dropdown:focus-within .dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition-delay: 0s, 0s, 0s;
}

/* ----- DROPDOWN ITEM STAGGER ----- */
body .dropdown-menu a {
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity var(--anim-med) var(--ease-out-soft),
              transform var(--anim-med) var(--ease-out-soft),
              background-color var(--anim-fast) var(--ease-out-soft),
              color var(--anim-fast) var(--ease-out-soft);
}
body .nav-dropdown:hover .dropdown-menu a,
body .nav-dropdown:focus-within .dropdown-menu a {
  opacity: 1;
  transform: translateX(0);
}
body .nav-dropdown:hover .dropdown-menu a:nth-child(1),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(1) { transition-delay: 40ms; }
body .nav-dropdown:hover .dropdown-menu a:nth-child(2),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(2) { transition-delay: 80ms; }
body .nav-dropdown:hover .dropdown-menu a:nth-child(3),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(3) { transition-delay: 120ms; }
body .nav-dropdown:hover .dropdown-menu a:nth-child(4),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(4) { transition-delay: 160ms; }
body .nav-dropdown:hover .dropdown-menu a:nth-child(5),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(5) { transition-delay: 200ms; }
body .nav-dropdown:hover .dropdown-menu a:nth-child(6),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(6) { transition-delay: 240ms; }
body .nav-dropdown:hover .dropdown-menu a:nth-child(7),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(7) { transition-delay: 280ms; }
body .nav-dropdown:hover .dropdown-menu a:nth-child(8),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(8) { transition-delay: 320ms; }
body .nav-dropdown:hover .dropdown-menu a:nth-child(9),
body .nav-dropdown:focus-within .dropdown-menu a:nth-child(9) { transition-delay: 360ms; }

/* ----- MOBILE MENU PANEL SLIDE ----- */
body .mobile-nav-menu,
body nav.mobile-nav-active {
  transform: translateY(-12px);
  opacity: 0;
  transition: transform var(--anim-slow) var(--ease-out-soft),
              opacity var(--anim-med) var(--ease-out-soft);
}
body .mobile-nav-menu.open,
body nav.mobile-nav-active.open {
  transform: translateY(0);
  opacity: 1;
}

/* ----- HAMBURGER ICON MORPH (.mobile-menu button) ----- */
body .mobile-menu i.fa-bars,
body .mobile-menu i.fa-times {
  transition: transform var(--anim-med) var(--ease-out-soft),
              opacity var(--anim-fast) var(--ease-out-soft);
}
body .mobile-menu:hover i {
  transform: rotate(90deg);
}
body .mobile-menu.open i.fa-bars { transform: rotate(45deg); opacity: 0; }
body .mobile-menu.open i.fa-times { transform: rotate(0); opacity: 1; }

/* ----- ACCOUNT BUTTON HOVER GLOW ----- */
body .nav-btn,
body .nav-btn-account {
  transition: background-color var(--anim-med) var(--ease-out-soft),
              transform var(--anim-fast) var(--ease-out-soft),
              box-shadow var(--anim-med) var(--ease-out-soft);
}
body .nav-btn:hover,
body .nav-btn-account:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(26, 34, 56, 0.25);
}
body .nav-btn:active,
body .nav-btn-account:active {
  transform: translateY(0);
}

/* ----- LOGO HOVER (subtle scale on the dot) ----- */
body .logo {
  transition: opacity var(--anim-med) var(--ease-out-soft);
}
body .logo::before {
  transition: transform var(--anim-med) var(--ease-spring);
}
body .logo:hover::before {
  transform: scale(1.3);
}

/* ----- FOOTER LINK UNDERLINE ----- */
body footer a:not(.footer-social a):not(.footer-brand) {
  position: relative;
  transition: color var(--anim-med) var(--ease-out-soft);
}
body footer a:not(.footer-social a):not(.footer-brand)::after {
  content: '';
  position: absolute;
  left: 0; bottom: -2px;
  width: 0;
  height: 1px;
  background: var(--accent);
  transition: width var(--anim-med) var(--ease-out-soft);
}
body footer a:not(.footer-social a):not(.footer-brand):hover::after {
  width: 100%;
}

/* ----- FOOTER SOCIAL ICONS: SCALE ON HOVER ----- */
body .footer-social a {
  transition: transform var(--anim-med) var(--ease-spring),
              background-color var(--anim-med) var(--ease-out-soft);
}
body .footer-social a:hover {
  transform: translateY(-3px) scale(1.08);
}

/* ----- BREADCRUMB HOVER ----- */
body .breadcrumb a {
  transition: color var(--anim-med) var(--ease-out-soft);
}
body .breadcrumb a:hover {
  color: var(--accent) !important;
}

@media (prefers-reduced-motion: reduce) {
  body header nav > a::after,
  body .nav-dropdown > .nav-dropdown-toggle::after,
  body .dropdown-menu, body .dropdown-menu a,
  body .mobile-menu i, body .nav-btn, body .footer-social a,
  body footer a::after {
    transition: none !important;
    animation: none !important;
    transform: none !important;
  }
  body .dropdown-menu {
    transition: opacity var(--anim-fast) var(--ease-out-soft) !important;
  }
}


/* ===========================================================================
 * ANIMATION PHASE 7 — Content-specific animations (2026-05-31)
 *
 * - FAQ accordion: smooth height transition (was abrupt display:none/block)
 * - Stat numbers: count-up triggered by IntersectionObserver (JS)
 * - Step circles: terracotta ring pulse on scroll
 * - Progress / counter bars: fill animation
 * =========================================================================== */

/* ----- FAQ ACCORDION SMOOTH OPEN/CLOSE ----- */
/* JS already toggles .open class. Use max-height + opacity for the animation.
   max-height set high enough for the longest answer (using ch units relative). */
body .faq-answer,
body .faq-item .faq-answer {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  transition: max-height var(--anim-slow) var(--ease-out-soft),
              opacity var(--anim-med) var(--ease-out-soft),
              padding var(--anim-slow) var(--ease-out-soft);
}
body .faq-answer.open,
body .faq-item.open .faq-answer,
body .faq-item .faq-answer.open {
  max-height: 1200px;
  opacity: 1;
  padding-top: var(--space-3) !important;
  padding-bottom: var(--space-4) !important;
}
body .faq-question i,
body .faq-question .faq-chevron {
  transition: transform var(--anim-med) var(--ease-out-soft),
              color var(--anim-med) var(--ease-out-soft);
}
body .faq-question.open i,
body .faq-question[aria-expanded="true"] i,
body .faq-question[aria-expanded="true"] .faq-chevron,
body .faq-item.open .faq-question i {
  transform: rotate(180deg);
}

/* ----- STAT NUMBER COUNT-UP (JS sets --count-target; CSS just makes it visual) ----- */
/* The .anim-counter class triggers the count-up via JS when the element enters
   the viewport. Apply to elements with data-target="42". */
body .anim-counter {
  font-variant-numeric: tabular-nums;
}

/* ----- KPI/STAT TILES: SUBTLE HIGHLIGHT FRAME ANIMATION ----- */
/* Stats use .dl-stat .num and .kpi numbers. */
body .dl-stat .num,
body .kpi .value,
body .stat .v {
  transition: color var(--anim-med) var(--ease-out-soft);
}

/* ----- STEP NUMBER CIRCLES: APPEAR WITH SPRING ----- */
/* Already styled in Phases 4-6; add a subtle spring scale on first appearance. */
body .step-num,
body .ref-num,
body .sm-step-num,
body .phase-num,
body .step-circle {
  transition: transform var(--anim-med) var(--ease-spring),
              box-shadow var(--anim-med) var(--ease-out-soft);
}
body .expect-step:hover .step-num,
body .ref-step:hover .ref-num,
body .sm-step:hover .sm-step-num,
body .phase-card:hover .phase-num,
body .journey-step:hover .step-circle {
  transform: scale(1.1) rotate(-3deg);
  box-shadow: 0 6px 18px rgba(201, 120, 74, 0.35);
}

/* ----- HORIZONTAL TIMELINE (how-it-works) STEP CONNECTOR ANIMATE-IN ----- */
body .howitworks-v2 .how-step::before,
body .howitworks-v2 .step-connector {
  transition: width var(--anim-slow) var(--ease-out-soft);
}
body .howitworks-v2.anim-in .how-step::before,
body .howitworks-v2.anim-in .step-connector {
  width: 100%;
}

/* ----- TABLE ROW HOVER ----- */
body .raw-table tr,
body .planner-row,
body .prompt-table tr {
  transition: background-color var(--anim-fast) var(--ease-out-soft),
              transform var(--anim-fast) var(--ease-out-soft);
}
body .raw-table tr:hover,
body .prompt-table tr:hover {
  background: var(--surface-alt);
}

/* ----- DAY PILLS: SELECT STATE ANIMATION (Phase 8 portal day-picker) ----- */
body .day-pill {
  transition: background-color var(--anim-fast) var(--ease-out-soft),
              border-color var(--anim-fast) var(--ease-out-soft),
              color var(--anim-fast) var(--ease-out-soft),
              transform var(--anim-fast) var(--ease-out-quick);
}
body .day-pill:active {
  transform: scale(0.95);
}

/* ----- BADGES (status pills) FADE-IN ----- */
body .health-badge,
body .mgmt-badge,
body .badge,
body .flex-note,
body .suburb-pill {
  transition: background-color var(--anim-med) var(--ease-out-soft),
              transform var(--anim-fast) var(--ease-out-quick);
}
body .suburb-pill:hover {
  transform: translateY(-1px);
}

@media (prefers-reduced-motion: reduce) {
  body .faq-answer, body .faq-item.open .faq-answer,
  body .step-num, body .ref-num, body .sm-step-num,
  body .day-pill, body .suburb-pill {
    transition-duration: 0.001ms !important;
    animation: none !important;
    transform: none !important;
  }
  body .faq-answer {
    max-height: none !important;
  }
  body .faq-answer:not(.open) {
    max-height: 0 !important;
  }
}


/* ===========================================================================
 * ANIMATION PHASE 8 — Ambient touches (2026-05-31)
 *
 * The "feels expensive" layer. None of these should be NOTICED — only felt.
 * - Top scroll-progress bar (2px terracotta, tracks scroll position)
 * - Cursor-aware glow on cards (radial gradient follows mouse)
 * - Dark CTA panel ambient gradient drift
 * - Section divider draw-in
 * =========================================================================== */

/* ----- SCROLL PROGRESS BAR (top of viewport, sticky) ----- */
.scroll-progress {
  position: fixed;
  top: 0; left: 0;
  height: 2px;
  width: 0%;
  background: linear-gradient(90deg, var(--accent), var(--accent-deep));
  z-index: 9999;
  transition: width 0.05s linear;
  pointer-events: none;
}

/* ----- CURSOR-AWARE GLOW ON CARDS ----- */
/* CSS variable --mouse-x and --mouse-y set by JS on mouseenter/mousemove. */
body .card-glow {
  position: relative;
  overflow: hidden;
}
body .card-glow::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(
    280px circle at var(--mouse-x, 50%) var(--mouse-y, 50%),
    rgba(201, 120, 74, 0.10),
    transparent 60%
  );
  opacity: 0;
  transition: opacity var(--anim-med) var(--ease-out-soft);
  pointer-events: none;
}
body .card-glow:hover::before {
  opacity: 1;
}

/* ----- DARK CTA PANEL: AMBIENT GRADIENT DRIFT ----- */
/* The dark warm-ink CTA panels (finalcta-v2, dl-cta, sm-cta-box, etc.) get a
   very slow gradient hue shift — 40s cycle, ~3% intensity. */
@keyframes ambientGradient {
  0%, 100% {
    background-image:
      radial-gradient(ellipse at 18% 22%, rgba(201, 120, 74, 0.25), transparent 55%),
      radial-gradient(ellipse at 82% 78%, rgba(26, 95, 158, 0.30), transparent 60%);
  }
  50% {
    background-image:
      radial-gradient(ellipse at 22% 25%, rgba(201, 120, 74, 0.32), transparent 58%),
      radial-gradient(ellipse at 78% 75%, rgba(26, 95, 158, 0.34), transparent 62%);
  }
}
body .finalcta-v2,
body .dl-cta, body .cp-cta, body .ts-cta, body .sc-cta,
body .ys-cta, body .fs-cta, body .ls-cta, body .es-cta,
body .cta-banner, body .cta-box,
body .sm-cta-box, body .gateway-section,
body .still-questions, body .help-panel {
  animation: ambientGradient 40s ease-in-out infinite;
}

/* ----- SECTION DIVIDER DRAW-IN ----- */
body .section-divider {
  position: relative;
  overflow: hidden;
}
body .section-divider::after {
  content: '';
  position: absolute;
  top: -1px; left: 0;
  width: 60px;
  height: 2px;
  background: var(--accent);
  transform: translateX(-60px);
  transition: transform var(--anim-very-slow) var(--ease-out-soft);
}
body .section-divider.anim-in::after {
  transform: translateX(0);
}

/* ----- TEXT SELECTION: BRANDED HIGHLIGHT ----- */
body ::selection {
  background: var(--accent-soft);
  color: var(--accent-deep);
}

/* ----- SMOOTH SCROLLING SITE-WIDE ----- */
html {
  scroll-behavior: smooth;
}

/* ----- "BACK TO TOP" BUTTON (added by JS) ----- */
.back-to-top {
  position: fixed;
  bottom: 24px;
  right: 24px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--ink);
  color: #fff;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  opacity: 0;
  transform: translateY(20px) scale(0.8);
  transition: opacity var(--anim-med) var(--ease-out-soft),
              transform var(--anim-med) var(--ease-spring),
              background-color var(--anim-med) var(--ease-out-soft);
  box-shadow: 0 8px 24px rgba(26, 34, 56, 0.2);
  z-index: 100;
  pointer-events: none;
}
.back-to-top.visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.back-to-top:hover {
  background: var(--accent);
  transform: translateY(-4px) scale(1.05);
}
.back-to-top:active {
  transform: translateY(-1px) scale(0.95);
}

@media (prefers-reduced-motion: reduce) {
  .scroll-progress, body .finalcta-v2, body .dl-cta, body .cp-cta,
  body .ts-cta, body .sc-cta, body .ys-cta, body .fs-cta, body .ls-cta,
  body .es-cta, body .cta-banner, body .cta-box, body .sm-cta-box,
  body .gateway-section, body .still-questions, body .help-panel,
  body .section-divider::after, .back-to-top {
    animation: none !important;
    transition-duration: 0.001ms !important;
  }
  html { scroll-behavior: auto !important; }
}


/* ===========================================================================
 * MOBILE AUDIT FIXES (2026-06-01)
 *
 * Found during a 7-page audit at 375px:
 *  1. News cards overflowed horizontally on mobile (grid item min-width: auto
 *     let image push card 17px past viewport) -> horizontal page scroll
 *  2. .link-arrow + literal "→" in HTML caused double arrows ("Read more →  →")
 *  3. Required <select> showed red :invalid border on page load (looked broken)
 * =========================================================================== */

/* ----- FIX 1: News card grid items respect column width on mobile ----- */
body .news-v2 .news-grid,
body .news-v2 .news-grid .news-side {
  min-width: 0;
}
body .news-v2 .news-grid > *,
body .news-v2 .news-grid .news-side > * {
  min-width: 0;
  max-width: 100%;
}
body .news-card-v2 {
  min-width: 0;
  max-width: 100%;
}
body .news-card-v2 .news-image {
  max-width: 100%;
  overflow: hidden;
}
body .news-card-v2 .news-image img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* Belt-and-braces: keep entire news section from ever scrolling horizontally */
body .news-v2 {
  overflow-x: hidden;
}

/* ----- FIX 2: Single arrow only (remove ::after when text already ends in →) ----- */
/* The Phase 4 .link-arrow rule appended an arrow with ::after, but several HTML
   strings already have a literal "→". Remove the pseudo-element arrow on those. */
body .link-arrow::after,
body a[class*="link-arrow"]::after {
  content: '';
  display: none;
}
/* Keep the hover micro-animation by translating the original arrow's parent */
body .link-arrow,
body a[class*="link-arrow"] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: gap var(--anim-med) var(--ease-out-soft), color var(--anim-med) var(--ease-out-soft);
}
body .link-arrow:hover,
body a[class*="link-arrow"]:hover {
  gap: 12px;
}

/* ----- FIX 3: <select> :invalid red border only AFTER user interacts ----- */
/* Old global rule (line ~2945) used :invalid:not(:placeholder-shown), but
   <select> never has :placeholder-shown so the red border fires on page load.
   Override with higher specificity + use :user-invalid for proper UX
   (fires only after blur/submit). */
body select:invalid:not(:placeholder-shown),
body input:invalid:not(:placeholder-shown),
body textarea:invalid:not(:placeholder-shown) {
  border-color: var(--border-strong) !important;
  background: var(--surface-card) !important;
  box-shadow: none !important;
}
/* For <select>, ALSO override the bare :invalid (since :placeholder-shown
   never matches for selects, the above rule still fires on load) */
body select:invalid {
  border-color: var(--border-strong) !important;
  background: var(--surface-card) !important;
  box-shadow: none !important;
}
/* User-invalid: fires only after user has interacted with the field */
body select:user-invalid,
body input:user-invalid,
body textarea:user-invalid {
  border-color: var(--accent-deep) !important;
  box-shadow: 0 0 0 3px rgba(165, 92, 52, 0.12) !important;
}
/* JS-set .is-invalid class for explicit validation errors */
body select.is-invalid,
body input.is-invalid,
body textarea.is-invalid {
  border-color: #b94545 !important;
  box-shadow: 0 0 0 3px rgba(185, 69, 69, 0.12) !important;
}









