/* Premium interaction layer — intentionally additive so booking/shop logic stays isolated. */
:root{--ease-premium:cubic-bezier(.22,.72,.18,1);--shadow-soft:0 24px 70px rgba(24,20,15,.10);--shadow-hover:0 34px 90px rgba(24,20,15,.16)}
html{scroll-padding-top:88px}
body{overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.025;background-image:radial-gradient(rgba(0,0,0,.65) .45px,transparent .55px);background-size:4px 4px;mix-blend-mode:multiply}
.scroll-progress{position:fixed;left:0;top:0;height:2px;width:100%;z-index:10000;pointer-events:none;transform-origin:left center;transform:scaleX(0);background:currentColor;color:#b78b5b;transition:transform .08s linear}
.header.scrolled{box-shadow:0 12px 45px rgba(30,25,19,.07)}
.desktop-nav a.is-active::after{right:0}
.hero-image{will-change:transform;transition:transform 1.2s var(--ease-premium)}
.hero::after{content:"";position:absolute;inset:auto 0 0;height:150px;pointer-events:none;background:linear-gradient(to top,rgba(0,0,0,.17),transparent)}
.hero-copy>*{will-change:transform,opacity}
.hero-card{transition:transform .5s var(--ease-premium),background .35s ease,border-color .35s ease;box-shadow:0 28px 80px rgba(0,0,0,.18)}
.hero-card:hover{transform:translateY(-8px);background:rgba(15,15,14,.9);border-color:rgba(255,255,255,.34)}
.live-dot{animation:livePulse 2.2s ease-out infinite}
@keyframes livePulse{0%,100%{box-shadow:0 0 0 5px rgba(114,190,136,.1)}50%{box-shadow:0 0 0 9px rgba(114,190,136,.03)}}

.reveal{opacity:0;transform:translateY(34px);transition:opacity .8s var(--ease-premium),transform .8s var(--ease-premium)}
.reveal[data-reveal="left"]{transform:translateX(-34px)}
.reveal[data-reveal="right"]{transform:translateX(34px)}
.reveal.is-visible{opacity:1;transform:none}
.reveal-delay-1{transition-delay:.08s}.reveal-delay-2{transition-delay:.16s}.reveal-delay-3{transition-delay:.24s}

.numbers>div{position:relative;padding:4px 0 10px;transition:transform .3s var(--ease-premium)}
.numbers>div:hover{transform:translateY(-5px)}
.numbers b{font-variant-numeric:tabular-nums}

.booking-shell{transition:box-shadow .4s var(--ease-premium),transform .4s var(--ease-premium)}
.booking-shell:hover{box-shadow:0 36px 100px rgba(40,34,26,.12)}
.filters label{transition:background .22s ease,padding-left .22s ease}
.filters label:focus-within{background:rgba(183,139,91,.07);padding-left:12px}
.filters select{cursor:pointer}
.date-btn{transition:background .28s ease,color .28s ease,transform .22s var(--ease-premium)}
.date-btn:not(.active):hover{background:rgba(21,21,19,.05);transform:translateY(-2px)}
.class-row{position:relative;transition:background .25s ease,transform .35s var(--ease-premium),opacity .4s ease;isolation:isolate}
.class-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);transform:scaleY(0);transform-origin:center;transition:transform .28s var(--ease-premium)}
.class-row:hover{background:rgba(255,255,255,.54);transform:translateX(5px)}
.class-row:hover::before{transform:scaleY(1)}
.class-row.row-enter{animation:rowEnter .48s var(--ease-premium) both}
@keyframes rowEnter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.spots{position:relative;padding-left:20px}
.spots::before{content:"";position:absolute;left:0;top:50%;width:12px;height:3px;border-radius:999px;background:currentColor;transform:translateY(-50%) scaleX(var(--seat,1));transform-origin:left center;opacity:.75}
.reserve-btn,.pass-grid button,.drawer-action,.primary-btn{position:relative;overflow:hidden;transition:transform .25s var(--ease-premium),box-shadow .25s ease,background .25s ease,color .25s ease}
.reserve-btn:hover,.pass-grid button:hover,.drawer-action:hover,.primary-btn:hover{transform:translateY(-2px)}
.reserve-btn:active,.pass-grid button:active,.drawer-action:active,.primary-btn:active{transform:translateY(0) scale(.985)}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.28);transform:scale(0);animation:ripple .55s ease-out;pointer-events:none}
@keyframes ripple{to{transform:scale(4);opacity:0}}

.studio-card{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--lift,0px));transition:transform .18s ease-out,box-shadow .4s var(--ease-premium);box-shadow:0 12px 38px rgba(0,0,0,.09)}
.studio-card:hover{--lift:-7px;box-shadow:0 30px 70px rgba(18,16,13,.2)}
.studio-card .studio-arrow{transition:transform .35s var(--ease-premium),background .25s ease,color .25s ease}
.studio-card:hover .studio-arrow{transform:rotate(45deg);background:#fff;color:#111}
.studio-info{transition:transform .35s var(--ease-premium)}
.studio-card:hover .studio-info{transform:translateY(-4px)}

.class-img{overflow:hidden;transform:translateZ(0);transition:filter .45s ease,transform .8s var(--ease-premium)}
.class-block:hover .class-img{transform:scale(1.015);filter:contrast(1.03) saturate(1.03)}
.class-copy a{transition:letter-spacing .3s var(--ease-premium),opacity .2s ease}.class-copy a:hover{letter-spacing:.15em;opacity:.9}
.pass-grid article{position:relative;transition:transform .4s var(--ease-premium),background .3s ease,box-shadow .3s ease;z-index:1}
.pass-grid article:hover{transform:translateY(-10px);box-shadow:var(--shadow-hover);z-index:3;background:#faf7f1}
.pass-grid article.featured:hover{background:#171714}

.booking-drawer,.cart-drawer{box-shadow:-30px 0 90px rgba(14,12,10,.18)}
.drawer-backdrop{backdrop-filter:blur(4px)}
.toast{box-shadow:0 16px 45px rgba(0,0,0,.2)}

.floating-book{position:fixed;right:22px;bottom:22px;z-index:45;display:flex;align-items:center;gap:10px;padding:13px 16px;border:1px solid rgba(255,255,255,.25);background:rgba(21,21,19,.92);color:#fff;box-shadow:0 18px 50px rgba(0,0,0,.18);backdrop-filter:blur(14px);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:0;transform:translateY(18px);pointer-events:none;transition:.35s var(--ease-premium)}
.floating-book.show{opacity:1;transform:none;pointer-events:auto}.floating-book i{width:7px;height:7px;border-radius:50%;background:#72be88;display:block}

/* Shop enhancement */
.shop-header{transition:box-shadow .25s ease,background .25s ease}.shop-header.is-scrolled{box-shadow:0 14px 45px rgba(27,23,18,.09);background:rgba(243,239,231,.985)}
.shop-hero{position:relative}.shop-hero::before{content:"";position:absolute;right:4vw;top:25px;width:min(32vw,480px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(183,139,91,.16),rgba(183,139,91,0) 68%);pointer-events:none;filter:blur(12px)}
.product-card{transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--lift,0));transition:transform .2s ease-out,box-shadow .35s var(--ease-premium),border-color .3s ease}
.product-card:hover{--lift:-8px;box-shadow:var(--shadow-hover);border-color:rgba(21,21,19,.18)}
.product-card .price{font-variant-numeric:tabular-nums}
.product-card button{transition:transform .25s var(--ease-premium),background .25s ease,color .25s ease}.product-card button:hover{transform:translateY(-2px)}
.payment-logos span{transition:transform .25s var(--ease-premium),background .25s ease}.payment-logos span:hover{transform:translateY(-4px);background:rgba(255,255,255,.55)}
.cart-trigger{transition:transform .25s var(--ease-premium),box-shadow .25s ease}.cart-trigger:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(21,21,19,.18)}.cart-trigger.cart-bump{animation:cartBump .35s var(--ease-premium)}
@keyframes cartBump{50%{transform:scale(1.07)}}
.payment-option{transition:transform .22s var(--ease-premium),border-color .22s ease,box-shadow .22s ease}.payment-option:hover{transform:translateX(4px);box-shadow:0 8px 24px rgba(20,18,15,.06)}
.checkout-progress span.active{animation:progressIn .4s var(--ease-premium)}@keyframes progressIn{from{opacity:.4;transform:translateY(-5px)}to{opacity:1;transform:none}}

@media(max-width:900px){.floating-book{right:14px;bottom:14px}.class-row:hover{transform:none}.studio-card,.product-card{transform:none!important}.studio-card:hover,.product-card:hover{--lift:0}.reveal[data-reveal="left"],.reveal[data-reveal="right"]{transform:translateY(24px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.reveal{opacity:1;transform:none}.hero-image{transform:none!important}}
