/*
Theme Name: Education Incorporated
Theme URI: https://educationincorporated.co.za
Author: Education Incorporated
Description: Direct port of the EduInc-Website-Redesign static site into a WordPress block theme.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 7.0.2
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: eduinc
*/

*, *::before, *::after{ box-sizing:border-box; }

.wp-site-blocks > footer,
.wp-site-blocks > header {
  margin-block-start: 0;
}
.wp-site-blocks > main {
  margin: 0;
}

/* ============================================================
   Everything below is ported verbatim from
   EduInc-Website-Redesign/styles.css
   ============================================================ */

:root{
  --bg:#0F172A;
  --surface:#16213A;
  --surface-2:#1C2B4A;
  --ink:#ECF1FA;
  --muted:#9FB0C9;
  --navy:#6D93D6;
  --navy-fill:#1E4085;
  --navy-strong:#FFFFFF;
  --indigo:#26529E;
  --indigo-light:color-mix(in srgb, var(--indigo) 35%, white);
  --purple:#808285;
  --line:#27395C;
  --shadow: 0 18px 44px -18px rgba(0,0,0,.55);
  --font-display:Montserrat,"Century Gothic","Poppins","Segoe UI",sans-serif;
  --font-body:Outfit,"Segoe UI","Century Gothic","Avenir Next",sans-serif;
  --house-phoenix:#c0392b;
  --house-griffin:#c99a2e;
  --house-pegasus:#7e3ec9;
  --house-dragon:#1e8f5a;
}

.founders-story{
  border:1px solid var(--line); background:var(--surface); box-shadow:var(--shadow);
  padding:2rem clamp(1.25rem,4vw,2.5rem); border-radius:12px; margin-bottom:3rem;
}

html{ scroll-behavior:smooth; background:var(--bg); color-scheme:dark; overflow-x:clip; max-width:100%; }
body{
  background:var(--bg); color:var(--ink);
  font-family:var(--font-body);
  font-size:16px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip; max-width:100%;
}
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

h1,h2,h3{ font-family:var(--font-display); font-weight:600; text-wrap:balance; margin:0; }
p{ margin:0; }
a{ color:inherit; }
::selection{ background:var(--navy); color:#fff; }
:focus-visible{ outline:2px solid var(--navy); outline-offset:3px; border-radius:2px; }

.wrap{ max-width:1160px; margin:0 auto; padding-inline:1.75rem; }
.eyebrow{
  display:inline-flex; align-items:center; gap:.55rem; flex-wrap:wrap; max-width:100%;
  font-family:var(--font-body); font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--navy-strong); font-weight:600; overflow-wrap:break-word;
}
.eyebrow > *{ min-width:0; }
.eyebrow::before{ content:none; }
.hairline{ height:1px; background:var(--line); border:0; margin:0; }
.lede{ font-size:1.2rem; color:var(--muted); max-width:38ch; line-height:1.55; }
.body-copy{ max-width:60ch; color:var(--muted); font-size:1.02rem; }

.btn{
  display:inline-flex; align-items:center; gap:.5rem;
  font-family:var(--font-body); font-size:.92rem; font-weight:600; letter-spacing:.02em;
  padding:.85rem 1.5rem; border-radius:3px; border:1px solid transparent;
  text-decoration:none; cursor:pointer; transition:transform .15s ease, box-shadow .15s ease, opacity .15s ease;
  white-space:nowrap;
}
.btn:hover{ transform:translateY(-1px); }
.btn-primary{ background:var(--navy-fill); color:#fff; }
.btn-primary:hover{ background:var(--navy-strong); color:var(--navy-fill); }
.btn-ghost{ background:transparent; border-color:currentColor; color:inherit; }
.btn-ghost:hover{ opacity:.75; color:inherit; border-color:currentColor; }
.btn-primary-onBlue{ background:#fff; color:#1e4085; }
.btn-primary-onBlue:hover{ background:#ECF1FA; color:#1e4085; }

.crest{ display:block; }
.crest .stroke{ fill:none; stroke:var(--navy-strong); stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
[id]{ scroll-margin-top:96px; }
/* The wp:template-part wrapper WordPress renders around header.html (an outer
   <header class="wp-block-template-part">) shrink-wraps to the header's own height,
   which gives position:sticky on header.site itself nowhere to "float" - its
   containing block ends exactly where it does, so it scrolls away instead of
   sticking. Sticky has to live on that outer wrapper instead, whose containing
   block (.wp-site-blocks) spans the full page. */
header.wp-block-template-part:has(> header.site){
  position:sticky; top:0; z-index:50;
}
header.site{
  background:var(--bg);
  background:color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.wrap.nav-row{ max-width:1400px; }
.nav-row{ display:flex; align-items:center; justify-content:space-between; padding-block:.85rem; gap:1rem; }
.brand{ display:flex; align-items:center; gap:.6rem; text-decoration:none; color:var(--ink); }
.brand-crest{ object-fit:contain; flex-shrink:0; }
.brand .wordmark{ font-family:var(--font-display); font-size:1.05rem; letter-spacing:.02em; }
.brand .wordmark small{ display:block; font-family:var(--font-body); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); font-weight:600; }
nav.primary{ display:flex; align-items:center; gap:1.5rem; flex-wrap:wrap; }
nav.primary a{ font-size:.88rem; text-decoration:none; color:var(--ink); opacity:.85; position:relative; }
nav.primary a:hover, nav.primary a[aria-current="page"]{ opacity:1; }
nav.primary a[aria-current="page"]{ color:var(--navy); font-weight:600; }
.nav-cta{ display:flex; align-items:center; gap:.7rem; }
.nav-item-dropdown{ position:relative; display:inline-flex; align-items:center; }
.nav-item-dropdown > a::after{
  content:''; display:inline-block; width:6px; height:6px; margin-left:.4rem; margin-bottom:1px;
  border-right:2px solid currentColor; border-bottom:2px solid currentColor;
  transform:rotate(45deg); opacity:.6; transition:transform .18s ease;
}
.nav-item-dropdown:hover > a::after,
.nav-item-dropdown:focus-within > a::after{ transform:rotate(225deg) translate(1px,1px); }
.nav-dropdown-panel{
  position:absolute; top:100%; left:50%; transform:translate(-50%,-6px); min-width:200px;
  background:var(--surface); border:1px solid var(--line); border-radius:8px;
  box-shadow:0 14px 32px rgba(0,0,0,.18); padding:.6rem;
  display:flex; flex-direction:column; gap:.3rem;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .18s ease, transform .18s ease; z-index:80;
}
.nav-dropdown-divider{ height:1px; background:var(--line); margin:.3rem .4rem; }
@media (max-width:900px){ .nav-dropdown-divider{ display:none; } }
.nav-item-dropdown:hover .nav-dropdown-panel,
.nav-item-dropdown:focus-within .nav-dropdown-panel{
  opacity:1; visibility:visible; pointer-events:auto; transform:translate(-50%,0);
}
.nav-dropdown-panel a{ padding:.55rem .7rem !important; border-radius:5px; font-size:.85rem; white-space:nowrap; opacity:.85; }
.nav-dropdown-panel a:hover{ background:var(--surface-2); opacity:1; }
.nav-dropdown-toggle{ display:none; }
#nav-toggle{ display:none; }
.burger{ display:none; cursor:pointer; padding:.4rem; }
.burger span{ display:block; width:22px; height:2px; background:var(--ink); margin:5px 0; }

@media (max-width: 900px){
  .nav-row{ flex-wrap:wrap; }
  nav.primary{
    position:absolute; top:100%; left:0; right:0; background:var(--surface);
    flex-direction:column; flex-wrap:nowrap; align-items:flex-start; gap:0; border-bottom:1px solid var(--line);
    max-height:0; overflow:hidden; transition:max-height .25s ease;
  }
  nav.primary a{ padding:.9rem 1.75rem; width:100%; border-top:1px solid var(--line); }
  #nav-toggle:checked ~ nav.primary{ max-height:90vh; overflow-y:auto; }
  .burger{ display:block; }
  .nav-item-dropdown{ display:flex; flex-direction:column; align-items:stretch; width:100%; position:relative; flex-wrap:wrap; }
  .nav-item-dropdown > a{ flex:1 1 auto; padding-right:3.5rem !important; }
  .nav-item-dropdown > a::after{ display:none; }
  .nav-dropdown-toggle{
    display:flex; align-items:center; justify-content:center;
    position:absolute; top:0; right:0; width:3.2rem; height:3.2rem;
    background:none; border:none; border-top:1px solid var(--line); cursor:pointer; padding:0;
  }
  .nav-dropdown-toggle::after{
    content:''; width:9px; height:9px;
    border-right:2px solid var(--ink); border-bottom:2px solid var(--ink);
    transform:rotate(45deg); transition:transform .2s ease; opacity:.7;
  }
  .nav-item-dropdown.open .nav-dropdown-toggle::after{ transform:rotate(225deg); }
  .nav-dropdown-panel,
  .nav-item-dropdown:hover .nav-dropdown-panel,
  .nav-item-dropdown:focus-within .nav-dropdown-panel{
    position:static; opacity:1; visibility:visible; pointer-events:auto; transform:none;
    background:transparent; border:none; box-shadow:none; border-radius:0; margin:0; padding:0;
    max-height:0; overflow:hidden; transition:max-height .25s ease;
  }
  .nav-item-dropdown.open .nav-dropdown-panel{ max-height:60vh; }
  .nav-dropdown-panel a{ padding:.7rem 1.75rem .7rem 3rem !important; border-top:1px solid var(--line); font-size:.82rem; }
}

@media (max-width:480px){
  .nav-row{ flex-wrap:wrap; }
  .nav-cta{ order:3; width:100%; flex-direction:column; }
  .nav-cta .btn{ width:100%; justify-content:center; }
}

.hero{
  background:linear-gradient(135deg, #2c56a3 0%, #1e4185 100%);
  color:#ECF1FA; position:relative; overflow:hidden;
}
.closing-band{
  background:linear-gradient(135deg, #2c56a3 0%, #1e4185 100%);
  color:#ECF1FA;
}
.closing-band .quote{ background:rgba(0,0,0,.18); border-left-color:#ECF1FA; color:#ECF1FA; }
.closing-band .quote cite{ color:#C7D2E3; }
.closing-band .hairline{ background:rgba(236,241,250,.25); }
.closing-band .motto{ color:#ECF1FA; }
.closing-band .motto span{ color:#C7D2E3; }
.closing-band .body-copy{ color:#C7D2E3; }
.hero-grid > *{ min-width:0; }
.hero-grid{
  display:grid; grid-template-columns:1.15fr .85fr; gap:3rem; align-items:center;
  padding-block:5.5rem 4.5rem;
}
@media (max-width:900px){ .hero-grid{ grid-template-columns:minmax(0,1fr); padding-block:3rem 3rem; } }
.hero h1{ font-size:clamp(2.5rem, 4.6vw, 4.1rem); line-height:1.08; margin-top:1.1rem; }
@media (max-width:480px){ .hero-linebreak{ display:none; } }
.hero h1 em{ font-style:italic; color:var(--navy-strong); font-family:var(--font-display); }
.hero .lede{ color:#C7D2E3; margin-top:1.3rem; max-width:42ch; }
.cta-row{ display:flex; gap:1rem; flex-wrap:wrap; }
.hero .cta-row{ margin-top:2.2rem; }
.hero-emblem{ display:flex; justify-content:center; }
.hero-emblem svg{ width:min(280px, 100%); height:auto; }
.hero-emblem .logo-crest{ width:min(260px, 100%); height:auto; display:block; margin:0 auto; filter:drop-shadow(0 8px 24px rgba(0,0,0,.35)); }
.motto{ text-align:center; margin-top:1rem; font-family:var(--font-display); font-style:italic; font-size:1.05rem; letter-spacing:.03em; color:var(--purple); }
.motto span{ display:block; font-family:var(--font-body); font-style:normal; font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; color:#C7D2E3; margin-top:.3rem; }
.triad{ font-family:var(--font-body); font-weight:600; font-size:1.05rem; letter-spacing:.01em; color:var(--navy-strong); margin-top:.9rem; }

.also-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.5rem; }
@media (max-width:700px){ .also-grid{ grid-template-columns:minmax(0,1fr); } }
.also-grid-3col{ grid-template-columns:repeat(3,1fr); }
@media (max-width:900px){ .also-grid-3col{ grid-template-columns:minmax(0,1fr); } }
.also-card{ display:flex; gap:1.25rem; background:var(--surface); border:1px solid var(--line); border-radius:4px; padding:1.5rem; align-items:flex-start; transition:transform .2s ease; }
.also-card:hover{ transform:translateY(-4px); }
.also-card .icon{ flex:none; width:44px; height:44px; border-radius:50%; display:flex; align-items:center; justify-content:center; background:var(--surface-2); border:1px solid var(--line); }
.also-card h3{ font-size:1.02rem; }
.also-card p{ color:var(--muted); font-size:.9rem; margin-top:.5rem; }
.also-card a.cta-link{ display:inline-block; margin-top:.75rem; color:var(--navy-strong); font-weight:600; font-size:.9rem; text-decoration:none; }
.also-card a.cta-link:hover{ text-decoration:underline; }

.event-list{ display:grid; gap:1.25rem; }
.event-card{
  display:flex; gap:1.5rem; align-items:flex-start; background:var(--surface); border:1px solid var(--line);
  border-left:4px solid var(--line); border-radius:6px; padding:1.5rem;
  transition:transform .2s ease, box-shadow .2s ease, border-left-color .2s ease;
}
.event-card:hover{ transform:translateY(-4px); box-shadow:var(--shadow); }
.event-card.event-sports{ border-left-color:var(--navy); }
.event-card.event-community{ border-left-color:var(--indigo); }
.event-card.event-milestone{ border-left-color:var(--purple); }
.event-card.event-assembly{ border-left-color:var(--muted); }
.event-date{
  flex:none; width:72px; text-align:center; background:var(--surface-2); border:1px solid var(--line);
  border-radius:6px; padding:.6rem .4rem; font-family:var(--font-display);
}
.event-date .day{ display:block; font-size:1.6rem; line-height:1; color:var(--navy-strong); }
.event-date .month{ display:block; font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin-top:.2rem; }
.event-card h3{ font-size:1.05rem; display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; }
.event-tag{ font-size:.66rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase; padding:.2rem .55rem; border-radius:999px; }
.event-sports .event-tag{ background:color-mix(in srgb, var(--navy) 16%, transparent); color:var(--navy-strong); }
.event-community .event-tag{ background:color-mix(in srgb, var(--indigo) 14%, transparent); color:var(--indigo); }
.event-milestone .event-tag{ background:color-mix(in srgb, var(--purple) 14%, transparent); color:var(--purple); }
.event-assembly .event-tag{ background:color-mix(in srgb, var(--muted) 16%, transparent); color:var(--muted); }
.event-meta{ font-size:.82rem; color:var(--muted); margin-top:.25rem; }
.event-card p.event-desc{ color:var(--muted); font-size:.9rem; margin-top:.6rem; }
.event-app-note{
  display:flex; align-items:center; gap:.85rem; margin-top:2rem; padding:1.25rem 1.5rem;
  background:var(--surface-2); border:1px solid var(--line); border-radius:6px; font-size:.9rem; color:var(--muted);
}
.event-app-note a{ color:var(--navy); font-weight:600; text-decoration:none; }
.event-app-note a:hover{ text-decoration:underline; }

.clubs-days{
  border:2px solid var(--line); border-radius:8px; background:var(--surface);
  box-shadow:var(--shadow); overflow:hidden;
}
.clubs-day-group{ padding:1.75rem 2rem; border-top:1px solid var(--line); }
.clubs-day-group:first-child{ border-top:none; }
.clubs-day-group.clubs-group-alt{ background:color-mix(in srgb, var(--indigo) 5%, transparent); }
.clubs-day-heading{
  font-family:var(--font-display); font-size:.82rem; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:var(--navy-strong); margin-bottom:.9rem;
}
.clubs-day-sub{ color:var(--muted); font-weight:400; text-transform:none; letter-spacing:normal; }
.club-card{
  display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between;
  gap:.3rem 1.5rem; padding:1.1rem 0; border-top:1px solid var(--line);
  transition:background .15s ease;
}
.club-card:first-of-type{ border-top:none; padding-top:0; }
.club-main{ flex:1 1 220px; min-width:0; }
.club-name{ font-weight:600; display:block; }
.club-time{ display:block; font-size:.82rem; color:var(--muted); margin-top:.2rem; line-height:1.4; }
.club-cost{ flex:0 0 auto; min-width:0; color:var(--muted); font-variant-numeric:tabular-nums; font-size:.9rem; }
.club-coord{ flex:0 0 auto; min-width:0; font-size:.9rem; }
.club-coord a{ color:var(--navy-strong); font-weight:600; text-decoration:none; }
.club-coord a:hover{ text-decoration:underline; }
@media (max-width:560px){
  .club-cost, .club-coord{ flex-basis:100%; }
}

.event-calendar-embed{ border:1px solid var(--line); border-radius:6px; overflow:hidden; background:var(--surface); }
.event-calendar-embed iframe{ display:block; }
@media (max-width:480px){
  .event-card{ gap:1rem; padding:1.1rem; }
  .event-date{ width:58px; }
  .event-date .day{ font-size:1.3rem; }
  .event-app-note{ flex-direction:column; align-items:flex-start; gap:.5rem; }
}


.quote{
  margin-top:1.75rem; padding:1.1rem 1.4rem; border-left:3px solid var(--navy);
  background:var(--surface); border-radius:0 4px 4px 0; font-size:.95rem; color:var(--ink);
}
.quote cite{ display:block; margin-top:.6rem; font-size:.78rem; color:var(--muted); font-style:normal; }
.quote cite em{ font-style:italic; }

.faq-mini{ display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; margin-top:2rem; }
@media (max-width:800px){ .faq-mini{ grid-template-columns:minmax(0,1fr); } }
.faq-mini .q{ background:var(--surface); border:1px solid var(--line); border-radius:4px; padding:1.1rem 1.25rem; }
.faq-mini .q h4{ font-size:.92rem; }
.faq-mini .q p{ font-size:.85rem; color:var(--muted); margin-top:.4rem; }

.faq-accordion{ display:grid; gap:.6rem; margin-top:1.25rem; }
.faq-accordion details{
  background:var(--surface); border:1px solid var(--line); border-radius:6px;
  padding:0 1.25rem; transition:background .15s ease;
}
.faq-accordion details[open]{ background:var(--surface-2); }
.faq-accordion summary{
  list-style:none; cursor:pointer; padding:1rem 0; font-size:.92rem; font-weight:600;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
}
.faq-accordion summary::-webkit-details-marker{ display:none; }
.faq-accordion summary::after{
  content:''; flex:none; width:8px; height:8px;
  border-right:2px solid var(--navy-strong); border-bottom:2px solid var(--navy-strong);
  transform:rotate(225deg); transition:transform .2s ease;
}
.faq-accordion details[open] summary::after{ transform:rotate(45deg); }
.faq-accordion details p{ font-size:.85rem; color:var(--muted); margin:0 0 1.1rem; line-height:1.55; }

.faq-master{ border:1px solid var(--line); border-radius:8px; background:var(--surface); padding:0 1.5rem; }
.faq-master > summary{
  list-style:none; cursor:pointer; padding:1.5rem 0; display:flex; align-items:center; justify-content:space-between; gap:1rem;
}
.faq-master > summary::-webkit-details-marker{ display:none; }
.faq-master > summary::after{
  content:''; flex:none; width:11px; height:11px;
  border-right:3px solid var(--navy-strong); border-bottom:3px solid var(--navy-strong);
  transform:rotate(225deg); transition:transform .2s ease;
}
.faq-master[open] > summary::after{ transform:rotate(45deg); }
.faq-master-body{ padding-bottom:2rem; border-top:1px solid var(--line); padding-top:2rem; }
.pdf-mobile-cta{ display:none; width:100%; justify-content:center; text-align:center; }
@media (max-width:680px){
  .pdf-frame{ display:none; }
  .pdf-mobile-cta{ display:flex; }
}

.shop-filters{ display:flex; gap:.6rem; flex-wrap:wrap; margin:1.75rem 0 2rem; }
.shop-filter{
  border:1px solid var(--line); background:var(--surface); color:var(--muted);
  border-radius:999px; padding:.5rem 1.15rem; font-size:.82rem; font-weight:600;
  cursor:pointer; transition:background .2s ease, color .2s ease, border-color .2s ease;
}
.shop-filter:hover{ border-color:var(--navy-strong); color:var(--navy-strong); }
.shop-filter.active{ background:var(--navy-strong); border-color:var(--navy-strong); color:var(--bg); }

.gallery-item{
  break-inside:avoid; margin-bottom:1.25rem; border-radius:10px; overflow:hidden;
  position:relative; cursor:pointer; border:1px solid var(--line);
  transition:transform .25s ease, box-shadow .25s ease;
}
.gallery-item:hover{ transform:translateY(-4px); box-shadow:var(--shadow); }
.gallery-item img{ width:100%; display:block; }
.gallery-item .cap{
  position:absolute; left:0; right:0; bottom:0; padding:1.4rem 1rem .8rem;
  background:linear-gradient(0deg, rgba(0,0,0,.75), rgba(0,0,0,0));
  color:#fff; font-size:.82rem; font-weight:600; opacity:0; transition:opacity .2s ease;
}
.gallery-item:hover .cap{ opacity:1; }

.lightbox{
  position:fixed; inset:0; background:rgba(10,14,24,.92); z-index:100;
  display:none; align-items:center; justify-content:center; padding:2rem;
}
.lightbox.open{ display:flex; }
.lightbox img{ max-width:min(92vw, 1100px); max-height:80vh; border-radius:8px; display:block; }
.lightbox figcaption{ text-align:center; margin-top:1rem; color:#fff; font-size:.92rem; }
.lightbox-close, .lightbox-nav{
  position:absolute; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.3);
  color:#fff; border-radius:50%; width:44px; height:44px; display:flex; align-items:center; justify-content:center;
  cursor:pointer; font-size:1.3rem; line-height:1; transition:background .2s ease;
}
.lightbox-close:hover, .lightbox-nav:hover{ background:rgba(255,255,255,.25); }
.lightbox-close{ top:1.5rem; right:1.5rem; }
.lightbox-prev{ left:1.5rem; top:50%; transform:translateY(-50%); }
.lightbox-next{ right:1.5rem; top:50%; transform:translateY(-50%); }
@media (max-width:640px){ .lightbox-prev, .lightbox-next{ display:none; } }

.campus-carousel-wrap, .insta-carousel-wrap{ position:relative; margin-top:1.5rem; }
.campus-carousel-wrap::before, .campus-carousel-wrap::after,
.insta-carousel-wrap::before, .insta-carousel-wrap::after{
  content:""; position:absolute; top:0; bottom:0; width:48px; z-index:2; pointer-events:none;
}
.campus-carousel-wrap::before{ left:0; background:linear-gradient(90deg, var(--bg), transparent); }
.campus-carousel-wrap::after{ right:0; background:linear-gradient(270deg, var(--bg), transparent); }
.insta-carousel-wrap::before{ left:0; background:linear-gradient(90deg, var(--bg), transparent); }
.insta-carousel-wrap::after{ right:0; background:linear-gradient(270deg, var(--bg), transparent); }

#campus-carousel, #insta-carousel{
  display:flex; gap:1.25rem; overflow-x:auto; scroll-snap-type:x mandatory;
  scrollbar-width:none; -ms-overflow-style:none;
}
#campus-carousel::-webkit-scrollbar, #insta-carousel::-webkit-scrollbar{ display:none; }

.campus-slide{ flex:none; width:320px; scroll-snap-align:start; }
.campus-slide .gallery-item{ height:210px; }
.campus-slide .gallery-item img{ height:210px !important; }

.insta-slide{
  flex:none; width:170px; height:170px; scroll-snap-align:start;
  border-radius:6px; overflow:hidden; position:relative; display:block;
}
.insta-slide img{ width:100%; height:100%; object-fit:cover; display:block; }

.campus-nav, .insta-nav{
  position:absolute; top:50%; transform:translateY(-50%); z-index:3;
  width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:var(--surface-2); border:1px solid var(--line); color:var(--muted);
  cursor:pointer; font-size:1.3rem; line-height:1;
  transition:color .15s ease, background .15s ease, border-color .15s ease;
}
.campus-nav:hover, .insta-nav:hover{ color:var(--navy-strong); border-color:var(--navy); background:color-mix(in srgb, var(--navy) 16%, transparent); }
.campus-prev, .insta-prev{ left:-8px; }
.campus-next, .insta-next{ right:-8px; }
@media (max-width:700px){
  .campus-nav, .insta-nav{ display:none; }
  .campus-carousel-wrap::before, .campus-carousel-wrap::after,
  .insta-carousel-wrap::before, .insta-carousel-wrap::after{ width:24px; }
  /* On mobile, snap each slide to the centre of the viewport instead of
     flush-left ("start") - the current photo now sits centred with equal
     peeks of its neighbours on both sides, instead of the next photo
     always being cut off on the right with nothing showing on the left. */
  .campus-slide, .insta-slide{ scroll-snap-align:center; }
}

.campus-dots, .insta-dots{ display:flex; gap:.5rem; justify-content:center; margin-top:1.25rem; }
.campus-dot, .insta-dot{
  width:8px; height:8px; border-radius:50%; padding:0; border:none; cursor:pointer;
  background:var(--line); transition:background .2s ease, transform .2s ease;
}
.campus-dot.active, .insta-dot.active{ background:var(--navy-strong); transform:scale(1.3); }

.social-row{ display:flex; gap:.6rem; margin-top:1.1rem; }
.social-row a{
  width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:var(--surface-2); border:1px solid var(--line); color:var(--muted);
  transition:color .15s ease, background .15s ease, border-color .15s ease;
}
.social-row a:hover{ color:var(--navy-strong); background:var(--surface-2); background:color-mix(in srgb, var(--navy) 16%, transparent); border-color:var(--navy); }
.social-row svg{ width:17px; height:17px; }


.page-hero{
  background:linear-gradient(135deg, #2c56a3 0%, #1e4185 100%);
  color:#ECF1FA; padding-block:4rem 3.5rem;
}
.page-hero h1{ font-size:clamp(2.1rem, 3.6vw, 3rem); margin-top:.8rem; }
.page-hero .lede{ color:#C7D2E3; margin-top:1rem; }
.page-hero .eyebrow{ color:var(--navy-strong); }

.shop-hero{ padding-block:3.5rem 2rem; }
.shop-hero .wrap{ position:relative; }
.shop-toolbar{ position:absolute; top:0; right:1.75rem; display:flex; align-items:center; gap:1.1rem; }
.shop-toolbar a{ font-size:.85rem; color:#ECF1FA; opacity:.85; text-decoration:none; white-space:nowrap; }
.shop-toolbar a:hover{ opacity:1; }
@media (max-width:640px){
  .shop-toolbar{ position:static; margin-bottom:1.25rem; right:auto; }
}

.product-toolbar{ justify-content:flex-end; gap:1.1rem; padding-top:1.5rem; }
.product-toolbar a{ font-size:.85rem; color:var(--ink); opacity:.85; text-decoration:none; white-space:nowrap; }
.product-toolbar a:hover{ opacity:1; }
.shop-hero .lede{ max-width:56ch; }
.shop-hero .shop-filters{ margin:1.75rem 0 0; }
.shop-hero .shop-filter{ background:rgba(255,255,255,.06); border-color:rgba(255,255,255,.25); color:#ECF1FA; }
.shop-hero .shop-filter:hover{ border-color:#fff; color:#fff; }
.shop-hero .shop-filter.active{ background:#fff; border-color:#fff; color:var(--navy-fill); }
.shop-content .woocommerce-breadcrumb{ margin-top:1rem; }

.stat-strip{ background:var(--surface-2); border-bottom:1px solid var(--line); }
.stat-strip .wrap{ display:flex; gap:2.5rem; padding-block:1.1rem; flex-wrap:wrap; justify-content:center; }
.stat-chip{ display:flex; align-items:baseline; gap:.5rem; }
.stat-chip b{ font-family:var(--font-display); font-size:1.3rem; font-variant-numeric:tabular-nums; color:var(--navy); }
.stat-chip span{ font-size:.78rem; color:var(--muted); letter-spacing:.02em; }
@media (max-width:640px){
  .stat-strip .wrap{ display:grid; grid-template-columns:1fr 1fr; gap:.9rem 1.25rem; }
  .stat-chip{ flex-direction:column; align-items:flex-start; gap:.15rem; }
}

section{ padding-block:5.5rem; }
@media (max-width:700px){ section{ padding-block:3.5rem; } }
.section-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:2rem; margin-bottom:2.75rem; flex-wrap:wrap; }
.section-head h2{ font-size:clamp(1.8rem, 2.3vw, 2.5rem); margin-top:.6rem; }

.founders-note{ display:flex; flex-direction:column; gap:.75rem; max-width:420px; }
.founders-photos{ display:flex; }
.founder-photo{
  width:140px; height:90px; border-radius:10px; object-fit:cover;
  object-position:50% 25%;
  border:2px solid var(--bg);
}
.surface-alt{ background:var(--surface); }
/* One step deeper than .surface-alt — use this instead when the section contains
   cards that themselves use var(--surface), so the cards stay visible on the tint. */
.surface-deep{ background:var(--surface-2); }

.reveal{ opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .reveal{ opacity:1; transform:none; transition:none; } }

.pillars{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.5rem; }
@media (max-width:960px){ .pillars{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .pillars{ grid-template-columns:minmax(0,1fr); } }
.pillars-5{ grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); }
.values-heading{ font-size:.78rem; margin:2.5rem 0 1.25rem; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
.pillar{
  background:var(--surface); border:1px solid var(--line); border-radius:4px;
  padding:1.75rem 1.5rem; box-shadow:var(--shadow); transition:transform .2s ease;
}
.pillar:hover{ transform:translateY(-4px); }
.pillar .mark{ width:34px; height:34px; margin-bottom:1rem; }
.pillar h3{ font-size:1.08rem; }
.pillar p{ color:var(--muted); font-size:.94rem; margin-top:.55rem; }

.talent-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1.25rem; }
@media (max-width:900px){ .talent-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .talent-grid{ grid-template-columns:minmax(0,1fr); } }
.talent{
  position:relative; border:1px solid var(--line); border-radius:4px; padding:1.5rem;
  background:var(--surface); overflow:hidden;
}
.talent .disc{ font-family:var(--font-display); font-size:1.15rem; }
.talent .note{ color:var(--muted); font-size:.86rem; margin-top:.4rem; display:block; }
.talent-photo-wrap{ position:relative; width:92px; height:92px; margin-bottom:.75rem; }

.awards-hero{
  position:relative; overflow:hidden;
  background:radial-gradient(60% 90% at 50% 120%, rgba(231,180,73,.35) 0%, transparent 60%),
              linear-gradient(135deg, #2c56a3 0%, #1e4185 100%);
}
.awards-hero .eyebrow{ color:#E7B449; }
.award-icon{ width:15px; height:15px; vertical-align:-2px; margin-right:.4rem; display:inline-block; }

.stat-strip-gold .stat-chip b{ color:#E7B449; }

.award-board{
  position:relative; border:1px solid var(--line); border-radius:16px; padding:2.25rem 2.75rem;
  background:linear-gradient(180deg, var(--surface-2) 0%, var(--surface) 55%);
  box-shadow:0 20px 44px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.06);
  overflow:hidden;
}
.award-board::before{
  content:""; position:absolute; top:0; left:0; right:0; height:4px;
  background:linear-gradient(90deg, transparent, #E7B449, transparent);
}
.ambassadors-crest{
  display:block; width:52px; height:52px; object-fit:contain; margin:0 auto;
  filter:drop-shadow(0 3px 8px rgba(0,0,0,.18));
}
.ambassadors-heading, .duxlit-heading{
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:1rem;
  padding-bottom:1rem; margin-bottom:.9rem;
}
.ambassadors-heading{ border-bottom:1px solid color-mix(in srgb, var(--navy) 35%, transparent); }
.duxlit-heading{ border-bottom:1px solid color-mix(in srgb, var(--indigo) 35%, transparent); }
.ambassadors-heading span, .duxlit-heading span{
  font-family:var(--font-display); font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; font-size:.76rem;
}
.ambassadors-heading span{ color:var(--navy-strong); }
.duxlit-heading span{ color:var(--indigo); }
.ambassadors-heading .amb-h-boy, .duxlit-heading .duxlit-h-senior{ text-align:right; }
.ambassadors-heading .amb-h-girl, .duxlit-heading .duxlit-h-junior{ text-align:left; }

.ambassadors-list, .duxlit-list{ display:flex; flex-direction:column; }
.ambassadors-row, .duxlit-row{
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:1rem;
  padding:.8rem 1rem; border-radius:8px; margin:0 -1rem;
  transition:background-color .15s ease;
}
.ambassadors-row:nth-child(even), .duxlit-row:nth-child(even){
  background:rgba(255,255,255,.03);
}
.ambassadors-row:hover, .duxlit-row:hover{ background:color-mix(in srgb, var(--navy) 6%, transparent); }
.duxlit-row:hover{ background:color-mix(in srgb, var(--indigo) 6%, transparent); }

.ambassadors-row .amb-boy, .duxlit-senior{
  text-align:right; font-weight:600; font-size:.92rem; letter-spacing:.01em;
}
.ambassadors-row .amb-year, .duxlit-year{
  font-family:var(--font-display); font-weight:700;
  white-space:nowrap; font-size:.92rem; padding:.3rem 1.5rem;
  border-left:1px solid var(--line); border-right:1px solid var(--line);
}
.ambassadors-row .amb-year{ color:var(--navy-strong); }
.duxlit-year{ color:var(--indigo); }
.ambassadors-row .amb-girl{ text-align:left; font-weight:600; font-size:.92rem; letter-spacing:.01em; }
.ambassadors-row .amb-none{ color:var(--muted); font-weight:400; font-style:italic; font-size:.86rem; }
.duxlit-junior-group{ display:flex; flex-direction:column; gap:.25rem; text-align:left; }
.duxlit-junior{ font-weight:600; font-size:.92rem; letter-spacing:.01em; }

@media (max-width:520px){
  .award-board{ padding:1.75rem 1.25rem; }
  .ambassadors-heading, .duxlit-heading{ display:block; border-bottom:none; padding-bottom:0; margin-bottom:.3rem; }
  .ambassadors-heading .amb-h-boy, .ambassadors-heading .amb-h-girl,
  .duxlit-heading .duxlit-h-senior, .duxlit-heading .duxlit-h-junior{ display:none; }
  .ambassadors-row, .duxlit-row{
    grid-template-columns:minmax(0,1fr); text-align:center; gap:.25rem; padding:1rem; margin:0 -.5rem;
  }
  .ambassadors-row .amb-boy, .ambassadors-row .amb-girl, .duxlit-senior, .duxlit-junior-group{ text-align:center; }
  .ambassadors-row .amb-year, .duxlit-year{
    border:none; padding:0; order:-1; font-size:.78rem; color:var(--muted); font-weight:600;
  }
  /* The column headers ("Boy"/"Girl", "Senior"/"Junior") are hidden above since the
     table collapses to a single stacked column - without them there's nothing telling
     you which name is which. Re-add the same label as a small heading above each name. */
  .ambassadors-row .amb-boy::before, .ambassadors-row .amb-girl::before,
  .duxlit-senior::before, .duxlit-junior-group::before{
    display:block; font-family:var(--font-display); font-weight:700; letter-spacing:.1em;
    text-transform:uppercase; font-size:.66rem; margin-bottom:.25rem;
  }
  .ambassadors-row .amb-boy::before{ content:"Boy"; color:var(--navy-strong); }
  .ambassadors-row .amb-girl::before{ content:"Girl"; color:var(--navy-strong); }
  .duxlit-senior::before{ content:"Senior"; color:var(--indigo); }
  .duxlit-junior-group::before{ content:"Junior"; color:var(--indigo); }
}

.honours-heading{
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:1rem;
  padding-bottom:1rem; margin-bottom:.9rem;
  border-bottom:1px solid color-mix(in srgb, var(--purple) 35%, transparent);
}
.honours-heading span{
  font-family:var(--font-display); font-weight:700; letter-spacing:.12em;
  text-transform:uppercase; font-size:.76rem; color:var(--navy-strong);
}
.honours-heading .honours-h-year{ text-align:right; }
.honours-heading .honours-h-recognition{ text-align:left; }

.honours-list{ display:flex; flex-direction:column; }
.honours-row{
  display:grid; grid-template-columns:auto 1fr; gap:1.5rem; align-items:start;
  padding:1.1rem 1rem; border-radius:8px; margin:0 -1rem;
}
.honours-row:nth-child(even){ background:rgba(255,255,255,.03); }
.honours-year{
  font-family:var(--font-display); font-weight:700; color:var(--navy-strong);
  white-space:nowrap; font-size:.92rem; padding:.3rem 1.5rem; text-align:right;
  border-left:1px solid var(--line); border-right:1px solid var(--line);
}
.honours-names{ display:flex; flex-wrap:wrap; gap:.55rem; }
.honours-entry{
  display:inline-flex; align-items:center; gap:.4rem; font-size:.84rem;
  padding:.4rem .85rem; border-radius:999px; background:var(--surface);
  border:1px solid var(--line); color:var(--ink);
  transition:transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.honours-entry:hover{
  transform:translateY(-2px); border-color:#E7B449;
  box-shadow:0 6px 14px -6px rgba(231,180,73,.4);
}
.honours-entry::before{
  content:""; width:6px; height:6px; border-radius:50%; background:var(--purple); flex-shrink:0;
}
.honours-entry strong{ font-weight:700; }
@media (max-width:520px){
  .honours-heading{ display:block; border-bottom:none; padding-bottom:0; margin-bottom:.3rem; }
  .honours-heading .honours-h-year, .honours-heading .honours-h-recognition{ display:none; }
  .honours-row{ grid-template-columns:minmax(0,1fr); gap:.5rem; padding:1rem .5rem; margin:0 -.5rem; }
  .honours-year{ border:none; padding:0; font-size:.78rem; text-align:left; color:var(--navy-strong); font-weight:600; }
}

.visit{
  background:linear-gradient(135deg, #2c56a3 0%, #1e4185 100%);
  color:#ECF1FA; border-radius:6px; padding:3rem; display:grid;
  grid-template-columns:1.3fr 1fr; gap:2.5rem; align-items:center;
}
@media (max-width:800px){ .visit{ grid-template-columns:minmax(0,1fr); padding:2rem; } }
.visit h2{ font-size:clamp(1.7rem,2.4vw,2.2rem); }
.visit .eyebrow{ color:#ECF1FA; }
.visit .body-copy{ color:#C7D2E3; }
.visit-card{ background:rgba(15,23,42,.55); border:1px solid rgba(236,241,250,.25); border-radius:4px; padding:1.5rem; }
.visit-card .eyebrow{ color:#ECF1FA; }
.visit-card dl{ margin-top:1rem; display:grid; gap:.6rem; }
.visit-card dt{ font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:#C7D2E3; }
.visit-card dd{ margin:0; font-size:.95rem; color:#ECF1FA; }

.results-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:rgba(236,241,250,.15); border-radius:6px; overflow:hidden; }
@media (max-width:800px){ .results-grid{ grid-template-columns:repeat(2,1fr); } }
.results-grid-3col{ grid-template-columns:repeat(3,1fr); }
@media (max-width:640px){ .results-grid-3col{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:420px){ .results-grid-3col{ grid-template-columns:minmax(0,1fr); } }
.result-tile{ background:var(--navy-fill); background:color-mix(in srgb, var(--navy-fill) 88%, black 6%); padding:2rem 1.5rem; }
.result-tile .num{ font-family:var(--font-display); font-size:clamp(2.2rem,3.4vw,3.1rem); font-variant-numeric:tabular-nums; color:var(--navy-strong); line-height:1; }
.result-tile .cap{ font-size:.82rem; color:#C7D2E3; margin-top:.6rem; display:block; max-width:16ch; }

.steps{ display:grid; gap:1.1rem; margin-top:1.6rem; }
.step{ display:flex; gap:.9rem; }
.step .stepnum{ font-family:var(--font-display); color:var(--navy-strong); font-size:1rem; min-width:1.6rem; }
.step p{ font-size:.92rem; color:var(--muted); }
.step strong{ display:block; font-size:.98rem; color:var(--ink); margin-bottom:.15rem; }

.fee-wrap{ position:relative; overflow-x:auto; border:1px solid var(--line); border-radius:6px; background:var(--surface); }
.fee-scroll-hint{ display:none; }
table.fees{ width:100%; border-collapse:collapse; min-width:520px; font-size:.92rem; }
table.fees caption{ text-align:center; padding:1.1rem 1.25rem .3rem; font-size:.75rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
table.fees th, table.fees td{ padding:.85rem 1.25rem; text-align:left; border-top:1px solid var(--line); }
table.fees thead th{ font-size:.74rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); border-top:none; }
table.fees td.num, table.fees th.num{ text-align:right; font-variant-numeric:tabular-nums; }
table.fees tbody tr:hover{ background:var(--surface-2); }
@media (max-width:640px){
  .fee-wrap{ margin-inline:-.75rem; }
  table.fees{ min-width:0; }
  table.fees thead{ display:none; }
  table.fees, table.fees tbody, table.fees tr, table.fees th, table.fees td{ display:block; width:100%; min-width:0; }
  table.fees tr{ border-top:1px solid var(--line); padding:.9rem 1rem; }
  table.fees tr:first-child{ border-top:none; }
  table.fees th, table.fees td{ padding:.15rem 0; border-top:none; }
  table.fees td.num, table.fees th.num{ text-align:left; font-weight:700; font-size:1.05rem; color:var(--ink); }
  table.fees tr.fee-row > td.num{ display:none; }
  table.fees caption{ display:block; width:100%; text-align:center; padding-inline:1rem; }
  .fee-note{ padding-inline:1rem; }
}
.fee-note{ padding:1rem 1.25rem 1.25rem; font-size:.82rem; color:var(--muted); border-top:1px solid var(--line); }
.fee-note-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1rem 1.5rem; }
@media (max-width:520px){ .fee-note-grid{ grid-template-columns:minmax(0,1fr); } }
.fee-note-grid strong{ display:block; font-size:.74rem; letter-spacing:.06em; text-transform:uppercase; color:var(--indigo); margin-bottom:.25rem; }
.fee-note-grid p{ font-size:.85rem; color:var(--muted); margin:0; }

.fee-row-name{ display:flex; align-items:baseline; gap:.5rem; flex-wrap:wrap; cursor:pointer; }
.fee-hint{ font-size:.68rem; letter-spacing:.04em; text-transform:uppercase; color:var(--navy-strong); opacity:.75; }
.fee-row:hover .fee-hint, .fee-row.tap-open .fee-hint{ visibility:hidden; }
.fee-chevron{
  flex:none; width:8px; height:8px; margin-left:auto; align-self:center;
  border-right:2px solid var(--navy-strong); border-bottom:2px solid var(--navy-strong);
  transform:rotate(225deg); transition:transform .2s ease;
}
.fee-row:hover .fee-chevron, .fee-row.tap-open .fee-chevron{ transform:rotate(45deg); }
.fee-tooltip{
  max-height:0; overflow:hidden; opacity:0;
  transition:max-height .35s ease, opacity .25s ease, margin-top .35s ease;
}
.fee-row:hover .fee-tooltip, .fee-row.tap-open .fee-tooltip{ max-height:640px; opacity:1; margin-top:.9rem; }
.fee-tooltip strong{ display:block; font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; color:var(--indigo); margin-top:1rem; }
.fee-tooltip strong:first-child{ margin-top:0; }
.fee-tooltip strong span{ text-transform:none; letter-spacing:0; color:var(--muted); font-weight:400; }
.fee-tooltip dl{ display:grid; grid-template-columns:minmax(0,1fr); gap:.35rem; margin-top:.5rem; }
.fee-tooltip dl div{ display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.1rem 1rem; font-size:.85rem; }
.fee-tooltip dt{ color:var(--muted); font-weight:400; min-width:0; }
.fee-tooltip dd{ font-variant-numeric:tabular-nums; font-weight:600; text-align:right; }
.fee-tooltip-note{ font-size:.78rem; color:var(--muted); margin-top:.9rem; padding-top:.75rem; border-top:1px solid var(--line); }

.badge-row{ display:flex; gap:.75rem; flex-wrap:wrap; align-items:center; }
.badge{ border:1px solid var(--line); border-radius:999px; padding:.4rem 1rem; font-size:.78rem; color:var(--muted); letter-spacing:.03em; }
.badge-logo{
  display:inline-flex; align-items:center; justify-content:center;
  background:#fff; border-radius:8px; padding:.5rem .9rem; height:48px;
}
.badge-row .badge-logo img{ height:32px; width:auto; max-width:130px; object-fit:contain; display:block; }

.subject-tags{ display:flex; flex-wrap:wrap; gap:.6rem; }
.subject-tag{
  display:inline-flex; align-items:center; padding:.55rem 1.1rem;
  border-radius:999px; font-size:.86rem; font-weight:600;
  background:var(--surface-2);
  background:color-mix(in srgb, var(--navy) 12%, transparent);
  color:var(--navy-strong); border:1px solid var(--navy); border:1px solid color-mix(in srgb, var(--navy) 30%, transparent);
}
.subject-tag.core{
  background:var(--surface-2);
  background:color-mix(in srgb, var(--indigo) 10%, transparent);
  color:var(--navy-strong); border-color:var(--indigo); border-color:color-mix(in srgb, var(--indigo) 28%, transparent);
}
.subject-block{ margin-top:1.75rem; }
.subject-block h4{
  font-size:.78rem; letter-spacing:.06em; text-transform:uppercase;
  color:#fff; margin-bottom:.7rem; font-weight:600; margin-top:0;
}
.subject-electives-intro{ font-size:.92rem; color:var(--muted); margin-top:2rem; margin-bottom:-.5rem; }

.subject-card{ background:var(--surface); border:2px solid var(--line); border-radius:8px; padding:1.5rem 1.75rem; transition:transform .2s ease; }
.subject-card:hover{ transform:translateY(-2px); }
.phase-intermediate .subject-card, .phase-fet .subject-card{ background:var(--bg); }

.electives-grid{ display:grid; grid-template-columns:repeat(2, 1fr); gap:1.25rem; margin-top:1.75rem; }
@media (max-width:700px){ .electives-grid{ grid-template-columns:minmax(0,1fr); } }
.electives-grid .subject-card{ margin-top:0; }

.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:3rem; }
@media (max-width:860px){ .contact-grid{ grid-template-columns:minmax(0,1fr); } }
.enquiry{
  background:#fff; border-radius:14px; padding:.6rem;
  border:1px solid var(--line);
  box-shadow:0 24px 50px -14px rgba(0,0,0,.65), 0 0 0 1px rgba(255,255,255,.05);
  display:flex;
}
.contact-details{ display:grid; gap:1.5rem; align-content:start; }
.contact-line dt{ font-size:.74rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
.contact-line dd{ margin:.2rem 0 0; font-size:1rem; }

.enquiry-form{ padding:1.6rem 1.75rem 1.85rem; display:flex; flex-direction:column; width:100%; }
.enquiry-form h3{ font-family:var(--font-display); font-size:1.1rem; color:#16213A; }
.enquiry-form .form-sub{ font-size:.85rem; color:#5C6A82; margin-top:.35rem; margin-bottom:1.4rem; }
.enquiry-form form .field{ margin-bottom:1.1rem; }
.enquiry-form label{ display:block; font-size:.76rem; font-weight:600; letter-spacing:.02em; color:#16213A; margin-bottom:.4rem; }
.enquiry-form input:not([type="checkbox"]):not([type="radio"]), .enquiry-form select, .enquiry-form textarea{
  width:100%; font-family:var(--font-body); font-size:.95rem; color:#16213A;
  background:#fff; border:1px solid #D6DCE8; border-radius:6px; padding:.7rem .85rem;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.enquiry-form input:not([type="checkbox"]):not([type="radio"]):focus, .enquiry-form select:focus, .enquiry-form textarea:focus{
  outline:none; border-color:var(--navy); box-shadow:0 0 0 3px color-mix(in srgb, var(--navy) 20%, transparent);
}
.enquiry-form textarea{ min-height:90px; resize:vertical; }
.enquiry-form .form-row{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
@media (max-width:480px){ .enquiry-form .form-row{ grid-template-columns:minmax(0,1fr); } }
.enquiry-form button[type="submit"]{ width:100%; justify-content:center; margin-top:.3rem; }
.enquiry-form .form-success{ display:none; text-align:center; padding:2.5rem 1rem; }
.enquiry-form .form-success h3{ color:var(--navy-fill); }
.enquiry-form .form-success-logo{ width:64px; height:64px; margin:0 auto 1.25rem; display:block; opacity:.9; }
.enquiry-form.submitted .form-sub{ display:none; }
.enquiry-form.submitted form{ display:none; }
.enquiry-form.submitted .form-success{ display:flex; flex-direction:column; justify-content:center; flex:1; }

.enquiry-form .form-error{ display:none; text-align:center; padding:2.5rem 1rem; }
.enquiry-form .form-error h3{ color:#B3261E; }
.enquiry-form.limit-reached .form-sub{ display:none; }
.enquiry-form.limit-reached form{ display:none; }
.enquiry-form.limit-reached .form-error{ display:flex; flex-direction:column; justify-content:center; flex:1; }

.team-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.5rem; }
@media (max-width:700px){ .team-grid{ grid-template-columns:minmax(0,1fr); } }
.team-card{ display:flex; gap:1.25rem; background:var(--surface); border:1px solid var(--line); border-radius:4px; padding:1.5rem; transition:transform .2s ease, box-shadow .2s ease; }
.team-card:hover{ transform:translateY(-4px); box-shadow:0 12px 28px rgba(0,0,0,.12); }
.team-card > div{ min-width:0; }
.team-card .monogram{
  flex:none; width:92px; height:92px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  background:var(--surface-2); color:var(--indigo); font-family:var(--font-display); font-weight:600; font-size:1.6rem; border:1px solid var(--line);
}
.team-card .monogram-photo{
  flex:none; width:92px; height:92px; border-radius:50%; object-fit:cover; border:1px solid var(--line);
}
.team-card h3{ font-size:1.05rem; display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; }
.team-card .role{ font-size:.78rem; letter-spacing:.05em; text-transform:uppercase; color:var(--navy-strong); font-weight:600; display:block; margin-top:.15rem; }
.team-card p{ color:var(--muted); font-size:.92rem; margin-top:.6rem; overflow-wrap:anywhere; }
.team-house-crest{ width:60px; height:60px; object-fit:contain; flex-shrink:0; filter:drop-shadow(0 2px 6px rgba(0,0,0,.35)); }

.gallery-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; }
@media (max-width:900px){ .gallery-grid{ grid-template-columns:repeat(2,1fr); } }
.gallery-tile{
  aspect-ratio:4/3; border-radius:4px; border:1px solid var(--line);
  background:linear-gradient(135deg, var(--surface-2), var(--surface));
  display:flex; align-items:center; justify-content:center; flex-direction:column; gap:.5rem;
  color:var(--muted); font-size:.8rem; text-align:center; padding:1rem;
  min-width:0;
}
.gallery-tile svg{ width:28px; height:28px; }

.houses-showcase{
  background:linear-gradient(160deg, var(--surface-2), var(--surface));
  border:1px solid var(--line); border-radius:12px;
  padding:clamp(1.5rem,3.5vw,2.25rem); margin:0 auto 3.5rem;
  max-width:620px; width:100%;
  display:flex; flex-direction:column; align-items:center; gap:1.75rem; text-align:center;
}
.houses-showcase .section-head{ flex-direction:column; align-items:center; text-align:center; width:100%; }
.houses-showcase .body-copy{ max-width:52ch; }
.house-grid{ display:grid; grid-template-columns:repeat(2, minmax(0,190px)); gap:1.25rem; justify-content:center; margin:0 auto; }
@media (max-width:640px){ .house-grid{ grid-template-columns:repeat(2, minmax(0,150px)); gap:1rem; } }
@media (max-width:480px){
  .houses-showcase{ padding:1.1rem; }
  .house-grid{ grid-template-columns:repeat(2, minmax(0,1fr)); gap:.6rem; }
}
.house-tile-img{
  aspect-ratio:1/1; border-radius:10px; padding:.9rem; background:var(--surface);
  border:1px solid var(--line); position:relative; overflow:hidden; cursor:default;
  transition:transform .25s ease, box-shadow .25s ease;
}
.house-tile-img img{ width:100%; height:100%; object-fit:contain; transition:opacity .25s ease; }
.house-photo-tile{ display:flex; flex-direction:column; gap:.5rem; padding:0; background:transparent; border:none; aspect-ratio:auto; }
.house-photo-tile .gallery-item img{ width:100%; aspect-ratio:3/2; object-fit:cover; }
.house-photo-label{ font-family:var(--font-display); font-weight:700; font-size:.85rem; letter-spacing:.03em; text-align:center; }
.house-photo-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.5rem; max-width:620px; margin-inline:auto; }
@media (max-width:520px){ .house-photo-grid{ grid-template-columns:minmax(0,1fr); } }
.house-lore-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:1.25rem; }
@media (max-width:640px){ .house-lore-grid{ grid-template-columns:minmax(0,1fr); } }
.house-lore-card{ background:var(--surface); border:1px solid var(--line); border-radius:8px; padding:1.5rem; }
.house-lore-card h3{ font-size:1.05rem; margin-bottom:.6rem; }
.house-tile-img:hover, .house-tile-img.tap-open{ transform:translateY(-6px) scale(1.02); }
.house-tile-img:hover img, .house-tile-img.tap-open img{ opacity:.12; }
.house-qualities{
  position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.55rem;
  opacity:0; transition:opacity .3s ease; pointer-events:none;
  font-family:var(--font-display); font-weight:700; letter-spacing:.04em; text-transform:uppercase; font-size:.72rem; text-align:center; padding:0 .5rem;
}
.house-tile-img:hover .house-qualities, .house-tile-img.tap-open .house-qualities{ opacity:1; }
.house-phoenix.house-tile-img:hover, .house-phoenix.house-tile-img.tap-open{ box-shadow:0 16px 36px rgba(192,57,43,.35); border-color:#c0392b; }
.house-griffin.house-tile-img:hover, .house-griffin.house-tile-img.tap-open{ box-shadow:0 16px 36px rgba(201,154,46,.35); border-color:#c99a2e; }
.house-pegasus.house-tile-img:hover, .house-pegasus.house-tile-img.tap-open{ box-shadow:0 16px 36px rgba(126,62,201,.35); border-color:#7e3ec9; }
.house-dragon.house-tile-img:hover, .house-dragon.house-tile-img.tap-open{ box-shadow:0 16px 36px rgba(30,143,90,.35); border-color:#1e8f5a; }
.house-phoenix .house-qualities span{ color:#c0392b; }
.house-griffin .house-qualities span{ color:#c99a2e; }
.house-pegasus .house-qualities span{ color:#7e3ec9; }
.house-dragon .house-qualities span{ color:#1e8f5a; }

.cup-wrap{ position:relative; overflow-x:auto; border:1px solid var(--line); border-radius:6px; background:var(--surface); }
table.cup{ width:100%; border-collapse:collapse; min-width:560px; font-size:1.15rem; }
table.cup caption{ text-align:center; padding:1.1rem 1.25rem .3rem; font-size:.85rem; letter-spacing:.28em; text-transform:uppercase; color:var(--muted); }
table.cup th, table.cup td{ padding:1.1rem 1.25rem; text-align:left; border-top:1px solid var(--line); }
table.cup thead th{ font-size:.9rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); border-top:none; }
table.cup tbody tr{ border-left:4px solid transparent; transition:background .15s ease; }
table.cup tbody tr:hover{ background:var(--surface-2); }
table.cup .cup-house{ display:flex; align-items:center; gap:1rem; font-weight:600; }
table.cup .cup-house img{ width:90px; height:90px; object-fit:contain; flex-shrink:0; filter:drop-shadow(0 2px 6px rgba(0,0,0,.35)); }
table.cup .cup-house-sm{ display:inline-flex; align-items:center; gap:.75rem; font-weight:inherit; }
table.cup .cup-house-sm img{ width:62px; height:62px; object-fit:contain; flex-shrink:0; }
@media (max-width:640px){
  .cup-wrap{ margin-inline:-.75rem; }
  table.cup{ min-width:0; }
  table.cup caption{ display:block; width:100%; text-align:center; padding-inline:1rem; }
  table.cup thead{ display:none; }
  table.cup, table.cup tbody{ display:block; width:100%; min-width:0; }
  table.cup tr{
    display:flex; flex-wrap:wrap; align-items:center; justify-content:center;
    column-gap:1rem; row-gap:.3rem; width:100%;
    border-top:1px solid var(--line); border-left:none !important; padding:1rem; text-align:center;
  }
  table.cup tr:first-child{ border-top:none; }
  table.cup th, table.cup td{ padding:0; border-top:none; text-align:center; min-width:0; }
  table.cup tr > td:first-child{ flex:1 1 100%; display:flex; flex-direction:column; align-items:center; gap:.35rem; }
  table.cup .cup-house{ justify-content:center; }
  table.cup .cup-house img{ width:72px; height:72px; }
}
tr.cup-phoenix{ border-left-color:var(--house-phoenix); }
tr.cup-griffin{ border-left-color:var(--house-griffin); }
tr.cup-pegasus{ border-left-color:var(--house-pegasus); }
tr.cup-dragon{ border-left-color:var(--house-dragon); }
tr.cup-phoenix .cup-house{ color:var(--house-phoenix); }
tr.cup-griffin .cup-house{ color:var(--house-griffin); }
tr.cup-pegasus .cup-house{ color:var(--house-pegasus); }
tr.cup-dragon .cup-house{ color:var(--house-dragon); }

#cup-intro{ margin:0; }
.cup-intro{
  position:fixed; inset:0; z-index:200;
  background:linear-gradient(135deg, #2c56a3 0%, #1e4185 100%);
  display:flex; align-items:center; justify-content:center; flex-direction:column; gap:1.5rem;
  opacity:1; transition:opacity .65s ease; overflow-y:auto; overflow-x:hidden; padding-inline:1rem;
}
.cup-intro.cup-intro-hide{ opacity:0; pointer-events:none; }
.cup-intro-houses{ display:flex; flex-direction:column; align-items:center; gap:.85rem; }
.cup-intro-houses-row{ display:flex; gap:clamp(1.75rem,5vw,3.5rem); align-items:flex-end; }
.cup-intro-payoff{
  display:flex; flex-direction:column; align-items:center; gap:.85rem;
  width:max-content; max-width:90vw;
}
.cup-intro-house{ display:flex; flex-direction:column; align-items:center; gap:.85rem; }
.cup-intro-crest{
  width:clamp(90px,12vw,140px); height:clamp(90px,12vw,140px); object-fit:contain; opacity:0;
  filter:drop-shadow(0 10px 26px rgba(0,0,0,.45));
}
.cup-intro.cup-intro-play .cup-intro-crest{ animation:cup-crest-in .7s ease forwards; }
.cup-intro-house:nth-child(1) .cup-intro-crest{ animation-delay:.1s; }
.cup-intro-house:nth-child(2) .cup-intro-crest{ animation-delay:.25s; }
.cup-intro-house:nth-child(3) .cup-intro-crest{ animation-delay:.4s; }
.cup-intro-house:nth-child(4) .cup-intro-crest{ animation-delay:.55s; }
@keyframes cup-crest-in{
  0%{ opacity:0; transform:translateY(40px) scale(.6) rotate(-15deg); }
  60%{ opacity:1; transform:translateY(-8px) scale(1.08) rotate(4deg); }
  100%{ opacity:1; transform:translateY(0) scale(1) rotate(0); }
}

.cup-jar{
  position:relative; width:clamp(30px,4vw,42px); height:clamp(64px,9vw,92px);
  border:2px solid rgba(255,255,255,.4); border-radius:7px 7px 12px 12px;
  background:rgba(255,255,255,.06); overflow:hidden;
  box-shadow:inset 0 0 12px rgba(0,0,0,.4), 0 4px 14px rgba(0,0,0,.35);
}
.cup-jar-cap{ position:absolute; top:-5px; left:50%; transform:translateX(-50%); width:70%; height:6px; border-radius:3px; background:rgba(255,255,255,.3); }
.cup-jar-fill{
  position:absolute; left:0; right:0; bottom:0; height:0%;
  background:var(--jar-color);
  background:linear-gradient(180deg, color-mix(in srgb, var(--jar-color) 80%, white 20%), var(--jar-color));
}
.cup-intro.cup-intro-play .cup-jar-fill{ animation:cup-jar-fill 1.8s ease forwards var(--jar-delay, 1s); }
@keyframes cup-jar-fill{ from{ height:0%; } to{ height:var(--jar-level, 60%); } }
.cup-jar-shine{ position:absolute; top:2px; bottom:2px; left:3px; width:5px; border-radius:3px; background:linear-gradient(180deg, rgba(255,255,255,.55), rgba(255,255,255,0)); }

.cup-intro-trophy{ opacity:0; transform:scale(.4) rotate(-8deg); filter:drop-shadow(0 16px 38px rgba(0,0,0,.55)); }
.cup-intro-trophy svg{ width:clamp(130px,15vw,190px); height:auto; display:block; }
.cup-intro.cup-intro-play .cup-intro-trophy{ animation:cup-trophy-in .9s cubic-bezier(.34,1.56,.64,1) forwards 1.4s; }
@keyframes cup-trophy-in{
  0%{ opacity:0; transform:scale(.3) rotate(-10deg); }
  70%{ opacity:1; transform:scale(1.15) rotate(4deg); }
  100%{ opacity:1; transform:scale(1) rotate(0); }
}
.cup-intro-title{
  font-family:var(--font-display); color:#ECF1FA; font-size:clamp(1.2rem,3vw,1.8rem); text-align:center; opacity:0; padding-inline:1.5rem;
  text-shadow:0 0 22px rgba(255,255,255,.3);
}
.cup-intro.cup-intro-play .cup-intro-title{ animation:cup-fade-up .6s ease forwards 2.3s; }
.cup-intro-subtitle{
  font-family:var(--font-body); color:var(--purple); font-size:clamp(.85rem,1.6vw,1rem); text-align:center; opacity:0;
  letter-spacing:.04em; margin-top:-.6rem;
}
.cup-intro.cup-intro-play .cup-intro-subtitle{ animation:cup-fade-up .6s ease forwards 2.8s; }
@keyframes cup-fade-up{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }

@media (max-width:480px){
  .cup-intro{ gap:.85rem; }
  .cup-intro-houses{ gap:.55rem; }
  .cup-intro-houses-row{ gap:.55rem; align-items:flex-end; }
  .cup-intro-crest{ width:clamp(48px,16vw,72px); height:clamp(48px,16vw,72px); }
  .cup-jar{ width:clamp(16px,4.5vw,24px); height:clamp(36px,10vw,50px); }
  .cup-jar-cap{ height:4px; }
  .cup-intro-trophy svg{ width:clamp(100px,38vw,150px); }
  .cup-intro-title{ font-size:1rem; padding-inline:1rem; }
  .cup-intro-subtitle{ font-size:.72rem; }
  .cup-intro-skip{ bottom:1rem; right:1rem; padding:.4rem .9rem; font-size:.72rem; }
}

.sparkle{
  position:absolute; width:3px; height:3px; border-radius:50%; background:#fff; opacity:0;
  box-shadow:0 0 6px 1px rgba(255,255,255,.8);
  animation:sparkle-twinkle 3.4s ease-in-out infinite;
}
.sparkle-lg{ width:5px; height:5px; box-shadow:0 0 9px 2px rgba(255,255,255,.85); }
@keyframes sparkle-twinkle{ 0%,100%{ opacity:0; transform:scale(.4); } 50%{ opacity:1; transform:scale(1.4); } }
@media (prefers-reduced-motion: reduce){ .sparkle{ animation:none; opacity:0; } }

.screen-reader-text{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

.cup-winners{
  position:relative; overflow:hidden;
  background:linear-gradient(180deg, var(--surface-2) 0%, var(--bg) 45%, color-mix(in srgb, var(--bg) 55%, black) 100%);
}
.cup-winners .eyebrow{ color:#E7B449; }
.cup-winners .section-head h2{ color:#ECF1FA; }
.cup-winners .body-copy{ color:#C7D2E3; }
.cup-winners .badge{ border-color:rgba(231,180,73,.4); color:#E7B449; }
.cup-winners .cup-wrap{ background:rgba(255,255,255,.03); border-color:rgba(231,180,73,.22); }
.cup-winners table.cup caption{ color:var(--purple); }
.cup-winners table.cup thead th{ color:var(--purple); }
.cup-winners table.cup th, .cup-winners table.cup td{ border-top-color:rgba(231,180,73,.14); color:#ECF1FA; }
.cup-winners table.cup tbody tr:hover{ background:rgba(231,180,73,.08); }

.cup-close{
  position:relative; overflow:hidden;
  background:linear-gradient(180deg, var(--surface) 0%, color-mix(in srgb, var(--bg) 55%, black) 85%);
}
.cup-close .body-copy{ color:#C7D2E3; margin-inline:auto; }
.cup-btn-gold{ border:1px solid rgba(231,180,73,.5); color:#F5E3B3; }
.cup-btn-gold:hover{ background:rgba(231,180,73,.12); }

.champion-feature{
  position:relative; overflow:hidden; text-align:center;
  background:linear-gradient(180deg, var(--surface-2) 0%, var(--surface) 40%, color-mix(in srgb, var(--bg) 55%, black) 100%);
  border:1px solid rgba(231,180,73,.25); border-radius:14px; padding:clamp(2rem,4vw,3rem);
}
.champion-photo{
  max-width:760px; margin:0 auto; border-radius:10px; overflow:hidden;
  border:2px solid #E7B449; box-shadow:0 20px 50px -20px rgba(0,0,0,.6), 0 0 40px -10px rgba(231,180,73,.4);
}
.champion-photo img{ width:100%; display:block; }

.champion-ribbon{
  position:relative; width:100%; max-width:760px; margin:0 auto 1.5rem;
  filter:drop-shadow(0 10px 18px rgba(0,0,0,.5));
}
.champion-ribbon-svg{ display:block; width:100%; height:auto; aspect-ratio:760/150; }

.cup-intro-skip{
  position:absolute; bottom:1.75rem; right:1.75rem;
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.3);
  color:#ECF1FA; border-radius:999px; padding:.55rem 1.15rem; font-size:.78rem; cursor:pointer;
  transition:background .2s ease;
}
.cup-intro-skip:hover{ background:rgba(255,255,255,.22); }
body.cup-intro-lock{ overflow:hidden; }
@media (prefers-reduced-motion: reduce){ .cup-intro{ display:none; } }

footer.site{ position:relative; background:var(--surface-2); padding-block:3.5rem 2rem; overflow:hidden; }
.footer-accent{ position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(90deg, var(--navy-strong), var(--indigo), var(--purple)); }

.footer-top{ display:flex; justify-content:space-between; gap:3rem 2.5rem; flex-wrap:wrap; padding-bottom:2.75rem; border-bottom:1px solid var(--line); }
.footer-brand{ max-width:22rem; }
.footer-nav-groups{ display:flex; gap:clamp(2rem,4vw,4rem); flex-wrap:wrap; }
.footer-col h4{
  font-size:.72rem; letter-spacing:.09em; text-transform:uppercase;
  color:var(--navy-strong); margin:0 0 .9rem; font-weight:700;
}
.footer-col a{ display:block; text-decoration:none; font-size:.88rem; margin-bottom:.55rem; color:var(--ink); opacity:.78; }
.footer-col a:hover{ opacity:1; color:var(--navy-strong); }
.footer-col-visit a{ color:inherit; }

.footer-accreditation{ display:flex; align-items:center; gap:1.5rem 2rem; flex-wrap:wrap; padding:2rem 0; }
.footer-accred-label{ font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:700; white-space:nowrap; }

.legal{ margin-top:0; padding-top:1.5rem; border-top:1px solid var(--line); font-size:.78rem; color:var(--muted); display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.legal-links{ display:flex; gap:1.25rem; margin-left:auto; }
.legal-links a{ color:var(--navy-strong); font-weight:600; }
.legal-links a:hover{ opacity:.8; }

@media (max-width:700px){
  .footer-accreditation{ flex-direction:column; align-items:flex-start; }
}

/* ---- WooCommerce shop integration ---- */
.woocommerce-breadcrumb{ font-size:.85rem; color:var(--muted); margin:1.5rem 0; }
.woocommerce-breadcrumb a{ color:var(--muted); text-decoration:none; }
.woocommerce-breadcrumb a:hover{ color:var(--navy); }

.woocommerce-result-count, p.woocommerce-result-count{ color:var(--muted); font-size:.88rem; }
.woocommerce-ordering select{
  background:var(--surface); color:var(--ink); border:1px solid var(--line);
  border-radius:6px; padding:.5rem .8rem; font-family:var(--font-body); font-size:.85rem;
}

ul.products{
  display:grid !important; grid-template-columns:repeat(4,1fr); gap:1.75rem !important; align-items:stretch;
}
ul.products::before, ul.products::after{ content:none !important; display:none !important; }
@media (max-width:768px){ ul.products{ grid-template-columns:repeat(2,1fr); } }
ul.products li.product{
  background:var(--surface); border:1px solid var(--line); border-radius:8px;
  padding:1.25rem 1.25rem 1.5rem; transition:transform .15s ease, border-color .15s ease;
  display:flex; flex-direction:column;
  float:none !important; width:auto !important; margin:0 !important; clear:none !important;
}
ul.products li.product > .woocommerce-LoopProduct-link{ flex:1 1 auto; display:block; }
ul.products li.product:hover{
  transform:translateY(-2px); border-color:var(--navy);
}
ul.products li.product img{
  width:100% !important; height:auto !important;
  border-radius:6px; background:var(--surface-2); aspect-ratio:1/1; object-fit:contain; padding:1.25rem;
}
a.woocommerce-loop-product__title, .woocommerce-loop-product__title{
  font-family:var(--font-display); color:var(--ink); font-size:1rem; font-weight:600;
}
.woocommerce-loop-product__title{ min-height:2.6rem; line-height:1.3; margin-top:1rem; }
.price{
  color:var(--navy-strong); font-family:var(--font-body); font-weight:600;
}
.price .woocommerce-Price-amount{ color:var(--navy-strong); }
ul.products li.product .price{ display:block; min-height:2.6rem; margin-bottom:1rem; }

.add_to_cart_button, .single_add_to_cart_button{
  display:inline-flex; align-items:center; gap:.5rem;
  font-family:var(--font-body); font-size:.85rem !important; font-weight:600; letter-spacing:.02em;
  padding:.7rem 1.3rem !important; border-radius:3px !important; border:1px solid transparent;
  background:var(--navy-fill) !important; color:#fff !important;
  transition:transform .15s ease, box-shadow .15s ease, opacity .15s ease;
}
/* Shop grid cards only: keep the button left-aligned (not stretched) and
   pinned to the card's bottom - .single_add_to_cart_button (single product
   page's form.cart, a row-direction flex) must NOT get these, or it aligns
   to the Quantity label's height instead of the Quantity input box. */
ul.products li.product .add_to_cart_button{ align-self:flex-start; margin-top:auto; }
.add_to_cart_button:hover, .single_add_to_cart_button:hover{
  background:var(--navy-strong) !important; color:var(--navy-fill) !important; transform:translateY(-1px);
}
.add_to_cart_button.loading, .single_add_to_cart_button.loading{ opacity:.85 !important; }

/* Single product page */
.woocommerce-product-gallery, .woocommerce-product-gallery__wrapper{ background:transparent; }
.woocommerce-product-gallery__image--placeholder{ background:var(--surface); border-radius:8px; border:1px solid var(--line); }
.product_title{ font-family:var(--font-display); color:var(--ink); }
.woocommerce-product-details__short-description, .wp-block-post-excerpt__excerpt{ color:var(--muted); }
.stock{ color:var(--muted); font-size:.85rem; }
.stock.in-stock{ color:var(--navy); }

.quantity .qty, .wc-block-components-quantity-selector input{
  background:var(--surface); color:var(--ink); border:1px solid var(--line) !important;
  border-radius:4px; font-family:var(--font-body);
  width:4.5em; height:2.75rem; padding:0 .5rem; font-size:1rem; text-align:center;
  -moz-appearance:textfield;
}
.quantity .qty::-webkit-inner-spin-button, .quantity .qty::-webkit-outer-spin-button,
.wc-block-components-quantity-selector input::-webkit-inner-spin-button,
.wc-block-components-quantity-selector input::-webkit-outer-spin-button{
  -webkit-appearance:none; margin:0;
}
form.cart{ display:flex; align-items:flex-end; gap:1rem; flex-wrap:wrap; }
.quantity{ display:flex; flex-direction:column; gap:.4rem; }
.qty-visible-label{
  font-size:.76rem; font-weight:600; letter-spacing:.02em; color:var(--muted); display:block;
}
.quantity{ margin:0; }
table.variations select{
  background:var(--surface); color:var(--ink) !important; border:1px solid var(--line);
  border-radius:6px; padding:.55rem .8rem; font-family:var(--font-body); font-size:.95rem;
}
table.variations select option{ background:var(--surface); color:var(--ink); }
.wc-block-components-quantity-selector{ border-color:var(--line) !important; }
.wc-block-components-quantity-selector__button{ color:var(--ink) !important; }

.woocommerce-pagination{ margin-top:2.5rem; }
.woocommerce-pagination ul.page-numbers{ border:none !important; margin:0 !important; padding:0 !important; }
.woocommerce-pagination ul.page-numbers li{ border:none !important; float:none !important; }
.woocommerce-pagination .page-numbers a, .woocommerce-pagination .page-numbers span{
  background:none !important; border:none !important; padding:.2em .35em !important;
  color:var(--ink) !important; font-weight:600;
}
.woocommerce-pagination .page-numbers a:hover, .woocommerce-pagination .page-numbers a:focus{
  background:none !important; color:var(--navy) !important;
}
.woocommerce-pagination .page-numbers .current{ background:none !important; opacity:.6; }

.woocommerce-tabs, .wp-block-woocommerce-product-details{ margin-top:2.5rem; }
.woocommerce-tabs ul.tabs{ border-bottom:1px solid var(--line); padding:0; margin:0 0 1.5rem; list-style:none; display:flex; gap:1.5rem; }
.woocommerce-tabs ul.tabs li{ margin:0; }
.woocommerce-tabs ul.tabs li a{
  color:var(--muted); text-decoration:none; font-family:var(--font-body); font-size:.9rem;
  padding:.6rem 0; display:inline-block; border-bottom:2px solid transparent;
}
.woocommerce-tabs ul.tabs li.active a{ color:var(--ink); border-color:var(--navy); }
.woocommerce-tabs .panel{ color:var(--muted); }

/* Reviews disabled via WooCommerce setting (woocommerce_enable_reviews), not theme code — hide any residual UI defensively */
.woocommerce-tabs .reviews_tab, #tab-title-reviews, .woocommerce-Reviews, .star-rating{ display:none !important; }

/* ---- My Account ---- */
.woocommerce-account .woocommerce{
  display:flex; gap:2.5rem; align-items:flex-start;
}
@media (max-width:800px){ .woocommerce-account .woocommerce{ flex-direction:column; gap:1.5rem; } }

.woocommerce-MyAccount-navigation{
  flex:0 0 220px; background:var(--surface); border:1px solid var(--line); border-radius:10px;
  padding:.75rem; align-self:flex-start;
}
@media (max-width:800px){ .woocommerce-MyAccount-navigation{ flex:1 1 auto; width:100%; } }
.woocommerce-MyAccount-navigation ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.15rem; }
.woocommerce-MyAccount-navigation-link a{
  display:block; padding:.7rem .9rem; border-radius:6px; color:var(--ink); opacity:.8;
  text-decoration:none; font-weight:600; font-size:.92rem; transition:background .15s ease, opacity .15s ease;
}
.woocommerce-MyAccount-navigation-link a:hover{ background:var(--surface-2); opacity:1; }
.woocommerce-MyAccount-navigation-link.is-active a{ background:var(--navy-fill); color:#fff; opacity:1; }
.woocommerce-MyAccount-navigation-link--customer-logout{ border-top:1px solid var(--line); margin-top:.4rem; padding-top:.4rem; }

.woocommerce-MyAccount-content{ flex:1 1 auto; min-width:0; color:var(--ink); }
.woocommerce-MyAccount-content p a{ color:var(--navy); }
.woocommerce-MyAccount-content p a:hover{ color:var(--navy-strong); }

.woocommerce-message, .woocommerce-error, .woocommerce-info, .woocommerce-noreviews{
  background:var(--surface) !important; border:1px solid var(--line) !important;
  border-left:3px solid var(--navy) !important; border-radius:8px; padding:1rem 1.25rem 1rem 3rem !important;
  margin:0 0 1rem !important; color:var(--ink) !important; list-style:none !important;
}
.woocommerce-error{ border-left-color:#e15353 !important; background:#2a1418 !important; }
.woocommerce-message{ border-left-color:#3aa66a !important; }
.woocommerce-message::before, .woocommerce-error::before, .woocommerce-info::before{ color:var(--navy) !important; }
.woocommerce-error::before{ color:#e15353 !important; }
.woocommerce-message a, .woocommerce-error a, .woocommerce-info a{ color:var(--navy-strong) !important; font-weight:600; }
.woocommerce-message .button, .woocommerce-error .button, .woocommerce-info .button{
  float:right; margin-left:1rem;
}

.wc-block-components-notice-banner{
  display:flex; align-items:flex-start; gap:.75rem; background:var(--surface); border:1px solid var(--line);
  border-left:3px solid var(--navy); border-radius:8px; padding:1rem 1.25rem; margin-bottom:1rem; color:var(--ink);
}
.wc-block-components-notice-banner svg{ fill:var(--navy); flex-shrink:0; }
.wc-block-components-notice-banner__content{ flex:1 1 auto; }
.wc-block-components-notice-banner.is-info{
  background:var(--surface) !important; border-left-color:var(--navy) !important;
}
.wc-block-components-notice-banner.is-success{
  background:var(--surface) !important; border-left-color:#3aa66a !important;
}
.wc-block-components-notice-banner.is-error{
  background:#2a1418 !important; border-left-color:#e15353 !important;
}
/* The "View cart" link inside this notice (e.g. after Add to cart) is a
   WooCommerce Blocks button (.wp-element-button) - never styled here, so
   it fell back to WooCommerce's own default near-black, 70%-opacity text,
   unreadable against this theme's dark background. */
.wc-block-components-notice-banner .wc-forward,
.wc-block-components-notice-banner a.button,
.wc-block-components-notice-banner .wp-element-button,
.wc-block-components-notice-banner > .wc-block-components-notice-banner__content .wc-forward{
  color:var(--navy-strong) !important; opacity:1 !important; font-weight:600;
}
.wc-block-components-notice-banner.is-warning{
  background:#2a2314 !important; border-left-color:#d6a13a !important;
}
.wc-block-components-notice-banner.is-info .wc-block-components-notice-banner__content,
.wc-block-components-notice-banner.is-success .wc-block-components-notice-banner__content,
.wc-block-components-notice-banner.is-error .wc-block-components-notice-banner__content,
.wc-block-components-notice-banner.is-warning .wc-block-components-notice-banner__content,
.wc-block-components-notice-banner.is-info, .wc-block-components-notice-banner.is-success,
.wc-block-components-notice-banner.is-error, .wc-block-components-notice-banner.is-warning{
  color:var(--ink) !important;
}
.wc-block-components-notice-banner.is-info a, .wc-block-components-notice-banner.is-success a,
.wc-block-components-notice-banner.is-error a, .wc-block-components-notice-banner.is-warning a{
  color:var(--navy-strong) !important; font-weight:600;
}
.wc-block-components-notice-banner .button, .wc-block-components-notice-banner a.button{
  float:right; margin-left:1rem;
}

.woocommerce-Addresses{ display:flex; gap:2.5rem; flex-wrap:wrap; }
.woocommerce-Address{ flex:1 1 260px; }
.woocommerce-Address-title{ display:flex; align-items:baseline; gap:1rem; flex-wrap:wrap; margin-bottom:1rem; }
.woocommerce-Address-title h2{ font-size:1.15rem; margin:0; }
.woocommerce-Address-title .edit{ color:var(--navy-strong); font-size:.85rem; }
.woocommerce-Address address{ font-style:italic; color:var(--muted); line-height:1.6; }

.woocommerce-MyAccount-orders{ width:100%; border-collapse:collapse; }
.woocommerce-MyAccount-orders th, .woocommerce-MyAccount-orders td{ padding:.75rem; border-bottom:1px solid var(--line); text-align:left; color:var(--ink); }

.woocommerce-EditAccountForm .woocommerce-form-row, .woocommerce-EditAccountForm .form-row{ margin-bottom:1.25rem; }
.woocommerce-EditAccountForm label{ display:block; margin-bottom:.4rem; font-weight:600; font-size:.9rem; color:var(--ink); }
.woocommerce-EditAccountForm .woocommerce-Input{
  width:100%; background:var(--surface); border:1px solid var(--line) !important; color:var(--ink);
  border-radius:6px; padding:.65rem .85rem; font-family:var(--font-body); font-size:.95rem;
}
.woocommerce-EditAccountForm .woocommerce-Input:focus{ border-color:var(--navy) !important; outline:none; }
.woocommerce-EditAccountForm span em{ color:var(--muted); font-size:.82rem; }
.woocommerce-EditAccountForm fieldset{ border:1px solid var(--line); border-radius:8px; padding:1.25rem 1.25rem .25rem; margin-top:1.5rem; }
.woocommerce-EditAccountForm fieldset legend{ color:var(--ink); font-weight:600; padding:0 .5rem; }

.woocommerce-billing-fields .form-row, .woocommerce-shipping-fields .form-row,
.woocommerce-address-fields .form-row, .woocommerce-EditAddress .form-row{
  margin-bottom:1.25rem;
}
.woocommerce-billing-fields label, .woocommerce-shipping-fields label,
.woocommerce-address-fields label, .woocommerce-EditAddress label{
  display:block; margin-bottom:.4rem; font-weight:600; font-size:.9rem; color:var(--ink);
}
.woocommerce-billing-fields .input-text, .woocommerce-shipping-fields .input-text,
.woocommerce-address-fields .input-text, .woocommerce-EditAddress .input-text,
.woocommerce-billing-fields select, .woocommerce-shipping-fields select,
.woocommerce-address-fields select, .woocommerce-EditAddress select{
  width:100%; background:var(--surface); border:1px solid var(--line) !important; color:var(--ink);
  border-radius:6px; padding:.65rem .85rem; font-family:var(--font-body); font-size:.95rem;
}
.woocommerce-billing-fields .input-text:focus, .woocommerce-shipping-fields .input-text:focus,
.woocommerce-address-fields .input-text:focus, .woocommerce-EditAddress .input-text:focus{
  border-color:var(--navy) !important; outline:none;
}

/* select2 country/state dropdowns */
.select2-container .select2-selection--single{
  background:var(--surface) !important; border:1px solid var(--line) !important;
  border-radius:6px !important; height:2.85rem !important; display:flex; align-items:center;
}
.select2-selection__rendered{ color:var(--ink) !important; padding-left:.85rem !important; }
.select2-selection__arrow{ height:2.85rem !important; }
.select2-dropdown{ background:var(--surface); border:1px solid var(--line); color:var(--ink); }
.select2-search--dropdown .select2-search__field{
  background:var(--bg); color:var(--ink); border:1px solid var(--line); border-radius:4px;
}
.select2-results__option{ color:var(--ink); }
.select2-container--default .select2-results__option--highlighted[aria-selected]{
  background:var(--navy-fill); color:#fff;
}
.woocommerce-EditAccountForm button[type="submit"]{
  background:var(--navy-fill) !important; color:#fff !important; border:none; border-radius:6px;
  padding:.75rem 1.5rem; font-weight:600; cursor:pointer; margin-top:.5rem;
}
.woocommerce-EditAccountForm button[type="submit"]:hover{ background:var(--navy-strong) !important; color:var(--navy-fill) !important; }

.back-to-top{
  position:fixed; right:1.5rem; bottom:1.5rem; z-index:60;
  width:46px; height:46px; border-radius:50%; padding:0;
  background:var(--navy-fill); color:#fff; border:1px solid var(--navy);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  box-shadow:var(--shadow); opacity:0; visibility:hidden; transform:translateY(12px);
  transition:opacity .25s ease, transform .25s ease, background .2s ease;
}
.back-to-top.is-visible{ opacity:1; visibility:visible; transform:none; }
.back-to-top:hover{ background:var(--navy-strong); color:var(--navy-fill); }
.back-to-top svg{ width:20px; height:20px; }
@media (max-width:640px){ .back-to-top{ right:1rem; bottom:1rem; width:42px; height:42px; } }
@media (prefers-reduced-motion: reduce){ .back-to-top{ transition:opacity .01ms; } }
