/* =====================================================================
   CVP design system — Material 3 tokens
   Mobile-first, 360px baseline, RTL-safe (logical properties only).
   ===================================================================== */

:root{
  /* colour — green accent on light pages.
     --blue/--blue-dark/--blue-surface keep their names so every existing
     rule keeps working; only the values changed. */
  --blue:#2f7d32;          /* action green: 5.6:1 on white, safe for text */
  --blue-dark:#215c24;     /* hover / pressed */
  --blue-surface:#e8f5e9;  /* tinted surface behind badges and hovers */
  --lime:#8bc34a;          /* bright accent — big display text on dark only */
  --lime-bright:#a4e029;   /* the headline highlight over photographs */
  --ink:#10231a;           /* dark ground for the hero and footers */
  --bg:#f7faf7;
  --card:#ffffff;
  --text:#141b16;
  --text-2:#41504a;
  --muted:#5f6f68;         /* darkened so small grey text clears 4.5:1 */
  --border:#dde5df;

  /* semantic */
  --ok:#188038;      --ok-bg:#e6f4ea;
  --warn:#b06000;    --warn-bg:#fef7e0;
  --stop:#c5221f;    --stop-bg:#fce8e6;

  /* elevation */
  --elev-1:0 1px 2px rgba(0,0,0,.06);
  --elev-2:0 4px 20px -2px rgba(0,0,0,.08);
  --elev-3:0 8px 28px -4px rgba(0,0,0,.14);

  /* shape */
  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-pill:100px;

  /* spacing scale */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px;

  /* type */
  --font:"Plus Jakarta Sans","Roboto",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-ur:"Noto Nastaliq Urdu",serif;
}

*,*::before,*::after{box-sizing:border-box}
/* An element with a `display` of its own beats the browser's own rule for the
   hidden attribute, so hiding it from script would silently do nothing. */
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--font);font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
[dir="rtl"] body{font-family:var(--font-ur),var(--font)}

img{max-width:100%;height:auto;display:block}
/* long emails, URLs and Urdu strings must break rather than widen the page */
h1,h2,h3,h4,p,li,a,td,th,figcaption,summary{overflow-wrap:anywhere;word-break:normal}
a{color:var(--blue);text-underline-offset:2px}
a:hover{color:var(--blue-dark)}
:focus-visible{outline:3px solid var(--blue);outline-offset:2px;border-radius:var(--r-sm)}

h1,h2,h3,h4{margin:0 0 var(--s3);line-height:1.2;letter-spacing:-.015em;text-wrap:balance}
h1{font-size:clamp(28px,5vw,44px);font-weight:700}
h2{font-size:clamp(22px,3.4vw,30px);font-weight:700}
h3{font-size:clamp(18px,2.4vw,21px);font-weight:600}
p{margin:0 0 var(--s4);color:var(--text-2)}

/* layout ------------------------------------------------------------ */
.container{width:min(100% - 2rem,1200px);margin-inline:auto}
.section{padding-block:var(--s7)}
.stack{display:flex;flex-direction:column;gap:var(--s4)}
.grid{display:grid;gap:var(--s4)}
.grid-cards{grid-template-columns:repeat(auto-fill,minmax(276px,1fr))}
.center{text-align:center}
.muted{color:var(--muted)}
.lead{font-size:clamp(17px,2.2vw,20px);color:var(--text-2);max-width:62ch}

/* header ------------------------------------------------------------ */
.site-header{
  position:sticky;top:0;z-index:50;
  /* An off-white ground with a faint grid ruled over it. Two repeating
     gradients cost nothing to download and keep the bar from reading as a
     flat white slab. */
  background-color:#f4f8f4;
  background-image:
    linear-gradient(rgba(47,125,50,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(47,125,50,.055) 1px, transparent 1px);
  background-size:26px 26px, 26px 26px;
  border-block-end:1px solid var(--border);
  box-shadow:0 1px 0 rgba(16,35,26,.03), 0 6px 20px -18px rgba(16,35,26,.5);
  backdrop-filter:saturate(1.1);
}
.site-header .bar{display:flex;align-items:center;gap:var(--s3);min-height:64px;flex-wrap:wrap;row-gap:var(--s2)}
.site-header .links{display:flex;gap:var(--s2);align-items:center;flex-wrap:wrap}
.site-header .links a{
  color:var(--text-2);text-decoration:none;font-size:14.5px;font-weight:500;
  padding:10px 12px;border-radius:var(--r-pill);min-height:44px;display:inline-flex;align-items:center;
}
.site-header .links a:hover{background:var(--blue-surface);color:var(--blue-dark)}
.logo{flex:0 1 auto;min-width:0}
.logo img{height:34px;width:auto;max-width:100%}

/* mobile menu: a disclosure, no JavaScript */
.nav{margin-inline-start:auto;min-width:0}
.nav > summary{
  list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:8px;
  min-height:44px;padding:10px 16px;border:1px solid var(--border);border-radius:var(--r-pill);
  font-size:14.5px;font-weight:600;color:var(--text-2);background:var(--card);white-space:nowrap;
}
.nav > summary::-webkit-details-marker{display:none}
.nav[open] > summary{border-color:var(--blue);color:var(--blue-dark)}
.nav .links{
  position:absolute;inset-inline:0;margin-block-start:var(--s3);padding:var(--s3) max(1rem,calc((100% - 1200px)/2 + 1rem));
  background:var(--card);border-block:1px solid var(--border);flex-direction:column;align-items:stretch;
  box-shadow:var(--elev-2);
}
/* newer browsers keep closed <details> content in layout — take it out explicitly,
   otherwise the menu panel widens the page on a 360px phone */
.nav:not([open]) > .links{display:none}
@media (min-width:760px){
  .nav > summary{display:none}
  .nav{flex:0 0 auto;min-width:auto}
  /* browsers that wrap details content in ::details-content keep it out of layout
     while closed; on desktop the links must always be laid out */
  .nav::details-content{content-visibility:visible;display:contents}
  .nav .links,.nav:not([open]) > .links{
    position:static;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;
    padding:0;margin:0;border:0;box-shadow:none;background:none;
  }
}

/* buttons ----------------------------------------------------------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);
  min-height:48px;padding:12px 24px;border-radius:var(--r-pill);
  font-family:var(--font);font-size:15px;font-weight:600;line-height:1;
  text-decoration:none;cursor:pointer;border:1px solid transparent;
  transition:background .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-dark);color:#fff;box-shadow:var(--elev-2)}
.btn-secondary{background:var(--card);color:var(--blue);border-color:var(--border)}
.btn-secondary:hover{background:var(--blue-surface);border-color:var(--blue)}
.btn-text{background:none;color:var(--blue);padding-inline:12px}

/* cards ------------------------------------------------------------- */
.card{
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--s5);box-shadow:var(--elev-1);
}
.card-link{text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:var(--s3);
  transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease}
.card-link:hover{box-shadow:var(--elev-2);transform:translateY(-2px);border-color:var(--blue)}
.card h3{margin:0}
.card-meta{display:flex;flex-wrap:wrap;gap:var(--s2);margin-block-start:auto;padding-block-start:var(--s3)}

/* badges ------------------------------------------------------------ */
.badge{
  display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-pill);
  padding:5px 12px;font-size:12.5px;font-weight:600;white-space:nowrap;
  background:var(--blue-surface);color:var(--blue-dark);
}
.badge-free{background:var(--ok-bg);color:var(--ok)}
.badge-fee{background:var(--blue-surface);color:var(--blue-dark)}
.badge-plain{background:var(--bg);color:var(--text-2);border:1px solid var(--border)}
.badge-warn{background:var(--warn-bg);color:var(--warn)}
.badge-stop{background:var(--stop-bg);color:var(--stop)}

/* accordion (curriculum, FAQ) --------------------------------------- */
details.acc{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);margin-block-end:var(--s2)}
details.acc summary{
  cursor:pointer;list-style:none;padding:var(--s4) var(--s5);min-height:56px;
  display:flex;align-items:center;justify-content:space-between;gap:var(--s3);
  font-weight:600;font-size:15.5px;
}
details.acc summary::-webkit-details-marker{display:none}
details.acc summary::after{content:"+";color:var(--blue);font-size:20px;font-weight:600}
details.acc[open] summary::after{content:"\2212"}
details.acc .acc-body{padding:0 var(--s5) var(--s5);color:var(--text-2);font-size:15px}

/* notice ------------------------------------------------------------ */
.notice{border-radius:var(--r-md);padding:var(--s4) var(--s5);font-size:15px;color:var(--text-2)}
.notice-info{background:var(--blue-surface)}
.notice-warn{background:var(--warn-bg)}
.notice-ok{background:var(--ok-bg)}
.notice-stop{background:var(--stop-bg)}
.notice b{color:var(--text)}

/* footer ------------------------------------------------------------ */
.site-footer{
  /* Same off-white grid as the header, so the page is bookended rather
     than trailing off into nothing. */
  background-color:#f4f8f4;
  background-image:
    linear-gradient(rgba(47,125,50,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(47,125,50,.055) 1px, transparent 1px);
  background-size:26px 26px, 26px 26px;
  border-block-start:1px solid var(--border);
  margin-block-start:var(--s8);padding-block:var(--s7) var(--s5);
}
.site-footer .foot-top{display:grid;gap:var(--s6);grid-template-columns:1fr}
@media (min-width:900px){
  .site-footer .foot-top{grid-template-columns:minmax(260px,1fr) minmax(0,1.7fr);gap:var(--s7)}
}
.foot-brand img{height:32px;width:auto;margin-block-end:var(--s4)}
.foot-brand p{font-size:14.5px;color:var(--text-2);max-width:38ch;margin-block-end:var(--s4)}

.foot-channel{
  display:inline-flex;align-items:center;gap:8px;margin-block-start:var(--s4);
  background:#25d366;color:#04140b;text-decoration:none;font-size:13.5px;font-weight:700;
  padding:9px 16px;border-radius:var(--r-pill);transition:background .18s ease,box-shadow .18s ease;
}
.foot-channel:hover{background:#3ee27c;color:#04140b;box-shadow:0 8px 22px -10px rgba(37,211,102,.9)}
.foot-channel svg{inline-size:16px;block-size:16px;fill:currentColor}

.site-footer .foot-cols{display:grid;gap:var(--s5);grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.site-footer h4{font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-block-end:var(--s3)}
.site-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.site-footer a{color:var(--text-2);text-decoration:none;font-size:14.5px}
.site-footer a:hover{color:var(--blue)}
.site-footer li{line-height:1.4}
.site-footer .legal{margin-block-start:var(--s6);padding-block-start:var(--s4);border-block-start:1px solid var(--border);
  color:var(--muted);font-size:13px;display:flex;flex-wrap:wrap;gap:var(--s3);justify-content:space-between}
/* keep the last line clear of the floating WhatsApp button */
.site-footer .legal :last-child{padding-inline-end:72px}

/* Social icons sit in one horizontal row and never stack. The rule above
   makes every footer list a column, so this has to say row explicitly. */
.site-footer .social{flex-direction:row;flex-wrap:wrap;gap:10px}
.site-footer .social a{background:#fff;border:1px solid var(--border)}
.site-footer .social li{line-height:0}

/* whatsapp button --------------------------------------------------- */
.wa{
  position:fixed;inset-block-end:18px;inset-inline-end:18px;z-index:60;
  width:56px;height:56px;border-radius:50%;background:#25d366;
  display:flex;align-items:center;justify-content:center;box-shadow:var(--elev-3);
}
.wa svg{width:28px;height:28px;fill:#fff}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* a badge inside a stacked card hugs its text instead of stretching */
.card-link > .badge,.card > .badge,.stack > .badge{align-self:flex-start}
/* a long badge must wrap, not force the page wider than a 360px phone */
.badge-wrap{white-space:normal;text-align:start;line-height:1.35;padding-block:7px}

/* long-form legal and article text */
.prose-body{color:var(--text-2);font-size:16.5px}
.prose-body h2{font-size:20px;margin:var(--s6) 0 var(--s3);color:var(--text)}
.prose-body p{margin:0 0 var(--s4)}
.prose-body ul{margin:0 0 var(--s4);padding-inline-start:22px;display:flex;flex-direction:column;gap:8px}
.prose-body a{color:var(--blue)}

/* photographs -------------------------------------------------------- */
.gallery{display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.shot{margin:0;background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--elev-1)}
.shot img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;display:block;background:var(--bg)}
.shot figcaption{padding:var(--s3) var(--s4);font-size:14.5px;color:var(--text-2);line-height:1.45}

/* partner logos ------------------------------------------------------ */
.logos{display:grid;gap:var(--s3);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));align-items:center}
.logo-tile{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s3);display:flex;align-items:center;justify-content:center;min-height:90px}
.logo-tile img{max-width:100%;height:auto;max-height:64px;width:auto;object-fit:contain}

/* course card cover -------------------------------------------------- */
.card-link .cover,.card .cover{width:100%;height:auto;aspect-ratio:16/7;object-fit:cover;border-radius:var(--r-md);background:var(--blue-surface)}

/* forms -------------------------------------------------------------- */
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-weight:600;font-size:15px;color:var(--text)}
.field input[type=text],.field input[type=tel],.field input[type=email],.field input[type=password],
.field input[type=date],.field input[type=file],.field select,.field textarea{
  width:100%;min-height:48px;padding:12px 16px;font:inherit;color:var(--text);
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);
}
.field textarea{min-height:96px;resize:vertical;line-height:1.5}
.field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 20px) 21px,calc(100% - 14px) 21px;background-size:6px 6px;background-repeat:no-repeat;padding-inline-end:44px}
[dir="rtl"] .field select{background-position:20px 21px,14px 21px;padding-inline-end:16px;padding-inline-start:44px}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px var(--blue-surface)}
.field input[type=file]{padding:11px 14px;font-size:14.5px}
.hint{margin:0;font-size:13.5px;color:var(--muted);line-height:1.45}

.check{display:flex;gap:10px;align-items:flex-start;font-size:15px;color:var(--text-2);line-height:1.5;cursor:pointer}
.check input[type=checkbox]{inline-size:22px;block-size:22px;margin:1px 0 0;flex:0 0 auto;accent-color:var(--blue)}

fieldset.guardian{border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s4);margin:0;
  display:flex;flex-direction:column;gap:var(--s3);background:var(--bg)}
fieldset.guardian legend{font-weight:600;font-size:14px;color:var(--text);padding-inline:8px}

/* key/value list (admin) --------------------------------------------- */
.kv{display:grid;gap:var(--s2) var(--s4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:0}
.kv > div{display:flex;flex-direction:column;gap:2px}
.kv dt{font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.kv dd{margin:0;font-size:15px;color:var(--text-2)}

/* tables ------------------------------------------------------------- */
.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-md);background:var(--card)}
.tbl{border-collapse:collapse;width:100%;min-width:640px;font-size:14.5px}
.tbl th,.tbl td{text-align:start;padding:12px 16px;border-block-end:1px solid var(--border);white-space:nowrap}
.tbl th{font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.tbl tr:last-child td{border-block-end:0}
.tbl td{color:var(--text-2)}

/* header account area ------------------------------------------------ */
.acct{display:flex;align-items:center;gap:var(--s2);margin-inline-start:auto;flex:0 0 auto}
.acct form{margin:0}
.acct .who{font-size:14px;color:var(--muted);white-space:nowrap;max-width:14ch;overflow:hidden;text-overflow:ellipsis;display:none}
@media (min-width:1040px){.acct .who{display:block}}
.btn-sm{min-height:40px;padding:8px 16px;font-size:14px}

/* =====================================================================
   News bar
   ===================================================================== */
.newsbar{background:var(--ink);color:#e7f2ea;font-size:14.5px}
.newsbar .container{display:flex;align-items:center;gap:var(--s3);min-height:46px;padding-block:8px;flex-wrap:wrap}
.newsbar-msg{flex:1 1 240px;min-width:0}
.newsbar-tag{background:var(--lime-bright);color:var(--ink);font-weight:700;font-size:11.5px;
  letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:var(--r-pill);flex:0 0 auto}
.newsbar a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.newsbar a:hover{color:var(--lime-bright)}
.newsbar-x{background:none;border:0;color:#9fb3a8;font-size:22px;line-height:1;
  cursor:pointer;padding:4px 8px;border-radius:var(--r-sm);flex:0 0 auto;margin-inline-start:var(--s2)}
.newsbar-x:hover{color:#fff}

/* the one action worth putting in a news bar */
.newsbar-cta{
  display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;margin-inline-start:auto;
  background:#25d366;color:#04140b!important;text-decoration:none!important;
  font-size:13px;font-weight:700;padding:6px 14px;border-radius:var(--r-pill);
  transition:background .18s ease,box-shadow .18s ease;
}
.newsbar-cta:hover{background:#3ee27c;color:#04140b!important;box-shadow:0 6px 18px -8px rgba(37,211,102,.9)}
.newsbar-cta svg{inline-size:15px;block-size:15px;fill:currentColor;flex:0 0 auto}

/* =====================================================================
   Hero
   ===================================================================== */
.hero{position:relative;background:var(--ink);isolation:isolate;overflow:hidden}
.hero-track{position:relative;display:grid}
.hero-slide{grid-area:1/1;position:relative;display:grid;min-height:clamp(460px,68vh,660px);
  opacity:0;visibility:hidden;transition:opacity .6s ease}
.hero-slide.is-active{opacity:1;visibility:visible}
.hero-slide:only-child{opacity:1;visibility:visible}
/* with no JavaScript the first slide is the hero and the rest never show */
.no-js .hero-slide:not(:first-child){display:none}

.hero-img{grid-area:1/1;width:100%;height:100%;object-fit:cover;display:block;
  filter:brightness(1.18) saturate(1.06)}
/* the summit photographs are night shots — the veil only has to lift text off
   them, not black them out. A soft centre vignette does the rest. */
.hero-veil{grid-area:1/1;
  background:linear-gradient(180deg,rgba(6,20,13,.34) 0%,rgba(6,20,13,.30) 40%,rgba(6,20,13,.74) 100%)}
.hero-inner{grid-area:1/1;position:relative;z-index:1;display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;gap:var(--s4);padding-block:var(--s7)}
/* A soft pool of shade sits behind the words only, so the photograph stays
   bright at the edges while the copy keeps its contrast. */
.hero-inner::before{
  content:"";position:absolute;inset:-4% -12%;z-index:-1;pointer-events:none;
  background:radial-gradient(58% 52% at 50% 50%,
    rgba(6,20,13,.88) 0%,rgba(6,20,13,.78) 45%,rgba(6,20,13,.42) 74%,rgba(6,20,13,0) 100%)}

/* On a phone the photograph fills more of the frame and the copy stacks taller,
   so both the veil and the pool of shade have to work harder. */
@media (max-width:900px){
  .hero-veil{background:linear-gradient(180deg,rgba(6,20,13,.58) 0%,rgba(6,20,13,.62) 40%,rgba(6,20,13,.84) 100%)}
  .hero-inner::before{inset:-4% -22%;
    background:radial-gradient(86% 62% at 50% 50%,
      rgba(6,20,13,.92) 0%,rgba(6,20,13,.86) 55%,rgba(6,20,13,.55) 84%,rgba(6,20,13,0) 100%)}
}

.hero-eyebrow{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.22);color:#eaf6ee;border-radius:var(--r-pill);
  padding:7px 16px;font-size:12px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  backdrop-filter:blur(6px)}
.hero-eyebrow .dot{inline-size:7px;block-size:7px;border-radius:50%;background:var(--lime-bright)}

.hero-title{margin:0;color:#fff;font-size:clamp(34px,7vw,76px);font-weight:800;line-height:1.03;
  letter-spacing:-.03em;max-width:16ch;text-shadow:0 2px 24px rgba(0,0,0,.35)}
.hero-title .hl{color:var(--lime-bright);display:block}
.hero-sub{margin:0;color:#eaf6ee;font-size:clamp(17px,2.4vw,26px);font-weight:600;max-width:26ch;
  text-shadow:0 1px 14px rgba(0,0,0,.4)}
.hero-body{margin:0;color:#cfe0d6;font-size:clamp(14.5px,1.7vw,17px);max-width:58ch;line-height:1.65}
.hero-cta{display:flex;flex-wrap:wrap;gap:var(--s3);justify-content:center;margin-block-start:var(--s2)}

.btn-lime{background:var(--lime-bright);color:var(--ink);font-weight:700}
.btn-lime:hover{background:#b6f03e;color:var(--ink);box-shadow:0 8px 26px -6px rgba(164,224,41,.5)}
.btn-ghost{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.3);backdrop-filter:blur(6px)}
.btn-ghost:hover{background:rgba(255,255,255,.16);color:#fff;border-color:#fff}

/* arrows + dots (revealed by script only) */
.hero-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  inline-size:44px;block-size:44px;border-radius:50%;border:1px solid rgba(255,255,255,.3);
  background:rgba(6,20,13,.45);color:#fff;font-size:26px;line-height:1;cursor:pointer;
  display:none;align-items:center;justify-content:center;backdrop-filter:blur(6px)}
.hero-arrow:hover{background:rgba(6,20,13,.75);border-color:#fff}
.hero-arrow.prev{inset-inline-start:12px}
.hero-arrow.next{inset-inline-end:12px}
@media (min-width:760px){.hero-slider .hero-arrow:not([hidden]){display:flex}}
.hero-dots{position:absolute;inset-inline:0;bottom:calc(100% - 100%);z-index:3;
  display:flex;gap:9px;justify-content:center;padding-block:var(--s3)}
.hero-slider .hero-dots{position:relative;margin-block-start:calc(-1 * var(--s6))}
.hero-dots button{inline-size:9px;block-size:9px;padding:0;border-radius:50%;border:0;cursor:pointer;
  background:rgba(255,255,255,.38);transition:background .2s,inline-size .2s}
.hero-dots button.is-active{background:var(--lime-bright);inline-size:26px;border-radius:var(--r-pill)}

/* the goal numbers */
.hero-stats{position:relative;z-index:2;background:rgba(6,20,13,.55);
  border-block-start:1px solid rgba(255,255,255,.12);backdrop-filter:blur(8px);padding-block:var(--s5)}
.stats-heading{margin:0 0 var(--s3);text-align:center;color:#9fb3a8;font-size:12px;
  font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.stats{display:grid;gap:var(--s4);margin:0;grid-template-columns:repeat(2,1fr);text-align:center}
@media (min-width:700px){.stats{grid-template-columns:repeat(4,1fr)}}
.stats dt{color:var(--lime-bright);font-size:clamp(26px,4vw,40px);font-weight:800;line-height:1;
  letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stats dd{margin:6px 0 0;color:#b9cdc1;font-size:12.5px;font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;line-height:1.35}

/* =====================================================================
   Social icons
   ===================================================================== */
.social{list-style:none;display:flex;flex-wrap:wrap;gap:var(--s2);margin:0;padding:0}
.social a{display:inline-flex;align-items:center;justify-content:center;inline-size:42px;block-size:42px;
  border-radius:50%;background:var(--bg);border:1px solid var(--border);color:var(--text-2);
  transition:background .18s,color .18s,border-color .18s,transform .18s}
.social a:hover{transform:translateY(-2px);color:#fff}
.social svg{inline-size:19px;block-size:19px;fill:currentColor}
.social-whatsapp:hover{background:#25d366;border-color:#25d366}
.social-facebook:hover{background:#1877f2;border-color:#1877f2}
.social-instagram:hover{background:linear-gradient(45deg,#f09433,#dc2743,#bc1888);border-color:#dc2743}
.social-youtube:hover{background:#ff0000;border-color:#ff0000}
.social-tiktok:hover{background:#010101;border-color:#010101}

/* =====================================================================
   Course card
   ===================================================================== */
.ccard{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);
  overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--elev-1);
  transition:box-shadow .22s ease,transform .22s ease,border-color .22s ease}
.ccard:hover{box-shadow:var(--elev-3);transform:translateY(-4px);border-color:var(--blue)}

.ccard-cover{position:relative;aspect-ratio:16/9;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--g1,#123f6d) 0%,var(--g2,#0f5132) 100%)}
.ccard-icon{inline-size:74px;block-size:74px;border-radius:20px;display:grid;place-items:center;
  font-size:34px;line-height:1;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);
  backdrop-filter:blur(4px);transition:transform .25s ease}
.ccard:hover .ccard-icon{transform:scale(1.06)}
.ccard-flag{position:absolute;inset-block-start:12px;inset-inline-end:12px;
  background:rgba(6,20,13,.72);color:#fff;border:1px solid rgba(255,255,255,.24);
  border-radius:var(--r-pill);padding:5px 13px;font-size:12px;font-weight:700;backdrop-filter:blur(6px)}
.ccard-flag.is-free{background:rgba(24,128,56,.9);border-color:transparent}

.ccard-body{padding:var(--s5);display:flex;flex-direction:column;gap:var(--s3);flex:1}
.ccard-body h3{margin:0;font-size:19px;font-weight:700;color:var(--text);line-height:1.25}
.ccard-points{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.ccard-points li{position:relative;padding-inline-start:26px;font-size:14.5px;color:var(--text-2);line-height:1.45}
.ccard-points li::before{content:"";position:absolute;inset-inline-start:0;inset-block-start:5px;
  inline-size:15px;block-size:9px;border-inline-start:2.5px solid var(--blue);
  border-block-end:2.5px solid var(--blue);transform:rotate(-45deg)}
.ccard-cert{display:flex;align-items:center;gap:7px;margin-block-start:auto;padding-block-start:var(--s3);
  border-block-start:1px solid var(--border);font-size:13.5px;font-weight:600;color:var(--blue)}
.ccard-cert svg{inline-size:16px;block-size:16px;fill:currentColor;flex:0 0 auto}

.ccard-foot{padding:var(--s4) var(--s5);background:var(--bg);border-block-start:1px solid var(--border);
  display:flex;flex-direction:column;gap:var(--s3)}
.ccard-price{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px}
.ccard-price .now{font-size:22px;font-weight:800;color:var(--blue);letter-spacing:-.02em}
.ccard-price .was{font-size:14px;color:var(--muted);text-decoration:line-through}
.ccard-price .note{margin-inline-start:auto;font-size:12.5px;color:var(--muted);font-weight:600}
.ccard-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2)}
.ccard-actions .btn{min-height:46px;padding-inline:10px;font-size:14px;white-space:nowrap}
@media (max-width:400px){.ccard-actions{grid-template-columns:1fr}}

/* =====================================================================
   Motion — every rule here is switched off by prefers-reduced-motion
   and by the absence of JavaScript.
   ===================================================================== */
.js .reveal{opacity:0;transform:translateY(18px)}
.js .reveal.in{opacity:1;transform:none;transition:opacity .55s ease,transform .55s cubic-bezier(.22,.8,.3,1)}
.js .reveal.d1.in{transition-delay:.07s}
.js .reveal.d2.in{transition-delay:.14s}
.js .reveal.d3.in{transition-delay:.21s}
.js .reveal.d4.in{transition-delay:.28s}

@media (prefers-reduced-motion:reduce){
  .js .reveal,.js .reveal.in{opacity:1;transform:none;transition:none}
  .hero-slide{transition:none}
  .ccard:hover,.card-link:hover,.social a:hover{transform:none}
}

/* =====================================================================
   Section headers and closing calls to action
   ===================================================================== */
.sec-head{display:flex;flex-direction:column;gap:var(--s2);margin-block-end:var(--s5);max-width:64ch}
.sec-head .kicker{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}
.sec-head h2{margin:0}
.sec-head p{margin:0}
.sec-head.center{align-items:center;text-align:center;margin-inline:auto}

.cta-band{background:var(--ink);color:#fff;border-radius:var(--r-lg);padding:var(--s7) var(--s5);
  text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--s4)}
.cta-band h2{margin:0;color:#fff;font-size:clamp(24px,3.4vw,36px);max-width:20ch}
.cta-band p{margin:0;color:#c3d6ca;max-width:54ch}
.cta-band .btn-secondary{background:transparent;color:#fff;border-color:rgba(255,255,255,.35)}
.cta-band .btn-secondary:hover{background:rgba(255,255,255,.12);border-color:#fff;color:#fff}

/* =====================================================================
   Course detail page
   ===================================================================== */
.chero{background:var(--ink);color:#fff;padding-block:var(--s6) var(--s7);
  background-image:radial-gradient(1100px 380px at 15% -10%,rgba(164,224,41,.16),transparent 60%)}
.chero-crumbs{font-size:13.5px;color:#8fa99a;margin-block-end:var(--s5)}
.chero-crumbs a{color:#c6dbcd;text-decoration:none}
.chero-crumbs a:hover{color:var(--lime-bright)}
.chero-crumbs span[aria-hidden]{margin-inline:6px;opacity:.5}

.chero-grid{display:grid;gap:var(--s6);align-items:start}
@media (min-width:900px){.chero-grid{grid-template-columns:1fr 340px;gap:var(--s7)}}
.chero-tags{display:flex;flex-wrap:wrap;gap:var(--s2);margin-block-end:var(--s4)}
.chero h1{color:#fff;font-size:clamp(28px,4.4vw,46px);font-weight:800;letter-spacing:-.025em;margin:0 0 var(--s3)}
.chero-lead{color:#cfe0d6;font-size:clamp(16px,2vw,19px);margin:0 0 var(--s5);max-width:56ch;line-height:1.6}
.chero-facts{list-style:none;margin:0;padding:0;display:grid;gap:var(--s3);
  grid-template-columns:repeat(auto-fit,minmax(120px,1fr));border-block-start:1px solid rgba(255,255,255,.14);padding-block-start:var(--s4)}
.chero-facts li{display:flex;flex-direction:column;gap:3px}
.chero-facts .k{font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:#8fa99a;font-weight:700}
.chero-facts .v{font-size:16px;font-weight:600;color:#fff}

.cbuy{background:var(--card);border-radius:var(--r-lg);padding:var(--s5);box-shadow:var(--elev-3);
  display:flex;flex-direction:column;gap:var(--s3);position:relative}
@media (min-width:900px){.cbuy{position:sticky;top:88px}}
.cbuy-icon{inline-size:58px;block-size:58px;border-radius:16px;display:grid;place-items:center;font-size:28px;
  background:var(--blue-surface)}
.cbuy-price{margin:0;display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.cbuy-price .now{font-size:32px;font-weight:800;color:var(--blue);letter-spacing:-.03em}
.cbuy-price .was{font-size:16px;color:var(--muted);text-decoration:line-through}
.cbuy-note{margin:0;font-size:13.5px;color:var(--muted)}
.cbuy-go{width:100%}
.cbuy-list{list-style:none;margin:0;padding:var(--s3) 0 0;border-block-start:1px solid var(--border);
  display:flex;flex-direction:column;gap:9px}
.cbuy-list li{position:relative;padding-inline-start:24px;font-size:14.5px;color:var(--text-2)}
.cbuy-list li::before{content:"";position:absolute;inset-inline-start:0;inset-block-start:5px;
  inline-size:14px;block-size:8px;border-inline-start:2.5px solid var(--blue);border-block-end:2.5px solid var(--blue);
  transform:rotate(-45deg)}
.cbuy-fine{margin:0;font-size:13px;color:var(--muted);border-block-start:1px solid var(--border);padding-block-start:var(--s3)}

/* outcomes */
.outcome{background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);
  padding:var(--s4);display:flex;gap:var(--s3);align-items:flex-start}
.outcome p{margin:0;font-size:15px;color:var(--text-2);line-height:1.55}
.outcome-tick{flex:0 0 auto;inline-size:26px;block-size:26px;border-radius:50%;background:var(--blue-surface);
  position:relative;margin-block-start:2px}
.outcome-tick::after{content:"";position:absolute;inset-inline-start:8px;inset-block-start:8px;
  inline-size:11px;block-size:6px;border-inline-start:2.5px solid var(--blue);border-block-end:2.5px solid var(--blue);
  transform:rotate(-45deg)}

/* what you build */
.builds{list-style:none;margin:0;padding:0;display:grid;gap:var(--s3);
  grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.builds li{display:flex;gap:var(--s3);align-items:flex-start;background:var(--card);
  border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s4);font-size:15px;color:var(--text-2)}
.builds .n{flex:0 0 auto;inline-size:30px;block-size:30px;border-radius:50%;display:grid;place-items:center;
  background:var(--blue);color:#fff;font-weight:700;font-size:14px}

/* phase accordion */
.phases details.acc summary{align-items:flex-start;gap:var(--s3)}
.ph-wrap{display:flex;flex-direction:column;gap:3px;min-width:0}
.ph-title{font-weight:700;font-size:15.5px;color:var(--text)}
.ph-sub{font-weight:500;font-size:13.5px;color:var(--muted)}
.ph-weeks{flex:0 0 auto;align-self:center}
.ph-points{margin:0;padding-inline-start:20px;display:flex;flex-direction:column;gap:8px}
.ph-points li{font-size:14.5px;color:var(--text-2);line-height:1.5}

/* tool chips */
.chips{display:flex;flex-wrap:wrap;gap:var(--s2)}
.chip{background:var(--card);border:1px solid var(--border);border-radius:var(--r-pill);
  padding:9px 16px;font-size:14px;font-weight:600;color:var(--text-2)}

/* certificate box */
.certbox{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--s6) var(--s5);display:flex;gap:var(--s5);align-items:flex-start;box-shadow:var(--elev-1)}
.certbox-mark{flex:0 0 auto;inline-size:62px;block-size:62px;border-radius:18px;display:grid;place-items:center;
  background:var(--blue-surface)}
.certbox-mark svg{inline-size:32px;block-size:32px;fill:var(--blue)}
@media (max-width:620px){.certbox{flex-direction:column;gap:var(--s4)}}

/* sticky apply bar (phones) */
.applybar{position:fixed;inset-inline:0;inset-block-end:0;z-index:70;background:var(--card);
  border-block-start:1px solid var(--border);box-shadow:0 -6px 24px -8px rgba(0,0,0,.18);
  padding-block:10px;transform:translateY(110%);transition:transform .25s ease}
.applybar.show{transform:none}
.applybar .container{display:flex;align-items:center;gap:var(--s3)}
.applybar-price{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.applybar-price strong{font-size:18px;color:var(--blue);font-weight:800}
.applybar-price span{font-size:12px;color:var(--muted);text-decoration:line-through}
.applybar .btn{margin-inline-start:auto;flex:0 0 auto}
@media (min-width:900px){.applybar{display:none}}
/* keep the WhatsApp button clear of the bar on phones */
@media (max-width:899px){.applybar.show ~ .wa{inset-block-end:84px}}

/* page head band used on inner pages */
.pagehead{background:var(--ink);color:#fff;padding-block:var(--s7);
  background-image:radial-gradient(900px 320px at 12% -20%,rgba(164,224,41,.15),transparent 62%)}
.pagehead h1{color:#fff;margin:var(--s3) 0 var(--s3)}
.pagehead .lead{color:#cfe0d6}
.pagehead .badge{background:rgba(255,255,255,.12);color:#eaf6ee;border:1px solid rgba(255,255,255,.2)}

/* =====================================================================
   Studying — the lesson list and the player
   ===================================================================== */
.prog{margin-block-start:var(--s4);max-width:520px}
.prog-bar{block-size:10px;border-radius:var(--r-pill);background:rgba(255,255,255,.18);overflow:hidden}
.prog-bar span{display:block;block-size:100%;background:var(--lime-bright);border-radius:var(--r-pill);
  transition:width .5s ease}
.prog-text{margin:8px 0 0;font-size:13.5px;color:#c6dbcd;font-weight:600}

.lessons{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s2)}
.lessons-week{margin-block-start:var(--s5);font-size:12px;font-weight:800;letter-spacing:.11em;
  text-transform:uppercase;color:var(--blue)}
.lessons-week:first-child{margin-block-start:0}

.lesson-row{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;
  background:var(--card);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s3) var(--s4)}
.lesson-row.is-locked{background:var(--bg);opacity:.72}
.lesson-mark{flex:0 0 auto;inline-size:32px;block-size:32px;border-radius:50%;display:grid;place-items:center;
  background:var(--blue-surface);color:var(--blue-dark);font-weight:700;font-size:14px}
.lesson-row.is-done .lesson-mark{background:var(--ok-bg);color:var(--ok)}
.lesson-row.is-locked .lesson-mark{background:var(--border);color:var(--muted);font-size:13px}
.lesson-main{flex:1 1 220px;min-width:0;display:flex;flex-direction:column;gap:2px}
.lesson-title{font-weight:600;font-size:15.5px;color:var(--text);text-decoration:none}
a.lesson-title:hover{color:var(--blue)}
.lesson-sub{font-size:13px;color:var(--muted)}
.lesson-go{flex:0 0 auto}

/* the lesson page */
.lessonwrap{padding-block:var(--s6) var(--s8)}
.lesson-crumbs{font-size:13.5px;color:var(--muted);margin-block-end:var(--s4)}
.lesson-crumbs a{text-decoration:none}
.lesson-crumbs span[aria-hidden]{margin-inline:6px;opacity:.6}
.lesson-grid{display:grid;gap:var(--s6);align-items:start}
@media (min-width:1000px){.lesson-grid{grid-template-columns:1fr 300px}}
.lesson-body h1{font-size:clamp(23px,3.2vw,34px);margin-block-end:var(--s2)}
.lesson-meta{font-size:14px;color:var(--muted);margin-block-end:var(--s5)}
.done-flag{color:var(--ok);font-weight:700}

.player{position:relative;aspect-ratio:16/9;background:#000;border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--elev-2)}
.player iframe{position:absolute;inset:0;inline-size:100%;block-size:100%;border:0}
.player-hint{font-size:13px;margin:var(--s2) 0 var(--s5)}
.lesson-notes{margin-block-start:var(--s5)}
.lesson-notes h2{font-size:20px}

.lesson-foot{display:flex;flex-wrap:wrap;gap:var(--s3);align-items:center;justify-content:space-between;
  margin-block-start:var(--s6);padding-block-start:var(--s5);border-block-start:1px solid var(--border)}
.lesson-nav{display:flex;gap:var(--s2);flex-wrap:wrap;margin-inline-start:auto}

.lesson-side{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s4)}
@media (min-width:1000px){.lesson-side{position:sticky;top:88px;max-block-size:calc(100vh - 120px);overflow:auto}}
.side-head{margin:0 0 var(--s3);font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.side-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;counter-reset:none}
.side-list a,.side-list .locked{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border-radius:var(--r-sm);
  font-size:14px;line-height:1.4;text-decoration:none;color:var(--text-2)}
.side-list a:hover{background:var(--bg);color:var(--blue)}
.side-list .n{flex:0 0 auto;inline-size:22px;block-size:22px;border-radius:50%;display:grid;place-items:center;
  background:var(--bg);color:var(--muted);font-size:11.5px;font-weight:700;border:1px solid var(--border)}
.side-list li.is-current > a{background:var(--blue-surface);color:var(--blue-dark);font-weight:600}
.side-list li.is-current .n{background:var(--blue);color:#fff;border-color:var(--blue)}
.side-list li.is-done .n{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.side-list .locked{color:var(--muted);cursor:default}

/* The way back in for a student who already has an account. On a narrow
   phone the header has room for one button, so this one moves into the
   menu — where the same link already lives. */
.portal-btn{display:none}
@media (min-width:820px){.portal-btn{display:inline-flex}}
.acct .btn + .btn{margin-inline-start:var(--s2)}

/* The door to the portal. Deliberately not a plain nav link: it is the one
   thing a returning student is looking for, so it gets a shape of its own. */
.portal-tab{
  display:inline-flex;align-items:center;gap:9px;text-decoration:none;
  min-height:44px;padding:9px 18px 9px 14px;border-radius:var(--r-pill);
  background:var(--ink);color:#eaf6ee;font-size:14.5px;font-weight:600;
  border:1px solid var(--ink);white-space:nowrap;
  transition:background .18s ease,box-shadow .18s ease,transform .18s ease;
}
.portal-tab:hover{background:#1b3a29;color:#fff;box-shadow:0 8px 22px -12px rgba(16,35,26,.85);transform:translateY(-1px)}
.portal-tab .ico{
  inline-size:26px;block-size:26px;border-radius:50%;flex:0 0 auto;
  background:var(--lime-bright);display:flex;align-items:center;justify-content:center;
}
.portal-tab .ico svg{inline-size:14px;block-size:14px;fill:none;stroke:var(--ink);
  stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
/* An icon on its own is a guess. On a narrow phone the label shortens
   rather than disappearing, and the Sign up button steps aside. */
.portal-tab .txt-short{display:none}
@media (max-width:560px){
  .portal-tab{padding-inline:10px 14px;gap:7px}
  .portal-tab .txt{display:none}
  .portal-tab .txt-short{display:inline}
  .signup-btn{display:none}
}
