/* Midnight and glacial blue. A quiet pink signature keeps the school recognisable. */
:root{--ink:#0b2538;--muted:#526a7b;--paper:#fcfefe;--soft:#edf4f7;--line:#d7e3e9;--pink:#98cdff;--pink-dark:#2b688e;--brand:#ed65b0;--ice:#82e2ed;--accent:#98cdff;--radius:18px}
body{background:var(--paper)}.topbar{background:#fcfefef2;border-bottom-color:#d9e5eb}.topbar.scrolled{box-shadow:0 10px 40px #071b2b0a}.brand em{color:#b83383}.footer .brand em{color:var(--brand)}.button{background:var(--accent);border-radius:9px;position:relative;overflow:hidden;isolation:isolate;transition:box-shadow .3s,background .3s,translate .25s}.button:hover{background:#b9ddff;transform:none;box-shadow:0 7px 26px #528fd430}.button span{transition:transform .25s}.button:hover span{transform:translate(2px,-2px)}.button:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 20%,#ffffff85 48%,transparent 72%);transform:translateX(-120%);transition:transform .6s}.button:hover:before{transform:translateX(120%)}.button.dark{background:var(--ink)}.button.dark:hover{background:#17435b}.button.outline{border-color:#bacdd7}.navlinks a{position:relative}.navlinks a:after{content:'';position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--pink-dark);transform:scaleX(0);transform-origin:right;transition:transform .3s}.navlinks a:hover:after,.navlinks a[aria-current=page]:after{transform:scaleX(1);transform-origin:left}.language a:hover{color:var(--pink-dark)}
.hero{background:#071b2b}.hero:after{background:linear-gradient(90deg,#071b2b 0%,#071b2bf0 25%,#071b2b60 64%,#071b2b14 100%)}.hero-home{min-height:710px;isolation:isolate}.hero-home:after{background:linear-gradient(90deg,#071b2b 0%,#071b2bf5 29%,#071b2b80 57%,#071b2b18 100%)}.hero-home .hero-photo{opacity:.55;object-position:68% center;filter:saturate(.65) contrast(1.12);will-change:transform}.hero h1{color:#f3faff;text-shadow:0 3px 0 #ffffff08}.hero h1 span{color:var(--accent)}.hero-home h1{font-size:clamp(4.7rem,7.9vw,7.6rem);letter-spacing:-.066em}.hero .lead{color:#cadce8}.hero-atmosphere{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden;contain:layout paint;mask-image:linear-gradient(90deg,transparent 12%,#000 65%)}.ambient-light{position:absolute;inset:-12%;filter:blur(32px);opacity:.72;will-change:transform}.ambient-light--blue{background:radial-gradient(ellipse 38% 55% at 72% 42%,#579fdb2e 0%,#297faf13 40%,transparent 75%);animation:ambient-blue-drift 32s ease-in-out infinite alternate}.ambient-light--violet{background:radial-gradient(ellipse 28% 45% at 83% 66%,#9481d51f 0%,transparent 70%);animation:ambient-violet-drift 43s ease-in-out infinite alternate}.hero-atmosphere.is-paused .ambient-light{animation-play-state:paused}.hero-bottom{right:max(48px,calc((100vw - 1184px)/2));gap:30px;letter-spacing:.17em}.hero-bottom span{position:relative;padding-top:15px}.hero-bottom span:before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--ice)}.hero-bottom span:nth-child(2):before{background:var(--accent)}.hero-bottom span:nth-child(3):before{background:var(--brand)}.eyebrow:before{background:var(--accent)}.hero-home .eyebrow{color:#c4d7e0}.underhero{background:#eaf2f6;border-bottom-color:var(--line)}.underhero strong{color:#143a51}.underhero span{color:#5a7283}.section-number{letter-spacing:.14em;color:#2d6c91}.section.dark,.footer{background:#071b2b}.section.dark .section-number{color:var(--accent)}.quote .prose{color:#d7e5ed}.quote cite{color:#8faabc}.section-top p{color:var(--muted)}.contact{position:relative;overflow:hidden;isolation:isolate;background:#e2edf3}.contact:after{content:'';position:absolute;inset:-100% -60% -100% 40%;background:radial-gradient(ellipse at center,#98cdff60 0%,transparent 48%);z-index:-1}.contact p{color:#48677b}.contact .section-number{color:#2d6c91}.contact-email:hover{color:#2d6c91}.footer small{color:#96adbd}.footer-links a:hover{color:var(--accent)}.team-photo,.split-photo{box-shadow:0 22px 65px -30px #12375065}.team-card{border-radius:18px;position:relative;isolation:isolate}.team-card .services{color:#36566a}.team-card:hover h3{color:#2d6c91}.price-grid{perspective:1400px}.price-card{background:#fcfefe;border-color:#cddfe6;border-radius:20px;box-shadow:0 7px 25px #12375006;isolation:isolate;overflow:hidden;transform-style:preserve-3d}.price-card.featured{background:linear-gradient(150deg,#143f54,#071b2b 80%);border-color:#1b4a5e;box-shadow:0 22px 50px -23px #07233475}.price-card:before{content:'';position:absolute;top:0;left:28px;right:28px;height:3px;background:var(--ice);border-radius:0 0 4px 4px;pointer-events:none}.price-card:nth-child(2):before{background:#5688b3}.price-card.featured:before{background:var(--accent)}.price-card.featured .plan-index{color:var(--accent)}.price-card.featured p{color:#b7cdda}.price-card .price small{color:#587587}.price-card.featured .price small{color:#9fbbca}.price-card.featured .price{color:#effaff}.price-card .outline:hover{background:#e9f2f6}.plan-aside{background:#edf4f7;border-color:#cddfe6;box-shadow:0 20px 50px -30px #12375055}.review-card{background:#fff;border-color:#d4e3e9;box-shadow:0 6px 25px #153c5406;position:relative;isolation:isolate;border-radius:18px}.review-result{color:#2d6c91}.feature{border-top-color:#c1d7e0;transition:translate .35s}.feature:hover{translate:0 -4px}.feature .index,.step .index{color:#2d6c91}.icon-button{border-color:#bdcfd9;color:#1a465e;transition:background .2s,transform .2s}.icon-button:hover{background:var(--accent);transform:translateY(-2px)}.gallery-rail{scrollbar-color:#70b9bc #e4edf2}.gallery-item{perspective:1000px}.gallery-item img{transition:transform .6s cubic-bezier(.2,.7,.2,1),box-shadow .5s;transform-origin:center}.gallery-item:hover img{transform:rotateY(-3deg) rotateZ(-.7deg) scale(.985);box-shadow:8px 15px 30px #14374f30}.gallery-item:nth-child(even):hover img{transform:rotateY(3deg) rotateZ(.7deg) scale(.985)}.partner img{transition:transform .35s}.partner a:hover img{transform:scale(1.05)}.photo-frame{transform-style:preserve-3d}.photo-label{transform:translateZ(22px)}
/* Every animation is enhancement-only: all content starts visible. */
.reading-progress{position:fixed;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,#7cdee6,#a3bde9,#98cdff);transform:scaleX(0);transform-origin:left;z-index:50;pointer-events:none}
.tilt-surface{--rx:0deg;--ry:0deg;--glow-x:50%;--glow-y:50%;transform:perspective(1100px) rotateX(var(--rx)) rotateY(var(--ry));transition:transform .42s cubic-bezier(.2,.7,.2,1),box-shadow .4s;will-change:auto}.tilt-surface.is-tilting{transition:transform .1s linear,box-shadow .3s;box-shadow:0 25px 55px -28px #12375070}.tilt-surface:after{content:'';position:absolute;inset:0;background:radial-gradient(420px circle at var(--glow-x) var(--glow-y),#7ad9de1c,transparent 65%);border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s;z-index:4}.tilt-surface.is-tilting:after{opacity:1}.photo-frame.tilt-surface:after{background:linear-gradient(transparent,#0008);inset:65% 0 0;opacity:1;z-index:1}.hero-home .hero-photo{transform:scale(1.04) translate3d(0,var(--hero-shift,0px),0)}.hero-home h1 span{display:inline-block}.motion-active .hero-home h1 span{animation:one-entry 1.15s cubic-bezier(.18,.8,.2,1) both}.motion-active .hero-home .eyebrow{animation:copy-entry .8s .1s both}.motion-active .hero-home .lead{animation:copy-entry .8s .2s both}.motion-active .hero-home .actions{animation:copy-entry .8s .35s both}.motion-active .hero-bottom span{animation:copy-entry .8s .5s both}.motion-active .hero-bottom span:nth-child(2){animation-delay:.65s}.motion-active .hero-bottom span:nth-child(3){animation-delay:.8s}
@keyframes one-entry{from{opacity:0;transform:perspective(800px) translateY(20px) rotateX(25deg);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}@keyframes copy-entry{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1500px){.hero-home{min-height:760px}}@media(max-width:1100px){.hero-home h1{font-size:88px}.hero-atmosphere{inset:0}}@media(max-width:760px){.hero-home{min-height:660px}.hero-home .hero-photo{opacity:.65;object-position:66% center}.hero-home:after{background:linear-gradient(0deg,#071b2b 0%,#071b2be0 42%,#071b2b50 100%)}.hero-home .wrap{padding-top:170px;padding-bottom:65px}.hero-home h1{font-size:clamp(3.9rem,15vw,6.4rem)}.hero-atmosphere{inset:0}.ambient-light{opacity:.5;filter:blur(24px)}.hero-home .eyebrow{font-size:10px;max-width:300px;line-height:1.6;margin-bottom:18px}.hero-home .lead{max-width:335px;font-size:16px}.hero-bottom{right:22px;gap:18px;font-size:9px;bottom:18px}.hero-bottom span{padding-top:8px}.hero:after{background:linear-gradient(0deg,#071b2b 3%,#071b2bd0 35%,#071b2b35 90%)}.hero-home .hero-photo{transform:scale(1.04)}.price-card{border-radius:18px}.reading-progress{height:2px}.gallery-item:hover img{transform:none}.contact{padding-bottom:70px}}
html[data-motion=off] *,html[data-motion=off] *:before,html[data-motion=off] *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}html[data-motion=off] .tilt-surface,html[data-motion=off] .gallery-item img{transform:none!important}html[data-motion=off] .hero-home .hero-photo{transform:none!important}html[data-motion=off] .button{translate:none!important}html[data-motion=off] .feature:hover{translate:none}html[data-motion=off] .tilt-surface:after{opacity:0}html[data-motion=off] .photo-frame:after{opacity:1}
@media(prefers-reduced-motion:reduce){html:not([data-motion=on]) *,html:not([data-motion=on]) *:before,html:not([data-motion=on]) *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.hero-home .hero-photo{transform:none}}

html[data-motion=off]{scroll-behavior:auto!important}

/* Two current team members; preserve a balanced layout at every width. */
.team-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:36px}.team-photo{aspect-ratio:1.15;object-position:center 28%}
@media(max-width:760px){.team-grid{grid-template-columns:1fr;gap:30px}}

/* Slow, diffused lighting subtly tints photography and stays behind text. */
@keyframes ambient-blue-drift{from{transform:translate3d(-3%,2%,0) scale(1)}to{transform:translate3d(3%,-3%,0) scale(1.08)}}
@keyframes ambient-violet-drift{from{transform:translate3d(2%,-2%,0) scale(1.05)}to{transform:translate3d(-3%,3%,0) scale(.98)}}
