:root {
  --navy: #000000;
  --gold: #BC1E2D;
  --gold-light: #d42a3a;
  --cream: #F1F1F1;
  --white: #ffffff;
  --text: #000000;
  --text-muted: #444444;
  --border: #d9d9d9;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { font-family: 'DM Sans', sans-serif; color: var(--text); background: var(--white); overflow-x: hidden; }

/* ── NAV ── */
nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 48px; height: 96px;
  background: #ffffff;
  border-bottom: 1px solid var(--border);
  transition: height 0.3s, box-shadow 0.3s, padding 0.3s;
}
nav.scrolled { box-shadow: 0 4px 24px rgba(0,0,0,0.08); height: 72px; }
.nav-logo img { height: 74px; object-fit: contain; transition: height 0.3s; }
nav.scrolled .nav-logo img { height: 54px; }
.nav-links { display: flex; align-items: center; gap: 8px; list-style: none; }
.nav-links > li { position: relative; }
.nav-links > li > a, .nav-links > li > button {
  font-family: 'DM Sans', sans-serif; font-size: 14px; font-weight: 500;
  color: var(--navy); text-decoration: none; padding: 8px 14px; border-radius: 6px;
  background: none; border: none; cursor: pointer; display: flex; align-items: center;
  gap: 4px; transition: background 0.2s, color 0.2s; white-space: nowrap;
}
.nav-links > li > a:hover, .nav-links > li > button:hover { background: var(--cream); color: var(--gold); }
.nav-links > li > a.active { color: var(--gold); }
.nav-links > li > button::after { content: '▾'; font-size: 10px; opacity: 0.6; }
.dropdown {
  position: absolute; top: 100%; left: 0; min-width: 220px;
  background: var(--white); border: 1px solid var(--border); border-radius: 10px;
  box-shadow: 0 12px 40px rgba(0,0,0,0.12); padding: 8px;
  opacity: 0; pointer-events: none; transform: translateY(0);
  transition: opacity 0.2s, transform 0.2s;
}
.nav-links > li:hover .dropdown, .nav-links > li:focus-within .dropdown {
  opacity: 1; pointer-events: all; transform: translateY(0);
}
.dropdown a {
  display: block; padding: 9px 14px; font-size: 13.5px; font-weight: 400;
  color: var(--text); text-decoration: none; border-radius: 6px;
  transition: background 0.15s, color 0.15s;
}
.dropdown a:hover { background: var(--cream); color: var(--gold); }
.nav-links > li > a.nav-cta {
  background: var(--gold); color: var(--white); padding: 9px 18px; font-weight: 600;
  border-radius: 6px; margin-left: 6px; box-shadow: 0 2px 8px rgba(188,30,45,0.25);
  transition: background 0.2s, transform 0.2s, box-shadow 0.2s;
}
.nav-links > li > a.nav-cta:hover {
  background: var(--navy); color: var(--white); transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(0,0,0,0.18);
}
.mobile-nav-cta {
  display: block; margin-top: 16px; padding: 14px 20px !important;
  background: var(--gold); color: var(--white) !important; font-weight: 600;
  text-align: center; border-radius: 8px; text-decoration: none;
}
.mobile-nav-cta:hover { background: var(--navy); }
.hamburger { display: none; flex-direction: column; gap: 5px; background: none; border: none; cursor: pointer; padding: 6px; }
.hamburger span { display: block; width: 24px; height: 2px; background: var(--navy); border-radius: 2px; transition: transform 0.3s, opacity 0.3s; }

/* ── PAGE HERO (inner pages) ── */
.page-hero {
  position: relative; height: 52vh; min-height: 340px;
  display: flex; align-items: flex-end; padding: 0 0 56px 0;
  overflow: hidden; margin-top: 96px;
}
.page-hero-bg {
  position: absolute; inset: 0; background-size: cover; background-position: center;
}
.page-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0.72) 100%);
}
.page-hero-content { position: relative; z-index: 2; width: 100%; max-width: 1080px; margin: 0 auto; padding: 0 48px; }
.page-hero-eyebrow {
  font-size: 11px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--gold-light); margin-bottom: 14px;
}
.page-hero h1 {
  font-family: 'Cormorant Garamond', serif; font-size: clamp(40px, 6vw, 72px);
  font-weight: 700; color: var(--white); line-height: 1.05;
}

/* ── SECTIONS ── */
section { padding: 80px 24px; }
.container { max-width: 1080px; margin: 0 auto; }

/* ── TYPOGRAPHY ── */
.section-label {
  font-size: 11px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--gold); margin-bottom: 16px;
}
.gold-rule { width: 48px; height: 3px; background: var(--gold); margin-bottom: 28px; border-radius: 2px; }
h1.section-title,
h2.section-title {
  font-family: 'Cormorant Garamond', serif; font-size: clamp(32px, 4vw, 48px);
  font-weight: 700; line-height: 1.1; margin-bottom: 16px;
  background: linear-gradient(135deg, #000000 0%, #BC1E2D 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
  background-clip: text;
  /* The gradient is clipped to the glyphs, so nothing outside the background
     box gets painted. Cormorant's descenders hang below a 1.1 line box, which
     sliced the tail off every g/y/p in a section title ("Let's Reach Your
     Goals. Together." lost both g's). Padding grows the background box under
     the baseline; the margin above is trimmed to match so spacing is unchanged. */
  padding-bottom: 0.1em;
}
.lead { font-size: 17px; line-height: 1.8; color: var(--text-muted); margin-bottom: 24px; }
p { font-size: 15px; line-height: 1.8; color: var(--text-muted); margin-bottom: 16px; }

/* ── BUTTONS ── */
.btn-gold {
  display: inline-flex; align-items: center; gap: 8px; background: var(--gold);
  color: var(--white); font-weight: 600; font-size: 13px; letter-spacing: 0.08em;
  text-transform: uppercase; text-decoration: none; padding: 14px 32px; border-radius: 4px;
  transition: background 0.2s; margin-right: 12px; margin-bottom: 12px;
}
.btn-gold:hover { background: var(--gold-light); }
.btn-navy {
  display: inline-flex; align-items: center; gap: 8px; background: var(--navy);
  color: var(--white); font-weight: 600; font-size: 13px; letter-spacing: 0.08em;
  text-transform: uppercase; text-decoration: none; padding: 14px 32px; border-radius: 4px;
  transition: background 0.2s; margin-right: 12px; margin-bottom: 12px;
}
.btn-navy:hover { background: #222222; }
.btn-outline {
  display: inline-flex; align-items: center; gap: 8px; border: 1.5px solid var(--navy);
  color: var(--navy); font-weight: 600; font-size: 13px; letter-spacing: 0.08em;
  text-transform: uppercase; text-decoration: none; padding: 13px 30px; border-radius: 4px;
  transition: background 0.2s, color 0.2s; margin-right: 12px; margin-bottom: 12px;
}
.btn-outline:hover { background: var(--navy); color: var(--white); }

/* ── FEATURE BOX ── */
.feature-box {
  background: var(--cream); border-radius: 10px; padding: 40px 44px;
  border-left: 4px solid var(--gold); margin: 40px 0;
}
.feature-box h3,
.feature-box h2 {
  font-family: 'Cormorant Garamond', serif; font-size: 26px; font-weight: 700;
  color: var(--navy); margin-bottom: 16px;
}

/* ── RESOURCES ── */
.resources-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 20px; margin: 32px 0; }
.resource-card {
  border: 1px solid var(--border); border-radius: 8px; padding: 24px;
  transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.resource-card:hover { border-color: var(--gold); transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,0.07); }
.resource-card h4,
.resource-card h3 { font-size: 15px; font-weight: 600; color: var(--navy); margin-bottom: 8px; }
.resource-card p { font-size: 13px; margin-bottom: 16px; }
.resource-card a { font-size: 13px; font-weight: 600; color: var(--gold); text-decoration: none; }
.resource-card a:hover { text-decoration: underline; }

/* ── FAQ ── */
.faq-list { margin-top: 32px; }
.faq-item { border-bottom: 1px solid var(--border); }
.faq-question {
  width: 100%; text-align: left; background: none; border: none; cursor: pointer;
  padding: 20px 0; display: flex; justify-content: space-between; align-items: center;
  font-family: 'DM Sans', sans-serif; font-size: 16px; font-weight: 600; color: var(--navy);
}
.faq-question::after { content: '+'; font-size: 20px; color: var(--gold); transition: transform 0.3s; flex-shrink: 0; margin-left: 16px; }
.faq-item.open .faq-question::after { transform: rotate(45deg); }
.faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.4s ease; }
.faq-answer-inner { padding: 0 0 20px 0; font-size: 15px; line-height: 1.8; color: var(--text-muted); }
.faq-answer-inner a { color: var(--gold); }

/* ── COACHES GRID ── */
.coaches-section { background: var(--cream); }
.coaches-group-title {
  font-family: 'Cormorant Garamond', serif; font-size: 28px; font-weight: 700;
  color: var(--navy); margin-bottom: 28px; padding-bottom: 12px;
  border-bottom: 2px solid var(--gold);
}
/* Sits above the roster and qualifies every group below it, so it needs to read
   as a caveat rather than as body copy competing with the first group title. */
.staffing-note {
  font-size: 14px; line-height: 1.7; color: var(--text-muted);
  border-left: 3px solid var(--border); padding: 2px 0 2px 16px;
  margin: 0 0 40px; max-width: 760px;
}
.coaches-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 24px; margin-bottom: 56px; }

/* Coach card flip */
.coach-card-wrap { perspective: 800px; }
.coach-card {
  position: relative; border-radius: 10px;
  transition: transform 0.6s; transform-style: preserve-3d; cursor: pointer;
  width: 100%; aspect-ratio: 5/8;
}
.coach-card-wrap:hover .coach-card { transform: rotateY(180deg); }
.coach-card-front, .coach-card-back {
  position: absolute; inset: 0; backface-visibility: hidden; border-radius: 10px;
  border: 1px solid var(--border); overflow: hidden;
}
/* Column layout so the caption takes the height it actually needs and the photo
   absorbs the difference. The photo used to be a hard 78%, which left the info
   block a fixed ~22% of a 5/8 card: about two lines at 12px. Anything longer
   ("COO of Ascend, Co-Curriculum Director, and Congressional Debate Lab Leader")
   ran past it and was cut off by the front face's overflow:hidden. */
.coach-card-front { background: var(--white); display: flex; flex-direction: column; }
.coach-card-back {
  background: var(--white); transform: rotateY(180deg);
  display: flex; flex-direction: column; justify-content: center; align-items: center;
  padding: 24px; text-align: center;
}
.coach-card-back h3 { font-size: 18px; font-weight: 600; color: var(--navy); margin-bottom: 8px; }
.coach-card-back .coach-role { font-size: 12px; font-weight: 600; color: var(--gold); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 12px; }
.coach-card-back .coach-bio { font-size: 13px; color: var(--text-muted); line-height: 1.6; margin: 0; }
/* min-height:0 is what actually lets a flex item shrink below its content size,
   so the photo yields room to a long caption instead of pushing it out. */
.coach-photo { width: 100%; flex: 1 1 auto; min-height: 0; object-fit: cover; object-position: center 18%; display: block; }
/* Staff bio portrait photos — bias the crop toward the face */
.split-img[style*="3/4"] img { object-position: center 20%; }
.coach-info { padding: 12px 16px; flex: 0 0 auto; }
.coach-info h3 { font-size: 16px; font-weight: 600; color: var(--navy); margin-bottom: 4px; }
.coach-info p { font-size: 12px; color: var(--text-muted); margin: 0; line-height: 1.45; }
/* Returning-staff marker. Sits under the role on the card front. */
.coach-confirmed {
  display: inline-block; margin-top: 8px; padding: 3px 9px; border-radius: 999px;
  background: rgba(188,30,45,0.09); color: var(--gold);
  font-size: 10px; font-weight: 600; letter-spacing: 0.07em; text-transform: uppercase;
}

/* Back to top */
.back-to-top {
  position: fixed; bottom: 32px; right: 32px; z-index: 90;
  width: 44px; height: 44px; border-radius: 50%;
  background: var(--gold); color: var(--white); border: none; cursor: pointer;
  font-size: 20px; display: flex; align-items: center; justify-content: center;
  opacity: 0; transform: translateY(12px); pointer-events: none;
  transition: opacity 0.3s, transform 0.3s, background 0.2s;
  box-shadow: 0 4px 16px rgba(0,0,0,0.15);
}
.back-to-top.visible { opacity: 1; transform: translateY(0); pointer-events: all; }
.back-to-top:hover { background: var(--gold-light); }

/* ── PROGRAM STATS ── */
.stats-row { display: grid; grid-template-columns: repeat(3,1fr); gap: 32px; margin: 48px 0; }
.stat-box { text-align: center; padding: 32px 20px; border: 1px solid var(--border); border-radius: 8px; }
.stat-num {
  font-family: 'Cormorant Garamond', serif; font-size: 52px; font-weight: 700;
  color: var(--gold); line-height: 1; margin-bottom: 8px;
}
.stat-label { font-size: 13px; font-weight: 500; color: var(--text-muted); letter-spacing: 0.06em; }

/* ── PRICING CARDS ── */
/* Every pricing grid on the site holds an odd number of cards (3 on the program
   pages, 5 on Ascend Online), so a fixed 2-up always stranded the last card
   alone beside an empty half-row. Three across seats the 3-card grids in one
   clean row and drops to 2 then 1 as the container narrows. */
.pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); gap: 24px; margin: 32px 0; }
.pricing-card {
  border: 1.5px solid var(--border); border-radius: 10px; padding: 36px;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.pricing-card.featured { border-color: var(--gold); background: var(--cream); }
.pricing-card h3 { font-family: 'Cormorant Garamond', serif; font-size: 24px; font-weight: 700; color: var(--navy); margin-bottom: 8px; }
.pricing-card .price { font-size: 36px; font-weight: 700; color: var(--gold); margin: 12px 0; }
.pricing-card .price span { font-size: 15px; font-weight: 400; color: var(--text-muted); }
.pricing-card p { font-size: 14px; margin-bottom: 20px; }
.pricing-card ul { list-style: none; margin-bottom: 28px; }
.pricing-card ul li { font-size: 14px; color: var(--text-muted); padding: 6px 0; border-bottom: 1px solid var(--border); }
.pricing-card ul li::before { content: '✓ '; color: var(--gold); font-weight: 700; }

/* ── CTA BANNER ── */
.cta-section { background: var(--gold); text-align: center; padding: 80px 24px; }
.cta-section h2 { font-family: 'Cormorant Garamond', serif; font-size: clamp(32px,4vw,50px); font-weight: 700; color: var(--white); margin-bottom: 16px; }
.cta-section p { font-size: 16px; color: rgba(255,255,255,0.72); max-width: 520px; margin: 0 auto 36px; }
.cta-section .btn-gold { background: var(--gold); }
.cta-section .btn-outline-white {
  display: inline-flex; align-items: center; gap: 8px; border: 1.5px solid rgba(255,255,255,0.5);
  color: var(--white); font-weight: 600; font-size: 13px; letter-spacing: 0.08em;
  text-transform: uppercase; text-decoration: none; padding: 13px 30px; border-radius: 4px;
  transition: border-color 0.2s, background 0.2s; margin-right: 12px; margin-bottom: 12px;
}
.cta-section .btn-outline-white:hover { border-color: white; background: rgba(255,255,255,0.08); }

/* ── SCHEDULE TABLE ── */
.schedule-table { width: 100%; border-collapse: collapse; margin: 24px 0; }
.schedule-table th { background: var(--gold); color: var(--white); padding: 14px 16px; text-align: left; font-size: 13px; font-weight: 600; letter-spacing: 0.06em; }
.schedule-table td { padding: 13px 16px; font-size: 14px; border-bottom: 1px solid var(--border); color: var(--text-muted); }
.schedule-table tr:nth-child(even) td { background: var(--cream); }

/* ── FEATURES GRID ── */
.features-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 28px; margin: 40px 0; }
.feature-item { padding: 28px; border: 1px solid var(--border); border-radius: 8px; }
.feature-item h4,
.feature-item h3 { font-size: 16px; font-weight: 600; color: var(--navy); margin-bottom: 10px; }
.feature-item p { font-size: 14px; margin: 0; }
.feature-icon { font-size: 28px; margin-bottom: 14px; }

/* ── FOOTER ── */
footer { background: var(--white); color: var(--text-muted); padding: 64px 24px 40px; }
.footer-inner {
  max-width: 1080px; margin: 0 auto; display: grid;
  grid-template-columns: 2fr 1fr 1fr; gap: 48px;
  padding-bottom: 48px; border-bottom: 1px solid var(--border);
}
.footer-brand img { height: 72px; object-fit: contain; margin-bottom: 16px; }
.footer-brand p { font-size: 14px; line-height: 1.7; max-width: 280px; }
.footer-col h4 { font-size: 11px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gold); margin-bottom: 16px; }
.footer-col ul { list-style: none; }
.footer-col ul li { margin-bottom: 10px; }
.footer-col ul li a { font-size: 14px; color: var(--text-muted); text-decoration: none; transition: color 0.2s; }
.footer-col ul li a:hover { color: var(--gold); }
.footer-bottom { max-width: 1080px; margin: 0 auto; padding-top: 32px; display: flex; justify-content: space-between; align-items: center; font-size: 13px; }
.footer-bottom a { color: var(--gold); text-decoration: none; }

/* ── MOBILE NAV ── */
.mobile-nav { display: none; position: fixed; inset: 0; background: var(--white); z-index: 99; padding: 96px 32px 48px; overflow-y: auto; flex-direction: column; gap: 8px; }
.mobile-nav.open { display: flex; }
.mobile-nav a { font-size: 18px; font-weight: 500; color: var(--navy); text-decoration: none; padding: 12px 0; border-bottom: 1px solid var(--border); }
.mobile-nav-section { font-size: 11px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gold); padding: 20px 0 8px; }

/* ── ANIMATIONS ── */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.7s ease, transform 0.7s ease; }
.reveal.visible { opacity: 1; transform: none; }

/* ── RESPONSIVE ── */
/* Collapse the full nav to the hamburger early — 4 dropdowns + CTA + cart need
   ~1000px to fit, so switch before they overflow and get clipped. */
@media (max-width: 980px) {
  nav { padding: 0 24px; }
  .nav-links { display: none; }
  .hamburger { display: flex; }
}
@media (max-width: 900px) {
  .coaches-grid { grid-template-columns: repeat(3,1fr); }
  .features-grid { grid-template-columns: repeat(2,1fr); }
  .resources-grid { grid-template-columns: repeat(2,1fr); }
  .stats-row { grid-template-columns: repeat(3,1fr); }
  .footer-inner { grid-template-columns: 1fr 1fr; }
  /* .pricing-grid intentionally omitted — auto-fit now steps 3 → 2 → 1 on its
     own, and forcing 1fr here skipped the 2-up tablet layout entirely. */
}
@media (max-width: 640px) {
  nav { padding: 0 20px; }
  .page-hero-content { padding: 0 20px; }
  .coaches-grid { grid-template-columns: repeat(2,1fr); }
  .features-grid { grid-template-columns: 1fr; }
  .resources-grid { grid-template-columns: 1fr; }
  .stats-row { grid-template-columns: 1fr; }
  .footer-inner { grid-template-columns: 1fr; }
  .footer-bottom { flex-direction: column; gap: 12px; text-align: center; }
}

/* ════════ ASCEND SPEECH — ADDITIONS ════════ */

/* Footer: 4 cols + social */
footer .footer-inner { grid-template-columns: 2fr 1fr 1fr 1.2fr; }
.footer-social { display: flex; gap: 12px; margin-top: 18px; }
.footer-social a { color: var(--text-muted); transition: color 0.2s, transform 0.2s; }
.footer-social a:hover { color: var(--gold); transform: translateY(-2px); }

/* Nav cart */
.nav-cart { position: relative; display: flex !important; align-items: center; color: var(--navy); padding: 8px 10px !important; }
.nav-cart:hover { color: var(--gold); background: var(--cream); border-radius: 6px; }
.cart-badge { position: absolute; top: 0; right: 0; background: var(--gold); color: #fff; font-size: 10px; font-weight: 700; min-width: 16px; height: 16px; border-radius: 8px; display: none; align-items: center; justify-content: center; padding: 0 4px; }
.hamburger.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.active span:nth-child(2) { opacity: 0; }
.hamburger.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Generic content prose (legal, blog, bios) */
.prose { max-width: 760px; margin: 0 auto; }
.prose h2 { font-family: 'Cormorant Garamond', serif; font-size: 30px; font-weight: 700; color: var(--navy); margin: 36px 0 14px; }
.prose h3 { font-family: 'Cormorant Garamond', serif; font-size: 23px; font-weight: 700; color: var(--navy); margin: 28px 0 12px; }
.prose p { font-size: 16px; line-height: 1.85; color: var(--text-muted); margin-bottom: 18px; }
.prose ul, .prose ol { margin: 0 0 18px 22px; }
.prose li { font-size: 16px; line-height: 1.8; color: var(--text-muted); margin-bottom: 8px; }
.prose a { color: var(--gold); }
.prose strong { color: var(--navy); }
.prose img { max-width: 100%; border-radius: 8px; margin: 24px 0; }

/* Two-column image+text block */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
.split.reverse { direction: rtl; }
.split.reverse > * { direction: ltr; }
.split-img { border-radius: 8px; overflow: hidden; aspect-ratio: 4/3; }
.split-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 820px) { .split, .split.reverse { grid-template-columns: 1fr; gap: 36px; } }

/* Blog grid */
.blog-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 28px; }
.blog-card { border: 1px solid var(--border); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; transition: transform 0.25s, box-shadow 0.25s, border-color 0.25s; background: var(--white); }
.blog-card:hover { transform: translateY(-4px); box-shadow: 0 14px 40px rgba(0,0,0,0.09); border-color: var(--gold); }
.blog-card-img { aspect-ratio: 16/9; overflow: hidden; background: var(--cream); }
.blog-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.4s; }
.blog-card:hover .blog-card-img img { transform: scale(1.05); }
.blog-card-body { padding: 24px; display: flex; flex-direction: column; flex: 1; }
.blog-card-meta { font-size: 11px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gold); margin-bottom: 10px; }
.blog-card h3,
.blog-card h2 { font-family: 'Cormorant Garamond', serif; font-size: 22px; font-weight: 700; color: var(--navy); line-height: 1.2; margin-bottom: 12px; }
.blog-card p { font-size: 14px; line-height: 1.7; color: var(--text-muted); margin-bottom: 16px; flex: 1; }
.blog-card a.read-more { font-size: 13px; font-weight: 600; color: var(--gold); text-decoration: none; }

/* Article page */
.article-header { max-width: 760px; margin: 0 auto 40px; text-align: center; }
.article-header h1 { font-family: 'Cormorant Garamond', serif; font-size: clamp(32px, 5vw, 54px); font-weight: 700; color: var(--navy); line-height: 1.1; margin-bottom: 18px; }
.article-meta { font-size: 13px; color: var(--text-muted); letter-spacing: 0.04em; }
.article-hero-img { max-width: 980px; margin: 0 auto 48px; border-radius: 12px; overflow: hidden; aspect-ratio: 16/9; }
.article-hero-img img { width: 100%; height: 100%; object-fit: cover; }

/* Store / product grid */
.store-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 28px; }
.store-card { border: 1px solid var(--border); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; transition: transform 0.25s, box-shadow 0.25s, border-color 0.25s; background: var(--white); text-decoration: none; }
.store-card:hover { transform: translateY(-4px); box-shadow: 0 14px 40px rgba(0,0,0,0.09); border-color: var(--gold); }
.store-card-img { aspect-ratio: 4/3; overflow: hidden; background: var(--cream); }
.store-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.4s; }
.store-card:hover .store-card-img img { transform: scale(1.05); }
.store-card-body { padding: 22px 24px 26px; }
.store-card-body h3 { font-family: 'Cormorant Garamond', serif; font-size: 21px; font-weight: 700; color: var(--navy); margin-bottom: 6px; }
.store-card-tag { font-size: 11px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gold); margin-bottom: 12px; display: block; }
.store-card-price { font-size: 16px; font-weight: 600; color: var(--navy); }
.store-card-price span { font-size: 13px; font-weight: 400; color: var(--text-muted); }

/* Product detail */
.product-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start; }
.product-gallery { border-radius: 12px; overflow: hidden; aspect-ratio: 1/1; background: var(--cream); position: sticky; top: 120px; }
.product-gallery img { width: 100%; height: 100%; object-fit: cover; }
.product-info h1 { font-family: 'Cormorant Garamond', serif; font-size: clamp(28px, 4vw, 42px); font-weight: 700; color: var(--navy); line-height: 1.1; margin-bottom: 10px; }
.product-price { font-size: 28px; font-weight: 700; color: var(--gold); margin: 16px 0 24px; }
.product-field { margin-bottom: 20px; }
.product-field label { display: block; font-size: 12px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--navy); margin-bottom: 8px; }
.product-field select, .product-field input { width: 100%; padding: 13px 14px; border: 1px solid var(--border); border-radius: 6px; font-family: 'DM Sans', sans-serif; font-size: 15px; color: var(--text); background: var(--white); box-sizing: border-box; }
.qty-row { display: flex; align-items: center; gap: 14px; }
.qty-row input { width: 72px; text-align: center; }
@media (max-width: 820px) { .product-layout { grid-template-columns: 1fr; gap: 32px; } .product-gallery { position: static; } }

/* Cart */
.cart-row { display: grid; grid-template-columns: 80px 1fr auto auto; gap: 18px; align-items: center; padding: 18px 0; border-bottom: 1px solid var(--border); }
.cart-row img { width: 80px; height: 80px; object-fit: cover; border-radius: 6px; }
.cart-row .cart-item-title { font-weight: 600; color: var(--navy); font-size: 15px; }
.cart-row .cart-item-variant { font-size: 13px; color: var(--text-muted); }
.cart-remove { background: none; border: none; color: var(--text-muted); cursor: pointer; font-size: 13px; text-decoration: underline; }
.cart-remove:hover { color: var(--gold); }
.cart-summary { background: var(--cream); border-radius: 12px; padding: 32px; position: sticky; top: 120px; }
.cart-summary-row { display: flex; justify-content: space-between; padding: 10px 0; font-size: 15px; color: var(--text-muted); }
.cart-summary-row.total { font-size: 19px; font-weight: 700; color: var(--navy); border-top: 1px solid var(--border); margin-top: 10px; padding-top: 18px; }
@media (max-width: 820px) { .cart-row { grid-template-columns: 64px 1fr auto; } .cart-row img { width: 64px; height: 64px; } }

/* Forms */
.form-card { max-width: 720px; margin: 0 auto; background: var(--white); border: 1px solid var(--border); border-radius: 14px; padding: 44px; box-shadow: 0 12px 40px rgba(0,0,0,0.05); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.form-group { margin-bottom: 20px; }
.form-group.full { grid-column: 1 / -1; }
.form-group label { display: block; font-size: 13px; font-weight: 600; color: var(--navy); margin-bottom: 7px; }
.form-group input, .form-group select, .form-group textarea { width: 100%; padding: 12px 14px; border: 1px solid var(--border); border-radius: 6px; font-family: 'DM Sans', sans-serif; font-size: 15px; color: var(--text); background: var(--white); box-sizing: border-box; }
.form-group textarea { min-height: 120px; resize: vertical; }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(188,30,45,0.1); }
@media (max-width: 640px) { .form-grid { grid-template-columns: 1fr; } .form-card { padding: 28px 20px; } }

/* Testimonial cards */
/* Balanced columns rather than a grid: quote lengths vary a lot, and a grid both
   stranded the 4th card alone on its own row (testimonials page) and stretched
   every card to the tallest one's height. Columns also stay tidy at 3 cards
   (homepage) and at any count added later. */
.testi-grid { columns: 3 320px; column-gap: 28px; }
.testi-card { background: var(--cream); border-radius: 12px; padding: 36px; border-left: 4px solid var(--gold); break-inside: avoid; margin-bottom: 28px; }
.testi-card .quote { font-size: 16px; line-height: 1.8; color: var(--text); font-style: italic; margin-bottom: 20px; }
.testi-card .testi-name { font-weight: 700; color: var(--navy); }
.testi-card .testi-role { font-size: 13px; color: var(--text-muted); }

/* Value cards */
/* Exactly four cards ("the Core Four"), so pin to 2x2 — auto-fit resolved to
   three columns at container width and stranded the fourth card on its own row. */
.values-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
@media (max-width: 640px) { .values-grid { grid-template-columns: 1fr; } }
.value-card { padding: 32px; border: 1px solid var(--border); border-radius: 12px; transition: border-color 0.2s, box-shadow 0.2s; }
.value-card:hover { border-color: var(--gold); box-shadow: 0 10px 30px rgba(0,0,0,0.06); }
.value-card .value-icon { font-size: 32px; margin-bottom: 14px; }
.value-card h3 { font-family: 'Cormorant Garamond', serif; font-size: 22px; font-weight: 700; color: var(--navy); margin-bottom: 10px; }
.value-card p { font-size: 14px; margin: 0; }

/* Coach card: tap-to-flip on mobile/touch */
.coach-card-wrap.flipped .coach-card { transform: rotateY(180deg); }

@media (max-width: 820px) { footer .footer-inner { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { footer .footer-inner { grid-template-columns: 1fr; } }

/* ════════ BLOG COVERS + TESTIMONIAL POLISH ════════ */

/* Typographic gradient covers (replace repeated blog photo) */
.blog-cover { position: relative; display: block; width: 100%; aspect-ratio: 16/9; overflow: hidden; text-decoration: none; }
.blog-cover-mono {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -54%);
  font-family: 'Cormorant Garamond', serif; font-weight: 700; font-size: 190px; line-height: 1;
  color: rgba(255,255,255,0.14); z-index: 1; pointer-events: none; user-select: none;
  transition: color 0.3s, transform 0.4s;
}
.blog-card:hover .blog-cover-mono { color: rgba(255,255,255,0.22); transform: translate(-50%,-54%) scale(1.06); }
.blog-cover-inner { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; justify-content: flex-end; padding: 22px 24px; }
.blog-cover-rule { width: 34px; height: 3px; background: var(--gold); border-radius: 2px; margin-bottom: 12px; }
.blog-cover-cat { font-size: 11px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: #fff; }
.bc-0 { background: linear-gradient(135deg, #BC1E2D 0%, #7a0f19 100%); }
.bc-1 { background: linear-gradient(135deg, #2b2b2b 0%, #0f0f0f 100%); }
.bc-2 { background: linear-gradient(135deg, #96181F 0%, #d42a3a 100%); }
.bc-3 { background: linear-gradient(135deg, #3a1015 0%, #161616 100%); }
.bc-4 { background: linear-gradient(135deg, #8a1420 0%, #BC1E2D 100%); }

/* Article page gradient cover band */
.article-cover { position: relative; height: 210px; border-radius: 12px; overflow: hidden; max-width: 980px; margin: 0 auto 48px; display: flex; align-items: center; justify-content: center; }
.article-cover .blog-cover-mono { font-size: 240px; transform: translate(-50%, -52%); }
.article-cover-cat { position: relative; z-index: 2; font-size: 12px; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: #fff; text-align: center; }
.article-cover-cat::before { content: ''; display: block; width: 40px; height: 3px; background: var(--gold); border-radius: 2px; margin: 0 auto 14px; }
@media (max-width: 600px) { .article-cover { height: 160px; } .article-cover .blog-cover-mono { font-size: 170px; } }

/* Testimonial decorative quote mark */
.testi-card { position: relative; overflow: hidden; }
.testi-card::before {
  content: '\201C'; position: absolute; top: -14px; right: 16px;
  font-family: 'Cormorant Garamond', serif; font-weight: 700; font-size: 120px; line-height: 1;
  color: var(--gold); opacity: 0.15; pointer-events: none;
}
.testi-card .quote, .testi-card .testi-name, .testi-card .testi-role { position: relative; z-index: 1; }

/* ── PAGE HEADER (photo-free, for pages where a big hero image adds no value) ── */
.page-header {
  margin-top: 96px; padding: 84px 24px 52px;
  background: var(--white); border-bottom: 1px solid var(--border); text-align: center;
}
.page-header .page-header-eyebrow {
  font-size: 11px; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--gold); margin-bottom: 14px;
}
.page-header h1 {
  font-family: 'Cormorant Garamond', serif; font-size: clamp(36px, 5vw, 60px);
  font-weight: 700; line-height: 1.05;
  background: linear-gradient(135deg, #000000 0%, #BC1E2D 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.page-header .page-header-sub { max-width: 560px; margin: 16px auto 0; color: var(--text-muted); font-size: 16px; line-height: 1.7; }

/* Cart row: clean 2-line layout on small phones (price on its own right-aligned line) */
@media (max-width: 560px) {
  .cart-row { grid-template-columns: 56px 1fr auto; column-gap: 12px; row-gap: 8px; }
  .cart-row img { width: 56px; height: 56px; }
  .cart-row > div:last-child { grid-column: 2 / -1; text-align: right; }
}

/* Flip-card back: clamp bio to a teaser so the "Full bio" link is always visible */
.coach-card-back { justify-content: center; padding: 22px 18px; }
.coach-card-back .coach-bio {
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical;
  overflow: hidden; margin: 0; font-size: 12.5px; line-height: 1.5;
}
.coach-fullbio {
  display: inline-block; margin-top: 14px; color: var(--gold);
  font-weight: 600; font-size: 12px; letter-spacing: 0.04em; text-decoration: none;
}
.coach-fullbio:hover { text-decoration: underline; }
@media (min-width: 900px) { .coach-card-back .coach-bio { -webkit-line-clamp: 6; } }
@media (max-width: 640px) {
  .coach-card-back { padding: 16px 14px; }
  .coach-card-back h3 { font-size: 15px; }
  .coach-card-back .coach-bio { -webkit-line-clamp: 4; font-size: 12px; }
}

/* ── Responsive video embeds (Life at Camp) ── */
.video-embed { position: relative; width: 100%; padding-bottom: 56.25%; height: 0; border-radius: 12px; overflow: hidden; background: var(--navy); box-shadow: 0 12px 40px rgba(0,0,0,0.12); }
.video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ── Trust / support callout ── */
.trust-callout { background: #fbeef0; border-left: 4px solid var(--gold); border-radius: 10px; padding: 28px 32px; margin: 8px 0; }
.trust-callout h3 { font-family: 'Cormorant Garamond', serif; font-size: 24px; font-weight: 700; color: var(--navy); margin-bottom: 12px; }
.trust-callout p, .trust-callout li { color: var(--text-muted); }
.trust-callout ul { margin: 0 0 0 20px; }
.trust-callout li { margin-bottom: 8px; }

/* ── Lead-magnet block ── */
.leadmagnet { background: linear-gradient(135deg, #1a1a1a 0%, #3a1015 100%); color: #fff; border-radius: 16px; padding: 56px 48px; position: relative; overflow: hidden; }
.leadmagnet .lm-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold-light); margin-bottom: 14px; }
.leadmagnet h2 { font-family: 'Cormorant Garamond', serif; font-size: clamp(28px, 3.6vw, 42px); font-weight: 700; line-height: 1.12; margin-bottom: 16px; color: #fff; }
.leadmagnet p { color: rgba(255,255,255,0.82); font-size: 16px; line-height: 1.7; max-width: 620px; margin: 0 auto 12px; }
.lm-features { display: flex; flex-wrap: wrap; gap: 10px 24px; justify-content: center; margin: 22px 0 30px; }
.lm-features span { font-size: 14px; color: rgba(255,255,255,0.9); }
.lm-features span::before { content: '✓'; color: var(--gold-light); font-weight: 700; margin-right: 8px; }
@media (max-width: 640px) { .leadmagnet { padding: 40px 24px; } }

/* ── PROGRAM FINDER QUIZ ── */
.quiz { max-width: 640px; margin: 0 auto; }
.quiz-progress { height: 6px; background: var(--border); border-radius: 3px; overflow: hidden; margin-bottom: 40px; }
.quiz-progress-bar { height: 100%; background: var(--gold); width: 0; transition: width 0.4s ease; }
.quiz-eyebrow { font-size: 11px; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gold); margin-bottom: 14px; }
.quiz-q { font-family: 'Cormorant Garamond', serif; font-size: clamp(26px, 4vw, 38px); font-weight: 700; color: var(--navy); line-height: 1.15; margin-bottom: 28px; }
.quiz-options { display: flex; flex-direction: column; gap: 12px; }
.quiz-option { display: flex; align-items: center; justify-content: space-between; gap: 12px; text-align: left; width: 100%; padding: 18px 22px; border: 1.5px solid var(--border); border-radius: 10px; background: var(--white); font-family: 'DM Sans', sans-serif; font-size: 16px; font-weight: 500; color: var(--navy); cursor: pointer; transition: border-color 0.2s, background 0.2s, transform 0.15s; }
.quiz-option:hover { border-color: var(--gold); background: var(--cream); transform: translateX(3px); }
.quiz-option::after { content: '→'; color: var(--gold); font-size: 18px; opacity: 0; transition: opacity 0.2s; flex-shrink: 0; }
.quiz-option:hover::after { opacity: 1; }
.quiz-back { margin-top: 24px; background: none; border: none; color: var(--text-muted); font-size: 13px; cursor: pointer; font-family: 'DM Sans', sans-serif; }
.quiz-back:hover { color: var(--gold); }
.quiz-fade { animation: quizFade 0.35s ease both; }
@keyframes quizFade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

.result-card { border: 1px solid var(--border); border-radius: 16px; overflow: hidden; box-shadow: 0 16px 50px rgba(0,0,0,0.08); }
.result-img { aspect-ratio: 16/9; overflow: hidden; background: var(--cream); }
.result-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.result-body { padding: 36px 40px 40px; }
.result-tag { font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gold); margin-bottom: 12px; }
.result-title { font-family: 'Cormorant Garamond', serif; font-size: clamp(26px, 3.4vw, 36px); font-weight: 700; color: var(--navy); margin-bottom: 8px; }
.result-price { font-size: 20px; font-weight: 700; color: var(--gold); margin-bottom: 16px; }
.result-price span { font-size: 14px; font-weight: 400; color: var(--text-muted); }
.result-why { font-size: 15px; line-height: 1.7; color: var(--text-muted); margin-bottom: 26px; }
.result-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.result-startover { margin-top: 22px; text-align: center; }
.result-startover button { background: none; border: none; color: var(--text-muted); font-size: 13px; cursor: pointer; font-family: 'DM Sans', sans-serif; text-decoration: underline; }
.result-startover button:hover { color: var(--gold); }
@media (max-width: 640px) { .result-body { padding: 28px 22px 32px; } }

/* ════════ SHARED EDITORIAL COMPONENTS (homepage + program pages) ════════ */

/* Film-grain texture */
.grain { position: fixed; inset: 0; z-index: 9998; pointer-events: none; opacity: 0.035; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }

/* Section-number eyebrow motif */
.sec-num { font-size: 12px; font-weight: 600; letter-spacing: 0.16em; color: var(--gold); margin-bottom: 12px; text-transform: uppercase; }

/* Cinematic inner-page hero: taller, slow zoom */
.page-hero.cine { height: 64vh; min-height: 420px; }
.page-hero.cine .page-hero-bg { transform: scale(1.06); animation: heroZoom 14s ease-out forwards; }
@keyframes heroZoom { to { transform: scale(1); } }
@media (prefers-reduced-motion: reduce) { .page-hero.cine .page-hero-bg { animation: none; transform: none; } }
.page-hero-sub { color: rgba(255,255,255,0.9); font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: clamp(18px,2.4vw,26px); margin-top: 12px; max-width: 620px; }
.page-hero-cta { margin-top: 26px; }

/* Editorial numbered blocks */
.ed-block { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: center; padding: 64px 0; }
.ed-block:not(:last-child) { border-bottom: 1px solid var(--border); }
.ed-block.reverse { direction: rtl; }
.ed-block.reverse > * { direction: ltr; }
.ed-img { position: relative; border-radius: 6px; overflow: hidden; aspect-ratio: 5/4; }
.ed-img img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.6s ease; }
.ed-block:hover .ed-img img { transform: scale(1.04); }
.ed-num { font-family: 'Cormorant Garamond', serif; font-size: clamp(56px,7vw,96px); font-weight: 700; line-height: 0.9; color: transparent; -webkit-text-stroke: 1.5px var(--gold); margin-bottom: 8px; opacity: 0.85; }
.ed-text h3 { font-family: 'Cormorant Garamond', serif; font-size: clamp(28px,3.6vw,42px); font-weight: 700; color: var(--navy); line-height: 1.06; margin-bottom: 18px; }
.ed-text p { font-size: 16px; line-height: 1.8; color: var(--text-muted); margin-bottom: 14px; }
.ed-text .btn-gold, .ed-text .btn-outline { margin-top: 8px; }
@media (max-width: 820px) { .ed-block, .ed-block.reverse { grid-template-columns: 1fr; gap: 28px; direction: ltr; } .ed-img { aspect-ratio: 16/10; } }

/* Proof band (dark) with marquee — reusable */
.champ { background: var(--navy); color: #fff; padding: 96px 24px 0; position: relative; overflow: hidden; }
.champ.compact { padding: 88px 24px 88px; }
.champ-inner { max-width: 1080px; margin: 0 auto; text-align: center; position: relative; z-index: 1; }
.champ-eyebrow { font-size: 11px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold-light); margin-bottom: 20px; }
.champ h2 { font-family: 'Cormorant Garamond', serif; font-size: clamp(34px,5vw,64px); font-weight: 700; line-height: 1.04; margin-bottom: 20px; letter-spacing: -0.01em; }
.champ p.champ-sub { font-size: 17px; line-height: 1.7; color: rgba(255,255,255,0.72); max-width: 640px; margin: 0 auto 44px; }
.marquee { overflow: hidden; position: relative; padding: 22px 0; border-top: 1px solid rgba(255,255,255,0.1); border-bottom: 1px solid rgba(255,255,255,0.1); -webkit-mask-image: linear-gradient(to right, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(to right, transparent, #000 12%, #000 88%, transparent); }
.marquee-track { display: flex; gap: 0; width: max-content; animation: marquee 34s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-item { font-family: 'Cormorant Garamond', serif; font-size: 26px; font-weight: 600; color: #fff; padding: 0 34px; white-space: nowrap; display: flex; align-items: center; gap: 14px; }
.marquee-item span { font-size: 14px; color: var(--gold-light); font-family: 'DM Sans', sans-serif; font-weight: 600; letter-spacing: 0.04em; }
.marquee-item::after { content: '★'; color: rgba(255,255,255,0.22); font-size: 12px; margin-left: 34px; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .marquee-track { animation: none; } }

/* ── MOBILE STICKY ENROLL BAR ── */
.sticky-cta { position: fixed; bottom: 0; left: 0; right: 0; z-index: 95; display: none; gap: 10px; padding: 10px 14px; background: rgba(255,255,255,0.97); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); border-top: 1px solid var(--border); box-shadow: 0 -4px 20px rgba(0,0,0,0.08); }
.sticky-cta a { display: flex; align-items: center; justify-content: center; gap: 8px; text-align: center; padding: 14px; border-radius: 6px; font-size: 13px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; text-decoration: none; }
.sticky-cta .sc-enroll { flex: 1; background: var(--gold); color: #fff; }
.sticky-cta .sc-call { flex: 0 0 auto; background: var(--cream); color: var(--navy); padding: 14px 18px; }
@media (max-width: 768px) {
  .sticky-cta.show { display: flex; }
  body.has-sticky-cta { padding-bottom: 74px; }
  body.has-sticky-cta .back-to-top { bottom: 86px; }
}

/* ════════ VISIBLE CONTENT LINKS + DELIGHT FX ════════ */

/* Content/body links: clearly a link (underlined), not only on hover */
.prose a, .faq-answer-inner a, .trust-callout a, .lead a, main p a:not([class]) {
  color: var(--gold);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1.5px;
  text-decoration-color: rgba(188,30,45,0.5);
  transition: text-decoration-color 0.2s, color 0.2s;
}
.prose a:hover, .faq-answer-inner a:hover, .trust-callout a:hover, .lead a:hover, main p a:not([class]):hover {
  text-decoration-color: var(--gold);
  color: var(--gold-light);
}

/* Toast */
.ascend-toast { position: fixed; left: 50%; bottom: 96px; transform: translate(-50%, 24px); background: var(--navy); color: #fff; padding: 13px 20px; border-radius: 12px; font-size: 14px; font-weight: 500; box-shadow: 0 14px 40px rgba(0,0,0,0.28); z-index: 9999; opacity: 0; transition: opacity 0.3s, transform 0.3s; display: flex; align-items: center; gap: 9px; max-width: calc(100vw - 32px); }
.ascend-toast.show { opacity: 1; transform: translate(-50%, 0); }
.ascend-toast .at-ico { color: #46d17a; font-weight: 700; font-size: 16px; }

/* Confetti canvas */
.ascend-confetti-canvas { position: fixed; inset: 0; pointer-events: none; z-index: 99999; }

/* Cart badge bounce when an item is added */
@keyframes badgeBump { 0% { transform: scale(1); } 30% { transform: scale(1.7); } 55% { transform: scale(0.85); } 100% { transform: scale(1); } }
.cart-badge.bump { animation: badgeBump 0.5s ease; }

/* Tactile button press */
.btn-gold:active, .btn-navy:active, .btn-outline:active, .btn-outline-white:active,
.hero-cta:active, .nav-links > li > a.nav-cta:active, .sticky-cta a:active, .ai-chip:active {
  transform: scale(0.96);
}
@media (prefers-reduced-motion: reduce) {
  .cart-badge.bump { animation: none; }
  .ascend-toast { transition: opacity 0.2s; }
}

/* ════════ MEGA MENU + GROUPED DROPDOWNS ════════ */
/* The mega panel anchors to <nav>, not to its own <li>, so it opens at the
   bottom of the nav bar rather than at the bottom of the button. Stretch the
   list and the item to the full nav height so there is no un-hovered gap for
   the pointer to cross on its way down — otherwise :hover drops and the panel
   closes before you can click anything in it. */
.nav-links { align-self: stretch; }
.nav-links > li.has-mega { position: static; align-self: stretch; display: flex; align-items: center; }
.mega {
  /* -1px so the panel's border-top lands on the nav's border-bottom, leaving no
     un-hovered pixel row between the stretched <li> and the panel. */
  position: absolute; top: calc(100% - 1px); left: 0; right: 0;
  background: #fff; border-top: 1px solid var(--border);
  box-shadow: 0 22px 48px rgba(0,0,0,0.10);
  opacity: 0; pointer-events: none; transform: translateY(-6px);
  transition: opacity 0.2s, transform 0.2s; z-index: 99;
}
.nav-links > li.has-mega:hover .mega,
.nav-links > li.has-mega:focus-within .mega,
.nav-links > li.has-mega.open .mega { opacity: 1; pointer-events: all; transform: translateY(0); }
.mega-inner { max-width: 1180px; margin: 0 auto; padding: 34px 48px 38px; display: grid; grid-template-columns: 1fr 1fr 1fr 1.35fr; gap: 40px; }
.mega-col .mega-head { font-family: 'Cormorant Garamond', serif; font-size: 18px; font-weight: 700; color: var(--navy); margin-bottom: 12px; padding-bottom: 9px; border-bottom: 1px solid var(--border); display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; }
.mega-col .mega-head > span:first-child { white-space: nowrap; }
.mega-badge { font-family: 'DM Sans', sans-serif; font-size: 8px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; color: #fff; background: var(--gold); padding: 2px 5px; border-radius: 999px; white-space: nowrap; line-height: 1.35; }
.mega-col a { display: block; padding: 7px 0; font-size: 14px; color: var(--text-muted); text-decoration: none; transition: color 0.15s, padding-left 0.15s; }
.mega-col a:hover { color: var(--gold); padding-left: 5px; }
.mega-promo { background: var(--cream); border-radius: 12px; padding: 20px; display: flex; flex-direction: column; }
.mega-promo-img { aspect-ratio: 16/10; border-radius: 8px; background-size: cover; background-position: center; margin-bottom: 15px; }
/* Same leak as .dd-head: this eyebrow sits directly above .mega-promo-title,
   which supplies its own 6px top margin. */
.mega-promo-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold); margin: 0; }
.mega-promo-title { font-family: 'Cormorant Garamond', serif; font-size: 21px; font-weight: 700; color: var(--navy); margin: 6px 0 14px; line-height: 1.15; }
.mega-promo-cta { font-size: 13px; font-weight: 700; color: var(--gold); text-decoration: none; }
.mega-promo-cta:hover { text-decoration: underline; }
.mega-promo-link { font-size: 13px; font-weight: 600; color: var(--text-muted); text-decoration: none; margin-top: 9px; }
.mega-promo-link:hover { color: var(--gold); }
/* grouped-dropdown section headers */
/* margin:0 — these headings are <p>, so the global body-copy `p` rule was
   adding a 16px bottom margin under each section label.
   The padding then binds the label to the group it names: ~11px below it vs
   ~30px above, against 18px between links. Even spacing on both sides left the
   label floating between the two groups instead of heading one. */
.dropdown .dd-head { font-size: 10px; font-weight: 700; letter-spacing: 0.13em; text-transform: uppercase; color: #a89a9a; padding: 18px 14px 0; margin: 0; }
.dropdown .dd-head.first { padding-top: 4px; }

/* ── Skip link (a11y): visually hidden until keyboard focus ── */
.skip-link { position: absolute; left: -9999px; top: 0; z-index: 10000; background: var(--navy); color: #fff; padding: 12px 20px; border-radius: 0 0 8px 0; font-weight: 600; font-size: 14px; text-decoration: none; }
.skip-link:focus { left: 0; }

/* ── FORM CHECKBOX GROUP ──
   Used by the coaching application's Congress-only "which program(s)" question.
   .form-group styles text inputs as full-width blocks, which would stretch a
   checkbox across the card, so the box and its label are reset here. */
.form-hint { font-size: 13px; line-height: 1.6; color: var(--text-muted); margin: -3px 0 12px; }
.form-check-row { display: flex; flex-direction: column; gap: 12px; }
.form-group .form-check { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 15px; font-weight: 400; color: var(--text); cursor: pointer; }
.form-group .form-check input[type="checkbox"] { width: 17px; height: 17px; flex: none; padding: 0; margin: 0; accent-color: var(--gold); cursor: pointer; }
.form-check-note { color: var(--text-muted); font-size: 13.5px; }
/* Stated-not-asked answer (the coaching application tells non-Congress
   applicants which camp the role is at, rather than offering a choice). */
.form-note-fixed { font-size: 15px; line-height: 1.6; color: var(--text); background: var(--cream); border: 1px solid var(--border); border-radius: 6px; padding: 12px 14px; margin: 0; }
/* Label-styled heading for a stated value rather than an input. A <p>, not a
   <label>, since it labels no control — and margin:0 because the global body-copy
   `p` rule would otherwise push it off its statement. */
.form-group .form-label-static { display: block; font-size: 13px; font-weight: 600; color: var(--navy); margin: 0 0 7px; line-height: 1.4; }
/* Multi-line variant of .form-check: the box aligns to the first line of the
   label rather than the vertical centre of a wrapped block, and the note sits
   under the level name instead of trailing it. */
.form-group .form-check.multiline { align-items: flex-start; }
.form-group .form-check.multiline input[type="checkbox"] { margin-top: 3px; }
.form-check.multiline .form-check-note { display: block; margin-top: 2px; line-height: 1.55; }
