/* Animations — subtle, luxury feel. All disabled for visitors who prefer reduced motion. */

/* Hero entrance */
@keyframes riseIn{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.hero-inner>*{animation:riseIn .9s cubic-bezier(.2,.7,.2,1) both}
.hero-inner>*:nth-child(1){animation-delay:.1s}.hero-inner>*:nth-child(2){animation-delay:.25s}
.hero-inner>*:nth-child(3){animation-delay:.4s}.hero-inner>*:nth-child(4){animation-delay:.6s}
.hero-inner>*:nth-child(5){animation-delay:.75s}.hero-inner>*:nth-child(6){animation-delay:.9s}
.hero:before{animation:fadeIn 1.6s ease both}
.hero:after{animation:fadeIn 2s .4s ease both,ringFloat 9s 2.4s ease-in-out infinite}
@keyframes ringFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}

/* Gold shimmer on gold headings */
@keyframes goldShimmer{0%{background-position:0% 50%}100%{background-position:200% 50%}}
h1 span,.hero-title span,.pink-text,.gold-text{background-image:linear-gradient(110deg,#b8912a 0%,#f3e1a0 25%,#d4af37 50%,#f3e1a0 75%,#b8912a 100%)!important;background-size:200% auto!important;animation:goldShimmer 6s linear infinite}

/* Scroll reveal (only applied once JS has tagged the element) */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}
.reveal.in{opacity:1;transform:none}
.reveal-zoom{transform:translateY(20px) scale(.97)}
.reveal-zoom.in{transform:none}

/* Button sheen on hover */
.pink-btn,.btn-gold,.cookie-actions .c-yes{position:relative;overflow:hidden;isolation:isolate}
.pink-btn.mobile-book{position:fixed} /* keep the phone's sticky Book Now bar pinned */
.pink-btn:after,.btn-gold:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s ease}
.pink-btn:hover:after,.btn-gold:hover:after{transform:translateX(120%)}
.pink-btn,.quiet-btn,.btn{transition:transform .2s ease,box-shadow .25s ease,background-color .25s ease,border-color .25s ease,color .25s ease}
.pink-btn:hover,.btn-gold:hover{transform:translateY(-2px)}
.pink-btn:active,.btn-gold:active{transform:translateY(0) scale(.98)}

/* Header tightens and darkens after scrolling */
header{transition:background-color .3s ease,box-shadow .3s ease}
header .nav{transition:min-height .3s ease}
header.scrolled{box-shadow:0 10px 30px rgba(0,0,0,.45)}
header.scrolled .nav{min-height:66px}

/* Gallery + service image hover */
.gallery-tile.photo span{transition:padding .35s ease,color .35s ease}
.gallery-tile.photo:hover span{padding-bottom:20px;color:#f3e1a0}
.gallery-tile.photo:after{content:"";position:absolute;inset:0;border:1px solid rgba(212,175,55,0);border-radius:inherit;transition:border-color .35s ease;pointer-events:none}
.gallery-tile.photo:hover:after{border-color:rgba(212,175,55,.7)}

/* Booking: slide between steps */
@keyframes stepIn{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
#bookingStep.step-in{animation:stepIn .45s cubic-bezier(.2,.7,.2,1)}
.confirm-icon{animation:popIn .6s cubic-bezier(.2,1.4,.4,1) both}
@keyframes popIn{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
.chip,.option{transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .15s ease}
.chip:active,.option:active{transform:scale(.97)}

/* Testimonial tabs + modal */
#reviewPanel>*{animation:riseIn .5s ease both}
.modal:not([hidden]) .modal-card{animation:riseIn .4s cubic-bezier(.2,.7,.2,1) both}
.modal:not([hidden]){animation:fadeIn .3s ease both}
.cookie-banner{animation:riseIn .5s .3s ease both}

/* FAQ answer opens smoothly */
.faq-item.open .faq-answer{animation:riseIn .35s ease both}

/* Mobile sticky "Book Now" slides up */
@keyframes slideUp{from{transform:translateY(120%)}to{transform:none}}
@media(max-width:850px){.mobile-book{animation:slideUp .6s 1.2s cubic-bezier(.2,.7,.2,1) both}}

@media (prefers-reduced-motion: reduce){
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal{opacity:1!important;transform:none!important}
}
