/* ── Site-wide motion layer (every page; see assets/motion.js) ─────────── */

/* 1. scroll reveal (elements are tagged .mv by motion.js) */
.mv{opacity:0;transform:translateY(22px);transition:opacity .85s cubic-bezier(.16,1,.3,1),transform .85s cubic-bezier(.16,1,.3,1);transition-delay:var(--d,0s);will-change:opacity,transform}
.mv.in{opacity:1;transform:none;will-change:auto}

/* 2. page hero entrance */
.page-hero>*,.profile-info>*,.deck-cover-content>*{opacity:0;transform:translateY(18px);animation:mvIn 1s cubic-bezier(.16,1,.3,1) forwards}
.page-hero>*:nth-child(1),.profile-info>*:nth-child(1),.deck-cover-content>*:nth-child(1){animation-delay:.15s}
.page-hero>*:nth-child(2),.profile-info>*:nth-child(2),.deck-cover-content>*:nth-child(2){animation-delay:.3s}
.page-hero>*:nth-child(3),.profile-info>*:nth-child(3),.deck-cover-content>*:nth-child(3){animation-delay:.45s}
.page-hero>*:nth-child(4),.profile-info>*:nth-child(4),.deck-cover-content>*:nth-child(4){animation-delay:.6s}
.page-hero>*:nth-child(5),.profile-info>*:nth-child(5){animation-delay:.75s}
.page-hero>*:nth-child(n+6),.profile-info>*:nth-child(n+6){animation-delay:.9s}
@keyframes mvIn{to{opacity:1;transform:none}}
.profile-photo{overflow:hidden}
.profile-photo img{animation:mvZoom 1.6s cubic-bezier(.16,1,.3,1) forwards;transform:scale(1.08)}
@keyframes mvZoom{to{transform:scale(1)}}
.deck-cover-img{animation:mvZoomSlow 24s ease-in-out infinite alternate}
@keyframes mvZoomSlow{from{transform:scale(1)}to{transform:scale(1.08)}}

/* 3. buttons: lift, sheen, press, ripple */
.btn-p,.btn-g,.nav-cta,.form-submit,.submit-btn,.svc-btn,.f-btn,.lb-btn,.chip,.nav-mobile-cta,.cal-nav,.pe-chip{position:relative;overflow:hidden;transition:transform .35s cubic-bezier(.16,1,.3,1),background .25s,border-color .25s,color .25s,box-shadow .35s}
.btn-p:hover,.btn-g:hover,.nav-cta:hover,.form-submit:hover,.submit-btn:hover,.svc-btn:hover,.f-btn:hover,.chip:hover,.nav-mobile-cta:hover{transform:translateY(-2px)}
.btn-p:hover,.nav-cta:hover,.form-submit:hover,.submit-btn:hover,.svc-btn.add:hover{box-shadow:0 10px 24px -14px rgba(201,149,122,.7)}
.btn-p:active,.btn-g:active,.nav-cta:active,.form-submit:active,.submit-btn:active,.svc-btn:active,.f-btn:active,.chip:active{transform:translateY(0) scale(.97);transition-duration:.1s}
.btn-p::before,.nav-cta::before,.form-submit::before,.submit-btn::before,.svc-btn.add::before,.nav-mobile-cta::before{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;background:linear-gradient(100deg,transparent,rgba(240,213,200,.18),transparent);transform:skewX(-20deg);transition:left .7s cubic-bezier(.16,1,.3,1);pointer-events:none}
.btn-p:hover::before,.nav-cta:hover::before,.form-submit:hover::before,.submit-btn:hover::before,.svc-btn.add:hover::before,.nav-mobile-cta:hover::before{left:120%}
.mv-ripple{position:absolute;border-radius:50%;background:rgba(232,196,176,.28);transform:scale(0);animation:mvRipple .7s cubic-bezier(.16,1,.3,1) forwards;pointer-events:none}
@keyframes mvRipple{to{transform:scale(3);opacity:0}}

/* 4. nav */
.nav-link{position:relative}
.nav-link::after{content:"";position:absolute;left:10px;right:10px;bottom:1px;height:0.5px;background:var(--rg);transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.16,1,.3,1)}
.nav-link:hover::after,.nav-link.active::after{transform:scaleX(1)}
.nav-logo{transition:transform .4s cubic-bezier(.16,1,.3,1),filter .3s}
.nav-logo:hover{transform:scale(1.06);filter:drop-shadow(0 0 8px rgba(201,149,122,.5))}
.nav-cart-badge{transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.nav-cart-badge.bump,#rt-cartCount.bump{animation:mvBump .5s cubic-bezier(.34,1.56,.64,1)}
@keyframes mvBump{30%{transform:scale(1.5)}}

/* 5. cards: lift + copper glow + cursor spotlight */
.svc-card,.roster-card,.eq-card,.pe-tile,.pillar,.promo-card,.feat,.pg-item,.b2b-card,.rm-item,.bq-step,.info-item,.contact-item,.deck-cap,.stat,.step,.cart-item,.discount-card,.unlock-card,.rv-google,.staff-cell,[style*="background:var(--card)"]{transition:transform .45s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .45s,background .3s}
.svc-card:hover,.roster-card:hover,.eq-card:hover,.pe-tile:hover,.pillar:hover,.promo-card:hover,.feat:hover,.pg-item:hover,.b2b-card:hover,.rm-item:hover,.bq-step:hover,.info-item:hover,.contact-item:hover,.deck-cap:hover,.discount-card:hover,.unlock-card:hover,.rv-google:hover,.staff-cell:hover,[style*="background:var(--card)"]:hover{transform:translateY(-5px);border-color:var(--rg)!important;box-shadow:0 22px 44px -24px rgba(201,149,122,.5)}
.mv-spot{position:relative}
.mv-spot::before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%),rgba(201,149,122,.14),transparent 60%);opacity:0;transition:opacity .4s;pointer-events:none;z-index:0}
.mv-spot:hover::before{opacity:1}
.mv-spot>*{position:relative;z-index:1}

/* 6. icons */
.svc-ic,.or-ic,.ic,.info-icon,.contact-icon,.space-detail-icon,.success-icon-circle svg{transition:transform .5s cubic-bezier(.34,1.56,.64,1),color .3s}
.svc-card:hover .svc-ic{transform:translateY(-4px) scale(1.14);color:var(--rgs)}
.opt-row:hover .or-ic{transform:rotate(-8deg) scale(1.18);color:var(--rgs)}
.opt-row.selected .or-ic,.opt-row.active .or-ic,.opt-row.on .or-ic{transform:scale(1.15);color:var(--rgs)}
.info-item:hover .info-icon,.contact-item:hover .contact-icon{transform:scale(1.15) rotate(-6deg);color:var(--rgs)}
.space-detail:hover .space-detail-icon{transform:scale(1.2);color:var(--rgs)}
.svc-card .svc-ic,.svc-card .svc-img img{animation:mvPop .9s cubic-bezier(.34,1.56,.64,1) both}
@keyframes mvPop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
.svc-card.in-cart .svc-ic{color:var(--rgs);filter:drop-shadow(0 0 6px rgba(201,149,122,.55))}
.svc-card.in-cart{border-color:var(--rg)!important;box-shadow:inset 0 0 0 1px rgba(201,149,122,.25),0 0 0 3px rgba(201,149,122,.08)}
.svc-card.just-added{animation:mvAdded .6s cubic-bezier(.34,1.56,.64,1)}
@keyframes mvAdded{35%{transform:scale(1.04)}}
.svc-img{overflow:hidden}
.svc-img img{transition:transform .8s cubic-bezier(.16,1,.3,1)}
.svc-card:hover .svc-img img{transform:scale(1.06)}

/* 7. builder: filters, modal, cart, savings */
.f-btn{position:relative}
.f-btn::after{content:"";position:absolute;left:12px;right:12px;bottom:4px;height:0.5px;background:var(--rg);transform:scaleX(0);transition:transform .4s cubic-bezier(.16,1,.3,1)}
.f-btn.active::after{transform:scaleX(1)}
.modal-overlay{transition:opacity .3s}
.modal-overlay:not(.hidden) .modal{animation:mvModal .45s cubic-bezier(.16,1,.3,1)}
@keyframes mvModal{from{opacity:0;transform:translateY(26px) scale(.97)}to{opacity:1;transform:none}}
.modal-overlay:not(.hidden) .opt-row{animation:mvIn .6s cubic-bezier(.16,1,.3,1) both}
.modal-overlay:not(.hidden) .opt-row:nth-child(2){animation-delay:.06s}.modal-overlay:not(.hidden) .opt-row:nth-child(3){animation-delay:.12s}.modal-overlay:not(.hidden) .opt-row:nth-child(4){animation-delay:.18s}.modal-overlay:not(.hidden) .opt-row:nth-child(5){animation-delay:.24s}.modal-overlay:not(.hidden) .opt-row:nth-child(6){animation-delay:.3s}.modal-overlay:not(.hidden) .opt-row:nth-child(7){animation-delay:.36s}
.opt-row{transition:transform .35s cubic-bezier(.16,1,.3,1),border-color .3s,background .3s}
.opt-row:hover{transform:translateX(4px)}
.sticky-cart{animation:mvUp .8s cubic-bezier(.16,1,.3,1) .4s both}
@keyframes mvUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:none}}
.savings-pw,.savings-prog>*{transition:width .9s cubic-bezier(.16,1,.3,1)}
.ci-rm{transition:transform .3s,color .2s}
.ci-rm:hover{transform:rotate(90deg)}

/* 8. forms */
.form-input,.form-select,.form-textarea,.cart-input{transition:border-color .25s,box-shadow .35s,transform .3s}
.form-input:focus,.form-select:focus,.form-textarea:focus,.cart-input:focus{border-color:var(--rg);box-shadow:0 0 0 3px rgba(201,149,122,.12)}
.checkbox-item{transition:transform .3s cubic-bezier(.16,1,.3,1),color .2s}
.checkbox-item:hover{transform:translateX(3px)}

/* 9. galleries & photos */
.gallery-item{overflow:hidden;transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s}
.gallery-item img{transition:transform .9s cubic-bezier(.16,1,.3,1),filter .5s}
.gallery-item:hover{transform:translateY(-3px);box-shadow:0 20px 40px -22px rgba(201,149,122,.55)}
.gallery-item:hover img{transform:scale(1.07)}
.pe-tile-zoom img,.pe-tile img{transition:transform 1s cubic-bezier(.16,1,.3,1)}
.pe-tile:hover img{transform:scale(1.08)}
.promo video{transition:transform .6s cubic-bezier(.16,1,.3,1),box-shadow .6s}
.promo video:hover{transform:scale(1.01);box-shadow:0 30px 60px -30px rgba(201,149,122,.5)}

/* 10. tags, chips, links */
.space-tag,.uc-tag,.eq-k,.dq-lbl,.sq-lbl,.pq-lbl,.bq-lbl{transition:transform .3s cubic-bezier(.16,1,.3,1),border-color .25s,color .25s}
.space-tag:hover,.uc-tag:hover{transform:translateY(-2px);border-color:var(--rg);color:var(--rgs)}
.footer a{transition:color .25s,letter-spacing .3s}
.footer a:hover{color:var(--rgl)!important}
.rt-faq-item{transition:transform .3s,border-color .3s}
.rt-faq-item:hover{transform:translateX(4px)}
.stat-num,.big-num{font-variant-numeric:tabular-nums}

/* 11. cta bar glow (shared) */
.cta-bar{position:relative;overflow:hidden}
.cta-bar::before{content:"";position:absolute;width:520px;height:520px;border-radius:50%;left:-120px;top:-300px;background:radial-gradient(circle,rgba(201,149,122,.16),transparent 60%);animation:mvGlow 9s ease-in-out infinite alternate;pointer-events:none}
@keyframes mvGlow{to{transform:translate(60vw,120px)}}
.cta-bar>*{position:relative;z-index:1}

@media(prefers-reduced-motion:reduce){
  .mv{opacity:1;transform:none;transition:none}
  .page-hero>*,.profile-info>*,.deck-cover-content>*,.profile-photo img,.deck-cover-img,.svc-card .svc-ic,.svc-card .svc-img img,.sticky-cart,.modal-overlay:not(.hidden) .modal,.modal-overlay:not(.hidden) .opt-row,.cta-bar::before{animation:none;opacity:1;transform:none}
  .mv-ripple{display:none}
  *{transition-duration:.01ms!important}
}
