/* ══════════════ TOKENS — sampled from E_LESSONS brochure ══════════════ */
:root{
  /* sampled from landingscreen.dart — 26 unique Color(0x..) literals */
  --navy-950:#00133C;  --navy-900:#001A4E;  --navy-850:#02245A; --navy-800:#022157;
  --navy-700:#0A3170;  --navy-600:#1552A0;
  --slate-800:#1E293B; --slate-700:#334155; --slate-500:#64748B;
  --slate-400:#94A3B8; --slate-300:#CBD5E1; --slate-200:#E2E8F0; --slate-50:#F8FAFC;
  --red:#EF4444;       --gold:#FBC63F;
  --sci:#1B6A47;       --com:#5B3E96;       /* _SubjectCard bannerColor */
  --ink:var(--navy-900); --slate:var(--slate-500); --line:var(--slate-200);
  --paper:#FFFFFF;     --mist:var(--slate-50);  --navy:var(--navy-700);
  --grad:linear-gradient(103deg,var(--navy-700) 0%,var(--navy-600) 100%);
  --hero-grad:linear-gradient(100deg,#001544 0%,#001B50 26%,#002561 46%,#003175 66%,#00397F 100%);
  --gutter:clamp(1rem,2.4vw,2.5rem); --maxw:1720px; --nav-h:68px;
  /* card outline in the brand blue — dial the alpha to taste */
  --card-line:rgba(21,82,160,.62); --card-shadow:rgba(10,49,112,.22);
  --asym:72px 14px 72px 14px;
}
*,*::before,*::after{box-sizing:border-box}
/* the header is sticky, so a raw anchor jump would drop the target underneath it */
:root{--nav-h:68px;--announce-h:42px}
:target,section[id],div[id]{scroll-margin-top:calc(var(--nav-h) + var(--announce-h) + 14px)}
#top{scroll-margin-top:0}
body:not(:has(#announce)){--announce-h:0px}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;overflow-x:clip;background:var(--paper);color:var(--ink);
  font-family:"Plus Jakarta Sans",ui-sans-serif,system-ui,sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none}
h1,h2,h3,h4,p{margin:0}

/* ══════════════ TYPE ══════════════ */
.dsp{font-weight:800;letter-spacing:-0.035em;line-height:1.03}
.h1{font-size:clamp(1.75rem,5vw,4.4rem);line-height:1.02}
.h2{font-size:clamp(1.85rem,3.4vw,2.9rem)}
.h3{font-size:1.08rem;font-weight:700;letter-spacing:-0.015em;line-height:1.35}
.mono{font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:600;text-transform:uppercase;letter-spacing:.09em}
.eyebrow{font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:600;text-transform:uppercase;letter-spacing:.11em;font-size:.7rem}
.serif{font-family:"Instrument Serif",Georgia,serif;font-weight:400;letter-spacing:-0.01em}
.lead{font-size:clamp(1rem,1.3vw,1.13rem);color:var(--slate)}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ══════════════ LAYOUT ══════════════ */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.sec{padding-block:clamp(3.75rem,7.5vw,7rem)}
.grid{display:grid}
.flex{display:flex}

/* ══════════════ BRAND MOTIFS ══════════════ */
/* 2 · asymmetric frame */
.asym{border-radius:var(--asym);overflow:hidden}

/* ══════════════ BUTTONS (v4: enhanced mobile, contrast, hover) ══════════════ */
/* ENHANCED BUTTON STYLING (v4 fixes) */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  height:54px;padding-inline:2rem;border-radius:999px;border:1.5px solid transparent;
  font-weight:700;font-size:1rem;letter-spacing:-.01em;cursor:pointer;white-space:nowrap;
  transition:all .25s cubic-bezier(.4,0,.2,1)}
.btn-red{background:var(--red);color:#fff;box-shadow:0 8px 22px -8px rgba(239,68,68,.7)}
.btn-red:hover{background:#DC2626;transform:translateY(-2px);box-shadow:0 14px 30px -10px rgba(239,68,68,.85)}
.btn-red:active{transform:translateY(0)}
.btn-red:focus-visible{outline:3px solid var(--red);outline-offset:3px;border-radius:6px}
.btn-outline{border:1.5px solid rgba(255,255,255,.3);color:#fff;background:transparent}
.btn-outline:hover{border-color:rgba(255,255,255,.6);background:rgba(255,255,255,.08)}
.btn-navy{background:var(--navy-700);color:#fff;box-shadow:0 8px 22px -10px rgba(10,49,112,.75)}
.btn-navy:hover{background:var(--navy-600)}
.btn-ghost-light{border:1.5px solid rgba(255,255,255,.34);color:#fff;background:rgba(255,255,255,.07)}
.btn-ghost-light:hover{border-color:rgba(255,255,255,.7);background:rgba(255,255,255,.14)}
.btn-ghost-dark{border:1.5px solid var(--line);color:var(--ink);background:#fff}
.btn-ghost-dark:hover{border-color:var(--navy-700);color:var(--navy-700)}
.btn-sm{height:42px;padding-inline:1.25rem;font-size:.9rem}
.btn-block{width:100%}
@media (max-width:640px){
  .btn{min-height:48px;height:auto;padding-block:.75rem}
}
@media (prefers-reduced-motion:no-preference){
  .btn{transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,border-color .18s ease}
  .btn:hover{transform:translateY(-2px)}
}
:where(a,button,input,textarea,summary):focus-visible{outline:3px solid var(--red);outline-offset:3px;border-radius:6px}


/* ══════════════ FORMS (v4: WCAG compliant) ══════════════ */
.form-group{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}
.form-label{font-weight:700;font-size:.95rem;color:var(--ink)}
.required{color:var(--red);font-weight:800;margin-left:.25rem}
.form-hint{font-size:.75rem;color:var(--slate);font-style:italic}
input[type="text"],input[type="email"],input[type="tel"],textarea{
  padding:.875rem 1rem;border:1.5px solid var(--line);border-radius:10px;
  font-size:1rem;font-family:inherit;transition:border-color .25s,box-shadow .25s;
  background:var(--paper);color:var(--ink)
}
input[type="text"]:focus,input[type="email"]:focus,input[type="tel"]:focus,textarea:focus{
  outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(239,68,68,.1)
}
/* ══════════════ ANNOUNCE + NAV ══════════════ */
.announce{background:var(--grad);color:#fff}
.nav{position:sticky;top:0;z-index:60;background:rgba(253,253,253,.9);
  -webkit-backdrop-filter:saturate(170%) blur(14px);backdrop-filter:saturate(170%) blur(14px);
  border-bottom:1px solid var(--line)}
.brand{flex:none;display:block}
.brand .el-logo{width:clamp(126px,17vw,164px)}
.el-logo{display:block;aspect-ratio:760/191;background-size:contain;background-repeat:no-repeat;
  background-position:center;background-image:url("../img/el-logo.webp")}
.brand-footer{width:clamp(160px,22vw,208px);height:auto;margin-bottom:.9rem}
.powered-by{
  display:inline-flex;align-items:center;gap:.55rem;
  font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:rgba(255,255,255,.55);text-decoration:none;line-height:1;
  white-space:nowrap;transition:color .2s ease,opacity .2s ease,transform .2s ease
}
.powered-by:hover{color:rgba(255,255,255,.92);transform:translateY(-1px)}
.powered-by:focus-visible{outline:2px solid rgba(255,255,255,.55);outline-offset:4px;border-radius:4px}
.powered-by__logo{
  display:block;height:clamp(26px,3.2vw,32px);width:auto;
  border-radius:5px;box-shadow:0 0 0 1px rgba(255,255,255,.08)
}
.powered-by:hover .powered-by__logo{box-shadow:0 0 0 1px rgba(255,255,255,.18)}
.navlink{font-size:.92rem;font-weight:600;color:var(--ink);padding:.3rem 0;position:relative}
.navlink[aria-current="true"]{color:var(--navy-700)}
.navlink[aria-current="true"]::after{right:0}
.navlink::after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:2px;background:var(--grad);border-radius:2px}
@media (prefers-reduced-motion:no-preference){.navlink::after{transition:right .25s ease}.navlink:hover::after{right:0}}

/* ══════════════ HERO — one baked banner: gradient, room and model in a single image ══════════════ */
/* The banner is 1957×802 (aspect 2.4401). min-height tracks that aspect
   (100 / 2.4401 = 40.98vw) so object-fit:cover has almost nothing to crop and
   the model's silhouette lands at a fixed 58% of the hero width at every size.
   Because the deep-blue field is baked into the same file, there is no
   CSS-gradient-to-photo join to keep in sync — the seam simply does not exist. */
.hero{position:relative;overflow:hidden;color:#fff;background:#001446;
  min-height:clamp(500px,41vw,780px);display:flex;align-items:center}
.hero-photo{position:absolute;inset:0;z-index:0}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 0}

/* copy-side scrim — deepens the left third, never touches her */
.hero-scrim{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(90deg,rgba(0,9,40,.74) 0%,rgba(0,11,44,.46) 27%,rgba(0,13,48,.07) 52%,transparent 62%),
    radial-gradient(118% 104% at 6% 52%,rgba(0,7,34,.46),transparent 64%)}

/* cinematic top/bottom falloff */
.hero::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,7,32,.44) 0%,transparent 19%,transparent 62%,rgba(0,6,28,.64) 100%)}

.hero-grid{position:relative;z-index:3;width:100%;padding-block:clamp(2rem,3.2vw,3.5rem)}
.hero-copy{max-width:min(100%,clamp(320px,50vw,940px))}

.hero-logo{width:clamp(104px,9vw,150px);max-width:100%;height:auto;display:block;object-fit:contain;object-position:left center;
  filter:drop-shadow(0 8px 26px rgba(0,0,0,.45))}

/* eyebrow — mono, tracked out, glass */
.hero .pill{border-color:rgba(255,255,255,.22);background:rgba(255,255,255,.09);
  -webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);
  font-family:"JetBrains Mono",ui-monospace,monospace;font-weight:600;
  text-transform:uppercase;letter-spacing:.1em;font-size:.68rem;
  padding:.55rem 1.05rem;color:rgba(255,255,255,.9)}
.hero .pill .dot{background:var(--gold);box-shadow:0 0 0 3px rgba(251,198,63,.2)}
.hero-copy .pill{margin-top:clamp(.9rem,1.8vw,1.35rem)}

/* display type — editorial serif against the heavy sans */
.hero-title{margin-top:clamp(.8rem,1.5vw,1.3rem)}
.hero-title .t-light{display:block;font-family:"Instrument Serif",Georgia,serif;
  font-style:italic;font-weight:400;line-height:1.06;letter-spacing:-.005em;
  font-size:clamp(1.6rem,3.9vw,4.1rem);color:rgba(233,240,255,.94)}
.hero-title .t-strong{display:block;font-weight:800;line-height:1.02;letter-spacing:-.035em;
  font-size:clamp(1.9rem,5.1vw,5.4rem);text-shadow:0 2px 34px rgba(0,10,40,.45)}

/* signature: gold rule carrying the brochure's diamond */
.gold-rule{position:relative;display:block;height:4px;border-radius:2px;
  width:clamp(96px,10vw,152px);
  background:linear-gradient(90deg,transparent 0 15px,var(--gold) 15px 44%,rgba(251,198,63,.14) 100%);
  margin:clamp(1rem,1.7vw,1.5rem) 0 clamp(.85rem,1.5vw,1.15rem)}
.gold-rule::after{content:"";position:absolute;left:0;top:50%;width:10px;height:10px;
  transform:translateY(-50%) rotate(45deg);background:var(--gold);border-radius:1px}

.hero-sub{font-size:clamp(1.02rem,1.85vw,1.45rem);font-weight:500;line-height:1.35;
  letter-spacing:-.01em;color:rgba(226,236,255,.82);max-width:34ch}
.hero-sub strong{font-weight:700;color:var(--gold)}

/* CTAs — a little more presence, glass on the secondary */
.hero .btn{height:58px;padding-inline:clamp(1.5rem,3.4vw,2.15rem);font-size:1.02rem}
.hero .btn-red{background:linear-gradient(180deg,#F35C5C 0%,#DC2626 100%);
  box-shadow:0 10px 30px -10px rgba(220,38,38,.78),inset 0 1px 0 rgba(255,255,255,.28)}
.hero .btn-red:hover{background:linear-gradient(180deg,#EF4444 0%,#C81E1E 100%);
  box-shadow:0 18px 40px -12px rgba(220,38,38,.9),inset 0 1px 0 rgba(255,255,255,.34)}
.hero .btn-ghost-light{border-color:rgba(255,255,255,.32);background:rgba(255,255,255,.09);
  -webkit-backdrop-filter:blur(12px) saturate(150%);backdrop-filter:blur(12px) saturate(150%)}

.hero-actions{margin-top:clamp(1.5rem,2.5vw,2.5rem)}
.hero-trust{margin-top:clamp(1.4rem,2.2vw,2.3rem);max-width:min(100%,660px);font-size:.86rem;color:rgba(255,255,255,.74);
  padding-top:clamp(1rem,1.6vw,1.4rem);border-top:1px solid rgba(255,255,255,.14)}
.hero-trust .sep{color:rgba(251,198,63,.55)}
.hero-trust .price{color:var(--gold);font-weight:800}

/* ── tablet: she slides right, the scrim carries the copy ── */
@media (max-width:1180px){
  .hero{min-height:clamp(520px,58vw,660px)}
  .hero-photo img{object-position:74% 0}
  .hero-scrim{background:
    linear-gradient(90deg,rgba(0,9,40,.9) 0%,rgba(0,11,44,.7) 44%,rgba(0,13,48,.16) 100%),
    linear-gradient(180deg,transparent 42%,rgba(0,9,38,.5) 100%)}
  .hero-copy{max-width:min(100%,64vw)}
  .hero-sub{max-width:30ch}
}
/* ── phone: portrait crop, copy sits on the dark floor ── */
@media (max-width:760px){
  .hero{min-height:clamp(560px,116vw,700px);align-items:flex-end}
  .hero-photo img{object-position:76% 0}
  .hero-scrim{background:linear-gradient(180deg,rgba(0,12,46,.16) 0%,rgba(0,12,46,.5) 38%,
    rgba(0,13,48,.9) 70%,#00113F 100%)}
  .hero-copy{max-width:100%}
  .hero-sub{max-width:100%}
  .hero-trust{font-size:.8rem}
}
.pill{display:inline-flex;align-items:center;gap:.55rem;border:1px solid rgba(255,255,255,.26);
  background:rgba(255,255,255,.07);border-radius:999px;padding:.45rem 1rem;font-size:.74rem}


/* ══════════════ MARQUEE ══════════════ */
.marquee{overflow:hidden;border-block:1px solid var(--line);background:var(--mist)}
.marquee-track{display:flex;gap:3rem;width:max-content;padding-block:.95rem}
@media (prefers-reduced-motion:no-preference){.marquee-track{animation:slide 34s linear infinite}
  @keyframes slide{to{transform:translateX(-50%)}}}
.marquee-item{display:flex;align-items:center;gap:3rem;font-size:.82rem;font-weight:700;color:var(--navy-700);white-space:nowrap}
.dot{width:5px;height:5px;border-radius:50%;background:var(--red);flex:none}

/* ══════════════ CARDS ══════════════ */
.card{background:#fff;border:1px solid var(--card-line);border-radius:20px;padding:1.75rem 1.6rem;
  box-shadow:0 1px 2px rgba(10,49,112,.05),0 10px 26px -18px var(--card-shadow)}
@media (prefers-reduced-motion:no-preference){
  .card-hover{transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
  .card-hover:hover{transform:translateY(-6px);
    box-shadow:0 26px 52px -24px rgba(10,49,112,.42);border-color:var(--navy-600)}
}
.icon-badge{width:46px;height:46px;border-radius:14px;color:var(--navy-700);
  background:rgba(21,82,160,.09);box-shadow:inset 0 0 0 1px rgba(21,82,160,.18);
  display:flex;align-items:center;justify-content:center;flex:none}

/* course card — equal height rows, pinned CTAs */
#course-grid,.course-stream-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));
  align-items:stretch !important}
.course{position:relative;background:#fff;border:1px solid var(--line);border-radius:22px;
  padding:1.6rem 1.5rem;display:flex;flex-direction:column;gap:1.1rem;overflow:hidden;
  height:100% !important;min-height:100%;align-self:stretch !important;box-sizing:border-box}
.course::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--banner,var(--navy-600))}
.course-num{font-weight:800;font-size:3.1rem;line-height:.85;letter-spacing:-.05em;color:var(--navy-900)}
.course-ghost{position:absolute;right:-6px;bottom:-30px;font-weight:800;font-size:8rem;line-height:1;
  color:var(--navy-900);opacity:.05;pointer-events:none;letter-spacing:-.06em}
.chip{display:inline-block;background:var(--mist);color:var(--slate-700);border-radius:999px;
  padding:.26rem .66rem;font-size:.71rem;font-weight:600}
.filter{display:inline-flex;align-items:center;height:38px;padding-inline:1rem;border:1.5px solid var(--line);
  border-radius:999px;font-size:.83rem;font-weight:600;color:var(--slate);cursor:pointer}
.filter[aria-pressed="true"]{background:var(--navy-700);border-color:var(--navy-700);color:#fff}

/* ══════════════ BOARD BAND ══════════════ */
.board{background:var(--navy-800);color:#E2E8F0;position:relative;overflow:hidden}
.board-rule{height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent)}
.ledge{height:11px;border-radius:0 0 5px 5px;background:linear-gradient(180deg,#334155,#1E293B 46%,#0F172A);
  box-shadow:0 1px 0 rgba(255,255,255,.2) inset,0 10px 22px rgba(0,0,0,.4)}

.board-grid{display:grid;gap:2.25rem;align-items:center;padding-block:clamp(2.5rem,5vw,4.25rem)}
@media (min-width:900px){.board-grid{grid-template-columns:1.02fr .98fr;gap:3.25rem}}
.board-stage{position:relative;display:flex;justify-content:center;align-items:center;padding-left:1.25rem}
.board-portrait{position:relative;margin:0;width:min(100%,406px);aspect-ratio:4/5;overflow:hidden;
  border-radius:var(--asym);background:linear-gradient(158deg,#2F72CB 0%,#17458F 58%,#0C2C67 100%);
  box-shadow:0 34px 64px -26px rgba(0,0,0,.62),0 0 0 1px rgba(255,255,255,.12) inset}
.board-portrait::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(46% 34% at 50% 26%,rgba(255,255,255,.22),transparent 70%)}
.board-portrait img{position:relative;width:100%;height:100%;object-fit:cover;object-position:center top;
  filter:drop-shadow(0 16px 26px rgba(0,0,0,.32))}
.board-card{position:absolute;left:0;bottom:8%;display:flex;align-items:center;gap:.85rem;max-width:17.5rem;
  background:#fff;color:var(--navy-900);border-radius:18px;padding:.8rem 1.1rem;
  box-shadow:0 24px 46px -18px rgba(0,0,0,.62)}
.board-card-ico{width:38px;height:38px;border-radius:11px;flex:none;background:var(--red);color:#fff;
  display:flex;align-items:center;justify-content:center}
.board-card-k{display:block;font-size:.52rem;color:var(--slate-500)}
.board-card-h{display:block;font-weight:800;font-size:1.02rem;line-height:1.2;margin-top:.12rem}
.board-card-s{display:block;font-size:.72rem;color:var(--slate);margin-top:.1rem}
@media (max-width:900px){.board-stage{padding-left:0}.board-card{left:auto;right:0;bottom:4%}}
@media (max-width:480px){.board-card{position:static;margin-top:1.1rem;max-width:none}}

/* ══════════════ MEDIA SLOTS ══════════════ */
.play{width:66px;height:66px;border-radius:50%;background:var(--red);display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 12px rgba(239,68,68,.22)}
.play::after{content:"";width:0;height:0;border-top:11px solid transparent;border-bottom:11px solid transparent;
  border-left:17px solid #fff;margin-left:5px}
.play-lg{position:relative;padding:0;width:clamp(64px,7.4vw,96px);height:clamp(64px,7.4vw,96px);cursor:pointer;
  box-shadow:0 0 0 clamp(10px,1.5vw,18px) rgba(239,68,68,.2);transition:transform .22s ease,box-shadow .22s ease}
.play-lg:hover{transform:scale(1.06);box-shadow:0 0 0 clamp(14px,2vw,24px) rgba(239,68,68,.26)}
.play-lg:focus-visible{border-radius:50%;outline-offset:6px}
.play-lg::after{border-top-width:clamp(11px,1.25vw,15px);border-bottom-width:clamp(11px,1.25vw,15px);
  border-left-width:clamp(17px,1.95vw,24px);margin-left:clamp(5px,.55vw,7px)}
@media (max-width:640px){.player{border-radius:34px 8px 34px 8px}}

/* ══════════════ TABS / QUOTES ══════════════ */
.tab{padding:.6rem .1rem;font-size:.92rem;font-weight:700;color:var(--slate);border-bottom:2.5px solid transparent;cursor:pointer}
.tab[aria-selected="true"]{color:var(--navy-700);border-bottom-color:var(--red)}
.qmark{font-family:"Instrument Serif",Georgia,serif;font-size:4rem;line-height:.55;color:var(--gold)}
.avatar-img{padding:0;background:none;border:none;overflow:hidden}
.avatar-img svg{display:block;width:100%;height:100%}
.avatar{width:48px;height:48px;border-radius:50%;flex:none;background:var(--mist);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;font-weight:800;color:var(--navy-700);font-size:.9rem}

/* ══════════════ CLASS BANNER ══════════════ */
.classbanner{position:relative;border-radius:26px;overflow:hidden;background:var(--navy-900);isolation:isolate}
.classbanner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-1}
.classbanner-body{padding:clamp(1.5rem,3vw,2.7rem);max-width:64ch}
.classbanner .mode{border-color:rgba(255,255,255,.34);color:rgba(255,255,255,.88)}
.classbanner .mode-live{border-color:rgba(255,255,255,.5);color:#fff}

/* ══════════════ SUBJECT CARDS ══════════════ */
/* each banner is embedded once here and reused by every card that needs it */
.sub-banner{display:block;margin:-1.6rem -1.5rem 0;aspect-ratio:3/2;
  background-size:cover;background-position:center;background-repeat:no-repeat}
.sb-maths{background-image:url("../img/sb-maths.webp")}
.sb-science{background-image:url("../img/sb-science.webp")}
.sb-english{background-image:url("../img/sb-english.webp")}
.sb-bundle{background-image:url("../img/sb-bundle.webp")}
.course-bundle .sub-banner{border-bottom:1px solid rgba(255,255,255,.14)}
.card-kicker{font-size:.55rem}
.subj-tagline{font-size:.58rem;margin-top:.3rem}
.course > .flex.g2,
.course-img > div:has(> .h3){flex:0 0 auto;min-height:4.75rem}
.course > .modes{flex:0 0 auto;min-height:2.15rem}
.card-blurb{color:var(--slate);font-size:.86rem;line-height:1.45;flex:1 1 auto;
  min-height:calc(1.45em * 3);max-height:calc(1.45em * 3);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.course-foot,
.course > div:last-of-type{margin-top:auto;display:flex;flex-direction:column;flex:0 0 auto;min-height:7.1rem;gap:.1rem}
.course-foot .btn,
.course > div:last-of-type .btn{margin-top:auto;padding-top:.35rem;width:100%}
.course-bundle{background:linear-gradient(165deg,var(--navy-900),var(--navy-800));border-color:transparent;color:#fff}
.course-bundle .course-num{color:#fff}
.course-bundle .course-ghost{color:#fff;opacity:.07;z-index:1}
.course-bundle .card-blurb{color:rgba(255,255,255,.78)}
.course-bundle .mode{border-color:rgba(255,255,255,.32);color:rgba(255,255,255,.85)}
.course-bundle .mode-live{border-color:rgba(255,255,255,.5);color:#fff}
.bundle-flag{position:absolute;z-index:2;top:1rem;right:1rem;font-size:.5rem;color:var(--navy-900);
  background:var(--gold);border-radius:999px;padding:.2rem .55rem}
.bundle-was{font-size:.72rem;color:rgba(255,255,255,.6)}
.bundle-price{font-weight:800;font-size:1.6rem;letter-spacing:-.03em;color:#fff;line-height:1.1;margin-top:.1rem}
.bundle-save{font-size:.72rem;color:var(--gold);margin-top:.25rem;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:calc(1.35em * 2)}

/* ══════════════ DELIVERY MODES + SUBJECT ROWS ══════════════ */
.modes{display:flex;gap:.4rem;flex-wrap:wrap}
.mode{display:inline-flex;align-items:center;gap:.4rem;font-family:"JetBrains Mono",ui-monospace,monospace;
  font-size:.55rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:999px;padding:.24rem .6rem;color:var(--slate-700)}
.mode-live{border-color:rgba(239,68,68,.4);color:var(--red)}
.dot-live{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
@media (prefers-reduced-motion:no-preference){
  .dot-live{animation:livepulse 2.2s ease-in-out infinite}
  @keyframes livepulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.72)}}}
/* ══════════════ CURRENCY PICKER ══════════════ */
.cur-select{font:inherit;font-size:.82rem;font-weight:600;color:var(--ink);background:#fff;
  border:1.5px solid var(--line);border-radius:999px;padding:.4rem 1.9rem .4rem .85rem;cursor:pointer;
  max-width:186px;appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M1 1l4.5 4.5L10 1' fill='none' stroke='%230A3170' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .8rem center}
.cur-select:hover{border-color:var(--navy-700)}
.cur-nav{flex:none;min-height:38px;max-width:104px}
@media (max-width:640px){.cur-nav{display:none}}  /* header has no room; the pricing picker covers it */
.cur-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}
.cur-label{font-size:.6rem;color:var(--slate)}
.price-note{font-size:.78rem;color:var(--slate)}

/* ══════════════ APP BAND ══════════════ */
.appband{background:var(--grad);color:#fff}
.store{display:inline-flex;align-items:center;gap:.7rem;border:1.5px solid rgba(255,255,255,.34);
  border-radius:14px;padding:.62rem 1.1rem;background:rgba(255,255,255,.08)}
.store small{display:block;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.55rem;
  letter-spacing:.09em;text-transform:uppercase;opacity:.78}
.store strong{display:block;font-size:1rem;font-weight:700;line-height:1.2;margin-top:.1rem}

/* ══════════════ STATS ══════════════ */
.statband{background:var(--grad);color:#fff}
.stat-num{font-weight:800;font-size:clamp(2.6rem,5.2vw,4rem);line-height:.92;letter-spacing:-.04em}

/* ══════════════ FAQ ══════════════ */
.faq-grid{display:grid;gap:0 1rem;align-items:start}
@media (min-width:900px){.faq-grid{grid-template-columns:1fr 1fr}}
.faq{border:1px solid var(--line);border-radius:16px;background:#fff;margin-bottom:.7rem;overflow:hidden}
.faq summary{list-style:none;cursor:pointer;padding:1.2rem 3rem 1.2rem 1.4rem;position:relative;font-weight:700;font-size:1rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:1.35rem;top:50%;transform:translateY(-50%);
  font-family:"JetBrains Mono",monospace;color:var(--red);font-size:1.3rem}
.faq[open]{border-color:var(--navy-700)}
.faq[open] summary::after{content:"−"}
.faq .body{padding:0 1.4rem 1.3rem;color:var(--slate);font-size:.95rem;max-width:66ch}

/* ══════════════ FORM ══════════════ */
.field{display:flex;flex-direction:column;gap:.35rem}
.field label{font-size:.78rem;font-weight:700}
.field input,.field textarea{width:100%;background:#fff;border:1.5px solid var(--line);border-radius:12px;
  padding:.8rem .9rem;font:inherit;font-size:.93rem;color:var(--ink)}
.field textarea{min-height:118px;resize:vertical}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--navy-700)}

/* ══════════════ STICKY BAR ══════════════ */
.stickybar{position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--navy-950);color:#fff;
  border-top:1px solid rgba(255,255,255,.14);padding:.65rem var(--gutter);display:none;align-items:center;justify-content:space-between;gap:1rem}
@media (max-width:767px){
  .stickybar{display:flex}
  body{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px));scroll-padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
}

/* ══════════════ WHATSAPP FAB ══════════════ */
.wa-float{position:fixed;right:clamp(.9rem,2vw,1.6rem);
  bottom:calc(clamp(.9rem,2vw,1.6rem) + env(safe-area-inset-bottom,0px));
  z-index:75;width:56px;height:56px;border-radius:50%;background:#25D366;color:#fff;
  display:flex;align-items:center;justify-content:center;text-decoration:none;
  box-shadow:0 12px 30px -10px rgba(37,211,102,.75);
  transition:transform .2s ease,bottom .28s ease}
.wa-float svg{display:block;flex-shrink:0;width:28px;height:28px}
.wa-float:hover{transform:translateY(-3px) scale(1.04)}
.wa-float:focus-visible{outline:3px solid #128C7E;outline-offset:3px}
@media (max-width:767px){
  .wa-float{bottom:calc(76px + .9rem + env(safe-area-inset-bottom,0px))}
}
@media (prefers-reduced-motion:reduce){
  .wa-float{transition:none}
}
@media print{.wa-float{display:none !important}}

/* ══════════════ REVEAL ══════════════ */
@media (prefers-reduced-motion:no-preference){
  .rv{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.3,1)}
  .rv.in{opacity:1;transform:none}
}

/* ══════════════ UTIL ══════════════ */
.g1{gap:.5rem}.g2{gap:1rem}.g3{gap:1.5rem}.g4{gap:2rem}
.center{align-items:center}.between{justify-content:space-between}.wrapf{flex-wrap:wrap}
.mt1{margin-top:.6rem}.mt2{margin-top:1.1rem}.mt3{margin-top:1.8rem}.mt4{margin-top:2.6rem}.mt5{margin-top:3.4rem}
.maxw-sm{max-width:48ch}.maxw-xs{max-width:36ch}
.cols2{grid-template-columns:1fr}.cols3{grid-template-columns:1fr}.cols4{grid-template-columns:1fr}
@media(min-width:640px){.cols2{grid-template-columns:1fr 1fr}.cols3{grid-template-columns:1fr 1fr}.cols4{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.cols3{grid-template-columns:repeat(3,1fr)}.cols4{grid-template-columns:repeat(4,1fr)}}
.hide-md{display:none}@media(min-width:1000px){.hide-md{display:flex}}
.hide-sm{display:none}@media(min-width:640px){.hide-sm{display:block}}
/* ══════════════ HEADER TOOLS · CALL · MOBILE MENU ══════════════ */
.navtools{display:flex;align-items:center;gap:clamp(.55rem,1.2vw,1.4rem);margin-left:auto}
.navcall{display:none;align-items:center;gap:.45rem;flex:none;
  font-size:.9rem;font-weight:700;color:var(--navy-700);white-space:nowrap}
.navcall svg{flex:none}
.navcall:hover{color:var(--navy-600)}
@media(min-width:1000px){.navcall{display:inline-flex}}

.burger{display:inline-flex;align-items:center;justify-content:center;flex:none;
  width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:#fff;cursor:pointer}
.burger:hover{border-color:var(--navy-700)}
.burger span{position:relative;display:block;width:18px;height:2px;border-radius:2px;background:var(--ink)}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;
  width:18px;height:2px;border-radius:2px;background:var(--ink)}
.burger span::before{top:-6px}
.burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] span::after{transform:translateY(-6px) rotate(-45deg)}
@media (prefers-reduced-motion:no-preference){
  .burger span,.burger span::before,.burger span::after{transition:transform .22s ease,background-color .18s ease}
}
@media(min-width:1000px){.burger{display:none}}

.mnav{position:fixed;top:var(--mnav-top,64px);left:0;right:0;bottom:0;z-index:55;
  background:rgba(2,10,32,.45);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  opacity:0;visibility:hidden}
.mnav[data-open="true"]{opacity:1;visibility:visible}
.mnav-panel{background:var(--paper);border-bottom:1px solid var(--line);
  padding:.5rem var(--gutter) 1.6rem;transform:translateY(-14px)}
.mnav[data-open="true"] .mnav-panel{transform:none}
@media (prefers-reduced-motion:no-preference){
  .mnav{transition:opacity .22s ease,visibility .22s}
  .mnav-panel{transition:transform .26s cubic-bezier(.2,.7,.3,1)}
}
.mnav-panel nav a{display:block;padding:.95rem .2rem;font-size:1.05rem;font-weight:700;
  border-bottom:1px solid var(--line)}
.mnav-panel nav a[aria-current="true"]{color:var(--navy-700)}
.mnav-panel .navlink::after{display:none}
@media(min-width:1000px){.mnav{display:none}}

/* ══════════════ LESSON PLAYER — served in place, no third-party chrome ══════════════ */
.player{position:relative;border-radius:var(--asym);overflow:hidden;background:var(--navy-950);
  box-shadow:0 34px 74px -34px rgba(0,19,60,.5)}
.player-stage{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;
  background:radial-gradient(122% 104% at 28% 18%,#0A3170,#00133C 72%)}
.player-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
/* sits over the frame so pointer events never reach it */
.player-shield{position:absolute;inset:0;z-index:3;cursor:pointer}
.player-cover{cursor:pointer}

.player-cover{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;gap:.9rem;
  padding:clamp(1.25rem,3vw,2.5rem);color:#fff;
  background:linear-gradient(152deg,#02245A 0%,#00133C 78%)}
.player-cover::before{content:"";position:absolute;left:0;right:0;bottom:0;height:34%;
  background:linear-gradient(180deg,transparent,rgba(0,8,32,.6));pointer-events:none}
.player-cover > *{position:relative}
.player-cover .eyebrow{color:var(--gold)}
.player-title{font-weight:800;letter-spacing:-.025em;line-height:1.15;
  font-size:clamp(1.15rem,2.3vw,1.9rem)}
.player-note{font-size:.86rem;color:rgba(255,255,255,.66);max-width:44ch}
.player[data-state="playing"] .player-cover,
.player[data-state="paused"] .player-cover{display:none}

.player-end{position:absolute;inset:0;z-index:5;display:none;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;gap:.9rem;
  padding:clamp(1.25rem,3vw,2.5rem);color:#fff;
  background:linear-gradient(152deg,rgba(2,36,90,.96),rgba(0,19,60,.98))}
.player[data-state="ended"] .player-end{display:flex}
.player[data-state="ended"] .player-bar{visibility:hidden}

.player-bar[hidden]{display:none}
.player-bar{display:flex;align-items:center;gap:clamp(.6rem,1.4vw,1rem);
  padding:.7rem clamp(.75rem,1.6vw,1.15rem);background:var(--navy-950);color:#fff}
.pbtn{width:38px;height:38px;flex:none;border-radius:50%;display:flex;align-items:center;
  justify-content:center;background:rgba(255,255,255,.12);color:#fff;cursor:pointer}
.pbtn:hover{background:rgba(255,255,255,.22)}
.pscrub{position:relative;flex:1;height:16px;display:flex;align-items:center;cursor:pointer}
.pscrub::before{content:"";position:absolute;left:0;right:0;height:5px;border-radius:3px;
  background:rgba(255,255,255,.18)}
.pfill{position:relative;height:5px;width:0;border-radius:3px;background:var(--gold);
  max-width:100%;pointer-events:none}
.pfill::after{content:"";position:absolute;right:-5px;top:50%;width:11px;height:11px;
  border-radius:50%;background:var(--gold);transform:translateY(-50%)}
.ptime{font-size:.72rem;color:rgba(255,255,255,.72);white-space:nowrap;flex:none}
.pcap{font-size:.6rem;color:rgba(255,255,255,.42);white-space:nowrap;flex:none}
@media(max-width:560px){.pcap{display:none}}
/* ══════════════ [hidden] MUST WIN ══════════════ */
/* .grid/.flex set display, which silently overrides the UA [hidden] rule and
   leaves "hidden" tab panels fully visible. This closes that whole bug class. */
[hidden]{display:none!important}

/* ══════════════ TESTIMONIAL GRID ══════════════ */
/* a partial last row keeps the 3-column card width and centres instead of
   hanging off the left edge; data-count is stamped on by JS so it self-corrects
   when reviews are added or removed */
@media(min-width:1000px){
  #panels > .grid[data-count="2"]{grid-template-columns:repeat(2,minmax(0,1fr));
    max-width:calc((200% - 1rem) / 3);margin-inline:auto}
  #panels > .grid[data-count="1"]{grid-template-columns:minmax(0,1fr);
    max-width:calc((100% - 2rem) / 3);margin-inline:auto}
}
#panels .card{gap:.85rem}
.qmark{margin-bottom:-.4rem}
.tab{border-radius:6px 6px 0 0}
.tab:focus-visible{outline-offset:-2px}
