/* =========================================================
   Regina Pacis Academy — Jari, Gasabo, Kigali
   Design system + components
   ========================================================= */

:root{
  /* Brand */
  --brand-900:#0a3d20;
  --brand-800:#0f5c2e;
  --brand-700:#147a3d;
  --brand:#17a44c;
  --brand-500:#2bbd63;
  --brand-300:#86d9a5;
  --brand-100:#e8f6ee;

  --gold-600:#c2621c;
  --gold:#f0873a;
  --gold-300:#ffa96a;
  --gold-100:#fdf0e6;

  --ink:#10231a;
  --body:#41544c;
  --muted:#6d8079;
  --line:#e3ece6;
  --cream:#f4faf6;
  --surface:#ffffff;
  --shadow-sm:0 1px 2px rgba(15,92,46,.06), 0 2px 8px rgba(15,92,46,.05);
  --shadow:0 10px 30px -12px rgba(15,92,46,.25);
  --shadow-lg:0 30px 60px -25px rgba(15,92,46,.35);

  --r-sm:10px; --r:16px; --r-lg:24px; --r-pill:999px;
  --maxw:1660px;
  --pad:clamp(10px,1.3vw,22px);
  --sec:clamp(36px,4.5vw,60px);

  --ff-display:"Fraunces","Playfair Display",Georgia,"Times New Roman",serif;
  --ff-body:"Plus Jakarta Sans","Segoe UI",system-ui,-apple-system,Arial,sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--surface);color:var(--body);
  font-family:var(--ff-body);font-size:16px;line-height:1.62;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img,svg{max-width:100%;height:auto;display:block}
a{color:var(--brand);text-decoration:none}
a:hover{color:var(--brand-700)}
ul{margin:0;padding:0}
h1,h2,h3,h4{font-family:var(--ff-display);color:var(--ink);line-height:1.15;margin:0 0 .5em;font-weight:600;letter-spacing:-.015em}
h1{font-size:clamp(1.85rem,4vw,2.9rem)}
h2{font-size:clamp(1.4rem,2.4vw,1.95rem)}
h3{font-size:clamp(1.02rem,1.4vw,1.2rem)}
h4{font-size:1rem;font-family:var(--ff-body);font-weight:700;letter-spacing:0}
p{margin:0 0 1.1em}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:4px}

.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad)}
.section{padding-block:var(--sec)}
.section--cream{background:var(--cream)}
.section--tint{background:linear-gradient(180deg,#fff 0%,var(--brand-100) 100%)}
.center{text-align:center}
.skip{position:absolute;left:-9999px;top:0;background:var(--brand);color:#fff;padding:12px 20px;z-index:999;border-radius:0 0 8px 0}
.skip:focus{left:0;color:#fff}

/* ---------- Type helpers ---------- */
.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-size:.76rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--brand);margin-bottom:14px;
}
.eyebrow::before{content:"";width:26px;height:2px;background:var(--gold);border-radius:2px}
.eyebrow--light{color:var(--gold-300)}
.lead{font-size:1.02rem;color:var(--body)}
.sec-head{max-width:740px;margin-bottom:clamp(18px,2.4vw,28px)}
.sec-head.center{margin-inline:auto}
.sec-head p{margin-bottom:0;color:var(--muted)}
.muted{color:var(--muted)}
.gold{color:var(--gold-600)}

/* ---------- Buttons ---------- */
.btn{
  --bg:var(--brand);--fg:#fff;
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  background:var(--bg);color:var(--fg);border:2px solid var(--bg);
  font-family:var(--ff-body);font-weight:700;font-size:.87rem;letter-spacing:.01em;
  padding:11px 22px;border-radius:var(--r-pill);cursor:pointer;
  transition:transform .25s cubic-bezier(.2,.8,.3,1),box-shadow .25s,background .25s,color .25s,border-color .25s;
  box-shadow:0 8px 20px -10px rgba(23,164,76,.7);
}
.btn:hover{transform:translateY(-3px);box-shadow:0 16px 28px -14px rgba(23,164,76,.85);color:#fff}
.btn:active{transform:translateY(-1px)}
.btn--gold{--bg:var(--gold);--fg:#331200;box-shadow:0 8px 22px -10px rgba(240,135,58,.85)}
.btn--gold:hover{--bg:var(--gold-300);color:#331200}
.btn--ghost{--bg:transparent;--fg:var(--brand);border-color:currentColor;box-shadow:none}
.btn--ghost:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn--light{--bg:transparent;--fg:#fff;border-color:rgba(255,255,255,.55);box-shadow:none}
.btn--light:hover{background:#fff;color:var(--brand-800);border-color:#fff}
.btn--sm{padding:10px 20px;font-size:.86rem}
.btn-row{display:flex;flex-wrap:wrap;gap:14px}
.arrow{transition:transform .25s}
.btn:hover .arrow{transform:translateX(4px)}

/* ---------- Header ---------- */
.topbar{background:var(--brand-900);color:#cfe8d9;font-size:.82rem}
.topbar .wrap{display:flex;flex-wrap:wrap;gap:8px 26px;align-items:center;justify-content:space-between;padding-block:9px}
.topbar a{color:#cfe8d9}
.topbar a:hover{color:var(--gold-300)}
.topbar ul{display:flex;flex-wrap:wrap;gap:8px 22px;list-style:none}
.topbar li{display:flex;align-items:center;gap:7px}
.topbar .ico{color:var(--gold-300)}

.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.93);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);transition:box-shadow .3s}
.site-header.is-stuck{box-shadow:0 10px 30px -20px rgba(15,92,46,.55)}
.nav{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:12px}
.brand{display:flex;align-items:center;gap:13px;color:var(--ink)}
.brand img{width:50px;height:auto;flex:none}
.brand b{display:block;font-family:var(--ff-display);font-size:1.16rem;font-weight:600;line-height:1.15;color:var(--brand-800);letter-spacing:-.01em}
.brand span{display:block;font-size:.68rem;letter-spacing:.19em;text-transform:uppercase;color:var(--muted);font-weight:600}

.menu{display:flex;align-items:center;gap:4px;list-style:none}
.menu a{
  display:block;padding:10px 12px;border-radius:var(--r-pill);
  color:var(--ink);font-weight:600;font-size:.9rem;position:relative;transition:color .2s,background .2s;
}
.menu a:hover{background:var(--brand-100);color:var(--brand-700)}
.menu a.active{color:var(--brand)}
.menu a.active::after{content:"";position:absolute;left:14px;right:14px;bottom:3px;height:2px;background:var(--gold);border-radius:2px}
.nav-cta{display:flex;align-items:center;gap:10px}
.burger{display:none;width:46px;height:46px;border:1px solid var(--line);background:#fff;border-radius:12px;cursor:pointer;align-items:center;justify-content:center;flex-direction:column;gap:5px}
.burger span{width:20px;height:2px;background:var(--brand-800);border-radius:2px;transition:transform .3s,opacity .2s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

@media (max-width:1100px){
  /* backdrop-filter would make the header a containing block for the
     fixed menu panel below, trapping it inside the header strip */
  .site-header{backdrop-filter:none;background:#fff}
  .burger{display:flex}
  .nav-cta .btn{display:none}
  .menu{
    position:fixed;inset:0 0 0 auto;z-index:120;width:min(340px,86vw);background:#fff;
    flex-direction:column;align-items:stretch;gap:2px;padding:96px 20px 30px;
    box-shadow:var(--shadow-lg);transform:translateX(101%);transition:transform .35s cubic-bezier(.2,.8,.3,1);
    overflow-y:auto;
  }
  .menu.open{transform:none}
  .menu a{padding:14px 16px;border-radius:12px;font-size:1rem}
  .menu li:last-child{margin-top:14px}
  .menu li:last-child a{background:var(--brand);color:#fff;text-align:center}
  .menu li:last-child a.active::after{display:none}
}
.nav-scrim{position:fixed;inset:0;background:rgba(10,61,32,.45);opacity:0;pointer-events:none;transition:opacity .3s;z-index:99}
.nav-scrim.show{opacity:1;pointer-events:auto}

/* ---------- Hero ---------- */
.hero{position:relative;background:var(--brand-900);color:#fff;overflow:hidden;isolation:isolate}
.hero::before{
  content:"";position:absolute;inset:0;z-index:-2;
  background:url("../img/pupil.jpg") right center/cover no-repeat;opacity:1;
}
.hero::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(900px 460px at 78% 12%, rgba(240,135,58,.16), transparent 62%),
    linear-gradient(100deg, rgba(8,48,25,.94) 0%, rgba(10,61,32,.86) 34%, rgba(12,74,38,.44) 64%, rgba(14,90,46,.26) 100%);
}
.hero .wrap{position:relative;padding-block:clamp(34px,4.5vw,60px)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(30px,5vw,64px);align-items:center}
.hero h1{color:#fff;margin-bottom:20px}
.hero h1 em{font-style:normal;color:var(--gold-300)}
.hero p{color:#d5ebdd;font-size:1.13rem;max-width:56ch}
.hero-badge{
  display:inline-flex;align-items:center;gap:10px;background:rgba(255,255,255,.11);
  border:1px solid rgba(255,255,255,.22);color:#e7f6ed;padding:8px 18px;border-radius:var(--r-pill);
  font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin-bottom:22px;
}
.hero-badge .dot{width:8px;height:8px;border-radius:50%;background:var(--gold-300);box-shadow:0 0 0 4px rgba(255,169,106,.22)}
.hero-card{
  background:rgba(8,48,25,.58);border:1px solid rgba(255,255,255,.24);
  border-radius:var(--r-lg);padding:clamp(22px,3vw,32px);backdrop-filter:blur(10px);
}
.hero-card h3{color:#fff;font-size:1.25rem;margin-bottom:6px}
.hero-card p{font-size:.95rem;color:#c6e3d2}
.hero-card ul{list-style:none;display:grid;gap:14px;margin:20px 0 22px}
.hero-card li{display:flex;gap:12px;align-items:flex-start;font-size:.95rem;color:#e3f4e9}
.tick{flex:none;width:22px;height:22px;border-radius:50%;background:var(--gold);color:#331200;display:grid;place-items:center;font-size:.72rem;font-weight:800;margin-top:3px}
.hero-scroll{display:flex;gap:clamp(20px,4vw,40px);flex-wrap:wrap;margin-top:clamp(38px,5vw,58px);padding-top:26px;border-top:1px solid rgba(255,255,255,.16)}
.hero-scroll div{color:#cee7d8;font-size:.88rem}
.hero-scroll b{display:block;font-family:var(--ff-display);font-size:1.7rem;color:var(--gold-300);line-height:1.2}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr}}

/* ---------- Page hero (interior) ---------- */
.page-hero{position:relative;background:var(--brand-800);color:#fff;isolation:isolate;overflow:hidden}
.page-hero::before{content:"";position:absolute;inset:0;z-index:-2;background-image:var(--bgimg,url("../img/poster.jpg"));background-size:cover;background-position:center;opacity:1}
.page-hero--graduation::before{background-image:url("../img/poster.jpg")}
.page-hero--welcome::before{background-image:url("../img/bus.jpg")}
.page-hero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(100deg,rgba(8,48,25,.93) 0%,rgba(12,74,38,.74) 58%,rgba(14,90,46,.36) 100%)}
.page-hero .wrap{padding-block:clamp(26px,3.4vw,44px)}
.page-hero h1{color:#fff;margin-bottom:12px}
.page-hero p{color:#d1ead9;max-width:62ch;margin-bottom:0;font-size:1.06rem}
.crumbs{display:flex;gap:10px;flex-wrap:wrap;list-style:none;font-size:.85rem;color:#a8ceb6;margin-bottom:16px}
.crumbs a{color:#d7eee0}
.crumbs a:hover{color:var(--gold-300)}
.crumbs li+li::before{content:"\203A";margin-right:10px;color:var(--gold-300)}

/* ---------- Grids & cards ---------- */
.grid{display:grid;gap:clamp(12px,1.5vw,18px)}
.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))}
@media (max-width:940px){.g-3,.g-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.g-2,.g-3,.g-4{grid-template-columns:1fr}}

.card{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px 17px;
  box-shadow:var(--shadow-sm);transition:transform .3s cubic-bezier(.2,.8,.3,1),box-shadow .3s,border-color .3s;
  position:relative;overflow:hidden;height:100%;
}
.card::after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--brand),var(--gold));transform:scaleX(0);transform-origin:left;transition:transform .35s}
.card:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:#d2e9da}
.card:hover::after{transform:scaleX(1)}
.card h3{font-size:1.22rem;margin-bottom:8px}
.card p:last-child{margin-bottom:0}
.icon{
  width:42px;height:42px;border-radius:11px;display:grid;place-items:center;font-size:1.1rem;
  background:var(--brand-100);color:var(--brand-700);margin-bottom:11px;
}
.icon--gold{background:var(--gold-100);color:var(--gold-600)}

/* ---------- Split media ---------- */
.split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(30px,5vw,70px);align-items:center}
.split--rev .split-media{order:2}
@media (max-width:880px){.split{grid-template-columns:1fr}.split--rev .split-media{order:0}}
.split-media{position:relative}
.split-media img{border-radius:var(--r-lg);box-shadow:var(--shadow-lg);width:100%}
.split-media .stamp{
  position:absolute;right:clamp(-14px,-1vw,0px);bottom:-22px;background:var(--gold);color:#331200;
  border-radius:var(--r);padding:18px 22px;box-shadow:var(--shadow);text-align:center;max-width:200px;
}
.split-media .stamp b{display:block;font-family:var(--ff-display);font-size:1.9rem;line-height:1}
.split-media .stamp span{font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.3;display:block;margin-top:4px}
.tick-list{list-style:none;display:grid;gap:12px;margin:0 0 26px}
.tick-list li{display:flex;gap:12px;align-items:flex-start}
.tick-list .tick{background:var(--brand-100);color:var(--brand-700)}

/* ---------- Stats band ---------- */
.stats{background:var(--brand-800);color:#fff;position:relative;overflow:hidden}
.stats::before{content:"";position:absolute;inset:0;background:radial-gradient(700px 320px at 15% 0%,rgba(240,135,58,.22),transparent 60%)}
.stats .wrap{position:relative;padding-block:clamp(24px,3vw,38px)}
.stat{text-align:center;padding:14px}
.stat b{display:block;font-family:var(--ff-display);font-size:clamp(2.2rem,4.4vw,3.2rem);color:var(--gold-300);line-height:1}
.stat span{display:block;margin-top:8px;font-size:.9rem;color:#cee7d8;letter-spacing:.03em}

/* ---------- Programme cards ---------- */
.prog{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--line);background:#fff;height:100%;display:flex;flex-direction:column;transition:transform .3s,box-shadow .3s}
.prog:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg)}
.prog-img{position:relative;aspect-ratio:4/3;overflow:hidden}
.prog-img img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.8,.3,1)}
.prog:hover .prog-img img{transform:scale(1.06)}
.prog-tag{position:absolute;left:16px;top:16px;background:rgba(255,255,255,.94);color:var(--brand-700);font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;padding:7px 14px;border-radius:var(--r-pill)}
.prog-body{padding:15px 16px 17px;display:flex;flex-direction:column;flex:1}
.prog-body h3{margin-bottom:6px}
.prog-body p{font-size:.96rem;color:var(--muted)}
.prog-meta{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px;list-style:none}
.prog-meta li{background:var(--brand-100);color:var(--brand-700);font-size:.75rem;font-weight:700;padding:5px 12px;border-radius:var(--r-pill)}
.prog-link{margin-top:auto;font-weight:700;font-size:.92rem;display:inline-flex;align-items:center;gap:8px;color:var(--brand)}
.prog-link:hover .arrow{transform:translateX(4px)}

/* ---------- Head teacher / quote ---------- */
.quote{
  background:linear-gradient(135deg,var(--brand-800),var(--brand));color:#fff;border-radius:var(--r-lg);
  padding:clamp(18px,2.4vw,30px);position:relative;overflow:hidden;
}
.quote::before{content:"\201C";position:absolute;right:20px;top:-30px;font-family:var(--ff-display);font-size:14rem;color:rgba(255,255,255,.09);line-height:1}
.quote p{position:relative;font-family:var(--ff-display);font-size:clamp(1.15rem,2vw,1.5rem);line-height:1.55;color:#f0fbf4}
.quote-by{display:flex;align-items:center;gap:14px;margin-top:24px;position:relative}
.avatar{width:56px;height:56px;border-radius:50%;background:var(--gold);color:#331200;display:grid;place-items:center;font-weight:800;font-family:var(--ff-body);font-size:1.05rem;flex:none}
.quote-by b{display:block;color:#fff}
.quote-by span{font-size:.87rem;color:#c4e2d0}

/* ---------- Testimonials ---------- */
.tcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow-sm);height:100%;display:flex;flex-direction:column}
.stars{color:var(--gold);letter-spacing:3px;margin-bottom:12px;font-size:1rem}
.tcard p{font-size:.98rem}
.tcard .quote-by{margin-top:auto;padding-top:16px;border-top:1px solid var(--line)}
.tcard .avatar{width:46px;height:46px;font-size:.95rem;background:var(--brand-100);color:var(--brand-700)}
.tcard .quote-by b{color:var(--ink)}
.tcard .quote-by span{color:var(--muted)}

/* ---------- News ---------- */
.news{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .3s,box-shadow .3s;height:100%}
.news:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.news-img{aspect-ratio:16/10;overflow:hidden}
.news-img img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.news:hover .news-img img{transform:scale(1.06)}
.news-body{padding:14px 15px 16px;display:flex;flex-direction:column;flex:1}
.news-body h3{font-size:1.15rem;margin-bottom:8px}
.news-body p{font-size:.95rem;color:var(--muted)}
.chip{display:inline-block;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--brand);background:var(--brand-100);padding:5px 12px;border-radius:var(--r-pill);margin-bottom:12px;align-self:flex-start}
.chip--gold{color:var(--gold-600);background:var(--gold-100)}
.news-date{font-size:.82rem;color:var(--muted);margin-top:auto;padding-top:14px;border-top:1px solid var(--line);display:flex;gap:8px;align-items:center}

/* ---------- Events list ---------- */
.event{display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:11px 14px;box-shadow:var(--shadow-sm);transition:border-color .3s,transform .3s}
.event:hover{border-color:var(--brand-300);transform:translateX(4px)}
.date-box{background:var(--brand-100);border-radius:12px;text-align:center;padding:10px 6px}
.date-box b{display:block;font-family:var(--ff-display);font-size:1.7rem;color:var(--brand-700);line-height:1}
.date-box span{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--brand)}
.event h3{font-size:1.1rem;margin-bottom:4px}
.event p{margin:0;font-size:.9rem;color:var(--muted)}
@media (max-width:700px){.event{grid-template-columns:74px 1fr}.event .btn{grid-column:1/-1}}

/* ---------- CTA band ---------- */
.cta{position:relative;background:var(--brand-900);color:#fff;isolation:isolate;overflow:hidden}
.cta::before{content:"";position:absolute;inset:0;z-index:-2;background:url("../img/bus.jpg") center 38%/cover no-repeat;opacity:1}
.cta::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(100deg,rgba(8,48,25,.86),rgba(12,88,44,.7))}
.cta .wrap{padding-block:clamp(30px,3.6vw,48px);position:relative}
.cta h2{color:#fff}
.cta p{color:#d4ecdf;max-width:60ch;margin-inline:auto}

/* ---------- Accordion ---------- */
.acc{border:1px solid var(--line);border-radius:var(--r);background:#fff;overflow:hidden;box-shadow:var(--shadow-sm)}
.acc+.acc{margin-top:14px}
.acc summary{
  cursor:pointer;list-style:none;padding:13px 48px 13px 17px;font-weight:700;color:var(--ink);
  position:relative;font-size:1.02rem;transition:background .25s;
}
.acc summary::-webkit-details-marker{display:none}
.acc summary:hover{background:var(--cream)}
.acc summary::after{
  content:"+";position:absolute;right:22px;top:50%;transform:translateY(-50%);
  width:28px;height:28px;border-radius:50%;background:var(--brand-100);color:var(--brand);
  display:grid;place-items:center;font-size:1.15rem;font-weight:700;transition:transform .3s,background .3s;
}
.acc[open] summary::after{content:"\2212";background:var(--brand);color:#fff}
.acc .acc-body{padding:0 17px 15px;color:var(--body)}
.acc .acc-body p:last-child{margin-bottom:0}

/* ---------- Timeline ---------- */
.timeline{position:relative;padding-left:34px;margin:0;list-style:none}
.timeline::before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--brand-300),var(--gold))}
.timeline li{position:relative;padding-bottom:17px}
.timeline li::before{content:"";position:absolute;left:-32px;top:6px;width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid var(--brand);box-shadow:0 0 0 4px var(--brand-100)}
.timeline b{display:block;font-family:var(--ff-display);color:var(--gold-600);font-size:1.15rem}
.timeline h4{margin:2px 0 4px}
.timeline p{margin:0;font-size:.96rem;color:var(--muted)}

/* ---------- Table ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-sm);background:#fff}
table{width:100%;border-collapse:collapse;min-width:560px}
caption{text-align:left;padding:18px 22px 0;color:var(--muted);font-size:.9rem}
th,td{padding:9px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:.87rem}
thead th{background:var(--brand-800);color:#fff;font-weight:700;font-size:.82rem;letter-spacing:.09em;text-transform:uppercase;border-bottom:none}
tbody tr:nth-child(even){background:var(--cream)}
tbody tr:hover{background:var(--brand-100)}
td b{color:var(--ink)}

/* ---------- Gallery ---------- */
.filters{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:34px}
.filter{
  border:1px solid var(--line);background:#fff;color:var(--body);font-family:var(--ff-body);font-weight:700;
  font-size:.87rem;padding:10px 20px;border-radius:var(--r-pill);cursor:pointer;transition:all .25s;
}
.filter:hover{border-color:var(--brand-300);color:var(--brand-700)}
.filter.active{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 8px 20px -12px rgba(23,164,76,.9)}
/* ---------- Gallery ----------
   A curated mosaic. The school's photographs and its printed posters are
   different things, so they are shown differently: photographs are cropped
   to fill their cell, posters are shown whole on the school's green.
   To add a photograph, give the figure a name in .gal's grid-template-areas
   (or leave it unnamed — it will flow into a new row on its own).           */
.gal-note{
  display:flex;align-items:flex-start;gap:10px;margin-bottom:14px;
  padding:11px 15px;border-radius:var(--r);background:var(--brand-100);
  font-size:.86rem;line-height:1.5;color:var(--brand-800);
}
.gal-note .ico{flex:none;font-size:.98rem;line-height:1.4}

.gal{
  display:grid;gap:11px;
  grid-template-columns:repeat(3,minmax(0,1fr));
  grid-auto-rows:200px;
  grid-template-areas:
    "pupil bus    bus  "
    "pupil poster brand";
}
.gal figure{
  margin:0;position:relative;border-radius:var(--r);overflow:hidden;cursor:zoom-in;
  background:var(--brand-900);box-shadow:var(--shadow-sm);
  transition:transform .3s,box-shadow .3s;
}
.gal figure:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.gal figure:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.gal img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s cubic-bezier(.2,.8,.3,1)}
.gal figure:hover img{transform:scale(1.05)}

/* Named cells, each shaped like the picture that goes in it */
.g-pupil{grid-area:pupil}
.g-pupil img{object-position:center 22%}
.g-bus{grid-area:bus}
.g-poster{grid-area:poster}
.g-brand{grid-area:brand}

/* Printed posters are never cropped — they sit whole on the green */
.gal .is-poster img{object-fit:contain;padding:12px 12px 30px;transform:none}
.gal .is-poster:hover img{transform:none}

/* Zoom affordance */
.gal figure::after{
  content:"⤢";position:absolute;top:9px;right:9px;width:27px;height:27px;border-radius:50%;
  background:rgba(255,255,255,.94);color:var(--brand-800);display:grid;place-items:center;
  font-size:.78rem;font-weight:700;opacity:0;transform:scale(.75);transition:.25s;
}
.gal figure:hover::after,.gal figure:focus-visible::after{opacity:1;transform:none}

/* Captions stay readable without having to hover, and only shade the bottom strip */
.gal figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:22px 13px 10px;color:#fff;
  font-size:.83rem;font-weight:600;line-height:1.35;
  background:linear-gradient(transparent,rgba(7,45,24,.82));
}
.gal figure.hide{display:none}

@media (max-width:1279px){.gal{grid-auto-rows:220px}}
@media (max-width:640px){
  .gal{grid-template-columns:1fr;grid-template-areas:none;grid-auto-rows:auto;gap:10px}
  .gal figure{grid-area:auto}
  .g-pupil{aspect-ratio:4/5}
  .g-bus{aspect-ratio:16/9}
  .gal .is-poster{aspect-ratio:5/4}
}

.lightbox{position:fixed;inset:0;background:rgba(10,61,32,.94);display:grid;place-items:center;padding:24px;z-index:200;opacity:0;pointer-events:none;transition:opacity .3s}
.lightbox.open{opacity:1;pointer-events:auto}
.lightbox img{max-width:min(1000px,92vw);max-height:80vh;border-radius:var(--r);box-shadow:var(--shadow-lg)}
.lightbox p{color:#e7f5ec;text-align:center;margin:16px 0 0;font-size:.95rem}
.lb-close{position:absolute;top:22px;right:26px;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:transparent;color:#fff;font-size:1.4rem;cursor:pointer;transition:.25s}
.lb-close:hover{background:#fff;color:var(--brand-800)}

/* ---------- Forms ---------- */
.form{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:clamp(16px,2.2vw,26px);box-shadow:var(--shadow)}
.field{margin-bottom:13px}
.field label{display:block;font-weight:700;font-size:.88rem;color:var(--ink);margin-bottom:7px}
.field label .req{color:#c0392b}
.field input,.field select,.field textarea{
  width:100%;font-family:var(--ff-body);font-size:.97rem;color:var(--ink);
  padding:13px 16px;border:1px solid var(--line);border-radius:12px;background:var(--cream);
  transition:border-color .25s,box-shadow .25s,background .25s;
}
.field textarea{min-height:140px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--brand-300);background:#fff;box-shadow:0 0 0 4px rgba(134,217,165,.25);
}
.field .err{display:none;color:#c0392b;font-size:.82rem;margin-top:6px;font-weight:600}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:#e0a3a3;background:#fdf6f6}
.field.invalid .err{display:block}
.form-note{font-size:.85rem;color:var(--muted);margin-top:14px}
.form-ok{display:none;background:var(--brand-100);border:1px solid var(--brand-300);color:var(--brand-800);padding:16px 20px;border-radius:12px;font-weight:600;margin-bottom:20px}
.form-ok.show{display:block}
.two{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
@media (max-width:620px){.two{grid-template-columns:1fr}}

/* ---------- Contact tiles ---------- */
.ctile{display:flex;gap:18px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:24px;box-shadow:var(--shadow-sm);height:100%;transition:transform .3s,box-shadow .3s}
.ctile:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.ctile .icon{margin:0;width:50px;height:50px;font-size:1.3rem;flex:none}
.ctile h4{margin-bottom:4px}
.ctile p{margin:0;font-size:.95rem;color:var(--muted)}
.ctile a{color:var(--brand-700);font-weight:600}

.map{border:0;width:100%;height:420px;border-radius:var(--r-lg);box-shadow:var(--shadow);display:block}

/* ---------- Footer ---------- */
.footer{background:var(--brand-900);color:#b9dcc7;padding-block:clamp(30px,3.6vw,46px) 0;font-size:.9rem}
.footer h4{color:#fff;font-family:var(--ff-body);font-size:.86rem;letter-spacing:.16em;text-transform:uppercase;margin-bottom:18px}
.footer a{color:#b9dcc7}
.footer a:hover{color:var(--gold-300)}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.4fr;gap:clamp(26px,4vw,50px)}
@media (max-width:900px){.footer-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.footer-grid{grid-template-columns:1fr}}
.footer .brand b{color:#fff}
.footer .brand span{color:#93b8a3}
.footer ul{list-style:none;display:grid;gap:11px}
.footer .fcontact li{display:flex;gap:12px;align-items:flex-start}
.footer .ico{color:var(--gold-300);flex:none;margin-top:2px}
.socials{display:flex;gap:10px;margin-top:20px}
.socials a{
  width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.22);
  display:grid;place-items:center;color:#d5ecdf;font-size:.9rem;font-weight:700;transition:.25s;
}
.socials a:hover{background:var(--gold);border-color:var(--gold);color:#331200;transform:translateY(-3px)}
.newsletter{display:flex;gap:8px;margin-top:16px}
.newsletter input{flex:1;min-width:0;padding:12px 16px;border-radius:var(--r-pill);border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.07);color:#fff;font-family:var(--ff-body);font-size:.9rem}
.newsletter input::placeholder{color:#93b8a3}
.newsletter input:focus{outline:none;border-color:var(--gold-300)}
.footer-bottom{margin-top:clamp(36px,5vw,54px);border-top:1px solid rgba(255,255,255,.13);padding-block:22px;display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between;font-size:.85rem;color:#93b8a3}
.footer-bottom ul{display:flex;gap:20px;list-style:none}

/* ---------- Reveal animation ---------- */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.8,.3,1),transform .7s cubic-bezier(.2,.8,.3,1)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}.reveal.d4{transition-delay:.32s}

/* ---------- Back to top ---------- */
.totop{
  position:fixed;right:22px;bottom:22px;width:48px;height:48px;border-radius:50%;border:none;
  background:var(--brand);color:#fff;font-size:1.1rem;cursor:pointer;box-shadow:var(--shadow);
  opacity:0;pointer-events:none;transform:translateY(12px);transition:.3s;z-index:90;
}
.totop.show{opacity:1;pointer-events:auto;transform:none}
.totop:hover{background:var(--gold);color:#331200}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
  .reveal{opacity:1;transform:none}
}

/* ---------- Media badge + caption (contact "find us") ---------- */
.media-badge{
  position:absolute;left:16px;top:16px;display:flex;align-items:center;gap:10px;
  background:rgba(255,255,255,.95);border-radius:var(--r-pill);padding:7px 18px 7px 8px;
  box-shadow:var(--shadow);backdrop-filter:blur(6px);
}
.media-badge img{width:34px;height:auto;flex:none;box-shadow:none;border-radius:0}
.media-badge b{font-family:var(--ff-body);font-size:.82rem;font-weight:700;color:var(--brand-800);line-height:1.2}
.media-cap{margin-top:14px;font-size:.9rem;color:var(--muted)}
.map--split{height:100%;min-height:340px;flex:1}
@media (max-width:880px){.map--split{min-height:300px}}

/* =========================================================
   DENSE LAYER — compact, information-first components
   ========================================================= */

section[id]{scroll-margin-top:84px}

/* Section heading with rule + "see more" on the right */
.bar-head{display:flex;align-items:center;gap:14px;margin-bottom:16px;border-bottom:2px solid var(--line);padding-bottom:8px;flex-wrap:wrap}
.bar-head h2{margin:0;font-size:clamp(1.15rem,1.9vw,1.5rem);position:relative;padding-left:13px}
.bar-head h2::before{content:"";position:absolute;left:0;top:.16em;bottom:.16em;width:4px;background:var(--gold);border-radius:2px}
.bar-head .sub{font-size:.85rem;color:var(--muted)}
.bar-head .more{margin-left:auto;font-size:.8rem;font-weight:700;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}

/* Key-facts strip */
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.facts div{background:#fff;padding:11px 14px}
.facts b{display:block;font-family:var(--ff-display);font-size:1.25rem;color:var(--brand);line-height:1.2}
.facts span{font-size:.76rem;color:var(--muted)}
@media (max-width:700px){.facts{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Content + sidebar */
.with-side{display:grid;grid-template-columns:minmax(0,1fr) 316px;gap:clamp(16px,2vw,26px);align-items:start}
@media (max-width:920px){.with-side{grid-template-columns:1fr}}
.side{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:15px 16px;box-shadow:var(--shadow-sm)}
.side+.side{margin-top:13px}
.side h4{margin:0 0 11px;font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;color:var(--brand);padding-bottom:7px;border-bottom:1px solid var(--line)}
.side ul{list-style:none;display:grid;gap:8px}
.side li{font-size:.86rem;padding-bottom:8px;border-bottom:1px dashed var(--line);display:flex;gap:9px;align-items:flex-start}
.side li:last-child{border-bottom:0;padding-bottom:0}
.side li b{color:var(--ink)}
.side .ico{color:var(--gold-600);flex:none}

/* News rows (list style) */
.newsrow{display:grid;grid-template-columns:104px minmax(0,1fr);gap:12px;padding:11px 0;border-bottom:1px solid var(--line);align-items:start}
.newsrow:first-of-type{padding-top:0}
.newsrow:last-of-type{border-bottom:0}
.newsrow img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;transition:opacity .25s}
.newsrow:hover img{opacity:.85}
.newsrow h3{font-size:.98rem;margin:0 0 4px;line-height:1.32}
.newsrow p{margin:0;font-size:.85rem;color:var(--muted)}
.newsrow .meta{margin-top:6px;font-size:.74rem;color:var(--muted);display:flex;gap:9px;flex-wrap:wrap;align-items:center}
.newsrow .meta b{color:var(--brand);font-size:.68rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}

/* Chips */
.chips{display:flex;flex-wrap:wrap;gap:7px;list-style:none}
.chips li{background:#fff;border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 13px;font-size:.83rem;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:7px;transition:border-color .2s,color .2s}
.chips li:hover{border-color:var(--brand-300);color:var(--brand-700)}

/* Definition rows (class/age/fees at a glance) */
.deflist{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff;margin:0}
.deflist>div{display:grid;grid-template-columns:170px minmax(0,1fr);gap:12px;padding:9px 14px;border-bottom:1px solid var(--line);font-size:.88rem}
.deflist>div:nth-child(even){background:var(--cream)}
.deflist>div:last-child{border-bottom:0}
.deflist dt{margin:0;font-weight:700;color:var(--ink)}
.deflist dd{margin:0;color:var(--body)}
@media (max-width:560px){.deflist>div{grid-template-columns:1fr;gap:2px}}

/* Tighter list rhythm */
.tick-list{gap:8px;margin-bottom:18px}
.card h3{margin-bottom:5px}
.card p{font-size:.9rem}
.sec-head p{font-size:.95rem}

/* Compact hero facts */
.hero-scroll{margin-top:clamp(20px,2.6vw,30px);padding-top:16px;gap:clamp(16px,3vw,32px)}
.hero-scroll b{font-size:1.4rem}
.hero-card ul{gap:9px;margin:13px 0 15px}
.hero-card li{font-size:.89rem}
.hero-badge{margin-bottom:14px;padding:6px 15px;font-size:.72rem}
.hero p{font-size:1.02rem}

/* =========================================================
   THREE-COLUMN SHELL — left rail / content / right rail
   Nothing is left empty: rails carry promos, adverts and quick info.
   ========================================================= */

.shell{
  display:grid;
  grid-template-columns:212px minmax(0,1fr) 304px;
  gap:clamp(12px,1.3vw,20px);
  align-items:start;
}
.shell-main{min-width:0}
.rail{display:grid;gap:12px;align-content:start;min-width:0}
.rail--left{
  position:sticky;top:84px;
  max-height:calc(100vh - 96px);overflow-y:auto;overscroll-behavior:contain;
  padding-right:4px;scrollbar-width:thin;scrollbar-color:var(--brand-300) transparent;
}
.rail--left::-webkit-scrollbar{width:6px}
.rail--left::-webkit-scrollbar-thumb{background:var(--brand-300);border-radius:99px}
.rail--left::-webkit-scrollbar-track{background:transparent}

@media (max-width:1279px){
  .shell{grid-template-columns:minmax(0,1fr) 300px}
  .rail--left{display:none}
}
@media (max-width:940px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .rail--right{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:620px){
  .rail--right{grid-template-columns:1fr}
}

/* Content blocks inside the middle column */
.block{padding-block:clamp(16px,2.2vw,28px)}
.block:first-child{padding-top:clamp(10px,1.4vw,18px)}
.block+.block{border-top:1px solid var(--line)}


/* ---------- School's own promo boxes ---------- */
.promo{
  border-radius:var(--r);padding:16px;color:#fff;box-shadow:var(--shadow-sm);
  background:linear-gradient(135deg,var(--brand-800),var(--brand));
}
.promo h4{color:#fff;margin:0 0 5px;font-size:1rem;font-family:var(--ff-display);font-weight:600}
.promo p{margin:0 0 12px;font-size:.84rem;color:#cfe9d9;line-height:1.5}
.promo .btn{width:100%;padding:9px 14px;font-size:.82rem}
.promo--gold{background:linear-gradient(135deg,var(--gold),#ffa96a)}
.promo--gold h4{color:#331200}
.promo--gold p{color:#553f00}
.promo--line{background:#fff;border:1px solid var(--line);color:var(--body)}
.promo--line h4{color:var(--ink)}
.promo--line p{color:var(--muted)}

/* Left-rail mini navigation */
.railnav ul{list-style:none;display:grid;gap:2px}
.railnav a{display:block;padding:7px 10px;border-radius:8px;font-size:.86rem;font-weight:600;color:var(--ink)}
.railnav a:hover{background:var(--brand-100);color:var(--brand-700)}
.railnav a.active{background:var(--brand);color:#fff}

/* ---------- Left-rail announcements board ---------- */
.side--ann h4{display:flex;align-items:center;gap:7px}
.live-dot{
  width:7px;height:7px;border-radius:50%;background:var(--gold);flex:none;
  box-shadow:0 0 0 0 rgba(240,135,58,.55);animation:livepulse 2.4s ease-out infinite;
}
@keyframes livepulse{
  70%{box-shadow:0 0 0 7px rgba(240,135,58,0)}
  100%{box-shadow:0 0 0 0 rgba(240,135,58,0)}
}
@media (prefers-reduced-motion:reduce){.live-dot{animation:none}}
.side .annlist{list-style:none;display:block;margin:0;padding:0}
.side .annlist li{display:block;padding:11px 0;border-bottom:1px dashed var(--line);font-size:inherit;gap:0}
.side .annlist li:first-child{padding-top:0}
.side .annlist li:last-child{border-bottom:0;padding-bottom:0}
.anntag{
  display:inline-block;font-size:.62rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--brand);background:var(--brand-100);padding:3px 8px;border-radius:var(--r-pill);margin-bottom:6px;
}
.anntag--gold{color:var(--gold-600);background:var(--gold-100)}
.annlist h5{margin:0 0 3px;font-family:var(--ff-body);font-size:.85rem;line-height:1.35;font-weight:700}
.annlist h5 a{color:var(--ink);display:block}
.annlist li:hover h5 a{color:var(--brand-700)}
.annlist p{margin:0;font-size:.76rem;line-height:1.45;color:var(--muted)}
.ann-all{display:flex;align-items:center;gap:6px;margin-top:13px;font-size:.78rem;font-weight:700;color:var(--brand-700)}
.ann-all:hover{color:var(--gold-600)}


/* Full-bleed sections keep their own inner wrap */
.hero .wrap,.stats .wrap,.cta .wrap,.page-hero .wrap{max-width:1660px}

/* Brand lockup — motto in the logo's orange italic */
.brand span span{text-transform:none;letter-spacing:.01em;font-style:italic;font-size:.78rem;color:var(--gold-600);font-weight:600}
.brand img{width:54px}
@media (max-width:520px){.brand b{font-size:1rem}.brand span span{font-size:.7rem}.brand img{width:44px}}

/* =========================================================
   SLIDER — horizontal, snap-scrolling carousel (news, notices)
   ========================================================= */
.slider{position:relative}
.slider-track{
  display:grid;grid-auto-flow:column;grid-auto-columns:minmax(250px,86%);
  gap:12px;overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  padding:2px 2px 10px;scrollbar-width:thin;scrollbar-color:var(--brand-300) transparent;
}
.slider-track::-webkit-scrollbar{height:7px}
.slider-track::-webkit-scrollbar-thumb{background:var(--brand-300);border-radius:99px}
.slider-track::-webkit-scrollbar-track{background:var(--line);border-radius:99px}
.slider-track>*{scroll-snap-align:start}
@media (min-width:640px){.slider-track{grid-auto-columns:minmax(240px,calc(50% - 6px))}}
@media (min-width:1060px){.slider-track{grid-auto-columns:minmax(240px,calc(33.333% - 8px))}}

.slider-nav{display:flex;gap:6px;margin-left:auto}
.sbtn{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff;
  color:var(--brand);cursor:pointer;display:grid;place-items:center;font-size:.95rem;font-weight:800;
  transition:background .2s,color .2s,border-color .2s,opacity .2s;
}
.sbtn:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.sbtn[disabled]{opacity:.35;cursor:default;background:#fff;color:var(--muted);border-color:var(--line)}
.slider-dots{display:flex;gap:6px;justify-content:center;margin-top:10px}
.dot-btn{width:8px;height:8px;padding:0;border-radius:50%;border:0;background:var(--line);cursor:pointer;transition:.25s}
.dot-btn.on{background:var(--brand);width:22px;border-radius:99px}

/* ---------- Promo formats (the school's own announcements) ---------- */
.promo--band{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 18px}
.promo--band .pi{font-size:1.5rem;line-height:1}
.promo--band h4{margin:0 0 2px}
.promo--band p{margin:0}
.promo--band .btn{width:auto;white-space:nowrap}
@media (max-width:760px){
  .promo--band{grid-template-columns:auto minmax(0,1fr);row-gap:10px}
  .promo--band .btn{grid-column:1/-1;width:100%}
}
.promo--tall{display:flex;flex-direction:column;gap:11px}
.promo--tall ol{margin:0;padding:0;list-style:none;display:grid;gap:11px;flex:1;align-content:start}
.promo--tall li{display:flex;gap:9px;font-size:.83rem;line-height:1.45;color:#e3f4e9}
.promo--tall .n{flex:none;width:23px;height:23px;border-radius:50%;background:var(--gold);color:#331200;display:grid;place-items:center;font-size:.68rem;font-weight:800}
.promo--tall p{color:#e3f4e9}
.promo--line .promo--tall li,.promo--line p{color:var(--muted)}
.promo h4 span[aria-hidden]{margin-right:5px}

/* Full-width row inside the shell (spans left rail + content + right rail) */
.shell>.full{grid-column:1/-1;border-top:1px solid var(--line);margin-top:4px}
@media (min-width:1400px){.slider-track{grid-auto-columns:minmax(240px,calc(25% - 9px))}}
