/* ==========================================================================
   The Guidance Quran Academy — Design System
   Minimal · Elegant · Trustworthy · Premium
   --------------------------------------------------------------------------
   1  Tokens            8  Hero              15  Pricing
   2  Reset & base      9  Statistics        16  Accordion
   3  Layout            10 Steps             17  Forms
   4  Buttons           11 Teacher cards     18  Prose
   5  Cards             12 Testimonials      19  CTA & sticky bar
   6  Top bar           13 Logos/marks       20  Footer
   7  Header & nav      14 Media             21  Utilities & responsive
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root{
  /* ---- Four-tier green -------------------------------------------------
     Each tier has one surface role. Do not collapse them into a single
     "brand green" — the separation is what carries the identity.          */
  --emerald:#0F5132;          /* Primary  — h1, brand moments            */
  --green-accent:#00754A;     /* Accent   — filled CTAs, links           */
  --green-house:#1E3932;      /* House    — dark bands, top bar, footer  */
  --green-uplift:#2b5148;     /* Uplift   — decorative accents           */
  --green-light:#d4e9e2;      /* pale mint wash                          */

  --emerald-700:#0a3a25;      /* pressed / hover darken                  */
  --emerald-600:#146039;
  --emerald-500:#00754A;      /* alias of accent, used by tick icons     */
  --emerald-50:#e9f1ec;
  --emerald-25:#f4f8f5;

  /* Retained so a revert is one line, but no longer used as a surface:
     the dark role belongs to House Green in this system.                 */
  --navy:#1E3932;
  --navy-600:#2b5148;
  --navy-50:#e9f1ec;

  /* ---- Gold — accent ceremony only, never general purpose ------------ */
  --gold:#cba258;
  --gold-600:#80631e;         /* darkened so gold text clears 4.5:1 on cream */
  --gold-light:#dfc49d;
  --gold-50:#faf6ee;          /* Gold Lightest wash                      */

  /* ---- Warm neutral canvas ------------------------------------------- */
  --warm-white:#f2f0eb;       /* Neutral Warm — the page canvas          */
  --ceramic:#edebe9;          /* zone separator / soft section wash      */
  --white:#FFFFFF;
  --charcoal:rgba(0,0,0,.87); /* Text Black — never pure black           */
  --muted:rgba(0,0,0,.58);    /* Text Black Soft                         */
  --faint:rgba(0,0,0,.55);  /* 4.61:1 on cream — meets AA for the small supporting text it carries */
  --border:#e2dfd7;
  --border-strong:#cfccc2;

  /* Type */
  --font-head:"Source Serif 4",Georgia,"Times New Roman",serif;
  --font-body:"Inter","Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;

  /* Fluid scale */
  --step--1:clamp(.8rem,.78rem + .1vw,.86rem);
  --step-0:clamp(.95rem,.92rem + .15vw,1rem);
  --step-1:clamp(1.05rem,1rem + .28vw,1.16rem);
  --step-2:clamp(1.25rem,1.15rem + .5vw,1.5rem);
  --step-3:clamp(1.45rem,1.28rem + .85vw,1.95rem);
  --step-4:clamp(1.85rem,1.55rem + 1.45vw,2.6rem);
  --step-5:clamp(2.2rem,1.7rem + 2.3vw,3.4rem);

  /* Space */
  --section-y:clamp(4rem,8vw,7.5rem);

  /* Shape */
  --r-input:4px; --r-sm:8px; --r:12px; --r-lg:12px; --r-pill:50px;
  --shadow:0 0 .5px 0 rgba(0,0,0,.14),0 1px 1px 0 rgba(0,0,0,.24);
  --shadow-lift:0 0 .5px 0 rgba(0,0,0,.14),0 2px 4px 0 rgba(0,0,0,.20);

  --nav-shadow:0 1px 3px rgba(0,0,0,.10),0 2px 2px rgba(0,0,0,.06),0 0 2px rgba(0,0,0,.07);
  --btn-active-scale:.95;

  --wrap:1160px;
  --wrap-narrow:740px;
  --header-h:74px;
}

/* --------------------------------------------------------------------------
   2. Reset & base
   -------------------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1.5rem)}
body{
  margin:0;background:var(--warm-white);color:var(--charcoal);
  font-family:var(--font-body);font-size:var(--step-0);line-height:1.72;letter-spacing:-.01em;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img,svg,video{display:block;max-width:100%}
img{height:auto;background:var(--emerald-50)}
a{color:var(--green-accent);text-decoration:none}
a:hover{color:var(--emerald)}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4,h5{font-family:var(--font-head);color:var(--charcoal);line-height:1.18;margin:0 0 .55em;font-weight:600;letter-spacing:-.018em}
h1{color:var(--emerald)}
h1{font-size:var(--step-5)}
h2{font-size:var(--step-4)}
h3{font-size:var(--step-2)}
h4{font-size:var(--step-1)}
p{margin:0 0 1rem}
p:last-child{margin-bottom:0}
ul,ol{margin:0 0 1rem;padding-left:1.15rem}
::selection{background:var(--green-accent);color:#fff}

:focus-visible{outline:2px solid var(--green-accent);outline-offset:3px;border-radius:4px}
.skip-link{position:absolute;left:-9999px;top:0;z-index:999;background:var(--green-accent);color:#fff;padding:.75rem 1.25rem;border-radius:0 0 var(--r-sm) 0}
.skip-link:focus{left:0;color:#fff}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* --------------------------------------------------------------------------
   3. Layout
   -------------------------------------------------------------------------- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:1.25rem}
.wrap--narrow{max-width:var(--wrap-narrow)}
.section{padding-block:var(--section-y)}
.section--tight{padding-block:clamp(2.5rem,5vw,3.75rem)}
.section--white{background:var(--white)}
.section--alt{background:var(--ceramic)}
.section--emerald{background:var(--green-house);color:#fff}
.section--navy{background:var(--green-house);color:#fff}
.section--emerald h1,.section--emerald h2,.section--emerald h3,
.section--navy h1,.section--navy h2,.section--navy h3{color:#fff}
.section--emerald p,.section--navy p{color:rgba(255,255,255,.70)}
/* Buttons carry their own colours — never inherit the band's link colour,
   or a gold pill ends up with a gold label. */
.section--emerald a:not(.btn),.section--navy a:not(.btn){color:var(--gold)}

/* A light surface nested in a dark band keeps its own text colours.
   Without this, white cards inherit the band's white text and go blank. */
.section--emerald .card,.section--navy .card{color:var(--charcoal)}
.section--emerald .card h1,.section--emerald .card h2,
.section--emerald .card h3,.section--emerald .card h4,
.section--navy .card h1,.section--navy .card h2,
.section--navy .card h3,.section--navy .card h4{color:var(--charcoal)}
.section--emerald .card p,.section--navy .card p{color:var(--muted)}
.section--emerald .card a:not(.btn),.section--navy .card a:not(.btn){color:var(--green-accent)}
.section--emerald .card .ticks svg,.section--navy .card .ticks svg{color:var(--green-accent)}

.grid{display:grid;gap:1.75rem}
.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:center}
.split--left{grid-template-columns:1.12fr .88fr}
.split--right{grid-template-columns:.88fr 1.12fr}
.center{text-align:center}
.mb-0{margin-bottom:0}

.head{max-width:660px;margin-bottom:clamp(2.5rem,5vw,3.75rem)}
.head--center{margin-inline:auto;text-align:center}
.head p{color:var(--muted);font-size:var(--step-1);margin-bottom:0}
.section--emerald .head p,.section--navy .head p{color:rgba(255,255,255,.78)}

.kicker{
  display:block;font-size:.74rem;font-weight:600;letter-spacing:.15em;
  text-transform:uppercase;color:var(--gold-600);margin-bottom:.7rem;
}
.section--emerald .kicker,.section--navy .kicker{color:var(--gold)}

/* --------------------------------------------------------------------------
   4. Buttons
   -------------------------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  padding:.82rem 1.55rem;border-radius:var(--r-pill);border:1px solid transparent;
  font-size:var(--step-0);font-weight:600;line-height:1.2;letter-spacing:-.01em;
  cursor:pointer;text-align:center;transition:all .2s ease;
}
/* The signature press micro-interaction — apply to every button. */
.btn:active{transform:scale(var(--btn-active-scale))}
.btn svg{width:1.05em;height:1.05em;flex:none}
.btn--primary{background:var(--green-accent);color:#fff;border-color:var(--green-accent)}
.btn--primary:hover{background:var(--emerald);border-color:var(--emerald);color:#fff}
.btn--outline{background:transparent;color:var(--green-accent);border-color:var(--green-accent)}
.btn--outline:hover{background:var(--emerald-50);color:var(--emerald);border-color:var(--emerald)}
.btn--gold{background:var(--gold);color:#2a2008;border-color:var(--gold)}
.btn--gold:hover{background:var(--gold-light);border-color:var(--gold-light);color:#2a2008}
.btn--light{background:#fff;color:var(--green-accent);border-color:#fff}
.btn--light:hover{background:var(--emerald-50);color:var(--emerald);border-color:var(--emerald-50)}
.btn--ghost-light{background:transparent;color:#fff;border-color:rgba(255,255,255,.42)}
.btn--ghost-light:hover{background:rgba(255,255,255,.1);border-color:#fff;color:#fff}
.btn--lg{padding:.98rem 1.8rem;font-size:var(--step-1)}
.btn--block{width:100%}
.btn-row{display:flex;flex-wrap:wrap;gap:.75rem}
.btn-row--center{justify-content:center}

.link-arrow{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:var(--green-accent)}
.link-arrow svg{width:1em;height:1em;transition:transform .16s ease}
.link-arrow:hover svg{transform:translateX(3px)}

/* --------------------------------------------------------------------------
   5. Cards
   -------------------------------------------------------------------------- */
.card{
  background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);
  display:flex;flex-direction:column;overflow:hidden;
  /* Whisper-soft dual shadow: flat, plus a hint of lift. Never one heavy drop. */
  box-shadow:var(--shadow);
  transition:border-color .18s ease,box-shadow .18s ease;
}
.card--pad{padding:clamp(1.6rem,3vw,2.25rem)}
.card--hover:hover,a.card:hover{border-color:var(--green-accent);box-shadow:var(--shadow-lift)}
.card__media{overflow:hidden;background:var(--emerald-50)}
.card__media img{width:100%;height:100%;object-fit:cover}
.card__body{padding:clamp(1.4rem,2.6vw,1.8rem);display:flex;flex-direction:column;flex:1;gap:.65rem}
.card__body h3{margin-bottom:0}
.card__body p{color:var(--muted);margin-bottom:0;flex:1}
.card__foot{margin-top:.3rem;padding-top:.9rem;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}

.icon-badge{width:44px;height:44px;border-radius:var(--r);flex:none;display:grid;place-items:center;background:var(--emerald-50);color:var(--emerald)}
.icon-badge svg{width:22px;height:22px}
.icon-badge--gold{background:var(--gold-50);color:var(--gold-600)}
.icon-badge--navy{background:var(--green-light);color:var(--green-house)}

.tag{display:inline-flex;align-items:center;font-size:.71rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:.26rem .62rem;border-radius:var(--r-pill);background:var(--emerald-50);color:var(--emerald)}
.tag--gold{background:var(--gold-50);color:var(--gold-600)}
.tag--navy{background:var(--green-light);color:var(--green-house)}
.tag-row{display:flex;flex-wrap:wrap;gap:.4rem}

.meta{display:flex;flex-wrap:wrap;gap:.35rem 1rem;font-size:var(--step--1);color:var(--muted);margin:0;padding:0;list-style:none}
.meta li{display:inline-flex;align-items:center;gap:.35rem}
.meta svg{width:15px;height:15px;color:var(--green-accent);flex:none}

.ticks{list-style:none;padding:0;margin:0;display:grid;gap:.7rem}
.ticks li{display:grid;grid-template-columns:1.15rem 1fr;gap:.65rem;align-items:start}
.ticks svg{width:1.15rem;height:1.15rem;margin-top:.24rem;color:var(--green-accent)}
.section--emerald .ticks svg,.section--navy .ticks svg{color:var(--gold)}
.ticks--tight{gap:.45rem;font-size:var(--step--1)}

/* --------------------------------------------------------------------------
   6. Top contact bar
   -------------------------------------------------------------------------- */
.topbar{background:var(--green-house);color:rgba(255,255,255,.8);font-size:var(--step--1)}
.topbar__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:40px;flex-wrap:wrap}
.topbar ul{display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap;list-style:none;margin:0;padding:0}
.topbar li{display:inline-flex;align-items:center;gap:.4rem}
.topbar a{color:rgba(255,255,255,.8);display:inline-flex;align-items:center;gap:.4rem}
.topbar a:hover{color:var(--gold)}
.topbar svg{width:14px;height:14px;flex:none;opacity:.85}
.topbar__note{color:var(--gold);font-weight:600}

/* --------------------------------------------------------------------------
   7. Header & navigation
   -------------------------------------------------------------------------- */
.header{position:sticky;top:0;z-index:100;background:var(--warm-white);border-bottom:1px solid var(--border);box-shadow:var(--nav-shadow)}
.header__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--header-h);position:relative;flex-wrap:wrap}

.nav{display:flex;align-items:center;gap:.05rem;list-style:none;margin:0;padding:0;flex-wrap:wrap}
.nav>li{position:relative}
.nav a,.nav__toggle{
  display:inline-flex;align-items:center;gap:.3rem;padding:.55rem .66rem;border-radius:var(--r-sm);
  font-size:.9rem;font-weight:500;color:var(--charcoal);background:none;border:0;cursor:pointer;
  white-space:nowrap;transition:color .15s ease,background-color .15s ease;
}
.nav a:hover,.nav__toggle:hover{color:var(--green-accent);background:var(--emerald-50)}
.nav a[aria-current="page"]{color:var(--green-accent);font-weight:600}
.nav__toggle[aria-current="true"]{color:var(--green-accent);font-weight:600}
.nav__toggle svg{width:11px;height:11px;transition:transform .18s ease}
.nav__toggle[aria-expanded="true"] svg{transform:rotate(180deg)}

.dropdown{
  position:absolute;top:calc(100% + .3rem);left:0;min-width:252px;z-index:10;
  background:var(--white);border:1px solid var(--border);border-radius:var(--r);
  box-shadow:var(--shadow-lift);padding:.4rem;list-style:none;margin:0;display:none;
}
.dropdown.is-open{display:block}
.dropdown a{display:block;width:100%;padding:.55rem .7rem;font-size:.89rem;border-radius:var(--r-sm)}
.dropdown__sep{height:1px;background:var(--border);margin:.35rem .4rem}

.header__cta{display:flex;align-items:center;gap:.55rem}
/* header CTAs must stay on one line — they are the primary conversion path */
.header__cta .btn{white-space:nowrap;flex:none}
.burger{display:none;width:42px;height:42px;flex:none;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--white);cursor:pointer;place-items:center}
.burger span{display:block;width:18px;height:1.5px;background:var(--green-house);position:relative;transition:background .15s}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--green-house);transition:transform .18s,top .18s}
.burger span::before{top:-5.5px}
.burger span::after{top:5.5px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.burger[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}

/* --------------------------------------------------------------------------
   8. Hero
   -------------------------------------------------------------------------- */
.hero{padding-block:clamp(2.5rem,6vw,4.5rem) clamp(3rem,7vw,5.5rem)}
.hero__inner{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.hero h1{margin-bottom:1rem}
.hero__lead{font-size:var(--step-1);color:var(--muted);max-width:50ch;margin-bottom:1.7rem}
.hero__note{margin-top:1rem;font-size:var(--step--1);color:var(--faint)}
.hero__media{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--border)}
.hero__media img{width:100%}

.page-hero{background:var(--white);border-bottom:1px solid var(--border);padding-block:clamp(2.25rem,5vw,3.5rem)}
.page-hero__inner{max-width:720px}
.page-hero h1{margin-bottom:.7rem}
.page-hero p{color:var(--muted);font-size:var(--step-1);margin-bottom:0}
.breadcrumb{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:0 0 1rem;padding:0;font-size:var(--step--1);color:var(--faint)}
.breadcrumb a{color:var(--muted);display:inline-block;padding-block:.2rem}
.breadcrumb a:hover{color:var(--emerald)}
.breadcrumb li+li::before{content:"/";margin-right:.4rem;color:var(--border-strong)}

/* --------------------------------------------------------------------------
   9. Statistics
   -------------------------------------------------------------------------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}
.stats>div{background:var(--white);padding:clamp(1.25rem,3vw,1.9rem);text-align:center}
.stats strong{display:block;font-family:var(--font-head);font-size:var(--step-4);color:var(--emerald);line-height:1.05;margin-bottom:.2rem}
.stats span{font-size:var(--step--1);color:var(--muted)}
.section--emerald .stats,.section--navy .stats{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.16)}
.section--emerald .stats>div{background:var(--green-house)}
.section--navy .stats>div{background:var(--green-house)}
.section--emerald .stats strong,.section--navy .stats strong{color:var(--gold)}
.section--emerald .stats span,.section--navy .stats span{color:rgba(255,255,255,.75)}

/* --------------------------------------------------------------------------
   10. Steps
   -------------------------------------------------------------------------- */
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}
.step__num{
  width:40px;height:40px;border-radius:50%;display:grid;place-items:center;
  border:1px solid var(--border);background:var(--white);color:var(--emerald);
  font-family:var(--font-head);font-weight:600;font-size:1.05rem;margin-bottom:1rem;
}
.section--emerald .step__num,.section--navy .step__num{background:transparent;border-color:rgba(255,255,255,.32);color:var(--gold)}
.step h3{font-size:var(--step-1);margin-bottom:.35rem}
.step p{color:var(--muted);margin:0}
.section--emerald .step p,.section--navy .step p{color:rgba(255,255,255,.78)}

.steps-v{list-style:none;margin:0;padding:0;display:grid;gap:1.5rem}
.steps-v li{display:grid;grid-template-columns:40px 1fr;gap:1rem;align-items:start}
.steps-v h3{font-size:var(--step-1);margin-bottom:.25rem}
.steps-v p{color:var(--muted);margin:0}

/* --------------------------------------------------------------------------
   11. Teacher profile cards
   -------------------------------------------------------------------------- */
.tutor__media{aspect-ratio:4/5;overflow:hidden;background:var(--emerald-50)}
.tutor__media img{width:100%;height:100%;object-fit:cover}
.tutor__body{padding:1.25rem 1.35rem 1.5rem;display:flex;flex-direction:column;gap:.5rem;flex:1}
.tutor__body h3{font-size:var(--step-1);margin-bottom:0}
.tutor__role{font-size:var(--step--1);color:var(--gold-600);font-weight:600;margin:0}
.tutor__body p{color:var(--muted);font-size:var(--step--1);margin:0;flex:1}
.tutor__meta{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.2rem}

/* --------------------------------------------------------------------------
   12. Testimonials
   -------------------------------------------------------------------------- */
.quote{padding:clamp(1.5rem,3vw,1.9rem);gap:.9rem}
.quote blockquote{margin:0;color:var(--charcoal);flex:1}
.quote__top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
.quote__stars{color:var(--gold);letter-spacing:.12em;font-size:.88rem}
.quote__by{display:flex;align-items:center;gap:.75rem;margin-top:.4rem;padding-top:.95rem;border-top:1px solid var(--border)}
.quote__by b{display:block;font-size:var(--step-0);color:var(--charcoal)}
.quote__by span{font-size:var(--step--1);color:var(--muted)}
.avatar{
  width:42px;height:42px;border-radius:var(--r-pill);flex:none;display:grid;place-items:center;
  font-family:var(--font-head);font-weight:600;font-size:.92rem;
  background:var(--emerald-50);color:var(--emerald);border:1px solid var(--border);
}
.avatar--gold{background:var(--gold-50);color:var(--gold-600)}
.avatar--navy{background:var(--green-light);color:var(--green-house)}

/* --------------------------------------------------------------------------
   13. Brand lockup
   -------------------------------------------------------------------------- */
.brand{display:inline-flex;align-items:center;gap:.6rem;color:var(--charcoal)}
.brand:hover{color:var(--charcoal)}
.brand__mark{width:40px;height:40px;flex:none}
.brand__mark--simple{display:none;width:34px;height:34px}
.brand__text{display:block;line-height:1.05}
.brand__name{font-family:var(--font-head);font-size:1.15rem;font-weight:600;letter-spacing:-.01em;display:block;white-space:nowrap}
.brand__name .t{color:var(--gold-600)}
.brand__name .g{color:var(--emerald)}
.brand__sub{font-size:.56rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-weight:600;display:block;margin-top:.15rem;white-space:nowrap}
.footer .brand{color:#fff}
.footer .brand__name .t{color:var(--gold)}
.footer .brand__name .g{color:#fff}
.footer .brand__sub{color:rgba(255,255,255,.6)}

/* --------------------------------------------------------------------------
   14. Media helpers
   -------------------------------------------------------------------------- */
.media-frame{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--border)}
.media-frame img{width:100%}
.ratio-43,.ratio-32,.ratio-1610,.ratio-169,.ratio-11,.ratio-34,.ratio-45{overflow:hidden}
.ratio-43{aspect-ratio:4/3}
.ratio-32{aspect-ratio:3/2}
.ratio-1610{aspect-ratio:16/10}
.ratio-169{aspect-ratio:16/9}
.ratio-11{aspect-ratio:1/1}
.ratio-34{aspect-ratio:3/4}
.ratio-45{aspect-ratio:4/5}
.ratio-43 img,.ratio-32 img,.ratio-1610 img,.ratio-169 img,
.ratio-11 img,.ratio-34 img,.ratio-45 img{width:100%;height:100%;object-fit:cover}

.figure{margin:0;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--border);background:var(--white)}
.figure figcaption{padding:.75rem 1rem;font-size:var(--step--1);color:var(--muted);border-top:1px solid var(--border)}

/* --------------------------------------------------------------------------
   15. Pricing
   -------------------------------------------------------------------------- */
.plan{padding:clamp(1.5rem,3vw,2rem);position:relative;overflow:visible}
.plan--featured{border-color:var(--green-accent)}
.plan__flag{
  position:absolute;top:0;right:clamp(1.5rem,3vw,2rem);transform:translateY(-50%);
  background:var(--green-accent);color:#fff;font-size:.66rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;padding:.25rem .7rem;border-radius:var(--r-pill);
}
.plan h3{font-size:var(--step-2);margin-bottom:.15rem}
.plan__sub{color:var(--muted);font-size:var(--step--1);margin-bottom:1.2rem}
.plan__price{display:flex;align-items:baseline;gap:.3rem;margin-bottom:1.2rem;padding-bottom:1.2rem;border-bottom:1px solid var(--border)}
.plan__price strong{font-family:var(--font-head);font-size:clamp(2rem,4vw,2.5rem);color:var(--emerald);line-height:1}
.plan__price span{color:var(--muted);font-size:var(--step--1)}
.plan .ticks{flex:1;margin-bottom:1.5rem;font-size:var(--step--1)}

.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--white)}
table{width:100%;border-collapse:collapse;font-size:var(--step-0);min-width:520px}
caption{text-align:left;padding:1rem 1.25rem;color:var(--muted);font-size:var(--step--1);border-bottom:1px solid var(--border)}
th,td{padding:.82rem 1.2rem;text-align:left;border-bottom:1px solid var(--border)}
th{font-weight:600;color:var(--charcoal);background:var(--emerald-25)}
/* Links inside table cells sit at ~19px on their own; pad them to the
   24px minimum target size. */
td a,th a{display:inline-block;padding-block:.25rem}
tbody tr:last-child td,tbody tr:last-child th{border-bottom:0}
td svg{width:18px;height:18px;color:var(--green-accent)}

/* --------------------------------------------------------------------------
   16. Accordion
   -------------------------------------------------------------------------- */
.accordion{display:grid;gap:.6rem}
.ac{background:var(--white);border:1px solid var(--border);border-radius:var(--r);overflow:hidden}
.ac.is-open{border-color:var(--green-accent)}
.ac__q{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.05rem 1.25rem;background:none;border:0;cursor:pointer;text-align:left;
  font-size:var(--step-0);font-weight:600;color:var(--charcoal);font-family:var(--font-body);
}
.ac__q:hover{color:var(--green-accent)}
.ac__icon{width:20px;height:20px;flex:none;color:var(--green-accent);transition:transform .22s ease}
.ac.is-open .ac__icon{transform:rotate(45deg)}
.ac__a{max-height:0;overflow:hidden;transition:max-height .26s ease}
.ac__a>div{padding:0 1.25rem 1.2rem;color:var(--muted)}

/* --------------------------------------------------------------------------
   17. Forms
   -------------------------------------------------------------------------- */
.form{background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);padding:clamp(1.5rem,3.5vw,2.4rem)}
.form__grid{display:grid;grid-template-columns:1fr 1fr;gap:1.05rem}
.field{display:flex;flex-direction:column;gap:.35rem}
.field--full{grid-column:1/-1}
.field label{font-size:var(--step--1);font-weight:600;color:var(--charcoal)}
.req{color:#B42318}
.field input,.field select,.field textarea{
  width:100%;padding:.78rem .9rem;font-size:16px;
  background:var(--white);border:1px solid var(--border-strong);border-radius:var(--r-input);
  transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease;
}
.field textarea{min-height:118px;resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:var(--faint)}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--green-accent);background:var(--white);box-shadow:0 0 0 3px rgba(0,117,74,.14);
}
.field .msg{font-size:var(--step--1);color:#B42318;min-height:1.1em}
.field.is-invalid input,.field.is-invalid select,.field.is-invalid textarea{border-color:#B42318;background:#fef6f5}
.check{display:grid;grid-template-columns:auto 1fr;gap:.6rem;align-items:start;font-size:var(--step--1);color:var(--muted)}
.check input{width:22px;height:22px;flex:none;margin-top:.1rem;accent-color:var(--green-accent)}
.form__foot{margin-top:1.2rem}
.form__hint{font-size:var(--step--1);color:var(--faint);text-align:center;margin-top:.8rem}
.alert{
  display:none;gap:.75rem;align-items:start;margin-top:1.2rem;padding:1rem 1.15rem;
  border-radius:var(--r);border:1px solid var(--green-accent);background:var(--emerald-50);
  color:var(--emerald);
}
.alert.is-visible{display:flex}
.alert--error{border-color:#B42318;background:#FEF3F2;color:#8a2018}
.alert--info{border-color:var(--gold-600);background:var(--gold-50);color:#6b5310}
.btn[aria-busy="true"]{opacity:.72;pointer-events:none}
.btn__spinner{
  width:1em;height:1em;flex:none;border:2px solid currentColor;border-right-color:transparent;
  border-radius:50%;animation:spin .6s linear infinite;display:none;
}
.btn[aria-busy="true"] .btn__spinner{display:block}
@keyframes spin{to{transform:rotate(360deg)}}
.alert svg{width:20px;height:20px;flex:none;margin-top:.15rem}

/* --------------------------------------------------------------------------
   18. Prose
   -------------------------------------------------------------------------- */
.prose{max-width:70ch}
.prose h2{font-size:var(--step-3);margin-top:2.25rem}
.prose h3{font-size:var(--step-2);margin-top:1.75rem}
.prose h2:first-child,.prose h3:first-child{margin-top:0}
.prose p,.prose li{line-height:1.78}
.prose ul,.prose ol{padding-left:1.25rem;margin-bottom:1.25rem}
.prose li{margin-bottom:.45rem}
.prose blockquote{
  margin:1.75rem 0;padding:1rem 1.35rem;border-left:3px solid var(--gold);
  background:var(--gold-50);border-radius:0 var(--r-sm) var(--r-sm) 0;
  font-family:var(--font-head);font-size:var(--step-1);color:var(--emerald);
}
.prose blockquote p:last-child{margin-bottom:0}
.prose figure{margin:2rem 0}
.prose a{text-decoration:underline;text-underline-offset:2px}
.prose__meta{display:flex;flex-wrap:wrap;gap:.4rem 1rem;color:var(--muted);font-size:var(--step--1);margin-bottom:1.5rem;align-items:center}
.prose__meta svg{width:15px;height:15px;vertical-align:-2px}

/* --------------------------------------------------------------------------
   19. CTA band & sticky mobile bar
   -------------------------------------------------------------------------- */
.cta-band{background:var(--green-house);color:rgba(255,255,255,.85);border-radius:var(--r-lg);padding:clamp(2rem,5vw,3.5rem);text-align:center}
.cta-band h2{color:#fff;margin-bottom:.6rem}
.cta-band p{color:rgba(255,255,255,.82);max-width:52ch;margin-inline:auto;font-size:var(--step-1)}
.cta-band .btn-row{margin-top:1.7rem}
.cta-band__note{margin-top:1rem;font-size:var(--step--1);color:rgba(255,255,255,.62)}

.sticky-cta{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:120;
  background:var(--white);border-top:1px solid var(--border);
  padding:.6rem .75rem calc(.6rem + env(safe-area-inset-bottom));
  box-shadow:0 -6px 20px -14px rgba(16,42,67,.4);
  gap:.5rem;
}
.sticky-cta .btn{flex:1;padding:.75rem .5rem;font-size:.9rem}

/* --------------------------------------------------------------------------
   20. Footer
   -------------------------------------------------------------------------- */
.footer{
  background:var(--green-house);color:rgba(255,255,255,.72);
  font-size:var(--step-0);position:relative;
}
/* Thin gold rule across the top — the only decorative flourish in the system */
.footer::before{
  content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,transparent,var(--gold) 22%,var(--gold) 78%,transparent);
  opacity:.55;
}

.footer__top{
  display:grid;grid-template-columns:1.7fr 1fr 1fr 1.25fr;gap:clamp(2rem,5vw,4rem);
  padding-block:clamp(3.5rem,6vw,5.5rem) clamp(2.5rem,4vw,3.5rem);
}
.footer h3{
  font-family:var(--font-body);font-size:.7rem;font-weight:700;letter-spacing:.18em;
  text-transform:uppercase;color:var(--gold);margin-bottom:1.4rem;
}
.footer p{color:rgba(255,255,255,.72);font-size:var(--step--1);line-height:1.75}
/* Buttons keep their own label colour — .footer a would otherwise repaint
   the gold CTA's text white, leaving it near-invisible on gold. */
.footer a:not(.btn){color:rgba(255,255,255,.8)}
.footer a:not(.btn):hover{color:#fff}

/* Brand block */
.footer__brand{max-width:34ch}
.footer__brand .brand{margin-bottom:1.2rem}
.footer__tagline{
  display:inline-block;margin-top:1.4rem;padding:.45rem 1rem;
  border:1px solid rgba(201,162,88,.4);border-radius:var(--r-pill);
  font-size:.58rem;letter-spacing:.11em;text-transform:uppercase;
  color:var(--gold);font-weight:600;line-height:1.4;
}

/* Link columns — hairline separators instead of bullets */
.footer ul{list-style:none;padding:0;margin:0;display:grid;gap:0;font-size:var(--step--1)}
.footer__links li+li{border-top:1px solid rgba(255,255,255,.07)}
.footer__links a{
  display:flex;align-items:center;justify-content:space-between;gap:.75rem;
  padding:.55rem .7rem;margin-inline:-.7rem;border-radius:var(--r-sm);
  transition:color .16s ease,background-color .16s ease;
}
.footer__links a svg{
  width:13px;height:13px;flex:none;color:var(--gold);opacity:.45;
  transition:opacity .16s ease,transform .16s ease;
}
.footer__links a:hover{background:rgba(255,255,255,.05)}
.footer__links a:hover svg{opacity:1;transform:translateX(3px)}

/* Contact panel — one surface, hairline-divided rows */
.footer__contact{
  gap:0;background:rgba(255,255,255,.05);
  border:1px solid rgba(255,255,255,.08);border-radius:var(--r);overflow:hidden;
}
.footer__contact li{
  display:grid;grid-template-columns:30px 1fr;gap:.75rem;align-items:center;
  padding:.7rem .85rem;
}
.footer__contact li+li{border-top:1px solid rgba(255,255,255,.08)}
.footer__contact svg{
  width:30px;height:30px;padding:7px;border-radius:50%;
  background:rgba(201,162,88,.16);color:var(--gold);flex:none;
}
.footer__cta-row{margin-top:1.4rem}

/* Social */
.social{display:flex;gap:.6rem;margin-top:1.5rem}
.social a{
  width:40px;height:40px;border-radius:50%;display:grid;place-items:center;
  border:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.85);
  transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease;
}
.social a:hover{background:var(--gold);border-color:var(--gold);color:#231a05;transform:translateY(-2px)}
.social svg{width:17px;height:17px}

/* Bottom bar */
.footer__bottom{
  border-top:1px solid rgba(255,255,255,.12);padding-block:1.6rem 2rem;
  display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;
  font-size:var(--step--1);color:rgba(255,255,255,.6);
}
.footer__legal{display:flex;gap:1.6rem;flex-wrap:wrap;align-items:center}
.footer__legal a{color:rgba(255,255,255,.6);display:inline-block;padding-block:.25rem}
.footer__legal a:hover{color:var(--gold)}

/* --------------------------------------------------------------------------
   20b. Placeholder markers
   Unverified content must never read as fact. These make it obvious.
   -------------------------------------------------------------------------- */
.ph{
  display:inline;color:var(--muted);font-style:italic;
  background:var(--gold-50);border-bottom:1px dashed var(--gold-600);
  padding:0 .25em;border-radius:2px;white-space:nowrap;
}
.footer .ph,.topbar .ph{
  background:transparent;color:rgba(255,255,255,.58);
  border-bottom:0;padding:0;white-space:normal;
}
/* The topbar has no panel to sit in, so it keeps a subtle underline cue. */
.topbar .ph{border-bottom:1px dotted rgba(201,162,88,.5)}

.notice{
  display:flex;gap:.7rem;align-items:baseline;flex-wrap:wrap;
  border:1px dashed var(--gold-600);background:var(--gold-50);
  border-radius:var(--r);padding:.85rem 1.1rem;
  font-size:var(--step--1);color:var(--charcoal);margin:0 0 1.5rem;
}
.notice__chip{
  flex:none;font-size:.64rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;
  background:var(--gold-600);color:#fff;padding:.16rem .5rem;border-radius:var(--r-pill);
}
.notice--after{margin:1.5rem 0 0}
.section--emerald .notice,.section--navy .notice{
  background:rgba(255,255,255,.08);border-color:rgba(201,162,39,.55);color:rgba(255,255,255,.85);
}

/* --------------------------------------------------------------------------
   21. Utilities, motion & responsive
   -------------------------------------------------------------------------- */
.text-muted{color:var(--muted)}
.mt-2{margin-top:1.5rem}
.mt-3{margin-top:2.5rem}

/* Content is visible by default; the animated start state applies only once JS
   confirms it is running, so a script failure can never blank the page. */
.js .reveal{opacity:0;transform:translateY(12px);transition:opacity .5s ease,transform .5s ease}
.js .reveal.is-in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .reveal{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}
}

@media (max-width:1120px){
  .nav a,.nav__toggle{padding:.55rem .48rem;font-size:.85rem}
  .footer__top{grid-template-columns:1fr 1fr;gap:2.5rem}
  .footer__brand{grid-column:1/-1;max-width:48ch}
  /* Drop the secondary CTA before the header gets cramped; the primary
     "Start Free Trial" keeps its full width, and "Book a Free Class"
     remains reachable from the hero and every page footer. */
  .header__cta .btn--outline{display:none}
}

@media (max-width:960px){
  :root{--header-h:64px}
  .burger{display:grid}
  .nav{
    position:absolute;top:100%;left:-1.25rem;right:-1.25rem;display:none;
    flex-direction:column;align-items:stretch;gap:0;background:var(--white);
    border-bottom:1px solid var(--border);box-shadow:var(--shadow-lift);
    padding:.5rem 1.25rem 1.25rem;max-height:calc(100vh - var(--header-h));overflow-y:auto;
  }
  .nav.is-open{display:flex}
  .nav a,.nav__toggle{width:100%;padding:.8rem .6rem;font-size:1rem;justify-content:space-between}
  .dropdown{position:static;display:none;box-shadow:none;border:0;border-left:2px solid var(--border);border-radius:0;margin:0 0 .4rem .6rem;padding:0 0 0 .5rem;min-width:0}
  .dropdown.is-open{display:block}

  .hero__inner,.split,.split--left,.split--right{grid-template-columns:1fr}
  .hero__media{order:-1}
  .g-4,.g-3,.steps{grid-template-columns:repeat(2,1fr)}
  .stats{grid-template-columns:repeat(2,1fr)}

  .sticky-cta{display:flex}
  body{padding-bottom:4.5rem}
  .footer__bottom{padding-bottom:1.2rem}
}

@media (max-width:620px){
  /* ---- Reading comfort: 16px body, never smaller than 14px for meta ---- */
  :root{
    --step-0:1rem;
    --step--1:.875rem;
    /* Less chrome between sections so a long page is fewer thumb-swipes */
    --section-y:clamp(3.25rem,9vw,4rem);
  }

  /* ---- Chrome: keep the top bar and header to one line each ----
     Stacked contact details cost ~112px of the first screen and pushed the
     hero call to action below the fold. Email and hours stay in the footer
     and on the contact page; the phone is the one useful tap here. */
  .topbar__inner{justify-content:center;padding-block:.4rem}
  .topbar ul{justify-content:center;gap:.9rem}
  .topbar ul:first-child li:nth-child(n+2){display:none}
  /* `.topbar li` outranks a bare `.topbar__note`, so this needs the parent. */
  .topbar li.topbar__note{display:none}

  /* The sticky bar already offers Start Free Trial, so the header keeps
     only the brand and the menu button and stays a single row. */
  .header__cta .btn--primary{display:none}
  .brand__sub{display:none}
  .brand__mark--full{display:none}
  .brand__mark--simple{display:block}
  .brand{min-height:44px}

  /* ---- Hero: headline and CTA first, image after ---- */
  .hero{padding-block:2rem 2.75rem}
  .hero__media{order:0;margin-top:1.75rem}
  .hero__lead{margin-bottom:1.4rem}

  /* ---- Single-column layouts ---- */
  .g-2,.g-3,.g-4,.steps,.form__grid{grid-template-columns:1fr}
  .grid{gap:1.25rem}
  .stats{grid-template-columns:1fr 1fr}
  .btn-row .btn{width:100%}
  .notice{padding:.75rem .9rem}

  /* ---- Touch targets ---- */
  .burger{width:44px;height:44px}
  .check input{width:24px;height:24px}
  .breadcrumb{gap:.2rem .5rem}
  .breadcrumb a{display:inline-block;padding-block:.55rem}
  .breadcrumb li+li::before{align-self:center}
  .link-arrow{padding-block:.6rem;min-height:44px}
  .footer__links a{padding-block:.72rem}
  .social a{width:44px;height:44px}
  .footer__contact li{padding:.7rem .8rem;min-height:48px}
  .meta{gap:.35rem .85rem}

  /* ---- Footer ---- */
  .footer__top{grid-template-columns:1fr;gap:2.25rem}
  .footer__brand{max-width:none}
  .footer__bottom{justify-content:center;text-align:center;flex-direction:column;gap:.8rem}
  .footer__tagline{border-radius:var(--r)}
  .footer__legal{justify-content:center;gap:1.1rem}
  .footer__legal a{padding-block:.4rem}

  /* ---- Sticky bar: comfortable buttons, clear of the home indicator ---- */
  .sticky-cta .btn{min-height:46px}
}

/* On touch layouts the whole card becomes the tap target. Every link inside a
   course/post card points at the same URL, so stretching the primary one is
   safe and turns a 28px title link into a 300px+ target. */
@media (max-width:960px){
  .card--hover{position:relative}
  .card--hover .card__foot .link-arrow::after{content:"";position:absolute;inset:0;z-index:1}
  .card--hover .card__body h3 a{position:relative;z-index:2}
}

/* Fine-tune the narrowest phones rather than letting text crowd the edges. */
@media (max-width:380px){
  .wrap{padding-inline:1rem}
  .btn{padding:.8rem 1.2rem}
  .stats{grid-template-columns:1fr}
  .stats>div{padding:1rem}
}

@media print{
  .topbar,.header,.footer,.cta-band,.sticky-cta,.btn{display:none !important}
  body{background:#fff;padding-bottom:0}
  .section{padding-block:1rem}
}


/* ==========================================================================
   FREE TRIAL MODAL
   Opened by the CTA buttons; every one of them is also a real link to
   /free-trial/, so with JavaScript off the visitor simply gets the page.
   ========================================================================== */
.modal{position:fixed;inset:0;z-index:120;display:flex;align-items:center;
  justify-content:center;padding:1.25rem}
.modal[hidden]{display:none}

.modal__backdrop{position:absolute;inset:0;background:rgba(10,25,20,.62);
  backdrop-filter:blur(2px);animation:modal-fade .22s ease}

.modal__dialog{position:relative;width:min(780px,100%);max-height:calc(100dvh - 2.5rem);
  overflow-y:auto;-webkit-overflow-scrolling:touch;
  background:var(--white);border-radius:var(--r-lg);
  box-shadow:0 24px 60px rgba(0,0,0,.28),0 2px 6px rgba(0,0,0,.16);
  padding:clamp(1.6rem,3.5vw,2.5rem);
  animation:modal-rise .26s cubic-bezier(.2,.7,.3,1)}

@keyframes modal-fade{from{opacity:0}to{opacity:1}}
@keyframes modal-rise{from{opacity:0;transform:translateY(16px) scale(.985)}
  to{opacity:1;transform:none}}

.modal__close{position:absolute;top:.7rem;right:.7rem;width:40px;height:40px;
  display:grid;place-items:center;border:0;border-radius:50%;cursor:pointer;
  background:var(--emerald-25);color:var(--emerald);transition:background .15s ease}
.modal__close:hover{background:var(--emerald-50)}
.modal__close:active{transform:scale(var(--btn-active-scale))}
.modal__close svg{width:20px;height:20px}

.modal__head{margin-bottom:1.5rem;padding-right:2.5rem}
/* The kicker carries an icon only here, so it needs its own sizing —
   a bare <svg> with no width fills whatever box it is given. */
.modal__head .kicker{display:inline-flex;align-items:center;gap:.45rem}
.modal__head .kicker svg{width:15px;height:15px;flex:none}
.modal__head h2{font-size:var(--step-3);margin:.45rem 0 .5rem}
.modal__head p{color:var(--muted);font-size:var(--step-0);margin:0;max-width:52ch}

/* The dialog is the card, so the form inside it must not draw a second one. */
.form--bare{background:none;border:0;border-radius:0;padding:0}

/* Nothing behind the dialog should scroll or be reachable by tab. */
body.modal-open{overflow:hidden}

@media (max-width:620px){
  .modal{padding:0;align-items:flex-end}
  .modal__dialog{width:100%;max-height:92dvh;
    border-radius:var(--r-lg) var(--r-lg) 0 0;
    padding:1.5rem 1.15rem calc(1.5rem + env(safe-area-inset-bottom));
    animation:modal-sheet .28s cubic-bezier(.2,.7,.3,1)}
  .modal__head{margin-bottom:1.25rem}
  .modal__close{top:.5rem;right:.5rem}
}
@keyframes modal-sheet{from{transform:translateY(100%)}to{transform:none}}

@media (prefers-reduced-motion:reduce){
  .modal__backdrop,.modal__dialog{animation:none}
}
