/* Wonderlab visual layer: expressive composition, original diagrams and premium interactions. */
:root {
  --wl-midnight: #10283d;
  --wl-ink: #193543;
  --wl-jade: #3f776f;
  --wl-jade-deep: #245e5a;
  --wl-ivory: #fbf8f1;
  --wl-champagne: #eee4cf;
  --wl-amber: #d2a45a;
  --wl-coral: #c96e58;
  --wl-line: rgba(16, 40, 61, .12);
  --wl-shadow: 0 24px 64px rgba(16, 40, 61, .1);
  --wl-radius: 18px;
}

html { scroll-behavior: smooth; }
body {
  background:
    radial-gradient(ellipse at 95% 7%, rgba(210, 164, 90, .06), transparent 27rem),
    var(--wl-ivory);
  color: var(--wl-ink);
  font-size: 17px;
  line-height: 1.72;
}
::selection { background: rgba(63, 119, 111, .23); color: var(--wl-midnight); }

#site-header {
  background: rgba(251, 248, 241, .94);
  border-bottom-color: rgba(16, 40, 61, .09);
  box-shadow: 0 5px 28px rgba(16, 40, 61, .035);
}
.nav-wrap { height: 86px; }
/* The supplied JPEG is the approved, unmodified wordmark. Its ivory canvas
   remains visible on both the light header and the dark footer. */
.brand-logo { display:block; width:150px; height:auto; object-fit:contain; background:#fff; }
.brand-light .brand-logo { width:180px; }
#primary-nav > a { position: relative; padding-block: 10px; }
#primary-nav > a:not(.nav-contact)::after {
  position: absolute; right: 0; bottom: 3px; left: 0; height: 1px;
  background: var(--wl-amber); content: ""; transform: scaleX(0); transform-origin: left;
  transition: transform .24s ease;
}
#primary-nav > a:not(.nav-contact):hover::after,
#primary-nav > a:not(.nav-contact):focus-visible::after,
#primary-nav > a[aria-current="page"]::after { transform: scaleX(1); }
.nav-contact {
  border-color: transparent; border-radius: 999px; background: var(--wl-midnight);
  color: #fff !important; padding: 11px 18px !important;
  transition: background .2s ease, transform .2s ease, box-shadow .2s ease;
}
.nav-contact:hover { background: var(--wl-jade-deep); box-shadow: 0 8px 20px #10283d22; transform: translateY(-1px); }
.menu-toggle { border-radius: 12px; background: #fffdfa; box-shadow: inset 0 0 0 1px var(--wl-line); }

.hero.home-hero {
  max-width: none; min-height: 690px; padding-inline: max(7.2%, calc((100% - 1240px) / 2));
  background:
    radial-gradient(ellipse at 77% 45%, rgba(63, 119, 111, .11), transparent 23rem),
    linear-gradient(145deg, #fffefa 0%, #f6f1e6 100%);
  border-bottom: 1px solid rgba(16, 40, 61, .06);
}
.hero-copy { max-width: 610px; }
.hero .eyebrow { display: inline-flex; align-items: center; gap: 10px; padding: 8px 12px; border: 1px solid var(--wl-line); border-radius: 999px; background: rgba(255,255,255,.62); }
.hero h1 { max-width: 680px; font-size: clamp(58px, 7.3vw, 98px); line-height: .98; letter-spacing: -.075em; }
.hero .lead { max-width: 530px; color: #4e6269; font-size: clamp(17px, 1.4vw, 19px); }
.hero .button { border-radius: 5px; min-height: 54px; padding-inline: 22px; }
.hero .button-gold { background: var(--wl-amber); box-shadow: 0 8px 22px rgba(210,164,90,.2); }
.hero .button-outline { background: rgba(255,255,255,.54); }
.hero-art { min-height: 480px; }
.art-orbit { border-color: rgba(63,119,111,.22); }
.orbit-two { border-color: rgba(201,110,88,.2); }
.art-sun { background: radial-gradient(circle at 34% 28%, #fff6de, #f0d8a4); color: var(--wl-midnight); }
.art-card { border-radius: 16px; background: rgba(255,255,255,.86); backdrop-filter: blur(8px); box-shadow: 0 20px 48px rgba(16,40,61,.12); }
.hero-bottom { color: #687a78; }
.hero-bottom span:not(.hero-line) { white-space: nowrap; }

.section { position: relative; }
.section-label { align-items: center; color: var(--wl-jade-deep); }
.section-label::before { content: ""; width: 7px; height: 7px; margin-right: 3px; border-radius: 50%; background: var(--wl-coral); box-shadow: 0 0 0 4px rgba(201,110,88,.1); }
.cream-section { background: linear-gradient(135deg, #f2ecde 0%, #fbf8f1 68%, #f1eee5 100%); }
.intro-section { background: linear-gradient(115deg, #f8f5ed 0%, #fbf8f1 75%); }
.intro-grid > h2 { position: relative; }
.intro-grid > h2::after { display: block; width: 64px; height: 3px; margin-top: 22px; border-radius: 3px; background: linear-gradient(90deg, var(--wl-coral), var(--wl-amber)); content: ""; }
.approach-teaser { max-width: 1240px; margin-inline: auto; padding-block: 82px; }
.teaser-art { border-radius: var(--wl-radius); background: linear-gradient(145deg,#e1ece6,#f3ead9); }
.teaser-circle { box-shadow: 0 18px 50px rgba(16,40,61,.18); }
.teacher-section { background: linear-gradient(115deg, #e7eee8, #f4f0e6); }
.teacher-photo, .large-photo { overflow: hidden; border: 1px solid rgba(16,40,61,.09); border-radius: var(--wl-radius); background: radial-gradient(circle at 50% 20%, #f9e9c7, transparent 58%), linear-gradient(145deg,#dce9e3,#c5d8d0); }
.photo-shape { box-shadow: 0 24px 50px rgba(16,40,61,.13); }
.photo-label { left: 20px; bottom: 18px; padding: 7px 10px; border: 1px solid rgba(255,255,255,.28); border-radius: 999px; background: rgba(16,40,61,.62); font-size: 10px; letter-spacing: .08em; }
.teacher-copy .placeholder-note { max-width: 45ch; }
.trial-band { background: radial-gradient(ellipse at 90% 25%, rgba(63,119,111,.55), transparent 28rem), linear-gradient(115deg,#0c2235,#15384a); }
.trial-band::after { position: absolute; right: 4%; bottom: -155px; width: 340px; height: 340px; border: 1px solid rgba(238,228,207,.16); border-radius: 50%; box-shadow: 0 0 0 32px rgba(238,228,207,.025), 0 0 0 68px rgba(238,228,207,.02); content: ""; pointer-events: none; }
.small-class-band { background: linear-gradient(112deg,#dce9e1,#edf1e9); }
.small-class-band::after { width: 1px; background: rgba(16,40,61,.13); }

.page-hero {
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(300px, .95fr);
  grid-template-rows: auto auto auto; align-items: center; column-gap: clamp(36px, 7vw, 100px);
  min-height: 490px; padding: 84px max(7.2%, calc((100% - 1060px) / 2)) 82px;
  background:
    radial-gradient(ellipse at 82% 48%, rgba(63,119,111,.38), transparent 28rem),
    linear-gradient(120deg,#0b2032 0%,#15364a 66%,#1c454d 100%);
}
.page-hero::before { position:absolute; inset:0; background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px); background-size:42px 42px; mask-image:linear-gradient(90deg,transparent 24%,#000 100%); content:""; pointer-events:none; }
.page-hero > .eyebrow { grid-column: 1; grid-row: 1; align-self: end; position: relative; z-index: 2; }
.page-hero h1 { grid-column: 1; grid-row: 2; max-width: 650px; font-size: clamp(52px,6.4vw,84px); }
.page-hero > .lead { grid-column: 1; grid-row: 3; position: relative; z-index: 2; margin-bottom: 28px; }
.page-hero-mark { z-index: 3; }
.page-hero-art {
  position: relative; z-index: 1; grid-column: 2; grid-row: 1 / 4; justify-self: center;
  display: grid; width: min(100%, 440px); aspect-ratio: 1.08; place-items: center;
  overflow: hidden; border: 1px solid rgba(238,228,207,.23); border-radius: 28px;
  background: radial-gradient(circle at 50% 46%,rgba(238,228,207,.16),rgba(238,228,207,.045) 56%,transparent 72%);
}
.page-hero-art::before, .page-hero-art::after { position:absolute; width:70%; aspect-ratio:1; border:1px solid rgba(238,228,207,.3); border-radius:50%; content:""; animation: orbit 42s linear infinite; }
.page-hero-art::after { width:48%; border-style:dashed; border-color:rgba(210,164,90,.45); animation-direction:reverse; animation-duration:32s; }
.page-hero-art svg { position:relative; z-index:1; width:66%; height:auto; overflow:visible; filter:drop-shadow(0 18px 28px rgba(0,0,0,.16)); }
.page-hero-art .art-chip { position:absolute; z-index:2; padding:8px 12px; border:1px solid rgba(255,255,255,.2); border-radius:999px; background:rgba(12,34,50,.74); color:#f8f3e8; font-size:11px; letter-spacing:.08em; backdrop-filter:blur(8px); }
.page-hero-art .chip-top { top:12%; left:10%; }
.page-hero-art .chip-bottom { right:8%; bottom:13%; }
.page-hero-art .art-number { position:absolute; right:12%; top:14%; color:rgba(238,228,207,.76); font:italic 42px/1 Georgia,serif; }
body[data-page="approach"] .page-hero-art { background:radial-gradient(circle at 50% 50%,rgba(105,160,142,.23),rgba(105,160,142,.05) 58%,transparent 72%); }
body[data-page="programmes"] .page-hero-art { background:radial-gradient(circle at 50% 50%,rgba(210,164,90,.2),rgba(210,164,90,.04) 58%,transparent 72%); }
body[data-page="schedules"] .page-hero-art { background:radial-gradient(circle at 50% 50%,rgba(201,110,88,.18),rgba(201,110,88,.035) 58%,transparent 72%); }
body[data-page="teacher"] .page-hero-art { background:radial-gradient(circle at 50% 50%,rgba(105,160,142,.23),rgba(105,160,142,.04) 58%,transparent 72%); }
body[data-page="trial"] .page-hero-art { background:radial-gradient(circle at 50% 50%,rgba(210,164,90,.2),rgba(210,164,90,.04) 58%,transparent 72%); }
body[data-page="contact"] .page-hero-art { background:radial-gradient(circle at 50% 50%,rgba(201,110,88,.19),rgba(201,110,88,.04) 58%,transparent 72%); }
body[data-page="privacy"] .page-hero-art { background:radial-gradient(circle at 50% 50%,rgba(105,160,142,.19),rgba(105,160,142,.04) 58%,transparent 72%); }

.subject-spotlights { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin:30px 0 36px; }
.subject-spotlight { position:relative; min-height:215px; padding:28px 30px; overflow:hidden; border:1px solid rgba(16,40,61,.08); border-radius:var(--wl-radius); box-shadow:0 12px 30px rgba(16,40,61,.06); }
.subject-spotlight h3 { margin:0 0 8px; color:var(--wl-midnight); font:600 26px/1.15 var(--display); letter-spacing:-.04em; }
.subject-spotlight p { max-width:38ch; margin:0; color:#53666b; font-size:15px; }
.subject-spotlight.maths { background:linear-gradient(130deg,#e1ece7,#f3f2e8); }
.subject-spotlight.science { background:linear-gradient(130deg,#f3e8d4,#fbf6eb); }
.subject-symbol { position:absolute; right:22px; bottom:4px; color:rgba(16,40,61,.12); font:italic 92px/1 Georgia,serif; }
.subject-spotlight::after { position:absolute; right:-30px; top:-54px; width:180px; height:180px; border:1px solid rgba(16,40,61,.12); border-radius:50%; box-shadow:0 0 0 18px rgba(255,255,255,.12),0 0 0 38px rgba(16,40,61,.035); content:""; }

.grade-card { border-radius:14px; overflow:hidden; }
.grade-card::before { position:absolute; right:-45px; top:74px; width:110px; height:110px; border:1px solid rgba(63,119,111,.15); border-radius:50%; content:""; transition:transform .35s ease; }
.grade-card:hover::before { transform:scale(1.3); }
.grade-card:hover { transform:translateY(-7px); }
.grade-pill { border:1px solid rgba(63,119,111,.12); }
.grade-subjects { position:relative; z-index:1; }
.programme-row { position:relative; margin:14px 0; padding:28px 22px; border:1px solid rgba(16,40,61,.09); border-radius:16px; background:rgba(255,254,250,.86); box-shadow:0 10px 28px rgba(16,40,61,.045); transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease; }
.programme-row:hover { transform:translateY(-3px); border-color:rgba(210,164,90,.55); box-shadow:0 18px 40px rgba(16,40,61,.09); }
.programme-list .programme-row h2 { font-size:clamp(24px,2.2vw,32px); line-height:1.15; }
.programme-level strong { color:var(--wl-jade-deep); }
.programme-details { padding-left:18px; border-left:1px solid rgba(16,40,61,.1); }
.small-class-band { border-block:1px solid rgba(16,40,61,.08); }

.steps-grid { gap:16px; }
.step-card { position:relative; overflow:hidden; border-radius:13px; border-top-width:3px; box-shadow:0 10px 28px rgba(16,40,61,.055); transition:transform .25s ease,box-shadow .25s ease; }
.step-card:hover { transform:translateY(-4px); box-shadow:0 18px 38px rgba(16,40,61,.1); }
.step-card::after { position:absolute; right:-28px; bottom:-46px; width:120px; height:120px; border:1px solid rgba(63,119,111,.14); border-radius:50%; content:""; }
.outcomes-section { position:relative; overflow:hidden; background:linear-gradient(115deg,#deebe4,#edf1e8); }
.outcomes-section::after { position:absolute; right:-100px; top:-130px; width:360px; height:360px; border:1px solid rgba(16,40,61,.08); border-radius:50%; box-shadow:0 0 0 28px rgba(16,40,61,.025),0 0 0 58px rgba(16,40,61,.02); content:""; }

.schedule-notice { max-width:900px; padding:clamp(26px,4vw,44px); border:1px solid rgba(16,40,61,.1); border-radius:20px; background:linear-gradient(135deg,#fffefa,#f5f0e3); box-shadow:var(--wl-shadow); }
.schedule-levels { border-color:rgba(16,40,61,.13); border-radius:12px; background:rgba(255,255,255,.45); }
.notice-icon { box-shadow:0 8px 22px rgba(63,119,111,.1); }

.teacher-profile { gap:clamp(35px,7vw,92px); }
.teacher-bio { padding:clamp(0px,3vw,24px); }
.teacher-focus-list { list-style:none; padding:0; }
.teacher-focus-list li { position:relative; padding:10px 10px 10px 36px; border-bottom:1px solid rgba(16,40,61,.08); }
.teacher-focus-list li::before { position:absolute; left:4px; top:11px; display:grid; width:20px; height:20px; place-items:center; border-radius:50%; background:#dcebe3; color:var(--wl-jade-deep); content:"✓"; font-size:12px; font-weight:700; }

.trial-request-card { border-radius:15px; box-shadow:0 12px 30px rgba(16,40,61,.055); }
.trial-request-card .button { border-radius:6px; }
.qr-placeholder { border-radius:9px; background:linear-gradient(135deg,#f3ead8,#fbf8f1); }
.placeholder-control { background:#f1eee6; }

.contact-info { padding-block:10px; }
.contact-form-wrap { border-radius:18px; box-shadow:var(--wl-shadow); }
form input, form select, form textarea { border-radius:7px; transition:border-color .2s,box-shadow .2s,background .2s; }
form input:focus, form select:focus, form textarea:focus { background:#fff; box-shadow:0 0 0 4px rgba(63,119,111,.12); }
form button { border-radius:6px; cursor:pointer; }
.form-note[data-state] { border-radius:0 8px 8px 0; animation:status-in .24s ease both; }

.privacy-section { margin-top:40px; margin-bottom:56px; padding:clamp(28px,5vw,58px); border:1px solid rgba(16,40,61,.09); border-radius:20px; background:linear-gradient(145deg,#fffefa,#f7f3e9); box-shadow:0 16px 48px rgba(16,40,61,.065); }
.privacy-section > h2 { padding-bottom:16px; border-bottom:1px solid var(--wl-line); }
.privacy-section ul { padding:18px 24px; border-radius:12px; background:#edf2ed; }
.review-banner { border-radius:10px; }

.center-cta { position:relative; overflow:hidden; background:radial-gradient(circle at 50% 115%,rgba(63,119,111,.09),transparent 24rem); }
.center-cta::before { position:absolute; left:50%; top:50%; width:440px; height:440px; border:1px solid rgba(16,40,61,.045); border-radius:50%; content:""; transform:translate(-50%,-50%); pointer-events:none; }
.center-cta > * { position:relative; z-index:1; }
.button { border-radius:5px; box-shadow:0 5px 14px rgba(16,40,61,.045); transition:transform .2s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease; }
.button:hover { box-shadow:0 10px 24px rgba(16,40,61,.12); }
.button:active { transform:translateY(0) scale(.985); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline:3px solid var(--wl-coral); outline-offset:4px; }

#site-footer { position:relative; overflow:hidden; }
#site-footer::before { position:absolute; right:-100px; top:-200px; width:430px; height:430px; border:1px solid rgba(238,228,207,.12); border-radius:50%; box-shadow:0 0 0 34px rgba(238,228,207,.025),0 0 0 72px rgba(238,228,207,.018); content:""; pointer-events:none; }
.footer-main, .footer-bottom { position:relative; z-index:1; }
.footer-heading { color:#d6bd8f !important; }
.footer-col a, .footer-address address { font-size:14px; }
.footer-bottom { font-size:12px; }

@keyframes art-float { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-8px); } }
@keyframes status-in { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:translateY(0); } }
.page-hero-art svg { animation:art-float 7s ease-in-out infinite; }

@media (max-width: 1000px) {
  .nav-wrap { padding-inline:28px; }
  .brand-logo { width:132px; }
  .brand-light .brand-logo { width:170px; }
  .page-hero { column-gap:36px; padding-inline:6%; }
  .hero.home-hero { padding-inline:6%; }
}
@media (max-width: 820px) {
  .nav-wrap { height:74px; }
  #primary-nav { top:72px; border-radius:0 0 16px 16px; }
  #primary-nav .nav-contact {
    align-self:flex-start;
    min-height:44px;
    margin:12px 0 3px;
    padding:11px 17px !important;
    border:1px solid #D6A451;
    border-radius:11px;
    background:linear-gradient(135deg, #176B68 0%, #103D4A 100%);
    box-shadow:0 5px 14px rgba(16,61,74,.16), inset 0 1px 0 rgba(255,255,255,.12);
    color:#fff !important;
    font-size:14px;
    font-weight:650;
    line-height:1.25;
    transition:background .2s ease, box-shadow .2s ease, transform .16s ease;
  }
  #primary-nav .nav-contact span {
    color:#F0C978;
  }
  #primary-nav .nav-contact:hover {
    background:linear-gradient(135deg, #1D7772 0%, #154957 100%);
    box-shadow:0 7px 18px rgba(16,61,74,.22), inset 0 1px 0 rgba(255,255,255,.14);
    transform:translateY(-1px);
  }
  #primary-nav .nav-contact:active {
    box-shadow:0 2px 7px rgba(16,61,74,.18);
    transform:translateY(0) scale(.985);
  }
  #primary-nav .nav-contact:focus-visible {
    outline:3px solid #D6A451;
    outline-offset:3px;
  }
  .hero.home-hero { min-height:0; padding:64px 7% 76px; }
  .hero h1 { font-size:clamp(48px,10vw,68px); }
  .hero-art { min-height:330px; }
  .page-hero { display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto auto auto auto; min-height:0; row-gap:0; padding:64px 7% 42px; }
  .page-hero > .eyebrow { grid-column:1; grid-row:1; }
  .page-hero h1 { grid-column:1; grid-row:2; font-size:clamp(48px,10.5vw,66px); }
  .page-hero > .lead { grid-column:1; grid-row:3; margin-bottom:20px; }
  .page-hero-art { grid-column:1; grid-row:4; width:min(100%,360px); aspect-ratio:1.35; margin:0 auto 18px; }
  .page-hero-mark { position:static; grid-column:1; grid-row:5; justify-self:end; margin:0 0 0 0; }
  .subject-spotlights { gap:12px; }
  .programme-row { padding:24px 18px; }
  .privacy-section { margin:26px 7% 48px; }
}
@media (max-width: 520px) {
  body { font-size:16px; }
  .nav-wrap { padding-inline:20px; }
  .brand-logo { width:120px; }
  .brand-light .brand-logo { width:156px; }
  .hero.home-hero { padding:52px 22px 70px; }
  .hero h1 { font-size:clamp(43px,11vw,52px); }
  .hero-art { height:260px; min-height:260px; }
  .subject-spotlights { grid-template-columns:minmax(0,1fr); }
  .subject-spotlight { min-height:175px; padding:24px; }
  .page-hero { padding:54px 22px 32px; }
  .page-hero h1 { font-size:clamp(42px,11.5vw,54px); }
  .page-hero-art { width:100%; aspect-ratio:1.45; border-radius:20px; }
  .programme-row { margin:10px 0; padding:20px 15px; }
  .programme-list .programme-row h2 { font-size:21px; line-height:1.2; }
  .programme-details { padding-left:12px; }
  .schedule-notice { border-radius:15px; }
  .trial-request-card { padding:20px; }
  .privacy-section { margin:20px 16px 40px; padding:24px 20px; border-radius:15px; }
  .footer-col a, .footer-address address { font-size:13px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; scroll-behavior:auto !important; }
  .page-hero-art svg { animation:none; }
}
