:root{
  --plum:#3b1230; --plum2:#5e2150; --rose:#f6c1d1; --rose2:#e8749f; --cream:#fff8f4; --soft:#fbeaf0;
  --gold:#f2b134; --teal:#16967a; --ink:#27141f; --muted:#7a6572; --r:22px;
  --serif:'Fraunces',Georgia,serif; --sans:'Inter',system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0}
html{scroll-padding-top:70px;overflow-x:clip}
main{overflow-x:clip}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{font-family:var(--sans);color:var(--ink);background:var(--cream);line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{width:min(1160px,100% - 40px);margin-inline:auto}
h1,h2,h3{font-family:var(--serif);line-height:1.08;font-weight:800}
h2{font-size:clamp(2rem,4.6vw,3.4rem);margin-bottom:1.1rem;letter-spacing:-.01em}
h3{font-size:1.3rem;margin-bottom:.4rem}
p+p{margin-top:1rem}
.center{text-align:center}
.muted{color:var(--muted)}
.sec{padding:clamp(4rem,9vw,7rem) 0;position:relative}
.sec--soft{background:var(--soft)}
.sec--plum{background:var(--plum);color:#fff}
.head{margin-bottom:clamp(2rem,5vw,3.5rem)}
.kicker{display:inline-block;color:var(--rose2);font-weight:700;letter-spacing:.16em;text-transform:uppercase;font-size:.78rem;margin-bottom:.9rem}
.kicker--light{color:var(--rose)}

/* buttons */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:1rem 1.8rem;border-radius:999px;background:var(--plum);color:#fff;text-decoration:none;font:600 1rem var(--sans);border:2px solid var(--plum);cursor:pointer;overflow:hidden;isolation:isolate;transition:color .35s,border-color .35s}
.btn::before{content:"";position:absolute;inset:0;background:var(--rose2);transform:translateY(101%);transition:transform .45s cubic-bezier(.2,.8,.2,1);z-index:-1;border-radius:inherit}
.btn:hover::before{transform:none}
.btn:hover{border-color:var(--rose2)}
.btn--sm{padding:.55rem 1.2rem;font-size:.9rem}
.btn--ghost{background:transparent;color:#fff;border-color:#ffffff80}
.btn--rose{background:var(--rose);color:var(--plum);border-color:var(--rose)}
.btn--rose::before{background:#fff}
.btn--rose:hover{border-color:#fff}
.hero .btn:not(.btn--ghost){background:var(--rose);color:var(--plum);border-color:var(--rose)}
.hero .btn:not(.btn--ghost)::before{background:#fff}
.magnet span{display:inline-block;pointer-events:none}

/* loader */
.loader{position:fixed;inset:0;z-index:200;display:grid;place-items:center;color:#fff}
.loader__curtain{position:absolute;inset:0;background:var(--plum);z-index:-1}
.loader__in{text-align:center;width:min(520px,86vw)}
.loader__svg text{font:800 110px var(--serif);fill:transparent;stroke:var(--rose);stroke-width:1.6;stroke-dasharray:600;stroke-dashoffset:600}
.loader p{letter-spacing:.3em;text-transform:uppercase;font-size:.7rem;color:var(--rose);margin:.5rem 0 1.4rem;opacity:.8}
.loader__bar{height:3px;background:#ffffff22;border-radius:3px;overflow:hidden}
.loader__bar i{display:block;height:100%;width:0;background:var(--rose2)}
.loader b{display:block;margin-top:.8rem;font:600 .85rem var(--sans);color:#ffffffaa}
.progress{position:fixed;top:0;left:0;height:3px;width:100%;background:linear-gradient(90deg,var(--rose2),var(--gold));transform:scaleX(0);transform-origin:0 50%;z-index:120}
.cursor{position:fixed;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;border:2px solid var(--rose2);border-radius:50%;pointer-events:none;z-index:150;opacity:0;mix-blend-mode:difference}
.cursor.big{background:#e8749f55}
@media (hover:hover) and (pointer:fine){.cursor{opacity:1}}

/* nav */
.nav{position:fixed;inset:0 0 auto 0;z-index:100;transition:background .35s,box-shadow .35s,transform .45s}
.nav.solid{background:#fff8f4ee;backdrop-filter:blur(12px);box-shadow:0 1px 0 #3b123014;color:var(--ink)}
.nav.hide{transform:translateY(-100%)}
.nav__in{display:flex;align-items:center;justify-content:space-between;height:70px}
.nav{color:#fff}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none}
.brand__mark{width:40px;height:40px;border-radius:12px;background:var(--rose);color:var(--plum);display:grid;place-items:center;font:800 1.4rem var(--serif)}
.brand__txt{display:flex;flex-direction:column;line-height:1.05}
.brand__txt small{letter-spacing:.22em;text-transform:uppercase;font-size:.62rem;opacity:.7}
.menu{display:flex;align-items:center;gap:1.7rem}
.menu a:not(.btn){text-decoration:none;font-weight:500;font-size:.94rem;position:relative}
.menu a:not(.btn)::after{content:"";position:absolute;left:0;bottom:-5px;height:2px;width:100%;background:var(--rose2);transform:scaleX(0);transform-origin:right;transition:transform .35s}
.menu a:not(.btn):hover::after{transform:scaleX(1);transform-origin:left}
.nav.solid .btn{background:var(--plum);color:#fff;border-color:var(--plum)}
.burger{display:none;background:none;border:0;color:inherit;width:44px;height:44px;cursor:pointer;position:relative}
.burger span{position:absolute;left:10px;right:10px;height:2px;background:currentColor;transition:.3s}
.burger span:first-child{top:17px}.burger span:last-child{top:25px}
.burger[aria-expanded=true] span:first-child{top:21px;transform:rotate(45deg)}
.burger[aria-expanded=true] span:last-child{top:21px;transform:rotate(-45deg)}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;overflow:hidden;color:#fff;background:linear-gradient(140deg,#2b0c23 0%,var(--plum) 40%,#8a2d6a 100%)}
.blob{position:absolute;border-radius:50%;filter:blur(60px);opacity:.55;pointer-events:none}
.blob--a{width:480px;height:480px;background:#e8749f;top:-120px;right:-80px}
.blob--b{width:420px;height:420px;background:#6a2a9a;bottom:-140px;left:-100px}
.blob--c{width:260px;height:260px;background:var(--gold);top:45%;left:46%;opacity:.28}
.sparkles{position:absolute;inset:0;pointer-events:none}
.sparkles i{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--rose);opacity:0}
.hero__in{position:relative;display:grid;grid-template-columns:1.1fr .9fr;gap:2rem;align-items:center;padding:7rem 0 5rem}
.tag{display:inline-block;padding:.45rem 1.1rem;border-radius:999px;background:#ffffff1c;border:1px solid #ffffff3d;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:1.4rem}
.h1{font-size:clamp(3rem,8vw,6.2rem);margin-bottom:1.4rem;letter-spacing:-.02em}
.h1 .line{display:block;overflow:hidden;padding-bottom:.08em}
.h1 .line>span{display:block}
.h1 em{font-style:italic;color:var(--rose)}
.lead{font-size:1.15rem;max-width:34em;color:#ffe9f1}
.type{color:var(--gold);font-weight:600}
.caret{display:inline-block;width:2px;height:1.1em;background:var(--gold);margin-left:3px;vertical-align:-.15em;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.hero__cta{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2rem}
.hero__art{position:relative;aspect-ratio:1/1.08;max-width:470px;width:100%;margin-inline:auto}
.ring{position:absolute;border-radius:50%;border:1.5px dashed #f6c1d199;inset:0}
.ring--1{animation:spin 40s linear infinite}
.ring--2{inset:9%;border-color:#ffffff33;animation:spin 26s linear infinite reverse}
@keyframes spin{to{transform:rotate(360deg)}}
.photo-card{position:absolute;inset:12% 10%;border-radius:36% 36% 28px 28px;overflow:hidden;box-shadow:0 40px 80px #0006;border:6px solid #ffffff2e}
.photo-card img{width:100%;height:100%;object-fit:cover;object-position:center 35%}
.chip{position:absolute;background:#fff;color:var(--plum);padding:.6rem 1rem;border-radius:999px;font-size:.88rem;font-weight:500;box-shadow:0 14px 30px #0004;white-space:nowrap}
.chip--1{top:6%;left:-4%}.chip--2{bottom:12%;right:-6%}.chip--3{bottom:-2%;left:6%}
.scroll-hint{position:absolute;bottom:22px;left:50%;width:26px;height:42px;border:2px solid #ffffff80;border-radius:20px;transform:translateX(-50%)}
.scroll-hint i{position:absolute;left:50%;top:8px;width:4px;height:8px;margin-left:-2px;background:#fff;border-radius:3px;animation:wheel 1.6s infinite}
@keyframes wheel{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(14px)}}

/* marquee */
.marquee{background:var(--gold);color:var(--plum);overflow:hidden;white-space:nowrap;padding:1rem 0;transform:rotate(-1.2deg) scale(1.03);margin:-1px 0;position:relative;z-index:3}
.marquee__track{display:inline-flex;will-change:transform}
.marquee span{font:800 1.5rem var(--serif);padding-right:2rem;text-transform:uppercase;letter-spacing:.03em}

/* stats */
.stats{padding:5rem 0 1rem}
.stats__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.4rem}
.stat{text-align:center;padding:1.4rem 1rem;border-radius:var(--r);background:#fff;box-shadow:0 14px 34px #3b123014}
.stat b{display:block;font:800 clamp(2.2rem,4.6vw,3.6rem) var(--serif);color:var(--plum2);line-height:1}
.stat span{display:block;margin-top:.5rem;font-size:.86rem;color:var(--muted)}

/* about */
.about{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2rem,6vw,5rem);align-items:center}
.about__media{position:relative}
.reveal-img{overflow:hidden;border-radius:var(--r);box-shadow:0 30px 60px #3b123030}
.reveal-img img{width:100%;height:100%;object-fit:cover;transform:scale(1.2)}
.about__media .reveal-img{aspect-ratio:3/4}
.about__badge{position:absolute;right:-26px;bottom:-26px;width:130px;height:130px;border-radius:50%;background:var(--gold);display:grid;place-items:center;color:var(--plum)}
.about__badge svg{position:absolute;inset:0;animation:spin 18s linear infinite}
.about__badge text{font:700 10.5px var(--sans);letter-spacing:2.2px;fill:var(--plum)}
.about__badge span{font-size:2.2rem}
.sig{color:var(--plum2)}

/* cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem}
.card{background:#ffffff0f;border:1px solid #ffffff22;border-radius:var(--r);padding:2rem;transition:background .3s,border-color .3s;transform-style:preserve-3d;will-change:transform}
.card:hover{background:#ffffff1c;border-color:var(--rose2)}
.card__ico{display:grid;place-items:center;width:58px;height:58px;border-radius:16px;background:#ffffff1c;font-size:1.7rem;margin-bottom:1.1rem}
.card p{color:#ffe0eb;font-size:.96rem}

/* ballet */
.ballet__in{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,6vw,5rem);align-items:center}
.info{list-style:none;padding:0;margin:1.6rem 0 2rem;display:grid;gap:.9rem}
.info li{display:flex;gap:1rem;align-items:center;background:#fff;border-radius:16px;padding:.9rem 1.1rem;box-shadow:0 10px 26px #3b12301a}
.info li>span{font-size:1.5rem}
.info b{display:block;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--rose2)}
.ballet__media{position:relative}
.reveal-img.tall{aspect-ratio:3/4}
.note{position:absolute;left:-20px;bottom:24px;background:var(--plum);color:#fff;padding:.9rem 1.2rem;border-radius:16px;max-width:240px;font-size:.9rem;box-shadow:0 20px 40px #3b123055;transform:rotate(-3deg)}

/* flyers */
.flyers{display:flex;justify-content:center;gap:clamp(1rem,4vw,3rem);flex-wrap:wrap;margin-bottom:2.5rem}
.flyer{width:min(340px,86vw);background:#fff;padding:12px 12px 8px;border-radius:14px;box-shadow:0 30px 60px #3b123040}
.flyer img{border-radius:8px;width:100%}
.flyer figcaption{font-size:.82rem;text-align:center;padding:.6rem 0 .2rem;color:var(--muted)}
.f1{transform:rotate(-3deg)}.f2{transform:rotate(3deg)}
.partners{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:center;align-items:center}
.partners span{font-size:.85rem;color:var(--muted)}
.partners b{background:#fff;padding:.5rem 1.1rem;border-radius:999px;font-size:.85rem;color:var(--teal);box-shadow:0 8px 20px #3b12301a}

/* steps */
.steps{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;padding-top:1.5rem}
.steps__line{position:absolute;top:calc(1.5rem + 26px);left:12%;width:76%;height:8px;overflow:visible}
.steps__line path{fill:none;stroke:var(--rose2);stroke-width:3;stroke-dasharray:8 10;vector-effect:non-scaling-stroke}
.step{position:relative;text-align:center;padding:0 1rem}
.step b{display:grid;place-items:center;width:54px;height:54px;margin:0 auto 1.1rem;border-radius:50%;background:var(--plum);color:var(--rose);font:800 1.5rem var(--serif);box-shadow:0 0 0 8px var(--cream)}

/* gallery */
.gal{overflow:hidden}
.gal__track{display:flex;gap:1.4rem;padding:0 max(20px,calc((100vw - 1160px)/2));width:max-content}
.gal figure{width:clamp(240px,28vw,340px);height:clamp(340px,40vw,470px);border-radius:var(--r);overflow:hidden;flex:none;background:#00000030}
.gal img{width:100%;height:100%;object-fit:cover}
.gal__hint{margin-top:1.4rem;font-size:.85rem;color:var(--rose);opacity:.8}

/* contact */
.contact{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:start}
.contacts{list-style:none;padding:0;margin:1.6rem 0;display:grid;gap:.9rem}
.contacts li{display:flex;flex-direction:column;border-left:3px solid var(--rose2);padding-left:1rem}
.contacts span{font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}
.contacts a{font-weight:600;font-size:1.08rem;text-decoration:none;cursor:pointer}
.contacts a:hover{color:var(--rose2)}
.form{display:grid;gap:.8rem}
.form input,.form textarea{font:inherit;padding:.85rem 1.1rem;border:1.5px solid #3b123026;border-radius:14px;background:#fff;transition:border .2s,box-shadow .2s}
.form input:focus,.form textarea:focus{outline:0;border-color:var(--rose2);box-shadow:0 0 0 4px #e8749f33}
.form input.err{border-color:#c0392b}
.form .btn{justify-self:start}
.map{aspect-ratio:1/1;min-height:360px}
.map iframe{width:100%;height:100%;border:0}

/* footer */
.foot{background:var(--plum);color:#ffe9f1;padding:3rem 0 2rem;overflow:hidden}
.foot__big{font:800 clamp(6rem,24vw,19rem) var(--serif);line-height:.8;text-align:center;color:transparent;-webkit-text-stroke:2px #f6c1d155;margin-bottom:2rem;letter-spacing:-.03em}
.foot__in{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.wa-float{position:fixed;right:20px;bottom:20px;width:60px;height:60px;border-radius:50%;background:#25d366;display:grid;place-items:center;box-shadow:0 10px 25px #0004;z-index:90;cursor:pointer}
.wa-float::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid #25d366;animation:pulse 2s infinite}
@keyframes pulse{to{transform:scale(1.6);opacity:0}}

/* JS-enabled initial states */
.js .split-in,.js .fade{opacity:0}
.js .h1 .line>span{transform:translateY(110%)}
.js .split-title .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.1em}
.js .split-title .w>i{display:inline-block;font-style:inherit;transform:translateY(110%)}
.js .cards .card,.js .stat,.js .info li,.js .step,.js .chip{opacity:0}

@media (prefers-reduced-motion:reduce){
  .ring,.about__badge svg,.marquee__track,.caret,.wa-float::after,.scroll-hint i{animation:none}
}

/* mobile */
@media (max-width:900px){
  .burger{display:block}
  .menu{position:fixed;inset:70px 0 auto 0;flex-direction:column;align-items:stretch;gap:0;background:var(--cream);color:var(--ink);padding:1rem 20px 1.6rem;box-shadow:0 20px 40px #0002;clip-path:inset(0 0 100% 0);transition:clip-path .45s}
  .menu.open{clip-path:inset(0)}
  .menu a:not(.btn){padding:.9rem 0;border-bottom:1px solid #3b123014}
  .menu .btn{margin-top:1rem;background:var(--plum);color:#fff}
  .hero__in,.about,.ballet__in,.contact{grid-template-columns:1fr}
  .hero__in{padding-top:6.5rem}
  .hero__art{max-width:340px;order:-1}
  .chip--1{left:0}.chip--2{right:0}
  .stats__grid,.cards{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:1fr;gap:2rem}.steps__line{display:none}
  .about__badge{right:-6px}
  .note{left:8px}
  .gal figure{width:70vw;height:96vw}
}
@media (max-width:560px){.cards{grid-template-columns:1fr}}
