/* Happy Buds — the logo's purple, crimson and gold, petal and arch shapes, large type. One stylesheet for all pages. */
:root{
  --forest:#3a1f63;--leaf:#cf1f47;--sun:#f9b917;--coral:#8e5bb5;--sky:#e8833a;--ivory:#fbf9f2;--mint:#f5effb;--ink:#2d2640;--muted:#655c7a;--line:#e9e2f1;
  --fh:"Lexend",system-ui,sans-serif;--fb:"Mulish",system-ui,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:110px}
body{margin:0;background:#fff;color:var(--ink);font:400 18px/1.7 var(--fb);-webkit-font-smoothing:antialiased;overflow-x:clip}
h1,h2,h3,h4{font-family:var(--fh);color:var(--forest);line-height:1.12;margin:0;letter-spacing:-.02em}
p{margin:0 0 16px}
a{color:inherit}
ul,ol{margin:0;padding:0;list-style:none}
img{display:block;width:100%;height:100%;object-fit:cover}
.wrap{max-width:1220px;margin:0 auto;padding:0 28px}
.narrow{max-width:880px}
.center{text-align:center;margin:48px 0 0}
.ic{width:1em;height:1em;flex:none}
.fine{font-size:15px;color:var(--muted)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:16px 30px;border-radius:99px;font:700 16px/1 var(--fh);text-decoration:none;border:0;cursor:pointer;white-space:nowrap;transition:transform .2s,box-shadow .2s}
.btn:hover{transform:translateY(-3px)}
.btn--sun{background:var(--sun);color:var(--forest);box-shadow:0 10px 22px -12px rgba(249,185,23,.9)}
.btn--forest{background:var(--forest);color:#fff}
.btn--line{box-shadow:inset 0 0 0 2px currentColor}
.btns{display:flex;flex-wrap:wrap;gap:14px}

/* Header */
.head{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);box-shadow:0 1px 0 var(--line)}
.head .wrap{display:flex;align-items:center;gap:26px;height:92px}
.logo{display:flex;align-items:center;text-decoration:none}
/* The emblem is the top of the logo file; the name is set in type beside it so it stays sharp at header size */
.emblem{display:block;height:62px;overflow:hidden;flex:none}
.emblem img{height:85px;width:auto;object-fit:contain;mix-blend-mode:multiply}
.word{margin-left:12px;font:800 25px/1 var(--fh);color:var(--forest);letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}
.word small{display:block;font:600 11px/1 var(--fb);letter-spacing:.62em;color:var(--muted);margin-top:6px}
.head nav{display:flex;gap:6px;margin-left:auto}
.head nav a{padding:10px 14px;border-radius:99px;text-decoration:none;font:600 15px/1 var(--fh);color:var(--forest);white-space:nowrap;transition:background .2s}
.head nav a:hover{background:var(--mint)}
.head nav a.on{background:var(--forest);color:#fff}
.head .btn{padding:14px 24px}
.burger{display:none;background:none;border:0;padding:8px;cursor:pointer}
.burger i{display:block;width:28px;height:3px;border-radius:2px;background:var(--forest);margin:6px 0}

/* Curved edge shared by hero, page tops and footer */
.arc{position:absolute;left:0;bottom:-1px;width:100%;height:clamp(30px,5vw,80px);display:block;fill:#fff;pointer-events:none}

/* Labels and section headings */
.label{display:inline-flex;align-items:center;gap:8px;padding:8px 16px 8px 12px;border-radius:99px;background:var(--mint);color:var(--leaf);font:700 13px/1 var(--fh);letter-spacing:.08em;text-transform:uppercase}
.label .ic{font-size:17px}
.label--light{background:rgba(255,255,255,.16);color:#fff}
.hd{text-align:center;max-width:820px;margin:0 auto 60px;padding:0 28px}
.hd.left{text-align:left;margin:0 0 24px;padding:0}
.hd h2{font-size:clamp(34px,4.4vw,58px);font-weight:800;margin-top:18px}
.hd p{margin:18px 0 0;font-size:20px;color:var(--muted)}
mark{background:linear-gradient(transparent 62%,var(--sun) 62%,var(--sun) 92%,transparent 92%);color:inherit;padding:0 4px;border-radius:4px}
.sec{padding:110px 0;position:relative}
.tint{background:var(--ivory)}
.dark{background:var(--forest) radial-gradient(rgba(255,255,255,.05) 1.5px,transparent 1.6px) 0 0/22px 22px;border-radius:70px;margin:0 16px}
.dark h2,.dark h3{color:#fff}
.dark .hd p{color:#d9cfea}
.dark .label{background:rgba(255,255,255,.12);color:var(--sun)}

/* Home hero */
.hero{position:relative;min-height:min(84vh,760px);display:flex;align-items:center;color:#fff;background:var(--forest);padding:80px 0 170px}
.hero>img{position:absolute;inset:0;object-position:70% 30%}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(58,31,99,.96) 0%,rgba(58,31,99,.82) 38%,rgba(58,31,99,.25) 70%,rgba(58,31,99,.05))}
.hero>.wrap{position:relative;z-index:2;width:100%}
.hero h1{color:#fff;font-size:clamp(40px,5.8vw,80px);font-weight:800;max-width:780px;margin:22px 0 0}
.hero h1 em{font-style:normal;color:var(--sun)}
.hero p{font-size:clamp(18px,1.7vw,22px);max-width:560px;margin:22px 0 32px;color:#ece5f6}
.hero-card{position:absolute;left:0;right:0;bottom:-58px;z-index:3}
.card{display:grid;grid-template-columns:repeat(3,1fr) auto;align-items:center;background:#fff;border-radius:32px;box-shadow:0 30px 60px -34px rgba(58,31,99,.7);padding:12px 12px 12px 0}
.card div{padding:22px 34px;border-right:1px solid var(--line)}
.card b{display:block;font:800 clamp(24px,2.6vw,36px)/1.1 var(--fh);color:var(--forest)}
.card span{color:var(--muted);font-size:15.5px}
.card a{display:inline-flex;align-items:center;gap:10px;margin-left:22px;padding:24px 30px;border-radius:24px;background:var(--leaf);color:#fff;font:700 17px/1 var(--fh);text-decoration:none;white-space:nowrap}
.welcome{padding-top:190px}

/* Leaf-shaped photographs */
.split{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
.split--top{align-items:start}
.pics{position:relative;height:540px}
.leafpic{position:absolute;overflow:hidden;border-radius:8% 55% 8% 55%;box-shadow:0 30px 60px -36px rgba(58,31,99,.8)}
.leafpic.big{left:0;top:0;width:78%;height:86%}
.leafpic.small{right:0;bottom:0;width:46%;height:48%;border-radius:55% 8% 55% 8%;border:10px solid #fff}
.pics::before{content:"";position:absolute;left:-22px;top:26px;width:78%;height:86%;border-radius:8% 55% 8% 55%;background:var(--sun);z-index:-1}
.pics{z-index:0}
.tag{position:absolute;left:54%;top:-10px;display:grid;place-content:center;text-align:center;width:118px;height:118px;border-radius:50%;background:var(--coral);color:#fff;font:600 14px/1.1 var(--fh);border:8px solid #fff}
.tag b{display:block;font-size:40px;font-weight:800}
.ticks{display:grid;gap:12px;margin:22px 0 30px}
.ticks li{display:flex;gap:12px;align-items:flex-start}
.ticks .ic{margin-top:5px;width:22px;height:22px;padding:4px;border-radius:50%;background:var(--leaf);color:#fff;stroke-width:3}

/* Learning journey: arch-shaped photographs joined by a dotted line */
.journey{display:grid;grid-template-columns:repeat(4,1fr);gap:34px;position:relative}
.journey::before{content:"";position:absolute;left:8%;right:8%;top:150px;border-top:4px dotted #d2c6e4}
.stage{position:relative;text-align:center;text-decoration:none;display:block}
.arch{height:300px;border-radius:999px 999px 28px 28px;overflow:hidden;border:10px solid #fff;box-shadow:0 0 0 4px var(--c),0 26px 50px -32px rgba(58,31,99,.8);transition:transform .3s}
.stage:hover .arch{transform:translateY(-10px)}
.s1{--c:var(--coral)}.s2{--c:var(--sun)}.s3{--c:var(--leaf)}.s4{--c:var(--sky)}
.stage span,.age{display:inline-block;margin-top:22px;padding:6px 16px;border-radius:99px;background:var(--c);color:#fff;font:700 13.5px/1 var(--fh)}
.s2 span,.s2 .age{color:var(--forest)}
.stage h3{font-size:30px;margin:12px 0 6px}
.stage p{margin:0;color:var(--muted);font-size:17px}

/* Read, Speak, Write */
.rsw{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.rsw article{position:relative;padding:44px 36px 40px;border-radius:36px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);color:#e2d9f0;transition:background .25s,transform .25s}
.rsw article:hover{background:rgba(255,255,255,.12);transform:translateY(-6px)}
.rsw b{position:absolute;right:30px;top:22px;font:800 64px/1 var(--fh);color:rgba(255,255,255,.1)}
.rsw i{display:grid;place-items:center;width:76px;height:76px;border-radius:26px 26px 26px 6px;background:var(--sun);color:var(--forest);font-size:34px}
.rsw article:nth-child(2) i{background:var(--coral);color:#fff}.rsw article:nth-child(3) i{background:var(--sky);color:#fff}
.rsw h3{font-size:30px;margin:24px 0 10px}
.rsw p{margin:0}
.dark .btn--sun{box-shadow:none}

/* Feature grid */
.why{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.why>div{padding:36px 32px;border-radius:32px;background:var(--ivory);transition:transform .25s,box-shadow .25s}
.why>div:hover{transform:translateY(-6px);box-shadow:0 26px 50px -36px rgba(58,31,99,.7)}
.why i{display:grid;place-items:center;width:64px;height:64px;border-radius:22px 22px 22px 6px;background:var(--leaf);color:#fff;font-size:28px}
.why>div:nth-child(3n+2) i{background:var(--sun);color:var(--forest)}.why>div:nth-child(3n) i{background:var(--coral)}
.why h3{font-size:23px;margin:20px 0 8px}
.why p{margin:0;color:var(--muted);font-size:17px}
.tint .why>div{background:#fff}

/* Steps on a line */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:26px;counter-reset:s}
.steps li{counter-increment:s;position:relative;padding:74px 20px 0 0}
.steps li::before{content:counter(s);position:absolute;left:0;top:0;display:grid;place-items:center;width:56px;height:56px;border-radius:50% 50% 50% 8px;background:var(--forest);color:var(--sun);font:800 24px/1 var(--fh);z-index:1}
.steps li::after{content:"";position:absolute;left:56px;right:-26px;top:27px;border-top:3px dotted #d2c6e4}
.steps li:last-child::after{display:none}
.steps h3{font-size:23px;margin-bottom:6px}
.steps p{margin:0;color:var(--muted);font-size:17px}
.split .steps{grid-template-columns:1fr;gap:0}
.split .steps li{padding:6px 0 30px 80px}
.split .steps li::after{left:27px;right:auto;top:56px;bottom:0;border-top:0;border-left:3px dotted #d2c6e4}
.mini{font-size:26px;margin:54px 0 28px}

/* Partner cards */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.duo a{position:relative;display:flex;align-items:flex-end;min-height:480px;border-radius:40px;overflow:hidden;color:#fff;text-decoration:none}
.duo img{position:absolute;inset:0;transition:transform .6s}
.duo a:hover img{transform:scale(1.06)}
.duo a::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(0deg,rgba(58,31,99,.96) 0%,rgba(58,31,99,.5) 55%,transparent)}
.duo a>div{position:relative;z-index:2;padding:40px}
.duo span{display:inline-block;padding:6px 14px;border-radius:99px;background:var(--sun);color:var(--forest);font:700 13px/1 var(--fh);margin-bottom:14px}
.duo h3{color:#fff;font-size:34px}
.duo p{margin:10px 0 16px;color:#e2d9f0;max-width:28em}
.duo b{display:inline-flex;align-items:center;gap:8px;color:var(--sun);font-family:var(--fh)}

/* Call to action and bands */
.cta{background:var(--sun);padding:70px 0}
.cta .wrap{display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap}
.cta h2{font-size:clamp(28px,3.4vw,44px);font-weight:800}
.cta p{margin:8px 0 0;font-size:19px}
.cta .btn--sun{background:var(--forest);color:#fff;box-shadow:none}
.band{background:var(--forest);padding:64px 0}
.band .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.band div{border-left:3px solid var(--sun);padding-left:22px;color:#d9cfea}
.band b{display:block;font:800 clamp(28px,3.2vw,46px)/1.1 var(--fh);color:#fff}

/* Inner page top */
.top{position:relative;padding:90px 0 130px;color:#fff;background:var(--forest);overflow:hidden}
.top>img{position:absolute;inset:0}
.top::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(58,31,99,.95),rgba(58,31,99,.72) 55%,rgba(58,31,99,.4))}
.top .wrap{position:relative;z-index:2}
.top h1{color:#fff;font-size:clamp(40px,5.6vw,72px);font-weight:800}
.top p{font-size:21px;margin:12px 0 0;color:#ece5f6}
.top .arc{z-index:3}
.crumb{font:600 14px/1 var(--fh);letter-spacing:.06em;text-transform:uppercase;margin:0 0 18px!important;color:var(--sun)!important}
.crumb a{text-decoration:none;color:#fff}

/* About */
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.trio article{background:#fff;padding:44px 36px;border-radius:36px;text-align:center}
.trio i{display:inline-grid;place-items:center;width:84px;height:84px;border-radius:50%;background:var(--mint);color:var(--leaf);font-size:38px}
.trio h3{font-size:28px;margin:20px 0 10px}
.trio p{margin:0;color:var(--muted)}
.note{display:grid;grid-template-columns:340px 1fr;gap:60px;align-items:center;padding:60px;border-radius:60px 60px 60px 12px;background:var(--mint)}
.note b{display:block;font:700 20px/1.3 var(--fh);color:var(--forest);margin-top:10px}
.note>div>span{color:var(--muted)}
.slot,.map{display:grid;place-content:center;justify-items:center;gap:10px;height:400px;border-radius:8% 55% 8% 55%;background:#fff;border:3px dashed #d2c6e4;color:var(--leaf);font:600 15px var(--fh)}
.slot .ic,.map .ic{font-size:40px}
.map{height:300px;border-radius:32px;background:var(--ivory);margin-top:36px}

/* Curriculum */
.chips{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.chips span{padding:14px 24px;border-radius:99px;background:#fff;font:600 17px/1 var(--fh);color:var(--forest);box-shadow:0 10px 24px -18px rgba(58,31,99,.7)}
.chips span:nth-child(4n+1){border-bottom:4px solid var(--coral)}.chips span:nth-child(4n+2){border-bottom:4px solid var(--sun)}.chips span:nth-child(4n+3){border-bottom:4px solid var(--leaf)}.chips span:nth-child(4n){border-bottom:4px solid var(--sky)}
.tint .mini{text-align:center;margin-top:80px}
.app{display:flex;gap:30px;align-items:center;padding:44px 50px;border-radius:44px;background:var(--forest);color:#e2d9f0}
.app i{display:grid;place-items:center;width:90px;height:90px;border-radius:30px 30px 30px 8px;background:var(--sun);color:var(--forest);font-size:40px;flex:none}
.app h3{color:#fff;font-size:30px;margin-bottom:8px}.app p{margin:0}

/* Programmes */
.prow{display:grid;grid-template-columns:.85fr 1.15fr;gap:80px;align-items:center;padding:50px 0}
.prow--rev .arch{order:2}
.prow .arch{height:520px}
.prow h2{font-size:clamp(36px,4.4vw,56px);margin:14px 0 10px}
.prow h3{font-size:22px;margin-top:22px}
.prow>div>p{font-size:21px;color:var(--muted)}
.prow .age{margin-top:0}
table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border-radius:28px;overflow:hidden;box-shadow:0 24px 50px -36px rgba(58,31,99,.7)}
th{background:var(--forest);color:#fff;font:700 18px/1 var(--fh);text-align:left;padding:20px 28px}
td{padding:16px 28px;border-top:1px solid var(--line)}
tbody tr:nth-child(even) td{background:var(--ivory)}

/* Franchise */
.models{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.models article{padding:50px 44px;border-radius:44px;background:var(--ivory)}
.models .hot{background:var(--forest);color:#e2d9f0}
.models .hot h3{color:#fff}
.models h3{font-size:36px;margin:18px 0 8px}
.pilltag{display:inline-block;padding:8px 16px;border-radius:99px;background:var(--leaf);color:#fff;font:700 13px/1 var(--fh)}
.hot .pilltag{background:var(--sun);color:var(--forest)}
.hot .ticks .ic{background:var(--sun);color:var(--forest)}

/* Forms, contact, FAQ */
.tour{display:grid;gap:16px;padding:44px;border-radius:44px 44px 44px 12px;background:var(--forest);color:#fff;position:sticky;top:120px}
.tour h3{color:#fff;font-size:34px}
.tour label{display:grid;gap:7px;font:600 14.5px/1 var(--fh);color:#d9cfea}
.tour .row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.tour input,.tour select,.tour textarea{font:500 16.5px/1.4 var(--fb);padding:14px 16px;border-radius:16px;border:2px solid transparent;background:#fff;color:var(--ink);width:100%}
.tour input:focus,.tour select:focus,.tour textarea:focus{outline:0;border-color:var(--sun)}
.tour .btn{justify-self:start;box-shadow:none}
.tour small{color:#d9cfea}
.contact{display:grid;gap:22px;margin-top:10px}
.contact li{display:flex;gap:18px;align-items:center}
.contact i{display:grid;place-items:center;width:60px;height:60px;border-radius:20px 20px 20px 6px;background:var(--mint);color:var(--leaf);font-size:26px;flex:none}
.contact b{display:block;font:700 19px/1.3 var(--fh);color:var(--forest)}
.faq{display:grid;gap:14px;margin-top:8px}
.faq details{background:#fff;border-radius:24px;padding:22px 28px;box-shadow:0 14px 30px -26px rgba(58,31,99,.8);border:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px;font:700 19.5px/1.3 var(--fh);color:var(--forest)}
.faq summary::after{content:"+";color:var(--leaf);font-size:26px;line-height:1}
.faq details[open] summary::after{content:"–"}
.faq p{margin:12px 0 0;color:var(--muted)}

/* Footer */
.foot{position:relative;background:var(--forest);color:#cdc1e0;padding:130px 0 30px;font-size:16px;margin-top:0}
.arc--foot{top:-1px;bottom:auto;transform:rotate(180deg);fill:#fff}
main:has(>.cta:last-child)+.foot .arc--foot{fill:var(--sun)}
main:has(>.tint:last-child)+.foot .arc--foot{fill:var(--ivory)}
.foot .wrap{display:grid;grid-template-columns:1.5fr .8fr .9fr 1.2fr;gap:44px}
.foot .logo{display:inline-flex;background:#f6f6f6;border-radius:22px;padding:12px 18px;margin-bottom:18px}
.foot .emblem{height:auto}
.foot .emblem img{height:104px;mix-blend-mode:normal}
.foot .word{display:none}
.foot h4{color:#fff;font-size:19px;margin-bottom:16px}
.foot a{display:block;text-decoration:none;margin-bottom:10px}
.foot a:hover{color:var(--sun)}
.foot p{margin:0 0 10px}
.copy{text-align:center;margin:50px 0 0!important;padding-top:24px;border-top:1px solid rgba(255,255,255,.12);font-size:14px}
.float{position:fixed;right:22px;bottom:22px;z-index:40;display:none;align-items:center;gap:10px;padding:16px 22px;border-radius:99px;background:var(--sun);color:var(--forest);font:700 16px/1 var(--fh);text-decoration:none;box-shadow:0 14px 30px -12px rgba(0,0,0,.5)}

@media (max-width:1180px){.head nav a{padding:10px 9px;font-size:14px}.head .wrap{gap:14px}}
@media (max-width:980px){
  body{font-size:17px}
  .wrap{padding:0 20px}
  .head .wrap{height:76px}
  .emblem{height:50px}.emblem img{height:69px}.word{font-size:20px}
  .head nav{display:none;position:absolute;left:0;right:0;top:76px;flex-direction:column;gap:4px;background:#fff;padding:10px 20px 22px;box-shadow:0 24px 30px -20px rgba(58,31,99,.5)}
  .open .head nav{display:flex}
  .head nav a{padding:14px 16px}
  .head .btn{display:none}
  .burger{display:block;margin-left:auto}
  .sec{padding:70px 0}
  .hd{margin-bottom:40px}
  .dark{border-radius:40px;margin:0 8px}
  .hero{padding:60px 0 60px;min-height:0}
  .hero::after{background:rgba(58,31,99,.84)}
  .hero-card{position:relative;bottom:auto;margin-top:44px}
  .hero{flex-direction:column;align-items:stretch}
  .card{grid-template-columns:1fr;padding:10px}
  .card div{border-right:0;border-bottom:1px solid var(--line);padding:16px 20px}
  .card a{margin:12px 0 0;justify-content:center}
  .welcome{padding-top:70px}
  .split,.prow,.duo,.models,.note{grid-template-columns:1fr;gap:44px}
  .pics{height:380px}
  .journey{grid-template-columns:1fr 1fr;gap:36px 20px}.journey::before{display:none}
  .arch{height:220px}.prow .arch{height:320px}.prow--rev .arch{order:0}
  .rsw,.why,.trio{grid-template-columns:1fr}
  .band .wrap{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr;gap:0}
  .steps li{padding:6px 0 30px 80px}
  .steps li::after{left:27px;right:auto;top:56px;bottom:0;border-top:0;border-left:3px dotted #d2c6e4}
  .note{padding:32px}.slot{height:280px}
  .tour{position:static;padding:30px}.tour .row{grid-template-columns:1fr}
  .duo a{min-height:380px}.duo a>div{padding:28px}
  .app{flex-direction:column;align-items:flex-start;padding:32px}
  .foot{padding-top:90px}.foot .wrap{grid-template-columns:1fr 1fr}
  .float{display:inline-flex}
  .models article{padding:34px 26px}
}
@media (max-width:560px){th,td{padding:12px 12px;font-size:15px}.journey{grid-template-columns:1fr}.arch{height:280px}.foot .wrap{grid-template-columns:1fr}.band .wrap{grid-template-columns:1fr}.btns .btn{width:100%}}

.contact a,.foot p a{display:inline;text-decoration:none;margin:0}

/* School Life menu */
.drop{position:relative}
.drop>a{display:inline-flex;align-items:center;gap:6px}
.drop>div{position:absolute;left:0;top:100%;min-width:250px;padding:10px;background:#fff;border-radius:22px;box-shadow:0 24px 50px -24px rgba(58,31,99,.6);display:none;z-index:5}
.drop:hover>div,.drop:focus-within>div{display:grid;gap:2px}
.drop>div a{border-radius:14px!important;padding:13px 16px!important}

/* Calendar */
.legend{display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:center;margin-bottom:44px;font:600 15px/1 var(--fh);color:var(--forest)}
.legend span{display:inline-flex;align-items:center;gap:8px}
.legend i{width:14px;height:14px;border-radius:50%;background:var(--k)}
.k-school{--k:var(--forest)}.k-celebration{--k:var(--sun)}.k-exam{--k:var(--leaf)}.k-holiday{--k:var(--sky)}.k-parents{--k:var(--coral)}
.cal{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.cal article{background:var(--ivory);border-radius:32px;padding:30px 28px;border-top:8px solid var(--forest)}
.cal article:nth-child(3n+2){border-top-color:var(--leaf)}.cal article:nth-child(3n){border-top-color:var(--sun)}
.cal h3{font-size:28px;margin-bottom:18px}
.cal ul{display:grid;gap:14px}
.cal li{display:grid;grid-template-columns:54px 1fr;gap:14px;align-items:center}
.cal li>b{display:grid;place-items:center;height:54px;border-radius:18px 18px 18px 6px;background:var(--k);color:#fff;font:800 20px/1 var(--fh)}
.cal .k-celebration>b{color:var(--forest)}
.cal strong{display:block;font:700 17px/1.3 var(--fh);color:var(--forest)}
.cal span{font-size:14.5px;color:var(--muted)}

/* Achievements */
.timeline{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;counter-reset:m}
.timeline li{counter-increment:m;position:relative;padding:30px 30px 30px 96px;border-radius:32px;background:var(--ivory)}
.timeline li::before{content:counter(m);position:absolute;left:26px;top:28px;display:grid;place-items:center;width:52px;height:52px;border-radius:50% 50% 50% 8px;background:var(--forest);color:var(--sun);font:800 22px/1 var(--fh)}
.timeline h3{font-size:23px;margin-bottom:6px}
.timeline p{margin:0;color:var(--muted);font-size:17px}
.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.slots article{padding:36px 28px;border-radius:32px;border:3px dashed #d2c6e4;text-align:center;background:#fff}
.slots i{display:inline-grid;place-items:center;width:76px;height:76px;border-radius:50%;background:var(--mint);color:var(--leaf);font-size:34px}
.slots h3{font-size:22px;margin:18px 0 6px}
.slots p{margin:0;color:var(--muted);font-size:16px}

/* Gallery */
.filter{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:40px}
.filter button{padding:12px 22px;border-radius:99px;border:2px solid var(--line);background:#fff;font:600 15.5px/1 var(--fh);color:var(--forest);cursor:pointer}
.filter button.on{background:var(--forest);border-color:var(--forest);color:#fff}
.gal{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:230px;grid-auto-flow:dense;gap:18px}
.gal figure{position:relative;margin:0;border-radius:28px;overflow:hidden;cursor:zoom-in}
.gal figure[hidden]{display:none}
.gal figure:nth-child(6n+1){grid-row:span 2;border-radius:999px 999px 28px 28px}
.gal figure:nth-child(6n+4){grid-column:span 2}
.gal img{transition:transform .5s}
.gal figure:hover img{transform:scale(1.07)}
.gal figcaption{position:absolute;left:14px;bottom:14px;padding:7px 14px;border-radius:99px;background:rgba(255,255,255,.92);font:700 13px/1 var(--fh);color:var(--forest)}
.lightbox{position:fixed;inset:0;z-index:60;background:rgba(30,14,54,.94);display:grid;place-items:center;padding:30px;cursor:zoom-out}
.lightbox[hidden]{display:none}
.lightbox img{width:auto;height:auto;max-width:100%;max-height:90vh;border-radius:24px;object-fit:contain}
.lightbox button{position:absolute;right:24px;top:18px;width:52px;height:52px;border-radius:50%;border:0;background:#fff;font-size:30px;line-height:1;cursor:pointer;color:var(--forest)}
.life{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:44px}
.life a{padding:34px 32px;border-radius:32px;background:#fff;text-decoration:none;box-shadow:0 20px 44px -34px rgba(58,31,99,.7);transition:transform .25s}
.life a:hover{transform:translateY(-6px)}
.life h3{font-size:25px;margin-bottom:8px}
.life p{color:var(--muted);margin-bottom:14px}
.life b{display:inline-flex;align-items:center;gap:8px;font-family:var(--fh);color:var(--leaf)}
@media (min-width:981px){.foot .wrap{grid-template-columns:1.5fr .8fr 1fr 1.2fr}}
@media (max-width:1240px){.head nav a{padding:10px 9px;font-size:14px}.head .wrap{gap:12px}.word{font-size:21px}}
@media (max-width:980px){
  .drop>div{position:static;display:grid;box-shadow:none;padding:0 0 0 16px;min-width:0}
  .cal,.timeline,.slots,.life{grid-template-columns:1fr}
  .gal{grid-template-columns:1fr 1fr;grid-auto-rows:160px;gap:12px}
}

/* Header fit: eight menu items, the logo and the Book a Tour button on one line */
.head .wrap{max-width:1440px;gap:18px}
.head nav{gap:2px}
.head nav a{padding:10px 11px;font-size:14.5px}
.head .btn{padding:13px 20px;font-size:15px}
@media (max-width:1320px){.head .word{display:none}}
@media (max-width:1100px) and (min-width:981px){.head nav a{padding:9px 7px;font-size:13.5px}}
@media (max-width:980px){.head .word{display:block}}
/* Small phones (320px wide) */
@media (max-width:380px){.wrap{padding:0 16px}.head .wrap{gap:8px}.emblem{height:42px}.emblem img{height:58px}.word{font-size:16px;margin-left:8px}.word small{letter-spacing:.4em;font-size:9.5px}.tour{padding:24px 18px}.contact li{gap:12px}.contact i{width:48px;height:48px}}


/* ==========================================================================
   Rules for the WordPress version, where every page is made of editor blocks
   ========================================================================== */
.wp-block-image{margin:0;width:100%;height:100%}
.hb-ic svg{width:1em;height:1em;display:block}
.fine.center{text-align:center;margin-top:36px}
.wrap.narrow{max-width:880px}
.split.top-align{align-items:start}
.foot.f-sun .arc--foot{fill:var(--sun)}.foot.f-tint .arc--foot{fill:var(--ivory)}

/* Labels: the leaf is drawn by the stylesheet, so the label stays plain editable text */
p.label{margin:0}
p.label::before{content:"";width:17px;height:17px;flex:none;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21V11M12 15c-6 0-8-4-8-9 5 0 8 3 8 9zM12 11c0-5 2-8 8-8 0 5-2 8-8 8z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21V11M12 15c-6 0-8-4-8-9 5 0 8 3 8 9zM12 11c0-5 2-8 8-8 0 5-2 8-8 8z'/%3E%3C/svg%3E") center/contain no-repeat}
.hd p.label,.hero p.label{margin:0;font:700 13px/1 var(--fh);color:var(--leaf);max-width:none}
.dark .hd p.label{color:var(--sun)}
.hero p.label.light,.label.light{background:rgba(255,255,255,.16);color:#fff}

/* Buttons */
.wp-block-buttons{display:flex;flex-wrap:wrap;gap:14px}
.wp-block-buttons.center{justify-content:center;margin-top:48px}
.wp-block-button{margin:0}
.wp-block-button__link{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:16px 30px;border-radius:99px;font:700 16px/1 var(--fh);text-decoration:none;border:0;cursor:pointer;white-space:nowrap;transition:transform .2s,box-shadow .2s}
.wp-block-button__link:hover{transform:translateY(-3px)}
.sun .wp-block-button__link{background:var(--sun);color:var(--forest);box-shadow:0 10px 22px -12px rgba(249,185,23,.9)}
.forest .wp-block-button__link{background:var(--forest);color:#fff}
.line .wp-block-button__link{background:transparent;color:inherit;box-shadow:inset 0 0 0 2px currentColor}
.dark .sun .wp-block-button__link,.tour .btn{box-shadow:none}

/* Hero and page tops */
.hero>.wp-block-image,.top>.wp-block-image{position:absolute;inset:0}
.hero>.wp-block-image img{object-position:70% 30%}
.hero .card p{margin:0;max-width:none}
.stat .num{margin:0;font:800 clamp(24px,2.6vw,36px)/1.1 var(--fh);color:var(--forest)}
.stat .cap{margin:0;color:var(--muted);font-size:15.5px}
.card .stat{padding:22px 34px;border-right:1px solid var(--line)}
.card-link{margin:0 0 0 22px!important}
.card-link a{display:inline-flex;padding:24px 30px;border-radius:24px;background:var(--leaf);color:#fff;font:700 17px/1 var(--fh);text-decoration:none;white-space:nowrap}
.band .wrap{border-left:0;padding:0 28px}
.band .stat{border-left:3px solid var(--sun);padding-left:22px}
.band .num{font-size:clamp(28px,3.2vw,46px);color:#fff}
.band .cap{color:#d9cfea;font-size:17px}
p.tag{margin:0}
.tag strong{display:block;font-size:40px;font-weight:800;line-height:1}

/* Tick lists */
.ticks li{display:block;position:relative;padding-left:36px}
.ticks li::before{content:"";position:absolute;left:0;top:4px;width:22px;height:22px;border-radius:50%;background:var(--leaf) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/13px no-repeat}
.hot .ticks li::before{background-color:var(--sun);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233a1f63' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E")}

/* Cards that are one big link: the heading's link is stretched over the whole card */
.stage h3 a,.life-card h3 a,.duo-card h3 a{color:inherit;text-decoration:none}
.stage h3 a::after,.life-card h3 a::after,.duo-card h3 a::after{content:"";position:absolute;inset:0;z-index:3}
.stage .age{margin:22px 0 0}
.stage>p:last-child{margin:0;color:var(--muted);font-size:17px}

.rsw>div{position:relative;padding:44px 36px 40px;border-radius:36px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);color:#e2d9f0;transition:background .25s,transform .25s}
.rsw>div:hover{background:rgba(255,255,255,.12);transform:translateY(-6px)}
.rsw .big{position:absolute;right:30px;top:22px;margin:0;font:800 64px/1 var(--fh);color:rgba(255,255,255,.1)}
.rsw>div:nth-child(2) i{background:var(--coral);color:#fff}.rsw>div:nth-child(3) i{background:var(--sky);color:#fff}

.steps{counter-reset:s}
.steps>div{counter-increment:s;position:relative;padding:74px 20px 0 0}
.steps>div::before{content:counter(s);position:absolute;left:0;top:0;display:grid;place-items:center;width:56px;height:56px;border-radius:50% 50% 50% 8px;background:var(--forest);color:var(--sun);font:800 24px/1 var(--fh);z-index:1}
.steps>div::after{content:"";position:absolute;left:56px;right:-26px;top:27px;border-top:3px dotted #d2c6e4}
.steps>div:last-child::after{display:none}
.split .steps>div{padding:6px 0 30px 80px}
.split .steps>div::after{left:27px;right:auto;top:56px;bottom:0;border-top:0;border-left:3px dotted #d2c6e4}

.duo-card{position:relative;isolation:isolate;display:flex;align-items:flex-end;min-height:480px;border-radius:40px;overflow:hidden;color:#fff}
.duo-card>.wp-block-image{position:absolute;inset:0;z-index:-1}
.duo-card img{transition:transform .6s}
.duo-card:hover img{transform:scale(1.06)}
.duo-body{width:100%;padding:130px 40px 40px;background:linear-gradient(0deg,rgba(58,31,99,.97) 0%,rgba(58,31,99,.8) 55%,transparent)}
.kicker{display:inline-block;margin:0 0 14px;padding:6px 14px;border-radius:99px;background:var(--sun);color:var(--forest);font:700 13px/1 var(--fh)}
.duo-card h3{color:#fff;font-size:34px}
.duo-body p:not(.kicker){margin:10px 0 0;color:#e2d9f0;max-width:28em}
.more{margin:14px 0 0!important;font-family:var(--fh);font-weight:700;color:var(--sun)!important}
.life-card{position:relative;padding:34px 32px;border-radius:32px;background:#fff;box-shadow:0 20px 44px -34px rgba(58,31,99,.7);transition:transform .25s}
.life-card:hover{transform:translateY(-6px)}
.life-card p{color:var(--muted);margin:0}
.life-card .more{color:var(--leaf)!important}

.trio>div{background:#fff;padding:44px 36px;border-radius:36px;text-align:center}
.trio>div:nth-child(2) i{background:#fdf1cf;color:#b98400}.trio>div:nth-child(3) i{background:#f5effb;color:var(--coral)}
.note .name{font:700 20px/1.3 var(--fh);color:var(--forest);margin:10px 0 0}
.note .role{color:var(--muted);margin:0}
.slot p{margin:0}.slot i{font-size:40px}
.chips p{margin:0;padding:14px 24px;border-radius:99px;background:#fff;font:600 17px/1 var(--fh);color:var(--forest);box-shadow:0 10px 24px -18px rgba(58,31,99,.7)}
.chips p:nth-child(4n+1){border-bottom:4px solid var(--coral)}.chips p:nth-child(4n+2){border-bottom:4px solid var(--sun)}.chips p:nth-child(4n+3){border-bottom:4px solid var(--leaf)}.chips p:nth-child(4n){border-bottom:4px solid var(--sky)}
.prow.rev .arch{order:2}
.prow .intro{font-size:21px;color:var(--muted)}
.prow .age{margin:0}
.models>div{padding:50px 44px;border-radius:44px;background:var(--ivory)}
.models>.hot{background:var(--forest);color:#e2d9f0}
.model h3{font-size:36px;margin:18px 0 8px}
p.pilltag{margin:0}
.contact-row{display:flex;gap:18px;align-items:center}
.contact-row p{margin:0}
.contact-row strong{display:block;font:700 19px/1.3 var(--fh);color:var(--forest)}
.contact-row br{display:none}
.contact-row a{text-decoration:none}
.map span{font:600 15px var(--fh)}
.timeline{counter-reset:m}
.timeline>div{counter-increment:m;position:relative;padding:30px 30px 30px 96px;border-radius:32px;background:var(--ivory)}
.timeline>div::before{content:counter(m);position:absolute;left:26px;top:28px;display:grid;place-items:center;width:52px;height:52px;border-radius:50% 50% 50% 8px;background:var(--forest);color:var(--sun);font:800 22px/1 var(--fh)}
.timeline>div p{margin:0;color:var(--muted);font-size:17px}
.slots>div{padding:36px 28px;border-radius:32px;border:3px dashed #d2c6e4;text-align:center;background:#fff}
.slots>div p{margin:0;color:var(--muted);font-size:16px}
.gal .wp-block-image{height:auto}
.tour .sent{padding:14px 16px;border-radius:16px;background:rgba(255,255,255,.14);margin:0}
.tour .hp{position:absolute;left:-9999px}

@media (max-width:980px){
  .card .stat{border-right:0;border-bottom:1px solid var(--line);padding:16px 20px}
  .card-link{margin:12px 0 0!important}.card-link a{display:flex;justify-content:center}
  .steps>div{padding:6px 0 30px 80px}
  .steps>div::after{left:27px;right:auto;top:56px;bottom:0;border-top:0;border-left:3px dotted #d2c6e4}
  .prow.rev .arch{order:0}
  .duo-card{min-height:380px}.duo-body{padding:110px 28px 28px}
  .models>div{padding:34px 26px}
  .band .wrap{padding:0 20px}
}
@media (max-width:560px){.wp-block-buttons .wp-block-button,.wp-block-buttons .wp-block-button__link{width:100%}}

/* Calendar year tabs and small fixes */
.filter a{padding:12px 22px;border-radius:99px;border:2px solid var(--line);background:#fff;font:600 15.5px/1 var(--fh);color:var(--forest);text-decoration:none}
.filter a.on{background:var(--forest);border-color:var(--forest);color:#fff}
.cal-year{text-align:center;font:700 20px/1 var(--fh);color:var(--forest);margin:0 0 22px}
.stage .age{color:#fff}.stage.s2 .age{color:var(--forest)}
.hb-site #wpadminbar{position:fixed}

/* Card links: older rules for whole-card links must not reshape the heading link */
.duo h3 a{display:inline;position:static;min-height:0;border-radius:0;overflow:visible}
.duo h3 a::before{content:none}
.life h3 a{display:inline;padding:0;border-radius:0;background:none;box-shadow:none}
.life h3 a:hover{transform:none}
/* Signed-in staff see the WordPress toolbar above the site header */
.admin-bar .head{top:32px}
@media (max-width:782px){.admin-bar .head{top:46px}}
.prow .age{color:#fff;font-size:13.5px}.prow.s2 .age{color:var(--forest)}
/* Page not found */
.lost{padding:150px 0 170px}
.lost .wp-block-buttons.center{margin-top:10px}
/* A logo uploaded by the school is shown whole, not cropped */
.emblem.custom{height:auto;overflow:visible}
.emblem.custom img{height:62px;width:auto;mix-blend-mode:normal}
.foot .emblem.custom img{height:104px}
@media (max-width:980px){.emblem.custom img{height:50px}}
@media (max-width:380px){.emblem.custom img{height:42px}}
/* The footer shows the emblem on a light tile with the school's name beside it */
.foot .logo{align-items:center;background:none;padding:0}
.foot .emblem.custom{background:#fff;border-radius:22px;padding:10px 14px}
.foot .emblem.custom img{height:74px}
.foot .word{display:block;color:#fff}
.foot .word small{color:#cdc1e0}
