/* ============================================================
   WFA Volare — shared site styles
   Built on the WFA Volare Design System tokens.
   ============================================================ */

/* Fonts load via <link rel="preconnect"> + <link rel="stylesheet"> in each page's <head>
   (a CSS @import blocks rendering longer on mobile connections). */

*, *::before, *::after { box-sizing: border-box; }

:root {
  --teal:   #00616D;
  --green:  #019C4E;
  --gold:   #B9993D;
  --sky:    #6AABBD;
  --teal-mid: #3D8A96;   /* Map module mid-tier only — blend of teal and sky */
  --gold-text: #8A6F1F;  /* Accessible gold for small text on white/mint (4.6:1). Decorative gold stays --gold. */
  --gold-light: #E8D6A8; /* Accessible gold for small text on deep teal (4.9:1) */
  --forest: #2D4B2E;
  --mint:   #E2F8EC;
  --off-white: #F8FAF9;
  --gray-200: #E0E9E5;
  --gray-500: #5E7A73;
  --gray-700: #2E4A44;
  --gray-900: #112220;
  --maxw: 1200px;
  --serif: 'Lora', Georgia, serif;      /* Freight Neo Pro stand-in */
  --sans: 'Poppins', system-ui, sans-serif;
}

html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--sans);
  color: var(--gray-900);
  background: #fff;
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; }
a { color: inherit; }

.container { max-width: var(--maxw); margin: 0 auto; padding: 0 32px; width: 100%; }

/* ── Typography helpers ── */
h1, h2, h3, h4, .serif { font-family: var(--serif); }
.eyebrow {
  font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--gold-text); margin: 0 0 14px;
}
.eyebrow.sky { color: var(--teal); }
.hero .eyebrow { color: var(--gold-text); }
.gold-divider { width: 48px; height: 3px; background: var(--gold); border-radius: 2px; margin: 0 0 20px; }
.section-header .gold-divider { margin-left: auto; margin-right: auto; }

/* ============================================================
   NAV
   ============================================================ */
.nav {
  position: sticky; top: 0; z-index: 200;
  background: #fff;
  box-shadow: 0 2px 12px rgba(0,97,109,0.08);
  height: 72px; display: flex; align-items: center;
}
.nav-inner { display: flex; align-items: center; justify-content: space-between; width: 100%; gap: 24px; }
.nav-logo img { height: 42px; }
.nav-menu { display: flex; align-items: center; gap: 20px; }
.nav-item { position: relative; }
.nav-link {
  font-size: 0.8125rem; font-weight: 500; color: var(--gray-700); white-space: nowrap;
  text-decoration: none; letter-spacing: 0.01em;
  display: inline-flex; align-items: center; gap: 5px;
  padding: 26px 0; cursor: pointer; background: none; border: 0;
  font-family: var(--sans); transition: color 180ms;
}
.nav-link:hover, .nav-link.active { color: var(--teal); }
.nav-link .caret { width: 8px; height: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translate(-1px,-1px); transition: transform 180ms; }
.nav-item:hover .caret { transform: rotate(225deg) translate(-2px,-2px); }

.dropdown {
  position: absolute; top: 64px; left: 50%; transform: translateX(-50%) translateY(8px);
  min-width: 268px; background: #fff; border: 1px solid var(--gray-200);
  border-radius: 14px; box-shadow: 0 16px 40px rgba(0,97,109,0.16);
  padding: 10px; opacity: 0; visibility: hidden; transition: opacity 180ms, transform 180ms;
  z-index: 210;
}
.nav-item:hover .dropdown, .dropdown:hover { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
.dropdown.right { left: auto; right: 0; transform: translateX(0) translateY(8px); }
.nav-item:hover .dropdown.right { transform: translateX(0) translateY(0); }
.dropdown a { display: block; text-decoration: none; padding: 11px 14px; border-radius: 9px; transition: background 160ms; }
.dropdown a:hover { background: var(--mint); }
.dd-title { font-family: var(--sans); font-weight: 600; font-size: 0.875rem; color: var(--teal); margin: 0; }
.dd-sub { font-size: 0.75rem; color: var(--gray-500); margin: 2px 0 0; line-height: 1.4; }
.nav-cta { display: flex; align-items: center; gap: 14px; }

.nav-toggle { display: none; background: none; border: 0; cursor: pointer; padding: 8px; }
.nav-toggle span { display: block; width: 24px; height: 2px; background: var(--teal); margin: 5px 0; transition: 0.2s; }

/* ── Buttons (design-system pill) ── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font-family: var(--sans); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
  border-radius: 9999px; cursor: pointer; text-decoration: none; white-space: nowrap;
  border: 2px solid transparent; transition: background 180ms, color 180ms, transform 120ms, box-shadow 180ms;
  font-size: 0.6875rem; letter-spacing: 0.06em; font-weight: 600; padding: 7px 18px;
}
.btn:active { transform: scale(0.97); }
.btn-sm { font-size: 0.625rem; padding: 6px 14px; }
.btn-lg { font-size: 0.75rem; padding: 9px 23px; }
.btn-primary { background: var(--green); color: #fff; border-color: var(--green); box-shadow: 0 1px 4px rgba(1,156,78,0.18); }
.btn-primary:hover { background: var(--teal); border-color: var(--teal); transform: translateY(-1px); }
.btn-secondary { background: var(--teal); color: #fff; border-color: var(--teal); box-shadow: 0 1px 4px rgba(0,97,109,0.18); }
.btn-secondary:hover { background: var(--forest); border-color: var(--forest); transform: translateY(-1px); }
.btn-outline-teal { background: transparent; color: var(--teal); border-color: var(--teal); }
.btn-login { background: var(--teal); color: #fff; border: 1.5px solid var(--sky); box-shadow: 0 1px 4px rgba(0,97,109,0.18); }
.btn-login:hover { background: var(--forest); border-color: rgba(255,255,255,0.5); color: #fff; transform: translateY(-1px); }
.btn-outline-teal:hover { background: var(--teal); color: #fff; transform: translateY(-1px); }
.btn-ghost-white { background: rgba(255,255,255,0.12); color: #fff; border-color: rgba(255,255,255,0.35); }
.btn-ghost-white:hover { background: rgba(255,255,255,0.24); transform: translateY(-1px); }

/* ============================================================
   SECTIONS
   ============================================================ */
.section { padding: 88px 0; }
.section-sm { padding: 64px 0; }
.section-white { background: #fff; }
.section-mint { background: var(--mint); }
.section-offwhite { background: var(--off-white); }

.section-header { text-align: center; max-width: 680px; margin: 0 auto 52px; }
.section-header h2 { font-size: clamp(1.75rem, 2.6vw, 2.5rem); font-weight: 700; color: var(--teal); margin: 0 0 14px; line-height: 1.18; }
.section-header p { font-size: 1.0625rem; color: var(--gray-500); margin: 0 auto; max-width: 620px; line-height: 1.7; }

/* ── Hero ── */
.hero { position: relative; overflow: hidden; }
/* Brand pattern — reserved for a single CTA section per page */
.pattern-bg { position: relative; background: var(--mint); }
.pattern-bg::before {
  content:''; position:absolute; inset:0;
  background-image:url('../assets/brand/wfa-volare-brand-pattern.png');
  background-repeat: repeat; background-size: 900px auto;
  mix-blend-mode: multiply; pointer-events: none;
}
.pattern-bg > .container { position: relative; z-index: 1; }
.hero-inner { position: relative; display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 64px; align-items: center; padding: 92px 0; }
.hero-inner.single { grid-template-columns: 1fr; text-align: center; max-width: 820px; margin: 0 auto; }
.hero h1 { font-size: clamp(2.15rem, 4vw, 3.4rem); font-weight: 700; color: var(--teal); line-height: 1.14; margin: 0 0 22px; text-wrap: balance; }
.hero p { font-size: 1.0625rem; line-height: 1.75; color: var(--gray-500); margin: 0 0 32px; max-width: 520px; }
.hero-inner.single p { margin-left: auto; margin-right: auto; }
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; }
.hero-inner.single .hero-ctas { justify-content: center; }

/* Dark photo hero variant */
.hero-dark { background: var(--teal); color: #fff; min-height: 720px; display: grid; align-content: center; }
.hero-dark .hero-media-overlay { position:absolute; inset:0; background: linear-gradient(100deg, rgba(0,97,109,0.92) 0%, rgba(0,97,109,0.7) 55%, rgba(45,75,46,0.5) 100%); z-index:1; }
.hero-dark .hero-inner { padding: 48px 0; }
.hero-dark h1 { color: #fff; }
.hero-dark p { color: rgba(255,255,255,0.86); }
.hero-dark .eyebrow { color: #fff; opacity: 0.9; }
.hero-label { font-size: 0.82rem !important; letter-spacing: 0.16em; margin-bottom: 18px; }
.hero-tagline { font-size: clamp(2.5rem, 4.8vw, 4rem) !important; line-height: 1.1 !important; letter-spacing: -0.01em; margin: 0 !important; }

/* Teal intro split (below hero) */
.teal-split { background: var(--teal); color: #fff; }
.teal-split h2 { color: #fff; }
.teal-split p { color: rgba(255,255,255,0.88); max-width: 460px; }
.teal-split .photo { box-shadow: 0 24px 60px rgba(0,0,0,0.28); }

/* Interior full-bleed photo hero (centered text) */
.hero-photo { position: relative; overflow: hidden; color: #fff; min-height: 440px; display: grid; align-content: center; }
.hero-photo .hero-media-overlay { position:absolute; inset:0; background: rgba(0,97,109,0.78); z-index:1; }
.hero-photo .container { position: relative; z-index: 2; }
.hero-photo h1 { color: #fff; }
.hero-photo p { color: rgba(255,255,255,0.9); }
.hero-photo .eyebrow, .hero.hero-photo .eyebrow { color: #fff; opacity: 0.9; }

/* Solid teal hero (Who We Serve niche pages) */
.hero-teal { background: var(--teal); color: #fff; }
.hero-teal h1, .hero-teal h2, .hero-teal h3 { color: #fff; }
.hero-teal p { color: rgba(255,255,255,0.88); }
.hero-teal .eyebrow { color: #fff; opacity: 0.9; }
.hero-teal .gold-divider { opacity: 0.95; }
.hero-teal .btn-secondary, .hero-teal .btn-outline { border-color: rgba(255,255,255,0.6); color: #fff; background: transparent; }
.hero-teal .btn-secondary:hover, .hero-teal .btn-outline:hover { background: #fff; color: var(--teal); border-color: #fff; }
.hero-teal .ph-marker { color: #fff; }

/* ── Image placeholder ── */
.imgph {
  position: relative; display: flex; align-items: center; justify-content: center;
  text-align: center; background:
    repeating-linear-gradient(45deg, rgba(0,97,109,0.04) 0 12px, rgba(0,97,109,0.07) 12px 24px);
  border: 1px dashed rgba(0,97,109,0.28); color: var(--teal);
  font-family: var(--sans); font-size: 0.8125rem; font-weight: 500; line-height: 1.5;
  padding: 24px; border-radius: 14px; min-height: 220px;
}
.imgph::before { content: '⬒'; position: absolute; top: 14px; left: 16px; font-size: 1rem; opacity: 0.4; }
.imgph span { display: block; max-width: 260px; opacity: 0.9; }
.imgph.round { border-radius: 50%; }
.imgph.dark { background: repeating-linear-gradient(45deg, rgba(255,255,255,0.06) 0 12px, rgba(255,255,255,0.11) 12px 24px); border-color: rgba(255,255,255,0.4); color: #fff; }
/* Full-bleed background placeholder: label pinned bottom-left, dimmed, non-overlapping */
.imgph.bg { align-items: flex-end; justify-content: flex-start; }
.imgph.bg::before { content: '⬒ IMAGE'; top: auto; bottom: 14px; left: 16px; font-size: 0.625rem; letter-spacing: 0.1em; }
.imgph.bg span { max-width: 340px; text-align: left; font-size: 0.75rem; opacity: 0.55; margin-bottom: 4px; }

/* ── Placeholder / flag markers (review aid) ── */
.ph-marker {
  display: inline-flex; align-items: flex-start; gap: 8px;
  background: #FEF6E3; border: 1px dashed var(--gold); color: #7A5E12;
  border-radius: 10px; padding: 10px 14px; font-size: 0.8125rem; line-height: 1.5;
  font-family: var(--sans); font-weight: 500; text-align: left;
}
.ph-marker::before { content: 'PLACEHOLDER'; font-size: 0.5625rem; font-weight: 700; letter-spacing: 0.1em; background: var(--gold); color: #fff; padding: 2px 6px; border-radius: 5px; margin-top: 1px; flex-shrink: 0; }
.ph-marker.flag::before { content: 'FLAG'; background: #C2410C; }
.ph-block { display: block; width: 100%; margin: 0 auto; max-width: 640px; }

/* ── Cards / value props ── */
.grid { display: grid; gap: 24px; }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
.grid-5 { grid-template-columns: repeat(5, 1fr); }

.card {
  background: #fff; border-radius: 12px; border: 1px solid var(--gray-200);
  box-shadow: 0 2px 8px rgba(0,97,109,0.07); padding: 32px 28px;
  transition: box-shadow 220ms, transform 220ms; height: 100%;
}
.card:hover { box-shadow: 0 10px 28px rgba(0,97,109,0.13); transform: translateY(-3px); }
.card h3 { font-size: 1.1875rem; font-weight: 700; color: var(--teal); margin: 18px 0 10px; line-height: 1.3; }
.card p { font-size: 0.9375rem; color: var(--gray-500); line-height: 1.7; margin: 0; }
.card-link { display: inline-flex; align-items: center; gap: 6px; margin-top: 16px; font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--green); text-decoration: none; }
.card-link:hover { color: var(--teal); }
.card p.event-venue { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--gray-200); font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.04em; color: var(--teal); }
.card-link .arr { transition: transform 180ms; }
.card-link:hover .arr { transform: translateX(3px); }
a.card { text-decoration: none; color: inherit; display: block; }
/* Card with a full-width photo placeholder at the top */
.card-photo-card { padding-top: 0; overflow: hidden; }
.card-photo {
  position: relative; display: flex; align-items: flex-end; justify-content: flex-start;
  margin: 0 -28px 20px; min-height: 168px; padding: 14px;
  background: repeating-linear-gradient(45deg, rgba(0,97,109,0.05) 0 12px, rgba(0,97,109,0.09) 12px 24px);
  color: var(--teal);
}
.card-photo::before { content: '⬒ IMAGE'; position: absolute; top: 12px; left: 14px; font-size: 0.6rem; letter-spacing: 0.1em; opacity: 0.5; font-weight: 700; }
.card-photo span { font-size: 0.72rem; opacity: 0.65; line-height: 1.4; }
.card-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.card-photo:has(img)::before { display: none; }

/* Real photo container (replaces .imgph once an image is placed) */
.photo { position: relative; overflow: hidden; border-radius: 14px; background: var(--mint); }
.photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo.round { border-radius: 50%; }
/* Copy + photo modules: portrait/square photos so the image holds its own against long copy */
.hero-inner > .photo { aspect-ratio: 1 / 1; height: auto !important; }
.split > .photo, .svc-row > .photo { aspect-ratio: 4 / 5; height: auto !important; max-height: 620px; }
@media (max-width: 960px) { .hero-inner > .photo, .split > .photo, .svc-row > .photo { aspect-ratio: 4 / 3; max-height: none; } }

/* Home hero background photo */
.hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; }
.hero-dark .container { position: relative; z-index: 2; }

/* Icon badge */
.icon-badge { position: relative; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--teal); flex-shrink: 0; width: 48px; height: 48px; }
.icon-badge.lg { width: 64px; height: 64px; }
.icon-badge img { filter: brightness(0) invert(1); object-fit: contain; width: 50%; height: 50%; }
.icon-badge { color: #fff; }
.icon-badge .ico { display: block; width: 50%; height: 50%; background: currentColor; -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat; }
.icon-badge .accent { position: absolute; top: -5px; right: -5px; width: 22px; height: 22px; border-radius: 50%; background: var(--gold); color: #fff; font-size: 0.6875rem; font-weight: 700; display: flex; align-items: center; justify-content: center; border: 2px solid #fff; }

/* Numbered photo slots (prototype only) */
.ph-num { position: absolute; top: 12px; right: 12px; z-index: 4; background: var(--gold); color: #fff; font-family: var(--sans); font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.06em; padding: 5px 11px; border-radius: 6px; box-shadow: 0 2px 6px rgba(0,0,0,0.22); pointer-events: none; }
.imgph { position: relative; }
/* numbered-slot containers */
.photo, .card-photo, .hero, .thumb, .event-photo, .post-photo, .video-thumb { position: relative; }
.imgph .ph-num { top: 10px; right: 10px; }
.ph-marker .ph-id { color: var(--gold); font-weight: 700; letter-spacing: 0.06em; }

/* Tree of Life brand-mark wash */
.tree-mark { position: relative; overflow: hidden; }
.tree-mark-bg { position: absolute; top: -10%; left: 0; height: 120%; width: auto; transform: translateX(-10%); opacity: 0.05; pointer-events: none; }
.tree-mark > .container { position: relative; z-index: 1; }

/* ── Teal banner ── */
.teal-banner { position: relative; background: var(--teal); padding: 76px 0; text-align: center; overflow: hidden; color: #fff; }
.teal-banner .inner { position: relative; max-width: 760px; margin: 0 auto; }
.teal-banner h2 { font-size: clamp(1.6rem, 2.6vw, 2.6rem); font-weight: 700; color: #fff; margin: 0 0 14px; line-height: 1.2; }
.teal-banner p { color: rgba(255,255,255,0.85); font-size: 1.0625rem; margin: 0 auto 28px; max-width: 600px; line-height: 1.7; }

/* ── Values (dark band, 4-up) ── */
.values-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; text-align: left; position: relative; }
.value-item h3 { color: #fff; font-size: 1.125rem; margin: 16px 0 8px; }
.value-item p { color: rgba(255,255,255,0.8); font-size: 0.9375rem; line-height: 1.65; margin: 0; }

/* ── Credibility band ── */
.cred-band { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; text-align: center; }
.cred-item .big { font-family: var(--serif); font-size: 2.75rem; font-weight: 700; color: var(--teal); line-height: 1; margin-bottom: 10px; }
.cred-item h3 { font-family: var(--serif); font-size: clamp(2rem, 3.4vw, 2.75rem); font-weight: 700; color: var(--teal); line-height: 1.05; letter-spacing: -0.01em; margin: 0 0 14px; }
.cred-item p { font-size: 0.9375rem; color: var(--gray-500); line-height: 1.7; margin: 0 auto; max-width: 34ch; }

/* ── Process steps ── */
.steps-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
.step { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.step h3 { font-size: 1.0625rem; font-weight: 700; color: var(--teal); margin: 0; }
.step p { font-size: 0.875rem; color: var(--gray-500); line-height: 1.65; margin: 0; }
.steps-vert { display: flex; flex-direction: column; gap: 0; max-width: 760px; margin: 0 auto; }
.step-row { display: grid; grid-template-columns: 64px 1fr; gap: 28px; padding: 28px 0; border-bottom: 1px solid var(--gray-200); align-items: start; }
.step-row:last-child { border-bottom: 0; }
.step-row h3 { font-size: 1.25rem; color: var(--teal); margin: 4px 0 8px; }
.step-row p { color: var(--gray-500); margin: 0; line-height: 1.7; }

/* ── Services list (alternating rows) ── */
.svc-row { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; padding: 56px 0; border-bottom: 1px solid var(--gray-200); }
.svc-row:last-child { border-bottom: 0; }
.svc-row.flip .svc-text { order: 2; }
.svc-text h3 { font-size: 1.625rem; color: var(--teal); margin: 16px 0 14px; line-height: 1.25; }
.svc-text p { color: var(--gray-500); font-size: 1.0625rem; line-height: 1.75; margin: 0; }
.svc-row .imgph { min-height: 300px; }

/* ── Team grid ── */
.team-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
.team-card { text-align: left; }
.team-card .imgph { min-height: 260px; margin-bottom: 16px; }
.team-card .photo { aspect-ratio: 4 / 5; margin-bottom: 16px; }
.team-card .photo img { object-position: center top; }
.team-card h3 { font-size: 1.0625rem; color: var(--teal); margin: 0 0 3px; }
.team-card .title { font-size: 0.8125rem; color: var(--gray-500); margin: 0 0 10px; line-height: 1.4; min-height: 2.4em; }
.team-card .bio { font-size: 0.8125rem; color: var(--gray-500); line-height: 1.65; margin: 0; }
.team-legend { display: flex; align-items: center; gap: 12px; margin: 8px 0 36px; }
.team-legend .line { flex: 1; height: 1px; background: var(--gray-200); }
.team-legend span { font-size: 0.75rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold-text); }

/* Home: credibility boxes flow into full-width team photo (shared white space) */
.cred-team { padding-bottom: 0; }
.cred-team .cred-band { margin-bottom: 8px; }
.cred-team-photo { display: block; width: 100%; max-width: 2000px; margin: 0 auto; height: auto; aspect-ratio: 2000 / 1120; object-fit: cover; object-position: center center; }
/* Phones: the group shot is wide, so a 16:9-ish crop leaves faces ~15px tall.
   A 3:2 box gives the group ~25% more height without changing the desktop crop. */
@media (max-width: 620px) { .cred-team[data-photo="team"] .cred-team-photo { aspect-ratio: 5 / 4; } }
@media (max-width: 620px) { .cred-team:not([data-photo]) .cred-team-photo { aspect-ratio: 5 / 4; } }
.cred-team[data-photo="partners"] .cred-team-photo { aspect-ratio: 2000 / 1000; object-position: center; max-width: 1400px; }

/* ── FAQ accordion ── */
.faq-list { max-width: 800px; margin: 0 auto; }
.faq-item { border-bottom: 1px solid var(--gray-200); }
.faq-q { width: 100%; text-align: left; background: none; border: 0; cursor: pointer; padding: 24px 8px; display: flex; justify-content: space-between; align-items: center; gap: 24px; font-family: var(--serif); font-size: 1.125rem; font-weight: 600; color: var(--teal); }
.faq-q .plus { flex-shrink: 0; width: 22px; height: 22px; position: relative; }
.faq-q .plus::before, .faq-q .plus::after { content:''; position:absolute; background: var(--green); border-radius: 2px; transition: transform 220ms; }
.faq-q .plus::before { top: 10px; left: 0; width: 22px; height: 2px; }
.faq-q .plus::after { left: 10px; top: 0; width: 2px; height: 22px; }
.faq-item.open .plus::after { transform: rotate(90deg); opacity: 0; }
.faq-a { display: grid; grid-template-rows: 0fr; overflow: hidden; transition: grid-template-rows 300ms ease; }
.faq-a-inner { min-height: 0; overflow: hidden; padding: 0 8px; color: var(--gray-500); font-size: 1rem; line-height: 1.75; }
/* Content-driven open height: 0fr→1fr animates and can never clip a long answer,
   so no JS measurement is involved at any width. */
.faq-item.open .faq-a { grid-template-rows: 1fr; }
.faq-item.open .faq-a-inner { padding-bottom: 24px; }

/* ── Trust / logo bar ── */
.trust-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 20px; }
.trust-logo { height: 68px; min-width: 150px; display: flex; align-items: center; justify-content: center; background: #fff; border: 1px solid var(--gray-200); border-radius: 10px; padding: 12px 22px; color: var(--gray-500); font-size: 0.8125rem; font-weight: 600; text-align: center; overflow: hidden; }
.trust-logo img { max-height: 100%; max-width: 150px; width: auto; object-fit: contain; display: block; }
.trust-logo.fill { padding: 0; min-width: 0; }
.trust-logo.fill img { height: 100%; max-width: none; width: auto; }
.chip-row { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.chip { display: inline-flex; align-items: center; padding: 9px 20px; border-radius: 9999px; background: #fff; border: 1px solid var(--gray-200); font-size: 0.875rem; color: var(--gray-700); font-weight: 500; }
.chip.teal { background: var(--teal); color: #fff; border-color: var(--teal); }

/* ── Split intro / about ── */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
.prose { color: var(--gray-700); font-size: 1.0625rem; line-height: 1.8; }
.prose p { margin: 0 0 20px; }
.prose h2 { font-size: clamp(1.6rem,2.4vw,2.25rem); color: var(--teal); margin: 0 0 20px; line-height: 1.2; }
.prose .verse { font-style: italic; color: var(--gray-500); font-size: 1rem; border-left: 3px solid var(--gold); padding-left: 20px; margin-top: 8px; }

/* ── Quote / values band ── */
.quote-band { text-align: center; max-width: 820px; margin: 0 auto; }
.quote-band .q { font-family: var(--serif); font-size: clamp(1.5rem, 2.4vw, 2rem); font-weight: 500; line-height: 1.45; color: #fff; margin: 0; }
.quote-band.light .q { color: var(--teal); }

/* ── Forms ── */
.form-panel { background: #fff; border-radius: 16px; border: 1px solid var(--gray-200); box-shadow: 0 8px 30px rgba(0,97,109,0.10); padding: 40px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.field { margin-bottom: 18px; }
.field label { display: block; font-size: 0.8125rem; font-weight: 600; color: var(--gray-700); margin-bottom: 7px; }
.field input, .field select, .field textarea {
  width: 100%; font-family: var(--sans); font-size: 1rem; color: var(--gray-900);
  padding: 13px 16px; border: 1px solid var(--gray-200); border-radius: 9999px; background: var(--off-white);
  transition: border-color 160ms, box-shadow 160ms; outline: none;
}
.field textarea { border-radius: 16px; resize: vertical; min-height: 120px; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--green); box-shadow: 0 0 0 3px rgba(1,156,78,0.12); }

/* ── Office tabs ── */
.office-wrap { display: grid; grid-template-columns: 300px 1fr; gap: 40px; align-items: start; }
.office-tabs { display: flex; flex-direction: column; gap: 6px; }
.office-tab { text-align: left; background: none; border: 0; cursor: pointer; padding: 16px 20px; border-radius: 12px; font-family: var(--sans); transition: background 160ms; border-left: 3px solid transparent; }
.office-tab:hover { background: var(--mint); }
.office-tab.active { background: var(--mint); border-left-color: var(--gold); }
.office-tab .n { display: block; font-weight: 600; color: var(--teal); font-size: 0.9375rem; }
.office-tab .c { display: block; font-size: 0.8125rem; color: var(--gray-500); margin-top: 2px; }
.office-detail h3 { font-size: 1.5rem; color: var(--teal); margin: 0 0 6px; }
.office-detail .imgph { min-height: 280px; margin-top: 20px; }

/* ============================================================
   FOOTER
   ============================================================ */
.footer { background: var(--mint); color: var(--gray-700); padding: 64px 0 28px; }
.footer-top { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 44px; margin-bottom: 44px; }
.footer-brand img { height: auto; width: 260px; max-width: 100%; margin-bottom: 18px; box-sizing: border-box; }
.footer-brand p { font-size: 0.9375rem; line-height: 1.75; margin: 0; max-width: 300px; }
.footer-col h4 { font-size: 0.9375rem; font-weight: 700; color: var(--teal); margin: 0 0 16px; }
.footer-col ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.footer-col a { color: var(--gray-700); font-size: 0.875rem; text-decoration: none; transition: color 160ms; }
.footer-col a:hover { color: var(--teal); }
.footer-disclaimer { border-top: 1px solid rgba(0,97,109,0.16); padding-top: 24px; font-size: 0.75rem; line-height: 1.7; color: var(--gray-500); margin-bottom: 20px; display: flex; flex-direction: column; gap: 12px; }
.footer-disclaimer p { margin: 0; }
.footer-disclaimer a { color: var(--teal); text-decoration: underline; }
.footer-disclaimer a:hover { color: var(--gold); }
.footer-disclosures { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-bottom: 20px; }
.footer-disclosures a { color: var(--teal); font-size: 0.8125rem; text-decoration: none; font-weight: 600; }
.footer-disclosures a:hover { color: var(--gold); }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; font-size: 0.75rem; color: var(--gray-500); }

/* ── Fade-up entrance ── */
@media (prefers-reduced-motion: no-preference) {
  .fade-up { opacity: 0; transform: translateY(16px); transition: opacity 600ms ease-out, transform 600ms ease-out; }
  .fade-up.in { opacity: 1; transform: none; }
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 960px) {
  .nav-menu { position: fixed; top: 72px; left: 0; right: 0; background: #fff; flex-direction: column; align-items: stretch; gap: 0; padding: 12px 24px 24px; box-shadow: 0 16px 30px rgba(0,97,109,0.12); transform: translateY(-120%); transition: transform 260ms ease; max-height: calc(100vh - 72px); max-height: calc(100dvh - 72px); overflow-y: auto; }
  .nav-menu.open { transform: translateY(0); }
  .nav-link { padding: 14px 0; border-bottom: 1px solid var(--gray-200); justify-content: space-between; }
  .dropdown { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; border-radius: 0; min-width: 0; padding: 0 0 8px 12px; background: var(--off-white); }
  .nav-item .dropdown::before { display: none; }
  .nav-item:hover .dropdown { transform: none; }
  .nav-cta { margin-top: 16px; }
  .nav-toggle { display: block; }
  .hero-inner, .hero-inner.single { grid-template-columns: 1fr; text-align: left; gap: 36px; padding: 60px 0; }
  .hero-inner.single { text-align: center; }
  .split { grid-template-columns: 1fr; gap: 36px; }
  .svc-row, .svc-row.flip .svc-text { grid-template-columns: 1fr; gap: 28px; }
  .svc-row.flip .svc-text { order: 0; }
  .grid-3, .grid-4, .grid-5, .services-grid { grid-template-columns: repeat(2, 1fr); }
  .steps-grid { grid-template-columns: repeat(2, 1fr); }
  .values-grid { grid-template-columns: repeat(2, 1fr); }
  .team-grid { grid-template-columns: repeat(2, 1fr); }
  .cred-band { grid-template-columns: 1fr; gap: 28px; }
  .footer-top { grid-template-columns: 1fr 1fr; gap: 32px; }
  .office-wrap { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .container { padding: 0 20px; }
  .section { padding: 60px 0; }
  .cred-team { padding-bottom: 0; }
  .grid-2, .grid-3, .grid-4, .grid-5, .services-grid, .steps-grid, .values-grid, .team-grid, .form-row { grid-template-columns: 1fr; }
  .footer-top { grid-template-columns: 1fr; }
  .hero h1 { font-size: 2rem; }
}

/* ══ Additions from the 7/27 consolidated review build ══ */

/* Home hero logo lockup */
.hero-lockup { width: min(360px, 66%); margin: 0 auto; text-align: center; }
.hero-lockup img { width: 100%; height: auto; display: block; filter: brightness(0) invert(1); }
.hero-lockup .hero-label { margin: 20px 0 16px !important; width: 100%; text-align: center; white-space: nowrap; font-size: clamp(0.72rem, 1.2vw, 0.8rem) !important; }
.hero-subtag { font-size: clamp(1rem, 1.5vw, 1.25rem) !important; font-weight: 400; color: rgba(255,255,255,0.9) !important; max-width: 640px; margin: 20px auto 0 !important; line-height: 1.6; }

/* Freemium / inline CTA line under a card grid */
.grid-cta { text-align: center; margin-top: 44px; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.grid-cta p { font-size: 1.0625rem; color: var(--gray-500); max-width: 560px; margin: 0; line-height: 1.7; }

/* Video placeholder */
.video-ph { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; text-align: center; padding: 28px; border-radius: 14px; background: var(--mint); border: 1px dashed var(--teal); color: var(--teal); }
.video-ph .vp-play { width: 62px; height: 62px; border-radius: 9999px; background: var(--teal); position: relative; }
.video-ph .vp-play::after { content: ''; position: absolute; top: 50%; left: 54%; transform: translate(-50%,-50%); border-left: 17px solid #fff; border-top: 11px solid transparent; border-bottom: 11px solid transparent; }
.video-ph .vp-label { font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.16em; color: var(--gold-text); }
.video-ph > span:last-child { font-family: var(--sans); font-size: 0.875rem; color: var(--gray-500); max-width: 260px; }
.video-band { background: var(--teal); }
.video-ph.full { border-radius: 0; border-left: 0; border-right: 0; min-height: 420px; background: var(--mint); }

/* Flip cards (athletes page) */
.flip-deck { align-items: stretch; }
.flip-card { perspective: 1200px; min-height: 260px; outline: none; }
.fc-inner { position: relative; width: 100%; height: 100%; min-height: 260px; transition: transform 500ms ease-in-out; transform-style: preserve-3d; }
.flip-card:hover .fc-inner, .flip-card:focus-visible .fc-inner { transform: rotateY(180deg); }
.fc-face { position: absolute; inset: 0; backface-visibility: hidden; border-radius: 12px; padding: 32px; display: flex; flex-direction: column; justify-content: center; box-shadow: 0 2px 8px rgba(0,97,109,0.07); }
.flip-card:hover .fc-face, .flip-card:focus-visible .fc-face { box-shadow: 0 10px 28px rgba(0,97,109,0.13); }
.fc-front { background: #fff; border: 1px solid var(--gray-200); }
.fc-front h3 { font-size: 1.3125rem; color: var(--teal); margin: 0; line-height: 1.3; }
.fc-hint { margin-top: 14px; font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--teal); }
.fc-back { background: var(--teal); transform: rotateY(180deg); }
.fc-back p { color: rgba(255,255,255,0.94); font-size: 1rem; line-height: 1.7; margin: 0; }
.fineprint { font-size: 0.8125rem !important; color: var(--gray-500); line-height: 1.65; }
.fineprint a { color: var(--green); }

/* What this is / Why it matters service blocks */
.svc-def { display: flex; flex-direction: column; gap: 16px; margin-top: 6px; }
.svc-def .d { border-left: 2px solid var(--gold); padding-left: 16px; }
.svc-def .d .k { display: block; font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--teal); margin-bottom: 7px; }
.svc-def .d p { font-size: 0.9375rem; color: var(--gray-500); line-height: 1.75; margin: 0; }

/* Credential / award grid (replaces pill tags) */
.cred-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; max-width: 980px; margin: 0 auto 28px; }
.cred-tile { background: #fff; border: 1px solid var(--gray-200); border-radius: 12px; padding: 34px 26px; text-align: center; box-shadow: 0 2px 8px rgba(0,97,109,0.07); display: flex; flex-direction: column; justify-content: center; gap: 10px; min-height: 168px; }
.cred-tile h3 { font-family: var(--serif); font-size: 1.375rem; font-weight: 700; color: var(--teal); margin: 0; line-height: 1.25; text-wrap: balance; }
.cred-tile p { font-size: 0.8125rem; color: var(--gray-500); margin: 0; line-height: 1.6; }
@media (max-width: 860px) { .cred-grid { grid-template-columns: repeat(2, 1fr); } }

/* Community partner cards */
.partner-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.partner-card { background: #fff; border: 1px solid var(--gray-200); border-radius: 12px; padding: 30px 28px; box-shadow: 0 2px 8px rgba(0,97,109,0.07); }
.partner-card .icon-badge { margin-bottom: 16px; }
.partner-card h3 { font-size: 1.125rem; font-weight: 700; color: var(--teal); margin: 0 0 4px; line-height: 1.3; }
.partner-card .loc { display: block; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--teal); margin-bottom: 12px; }
.partner-card p { font-size: 0.9375rem; color: var(--gray-500); line-height: 1.75; margin: 0; }
@media (max-width: 860px) { .partner-grid { grid-template-columns: 1fr; } }

/* Community partner logo wall */
.logo-wall { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.logo-tile { background: #fff; border: 1px solid var(--gray-200); border-radius: 12px; padding: 22px 20px; display: flex; flex-direction: column; align-items: center; gap: 14px; box-shadow: 0 2px 8px rgba(0,97,109,0.07); transition: box-shadow 200ms ease-in-out, transform 200ms ease-in-out; }
.logo-tile:hover { box-shadow: 0 8px 20px rgba(0,97,109,0.12); transform: translateY(-2px); }
.logo-tile img { width: 100%; height: 84px; object-fit: contain; }
.logo-tile .name { font-size: 0.875rem; font-weight: 600; color: var(--teal); text-align: center; line-height: 1.35; }
.logo-tile .loc { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--sky); text-align: center; margin-top: -8px; }
@media (max-width: 980px) { .logo-wall { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 700px) { .logo-wall { grid-template-columns: repeat(2, 1fr); } }

/* Simple affiliation strip (organizations without written copy yet) */
.affil-strip { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 28px; }
.affil { border: 1px solid var(--gray-200); background: #fff; border-radius: 10px; padding: 14px 22px; font-size: 0.9375rem; font-weight: 600; color: var(--teal); }

/* StrongHer Money ambassador tiles */
.amb-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; margin-top: 8px; align-items: start; }
.amb-grid.amb-3 { grid-template-columns: repeat(3, 1fr); }
.amb-card { background: #fff; border: 1px solid var(--gray-200); border-radius: 12px; padding: 30px 28px; box-shadow: 0 2px 8px rgba(0,97,109,0.07); display: flex; flex-direction: column; gap: 16px; }
.amb-card .amb-head { display: flex; align-items: center; gap: 16px; }
.amb-card .amb-head img { width: 68px; height: 68px; border-radius: 50%; object-fit: cover; object-position: center top; }
.amb-card h3 { font-size: 1.0625rem; font-weight: 700; color: var(--teal); margin: 0 0 3px; }
.amb-card .role { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--teal); margin: 0; }
.amb-card p.bio { font-size: 0.9375rem; color: var(--gray-500); line-height: 1.75; margin: 0; }
.amb-card.pending { border-style: dashed; background: #FDFBF4; }
@media (max-width: 860px) { .amb-grid, .amb-grid.amb-3 { grid-template-columns: 1fr; } }

/* Event list (community) */
.event-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.event-item { background: #fff; border: 1px solid var(--gray-200); border-left: 3px solid var(--gold); border-radius: 12px; padding: 24px 26px; }
.event-item h3 { font-size: 1.0625rem; font-weight: 700; color: var(--teal); margin: 0 0 8px; line-height: 1.35; }
.event-item p { font-size: 0.9375rem; color: var(--gray-500); line-height: 1.7; margin: 0; }
.event-item .when { display: inline-block; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--teal); margin-top: 10px; }
@media (max-width: 860px) { .event-grid { grid-template-columns: 1fr; } }

.reg{font-size:0.55em;vertical-align:super;line-height:0}

/* Widow control: no single word hanging on its own line */
h1,h2,h3,h4,h5,h6,.eyebrow,.hero-subtag,.cred-item h3,.card h3,.team-card h3,.team-card .title,blockquote,.q{text-wrap:balance}
p,li,.bio,.faq-a-inner,.cred-item p,.card p{text-wrap:pretty}

/* Click-to-play video thumbnails */
.video-thumb .vt-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:56px;height:56px;border-radius:9999px;background:var(--green);box-shadow:0 4px 14px rgba(0,0,0,0.25);transition:transform 200ms ease-out,background 200ms ease-out}
.video-thumb .vt-play::after{content:'';position:absolute;top:50%;left:55%;transform:translate(-50%,-50%);border-left:15px solid #fff;border-top:10px solid transparent;border-bottom:10px solid transparent}
.video-thumb:hover .vt-play{transform:translate(-50%,-50%) scale(1.08);background:var(--teal)}

/* Video lightbox */
.vlb{position:fixed;inset:0;z-index:9000;display:none;align-items:center;justify-content:center;background:rgba(11,32,30,0.88);padding:0}
.vlb.open{display:flex}
.vlb-stage{position:relative;width:90vw;max-width:1600px;aspect-ratio:16/9;max-height:90vh;background:#000;border-radius:12px;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,0.5)}
.vlb-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.vlb-close{position:absolute;top:18px;right:22px;width:44px;height:44px;border:0;border-radius:9999px;background:rgba(255,255,255,0.14);cursor:pointer;transition:background 200ms ease-in-out}
.vlb-close:hover{background:rgba(255,255,255,0.28)}
.vlb-close::before,.vlb-close::after{content:'';position:absolute;left:50%;top:50%;width:18px;height:2px;background:#fff;transform:translate(-50%,-50%) rotate(45deg)}
.vlb-close::after{transform:translate(-50%,-50%) rotate(-45deg)}
body.vlb-lock{overflow:hidden}

/* Home hero background video */
.hero-video { position:absolute; inset:0; overflow:hidden; z-index:0; pointer-events:none; }
.hero-video iframe { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:100%; height:56.25vw; min-height:100%; min-width:177.78vh; min-width:177.78dvh; border:0; }

/* Credibility flip cards (home) */
.cred-band.flip-deck{grid-template-columns:repeat(4,1fr);gap:20px;text-align:left}
.cred-flip{min-height:250px}
.cred-flip .fc-inner{min-height:250px}
.cred-flip{height:250px}
.cred-flip .fc-face{align-items:center;text-align:center;padding:36px 28px;height:100%}
.cred-flip .fc-front{background:#fff;border:1px solid var(--gray-200)}
.cred-flip .stat-num{font-family:var(--serif);font-weight:700;color:var(--teal);font-size:clamp(2.4rem,4vw,3.4rem);line-height:1;letter-spacing:-0.02em}
.cred-flip .stat-num .reg{font-size:0.4em;vertical-align:super}
.cred-flip .stat-word{font-family:var(--serif);font-weight:700;color:var(--teal);font-size:clamp(1.35rem,2vw,1.75rem);line-height:1.15;margin-top:6px}
.cred-flip .fc-hint{display:none}
.cred-flip .fc-back{background:linear-gradient(155deg,#00798A 0%,var(--teal) 45%,#004853 100%);position:relative;overflow:hidden}
.cred-flip .fc-back::after{content:'';position:absolute;inset:0;background:radial-gradient(120% 85% at 18% 0%,rgba(255,255,255,0.16) 0%,rgba(255,255,255,0) 60%);pointer-events:none}
.cred-flip .fc-back p{font-size:1.0625rem;position:relative}
.cred-flip:nth-child(2) .stat-num{font-size:clamp(1.9rem,3vw,2.6rem)}
.cred-flip:nth-child(2) .stat-word{order:-1;font-size:clamp(1.1rem,1.6vw,1.35rem);margin:0 0 6px}
.cred-flip:nth-child(1) .stat-word{order:-1;font-size:clamp(1.1rem,1.6vw,1.35rem);margin:0 0 6px}
.cred-band.flip-deck .cred-flip,.cred-band.flip-deck .cred-flip .fc-inner{height:310px;min-height:310px}
.cred-band.flip-deck .cred-flip .fc-face{padding:30px 24px}
.cred-band.flip-deck .cred-flip .fc-back p{font-size:1rem;line-height:1.55}
.cred-flip:nth-child(3) .stat-num{font-size:clamp(1.5rem,2.1vw,1.95rem)}
.cred-flip:nth-child(3) .stat-word{font-size:clamp(1.1rem,1.6vw,1.35rem)}
.cred-flip:nth-child(4) .stat-word{font-size:clamp(1rem,1.4vw,1.2rem)}
@media(max-width:1080px){.cred-band.flip-deck{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){
  .cred-band.flip-deck{grid-template-columns:repeat(2,1fr);gap:12px}
  .cred-band.flip-deck .cred-flip,.cred-band.flip-deck .cred-flip .fc-inner{height:232px;min-height:232px}
  .cred-band.flip-deck .cred-flip .fc-face{padding:14px 10px}
  .cred-flip .stat-num{font-size:1.6rem;letter-spacing:-0.01em}
  .cred-flip .stat-word{font-size:0.9375rem;line-height:1.2;margin-top:4px}
  .cred-flip:nth-child(1) .stat-word,.cred-flip:nth-child(2) .stat-word{font-size:0.8125rem;margin:0 0 4px}
  .cred-flip:nth-child(2) .stat-num{font-size:1.35rem}
  .cred-flip:nth-child(3) .stat-num{font-size:1.2rem}
  .cred-flip:nth-child(3) .stat-word{font-size:0.9375rem}
  .cred-flip:nth-child(4) .stat-word{font-size:0.8125rem}
  .cred-band.flip-deck .cred-flip .fc-back p{font-size:0.875rem;line-height:1.45}
}
@media(max-width:400px){
  .cred-band.flip-deck{gap:10px}
  .cred-band.flip-deck .cred-flip,.cred-band.flip-deck .cred-flip .fc-inner{height:238px;min-height:238px}
  .cred-band.flip-deck .cred-flip .fc-face{padding:12px 8px}
  .cred-band.flip-deck .cred-flip .fc-back p{font-size:0.8125rem;line-height:1.42}
}

/* Client Login dropdown (custodian choices) */
.login-item .nav-link.btn { display: inline-flex; align-items: center; gap: 8px; }
.login-item .nav-link.btn:hover { color: #fff; }
.login-item .dropdown { min-width: 250px; top: 56px; }
/* Invisible bridge so the pointer can travel from the trigger into the panel without it closing */
.nav-item .dropdown::before { content: ''; position: absolute; left: 0; right: 0; top: -22px; height: 22px; }
@media (max-width: 960px) {
  .login-item { width: 100%; }
  .login-item .nav-link.btn { width: 100%; justify-content: center; border-bottom: 0; padding: 12px 18px; min-height: 48px; }
  .login-item .dropdown { padding: 8px 0 0; background: transparent; }
}

/* ── Origin story lead ── */
.origin-lead { max-width: 720px; margin: 0 auto 44px; text-align: center; font-size: 1.125rem; line-height: 1.75; color: var(--gray-700); }

/* ============================================================
   BIO PAGES (/who-we-are/[person])
   ── Bio page ── intro band, meta strip, bio body
   ============================================================ */
.bio-hero{background:var(--teal);color:#fff;position:relative;overflow:hidden;padding:64px 0}
.bio-hero-inner{display:grid;grid-template-columns:300px 1fr;gap:52px;align-items:center}
.bio-headshot{aspect-ratio:4/5;border-radius:12px;overflow:hidden;background:rgba(255,255,255,0.08);position:relative}
.bio-headshot img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}
.bio-hero .eyebrow{color:var(--gold-light);opacity:1}
.bio-hero h1{font-size:clamp(2rem,3.4vw,2.9rem);color:#fff;margin:0 0 10px;line-height:1.12}
.bio-role{font-size:0.9375rem;color:rgba(255,255,255,0.88);margin:0 0 20px;line-height:1.5;max-width:560px}
.bio-chips{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 22px}
.bio-chips .chip{background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.34);color:#fff;font-size:0.8125rem;padding:6px 16px}
.bio-contact{display:flex;flex-wrap:wrap;gap:10px 28px;margin:0 0 26px}
.bio-contact a{display:inline-flex;align-items:center;gap:9px;color:#fff;font-size:0.9375rem;text-decoration:none;border-bottom:1px solid rgba(255,255,255,0.3);padding-bottom:2px;transition:border-color .2s ease}
.bio-contact a:hover{border-color:#fff}
.bio-contact .ico{background:#fff}
.bio-actions{display:flex;flex-wrap:wrap;gap:14px}
/* Meta strip — conditional module, omit entirely when empty */
.bio-meta{background:var(--mint);padding:26px 0}
.bio-meta-inner{display:flex;flex-wrap:wrap;gap:20px 56px;align-items:flex-start;justify-content:center;text-align:center}
.bio-meta-item{min-width:180px}
.bio-meta-item .k{display:block;font-size:0.6875rem;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:var(--gold-text);margin:0 0 6px}
.bio-meta-item .v{display:block;font-size:0.9375rem;color:var(--teal);font-weight:600;line-height:1.5;margin:0}
.bio-body{max-width:760px;margin:0 auto}
.bio-body .prose p:last-child{margin-bottom:0}
.bio-disclosure{max-width:760px;margin:28px auto 0;font-size:0.8125rem;line-height:1.65;color:var(--gray-500)}
.bio-back{display:inline-flex;align-items:center;gap:8px;font-size:0.8125rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:rgba(255,255,255,0.8);text-decoration:none;margin-bottom:22px}
.bio-back:hover{color:#fff}
a.team-card{text-decoration:none;display:block;transition:transform .2s ease}
a.team-card:hover{transform:translateY(-3px)}
a.team-card:hover h3{color:var(--green)}
@media (max-width:860px){
  .bio-hero-inner{grid-template-columns:1fr;gap:28px}
  .bio-headshot{max-width:240px}
}

/* Team grid: keep headshots from ballooning at narrow widths */
@media (max-width:1100px){.team-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:820px){.team-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){
  .team-grid{grid-template-columns:1fr;justify-items:center}
  .team-card{max-width:320px;text-align:center}
  .team-card .photo{max-width:280px;margin-left:auto;margin-right:auto}
  .team-card .title{min-height:0}
  .team-legend{justify-content:center}
  .team-legend .line{display:none}
  .values-grid{justify-items:center;text-align:center}
  .value-item{max-width:340px}
  .value-item .icon-badge{margin-left:auto;margin-right:auto}
}
.team-card .photo{max-height:340px}

/* ── Services module (clickable) ── */
.service-wrap{display:grid;grid-template-columns:320px 1fr;gap:48px;align-items:start;margin-top:8px}
.service-tabs{display:flex;flex-direction:column;gap:6px}
.service-tab{display:flex;align-items:center;gap:14px;text-align:left;background:none;border:0;cursor:pointer;padding:14px 18px;border-radius:12px;font-family:var(--sans);transition:background 160ms;border-left:3px solid transparent}
.service-tab:hover{background:rgba(255,255,255,0.6)}
.service-tab.active{background:#fff;border-left-color:var(--gold);box-shadow:0 2px 10px rgba(0,0,0,0.05)}
.service-tab .n{font-weight:600;color:var(--teal);font-size:0.9375rem;line-height:1.35}
.icon-badge.sm{width:36px;height:36px;flex:0 0 36px}
.icon-badge.sm .ico{width:18px;height:18px}
.service-detail-wrap{background:#fff;border-radius:20px;padding:44px;min-height:320px;display:flex;align-items:center}
.service-detail h3{font-size:1.625rem;color:var(--teal);margin:16px 0 14px;line-height:1.25}
.service-detail p{color:var(--gray-500);font-size:1.0625rem;line-height:1.75;margin:0}
.service-detail .photo{border-radius:14px;overflow:hidden;height:260px;position:relative}
.service-detail .photo img{width:100%;height:100%;object-fit:cover}
@media (max-width:860px){.service-wrap{grid-template-columns:1fr}.service-tabs{flex-direction:row;flex-wrap:wrap}.service-tab{flex:1 1 auto}.service-detail-wrap{padding:28px}}

/* ── Efficacy module (CFP / Bluemonte / Vanguard Advisor Alpha) ── */
.efficacy-wrap{margin-top:8px}
.efficacy-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-width:900px;margin:0 auto -1px}
.efficacy-tile{display:flex;align-items:center;justify-content:center;background:none;border:0;border-bottom:3px solid transparent;cursor:pointer;padding:18px 20px 22px;transition:opacity 160ms,border-color 160ms;opacity:0.5;font-family:var(--sans)}
.efficacy-tile:hover{opacity:0.85}
.efficacy-tile.active{opacity:1;border-bottom-color:var(--gold)}
.efficacy-logo{max-height:52px;max-width:100%;width:auto;object-fit:contain;display:block}
.efficacy-wordmark{font-family:var(--serif);font-weight:700;font-size:1.0625rem;line-height:1.3;color:var(--teal);text-align:center}
.efficacy-detail .ed-note{font-size:0.9375rem;line-height:1.6;color:var(--gray-500);margin:0}
.ed-note strong{display:inline-block;font-family:var(--serif);font-size:1.125rem;color:var(--teal);line-height:1.3;margin:2px 0}
.cred-disclosure{max-width:760px;margin:0 auto;text-align:center;display:grid;gap:12px}
.cred-disclosure p{font-size:0.8125rem;line-height:1.7;color:var(--gray-500);margin:0}
.efficacy-detail-wrap{background:#fff;border-radius:20px;padding:48px}
.efficacy-detail{display:grid;grid-template-columns:1fr 220px;gap:48px;align-items:center}
.efficacy-detail h3{font-size:1.625rem;color:var(--teal);margin:0 0 14px;line-height:1.25}
.efficacy-detail p{color:var(--gray-500);font-size:1.0625rem;line-height:1.75;margin:0}
.efficacy-detail .chip-row{justify-content:flex-start;margin-top:22px}
.ed-logo{display:flex;align-items:center;justify-content:center;padding-left:40px;border-left:1px solid var(--gray-200)}
.ed-logo img{max-width:100%;max-height:110px;width:auto;object-fit:contain;display:block}
@media (max-width:860px){.efficacy-detail{grid-template-columns:1fr;gap:28px}.ed-logo{padding-left:0;border-left:0;justify-content:flex-start}.efficacy-detail-wrap{padding:28px}}
/* Phones: three logo tabs across 320px left each logo 46px wide and the
   wordmark wider than its track. Stack them so each gets the full width. */
@media (max-width:620px){
  .efficacy-tiles{grid-template-columns:1fr;gap:0}
  .efficacy-tile{padding:14px 16px;border-bottom:1px solid var(--gray-200)}
  .efficacy-tile.active{border-bottom-color:var(--gold);border-bottom-width:3px}
  .efficacy-logo{max-height:44px}
}

/* ============================================================
   MOBILE QA PASS — touch targets, tap-to-expand nav, safe areas
   (desktop presentation unchanged)
   ============================================================ */
html { -webkit-text-size-adjust: 100%; }
iframe, video { max-width: 100%; }
body.nav-open { overflow: hidden; }

/* Touch devices of any width: :hover cannot open dropdowns — tap does */
@media (hover: none) {
  .nav-item:hover .dropdown, .dropdown:hover { opacity: 0; visibility: hidden; }
  .nav-item.open > .dropdown { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
  .nav-item.open > .dropdown.right { transform: translateX(0) translateY(0); }
  .nav-item.open > .nav-link .caret { transform: rotate(225deg) translate(-2px,-2px); }
  .flip-card:hover .fc-inner { transform: none; }
  .flip-card.flipped .fc-inner { transform: rotateY(180deg); }
}

/* Touch devices above the mobile breakpoint (tablet in landscape, touch laptops)
   keep the desktop layout but still need finger-sized targets. */
@media (hover: none) and (min-width: 961px) {
  .btn, .btn-sm, .nav-link.btn.btn-login { min-height: 44px; }
  .faq-q { min-height: 60px; }
  .office-tab, .service-tab, .efficacy-tile { min-height: 48px; }
  .footer-col ul a, .footer-disclosures a { display: inline-block; min-height: 44px; padding: 11px 0; }
  .field input, .field select, .field textarea { min-height: 48px; }
}

/* Touch-target floor (WCAG 2.5.5) at tablet and below */
@media (max-width: 960px) {
  .btn { min-height: 44px; padding: 10px 24px; font-size: 0.75rem; }
  .btn-sm { min-height: 44px; font-size: 0.6875rem; padding: 10px 20px; }
  .faq-q { padding: 20px 4px; min-height: 60px; }
  .office-tab, .service-tab, .efficacy-tile { min-height: 48px; }
  .footer-col ul a { display: inline-block; padding: 7px 0; }
  /* Legal/disclosure link rows measured 43px — one pixel under the WCAG floor */
  .footer-disclosures a { display: inline-block; min-height: 44px; }
  .footer-disclosures { gap: 4px 22px; }
  .field input, .field select, .field textarea { min-height: 48px; padding: 14px 18px; }
  .field textarea { min-height: 130px; }

  /* Mobile nav: 44px toggle, animated X, collapsed submenus, scroll containment */
  .nav-toggle { display: flex; flex-direction: column; justify-content: center; align-items: center; width: 44px; height: 44px; padding: 0; margin-right: -6px; }
  .nav-toggle span { margin: 3px 0; }
  .nav-toggle.open span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
  .nav-toggle.open span:nth-child(2) { opacity: 0; }
  .nav-toggle.open span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }
  .nav-menu { max-height: calc(100dvh - 72px); overscroll-behavior: contain; padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px)); }
  .nav-link { display: flex; width: 100%; min-height: 48px; padding: 13px 4px; font-size: 0.9375rem; }
  .dropdown { display: none; padding: 4px 0 10px 12px; }
  .nav-item.open > .dropdown { display: block; }
  .nav-item.open > .nav-link .caret { transform: rotate(225deg) translate(-2px,-2px); }
  .dropdown a { min-height: 48px; padding: 12px 14px; display: flex; flex-direction: column; justify-content: center; }
  .nav-cta { flex-direction: column; align-items: stretch; gap: 10px; margin-top: 18px; }
  .nav-cta .btn { width: 100%; }
}

/* ============================================================
   WHERE WE SERVE — footprint map
   ============================================================ */
.map-module { max-width: 780px; margin: 0 auto; }
.map-wrap { position: relative; }
.map-wrap svg { width: 100%; height: auto; display: block; overflow: visible; }
.map-wrap path { stroke: #fff; stroke-width: 1.5; transition: filter 180ms ease-in-out, stroke 180ms ease-in-out; outline: none; }
.map-wrap path:hover, .map-wrap path:focus-visible { filter: brightness(1.09); stroke: var(--gold); stroke-width: 2; cursor: pointer; }
.map-tier-1 { fill: var(--gray-200); }
.map-tier-2 { fill: var(--sky); }
.map-tier-3 { fill: var(--teal-mid); }
.map-tier-4 { fill: var(--teal); }
.map-unavailable { min-height: 0; }
.map-tooltip {
  position: absolute; left: 0; top: 0; transform: translate(-50%, -100%);
  background: var(--teal); color: #fff; font-size: 0.8125rem; font-weight: 600;
  padding: 6px 12px; border-radius: 6px; white-space: nowrap;
  pointer-events: none; opacity: 0; transition: opacity 150ms ease-out; z-index: 2;
}
.map-tooltip.visible { opacity: 1; }
.map-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px 24px; margin-top: 24px; }
.map-legend-item { display: flex; align-items: center; gap: 8px; font-size: 0.875rem; color: var(--gray-500); }
.map-legend .swatch { width: 14px; height: 14px; border-radius: 3px; display: inline-block; flex: none; }

/* Phone */
@media (max-width: 620px) {
  .map-legend { gap: 12px 20px; }
  .map-legend-item { font-size: 0.8125rem; }
  .hero h1 { font-size: clamp(1.85rem, 8.4vw, 2.15rem); line-height: 1.2; text-wrap: balance; }
  .hero-inner, .hero-inner.single { padding: 48px 0; }
  .section-header { margin-bottom: 36px; }
  .section-header p { font-size: 1rem; }
  .flip-card, .fc-inner { min-height: 230px; }
  .fc-face { padding: 26px; }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
  .service-detail-wrap, .efficacy-detail-wrap { padding: 22px; }
  .video-ph.full { min-height: 280px; }
  .cred-tile { min-height: 0; padding: 26px 22px; }
}

/* ── Office maps (contact) ── */
.office-map { position: relative; aspect-ratio: 16/10; border-radius: 12px; overflow: hidden; border: 1px solid var(--gray-200); box-shadow: 0 2px 12px rgba(0,97,109,0.10); margin-top: 22px; background: var(--off-white); }
.office-map iframe { width: 100%; height: 100%; border: 0; display: block; }
@media (max-width: 620px) { .office-map { aspect-ratio: 4/3; } }

/* 3-up grids: hold three columns through tablet so a 3-item grid never orphans one card (odd-item-out) */
@media (max-width: 960px) and (min-width: 761px) { .grid-3 { grid-template-columns: repeat(3, 1fr); gap: 18px; } }
@media (max-width: 760px) { .grid-3 { grid-template-columns: 1fr; } }

/* ============================================================
   MOBILE OPTIMIZATION PASS 2 — Aug 28, 2026
   Root-cause fixes found in the 320–1440px sweep. Every rule below is
   scoped to a breakpoint or an input modality; desktop is untouched.
   ============================================================ */

/* Contact "what to expect" steps: was an inline repeat(3,1fr) that outranked
   every media query and overflowed at 320px. Now a class that collapses. */
.steps-3 { grid-template-columns: repeat(3, 1fr); max-width: 900px; margin: 0 auto; }
@media (max-width: 760px) { .steps-3 { grid-template-columns: 1fr; max-width: 420px; } }

/* Award/credential tiles held two columns down to 320px (15px of overflow) */
@media (max-width: 560px) { .cred-grid { grid-template-columns: 1fr; } }

/* Very small phones: tighter gutters so 280px of content isn't squeezed to 240 */
@media (max-width: 360px) { .container { padding: 0 16px; } }

/* Hero eyebrow is nowrap by design; at ≥11px it exceeds a 320px screen, so let it wrap */
@media (max-width: 400px) { .hero-lockup .hero-label { white-space: normal; } }

/* Long CTA labels ("Let's Bring Clarity to Your Wealth") forced 302px of
   nowrap width inside a 280px column. Wrap them on phones instead. */
@media (max-width: 620px) {
  .btn { white-space: normal; text-align: center; max-width: 100%; line-height: 1.35; }
  .hero-ctas .btn, .grid-cta .btn { width: auto; }
  /* Mobile rhythm: .section-sm was paying MORE padding than .section on phones */
  .section-sm { padding: 48px 0; }
  .teal-banner { padding: 56px 0; }
  .form-panel { padding: 24px 20px; }
  .footer { padding: 48px 0 24px; }
  .fc-hint { font-size: 0.75rem; }
}

/* Touch-target and legibility floors at tablet and below */
@media (max-width: 960px) {
  .btn-sm { font-size: 0.75rem; }
  .dd-sub { font-size: 0.8125rem; }
  .footer-col ul a { padding: 11px 0; }
  .footer-disclosures a { padding: 11px 0; }
  .bio-back { padding: 11px 0; }
  .bio-contact { gap: 2px 28px; }
  .bio-contact a { min-height: 44px; padding: 10px 0; }
  .card-link { min-height: 44px; }
}

/* Mobile menu dropdowns: the touch (hover:none) rule was applying the DESKTOP
   translateX(-50%) centering transform to the in-menu, statically positioned
   panels, shifting them half their width off the left edge and clipping them. */
@media (max-width: 960px) {
  .nav-menu .dropdown, .nav-menu .dropdown.right,
  .nav-item.open > .dropdown, .nav-item.open > .dropdown.right,
  .nav-item:hover .dropdown, .nav-item:hover .dropdown.right {
    position: static; transform: none; left: auto; right: auto;
    min-width: 0; max-width: 100%; width: 100%; box-sizing: border-box;
  }
  .dropdown a { white-space: normal; }
  .dd-title, .dd-sub { white-space: normal; overflow-wrap: anywhere; }
}

/* Landscape phones: a 720px hero pushed all content below the fold */
@media (orientation: landscape) and (max-height: 520px) {
  .hero-dark { min-height: auto; }
  .hero-dark .hero-inner { padding: 44px 0; }
  .hero-photo { min-height: auto; }
  .hero-photo .hero-inner { padding: 44px 0; }
}

/* Motion preferences: the flip cards, accordions and lightbox all animate */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; }
}
