:root{--ink:#0b2149;--mut:#5c7099;--bl:#1d5fe0;--bl2:#5aa2ff;--line:#e5edfa;--bg:#ffffff;--bg2:#f4f8ff}
*{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;scroll-padding-top:76px}
body{font:16px/1.7 Inter,system-ui,sans-serif;color:var(--ink);background:var(--bg);overflow-x:hidden}
h1,h2,h3,h4{font-family:'Fraunces','Playfair Display',Georgia,serif;line-height:1.15;color:var(--ink)}
.w{max-width:1180px;margin:auto;padding:0 22px}
a{color:inherit;text-decoration:none}
.btn{display:inline-flex;align-items:center;gap:8px;border:0;cursor:pointer;background:linear-gradient(135deg,var(--bl),var(--bl2));color:#fff;padding:14px 30px;border-radius:50px;font:600 15px Inter,sans-serif;box-shadow:0 12px 26px #1d5fe040;transition:.3s}
.btn:hover{transform:translateY(-3px);box-shadow:0 16px 32px #1d5fe055}
.btn.o{background:#fff;color:var(--bl);border:1.6px solid var(--bl);box-shadow:none}
.btn.o:hover{background:var(--bg2)}
/* intro */
#intro{position:fixed;inset:0;z-index:200;background:#fff;display:grid;place-items:center;animation:fadeOut .9s 2.4s forwards}
#intro .cl{width:90px;height:90px;border-radius:50%;background:linear-gradient(135deg,var(--bl),var(--bl2));display:grid;place-items:center;font-size:40px;margin:auto;animation:pop 1s ease both, float 2.6s ease-in-out infinite 1s}
#intro h1{margin-top:22px;font-size:clamp(26px,5vw,42px);opacity:0;animation:up .9s .5s forwards}
#intro p{margin-top:8px;letter-spacing:.35em;font-size:11px;color:var(--mut);opacity:0;animation:up .9s .8s forwards}
#intro .ld{margin:26px auto 0;width:140px;height:3px;background:var(--line);border-radius:3px;overflow:hidden}
#intro .ld i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--bl),var(--bl2));animation:bar 2s ease forwards}
@keyframes fadeOut{to{opacity:0;visibility:hidden}}
@keyframes pop{from{transform:scale(.3);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes float{50%{transform:translateY(-10px)}}
@keyframes up{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes bar{to{width:100%}}
/* nav */
nav{position:fixed;top:0;left:0;right:0;z-index:40;padding:16px 0;transition:.3s}
nav.sc{background:#ffffffee;backdrop-filter:blur(10px);box-shadow:0 4px 24px #1d5fe014;padding:10px 0}
nav .w{display:flex;justify-content:space-between;align-items:center}
.brand{font:700 22px 'Fraunces','Playfair Display',serif;color:var(--bl);display:flex;gap:8px;align-items:center}
.nl{display:flex;gap:30px;align-items:center}.nl a:not(.btn){font-size:14px;font-weight:500;color:var(--ink);position:relative}
.nl a:not(.btn):after{content:"";position:absolute;left:0;bottom:-5px;width:0;height:2px;background:var(--bl);transition:.3s}.nl a:not(.btn):hover:after{width:100%}
.burg{display:none;font-size:26px;background:none;border:0;color:var(--bl);cursor:pointer}
/* hero */
.hero{padding:170px 0 100px;position:relative;background:radial-gradient(1100px 500px at 85% -10%,#eaf2ff,transparent 60%)}
.hero .w{display:grid;grid-template-columns:1.05fr .95fr;gap:50px;align-items:center}
.tag{display:inline-flex;align-items:center;gap:8px;background:var(--bg2);border:1px solid var(--line);color:var(--bl);padding:7px 16px;border-radius:30px;font-size:13px;font-weight:600;margin-bottom:22px}
.hero h1{font-size:clamp(36px,5.2vw,60px);opacity:0;animation:up 1s .2s forwards}
.hero h1 em{font-style:normal;color:var(--bl);position:relative}
.hero p{margin:22px 0 32px;color:var(--mut);max-width:480px;font-size:17px;opacity:0;animation:up 1s .4s forwards}
.hero .cta{display:flex;gap:14px;flex-wrap:wrap;opacity:0;animation:up 1s .6s forwards}
.hero-img{position:relative;opacity:0;animation:up 1.1s .5s forwards}
.hero-img img{width:100%;border-radius:32px;aspect-ratio:4/3.1;object-fit:cover;box-shadow:0 40px 80px -20px #1d5fe044}
.float-card{position:absolute;background:#fff;border-radius:18px;box-shadow:0 20px 40px #1d5fe022;padding:14px 18px;display:flex;gap:12px;align-items:center;animation:float 3.5s ease-in-out infinite}
.float-card.a{top:-20px;left:-30px}.float-card.b{bottom:-22px;right:-24px;animation-delay:1s}
.float-card i{width:42px;height:42px;border-radius:12px;background:var(--bg2);display:grid;place-items:center;font-size:20px}
.float-card b{display:block;font-size:15px;font-family:Inter}.float-card small{color:var(--mut);font-size:11px}
.strip{background:linear-gradient(90deg,var(--bl),#3f7fea);color:#fff;padding:14px 0;overflow:hidden;white-space:nowrap}
.strip .mv{display:inline-block;animation:mv 22s linear infinite;font-weight:600;letter-spacing:.02em}
.strip .mv span{margin:0 34px;opacity:.95}@keyframes mv{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* sections */
section{padding:100px 0}.alt{background:var(--bg2)}
.eyebrow{color:var(--bl);font-weight:700;letter-spacing:.22em;font-size:12px;text-transform:uppercase}
.t{max-width:640px;margin-bottom:56px}.t.c{margin-left:auto;margin-right:auto;text-align:center}.t h2{font-size:clamp(28px,4vw,42px);margin-top:10px}.t p{color:var(--mut);margin-top:14px}
.g3{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:26px}
.c{background:#fff;border:1px solid var(--line);border-radius:24px;padding:32px;position:relative;overflow:hidden}
.rv{opacity:0;transform:translateY(36px);transition:.9s cubic-bezier(.2,.8,.2,1)}.rv.on{opacity:1;transform:none}
.c .ic{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,var(--bl),var(--bl2));display:grid;place-items:center;font-size:26px;margin-bottom:18px;color:#fff}
.c h3{font-size:19px;margin-bottom:8px}.c p{color:var(--mut);font-size:14.5px}
.num{position:absolute;right:20px;top:14px;font:700 46px 'Fraunces',serif;color:var(--bg2)}
/* programs (niche) */
.tabs{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:34px}
.tabs button{border:1.5px solid var(--line);background:#fff;padding:10px 20px;border-radius:30px;cursor:pointer;font:600 13px Inter;color:var(--ink);transition:.25s}
.tabs button.on{background:var(--bl);color:#fff;border-color:var(--bl)}
.prog{display:none;grid-template-columns:1fr 1fr;gap:40px;align-items:center}.prog.on{display:grid;animation:up .5s both}
.prog img{width:100%;border-radius:24px;aspect-ratio:5/4;object-fit:cover}
.prog ul{margin-top:16px;display:grid;gap:10px}.prog li{display:flex;gap:10px;color:var(--mut);font-size:14.5px}.prog li:before{content:"✓";color:var(--bl);font-weight:700}
/* stats */
.stats{background:linear-gradient(135deg,#0b2149,#1d5fe0);color:#fff;border-radius:32px;padding:60px 40px}
.stats .g3{grid-template-columns:repeat(4,1fr);text-align:center}.stats b{display:block;font:700 44px 'Fraunces',serif}.stats span{color:#c9dcff;font-size:13px}
/* gallery masonry */
.mas{columns:3 220px;gap:16px}.mas img{width:100%;border-radius:20px;margin-bottom:16px;display:block;transition:.4s}.mas img:hover{filter:brightness(.92);transform:scale(1.015)}
/* testimonials */
.tst{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px}
.tst .c p{color:var(--ink);font-size:15px;font-style:italic}.tst .who{display:flex;gap:12px;align-items:center;margin-top:18px}
.av{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,var(--bl),var(--bl2));color:#fff;display:grid;place-items:center;font-weight:700;font-family:'Fraunces',serif}
.stars{color:#f5b301;letter-spacing:2px;margin-bottom:10px}
/* faq */
.acc{border:1px solid var(--line);border-radius:16px;margin-bottom:12px;overflow:hidden}
.acc summary{padding:18px 22px;cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between}
.acc summary:after{content:"+";color:var(--bl);font-size:22px}
.acc[open] summary:after{content:"–"}.acc p{padding:0 22px 20px;color:var(--mut)}
/* contact / apply */
.ct-wrap{display:grid;grid-template-columns:1fr 1.1fr;gap:44px}
.info-card{display:flex;gap:14px;align-items:flex-start;margin-bottom:22px}
.info-card i{width:46px;height:46px;border-radius:14px;background:var(--bg2);display:grid;place-items:center;flex:none}
.mapbox{border-radius:24px;overflow:hidden;border:1px solid var(--line);margin-top:26px;height:230px}
.mapbox iframe{width:100%;height:100%;border:0}
form.app{background:#fff;border:1px solid var(--line);border-radius:28px;padding:36px}
form.app label{display:block;font-size:12px;font-weight:700;color:var(--mut);letter-spacing:.05em;text-transform:uppercase;margin:14px 0 6px}
form.app input,form.app textarea,form.app select{width:100%;padding:13px 15px;border:1.6px solid var(--line);border-radius:14px;font:inherit;transition:.2s}
form.app input:focus,form.app textarea:focus{outline:0;border-color:var(--bl2);box-shadow:0 0 0 4px #5aa2ff22}
.okmsg{background:#e9f7ee;color:#0c6b34;padding:14px 18px;border-radius:14px;margin-bottom:16px}
footer{background:#0b2149;color:#c9dcff;padding:60px 0 24px}
footer .w{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:40px}
footer h4{color:#fff;font-family:Inter;font-size:14px;margin-bottom:14px}
footer a{color:#c9dcff;display:block;margin-bottom:9px;font-size:14px}
footer .bot{border-top:1px solid #ffffff22;margin-top:40px;padding-top:20px;text-align:center;font-size:13px;color:#8fa9d6}
.wa-fab{position:fixed;bottom:24px;right:24px;width:58px;height:58px;border-radius:50%;background:#25D366;display:grid;place-items:center;font-size:28px;box-shadow:0 10px 26px #00000033;z-index:50;animation:float 3s ease-in-out infinite}
@media(max-width:920px){.hero .w,.ct-wrap,.prog{grid-template-columns:1fr}.stats .g3{grid-template-columns:repeat(2,1fr);gap:24px}footer .w{grid-template-columns:1fr}.nl{position:fixed;top:0;right:0;height:100vh;background:#fff;flex-direction:column;justify-content:center;width:78vw;transform:translateX(100%);transition:.35s;box-shadow:-20px 0 40px #0002}.nl.on{transform:none}.burg{display:block}.mas{columns:2 160px}}
