/* Motion layer — only active when html has .anim (reduced-motion users never get it) */

/* scroll progress */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:100%;transform-origin:0 50%;transform:scaleX(var(--p,0));background:linear-gradient(90deg,var(--accent),#E4A98C);z-index:70;pointer-events:none}

/* nav gains a soft shadow once the page scrolls */
.nav{transition:box-shadow .35s ease,background-color .35s ease}
.nav.is-scrolled{box-shadow:0 8px 30px rgba(22,38,46,.08);background:rgba(244,239,230,.97)}

/* hero intro */
.anim .hero h1 .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.anim .hero h1 .w>span{display:inline-block;transform:translateY(105%);transition:transform 1s cubic-bezier(.2,.8,.2,1);transition-delay:calc(var(--i)*70ms + 150ms)}
.anim .hero.is-in h1 .w>span{transform:none}
.anim .hero .eyebrow,.anim .hero .lead,.anim .hero .btn-row{opacity:0;transform:translateY(16px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.8,.2,1)}
.anim .hero .eyebrow{transition-delay:.05s}
.anim .hero .lead{transition-delay:.55s}
.anim .hero .btn-row{transition-delay:.72s}
.anim .hero.is-in .eyebrow,.anim .hero.is-in .lead,.anim .hero.is-in .btn-row{opacity:1;transform:none}
.anim .hero__media{clip-path:inset(0 0 100% 0 round var(--r-lg));transition:clip-path 1.3s cubic-bezier(.7,0,.2,1) .1s}
.anim .hero.is-in .hero__media{clip-path:inset(0 0 0 0 round var(--r-lg))}
.anim .hero__media img{scale:1.18;transition:scale 2.4s cubic-bezier(.2,.8,.2,1) .1s;will-change:translate}
.anim .hero.is-in .hero__media img{scale:1.1}
.anim .chip{opacity:0;transform:translateY(12px);transition:opacity .7s ease 1.1s,transform .7s cubic-bezier(.2,.8,.2,1) 1.1s}
.anim .hero.is-in .chip{opacity:1;transform:none}
.chip svg{animation:pin 2.4s ease-in-out 2s infinite}
@keyframes pin{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}

/* staggered groups */
.anim .st>*{opacity:0;transform:translateY(28px);transition:opacity .8s ease,transform .9s cubic-bezier(.2,.8,.2,1);transition-delay:calc(var(--i,0)*90ms)}
.anim .st.is-in>*{opacity:1;transform:none}
.anim .gallery__grid.st>*{transform:translateY(36px) scale(.97)}
.anim .gallery__grid.st.is-in>*{transform:none}

/* headings slide up */
.anim .rise{opacity:0;transform:translateY(24px);transition:opacity .9s ease,transform 1s cubic-bezier(.2,.8,.2,1)}
.anim .rise.is-in{opacity:1;transform:none}

/* image curtains */
.anim .curtain{clip-path:inset(0 0 100% 0);transition:clip-path 1.1s cubic-bezier(.7,0,.2,1)}
.anim .curtain.is-in{clip-path:inset(0 0 0 0)}
.anim .curtain img{scale:1.15;transition:scale 1.8s cubic-bezier(.2,.8,.2,1),transform .6s ease}
.anim .curtain.is-in img{scale:1}
.anim .lesvos__img{will-change:translate}

/* fact icons draw themselves */
.anim .fact svg *{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.2s cubic-bezier(.6,0,.2,1);transition-delay:calc(var(--i,0)*120ms + 250ms)}
.anim .facts.is-in .fact svg *{stroke-dashoffset:0}

/* feature bullets pop in */
.anim .features li::before{transform:scale(0);transition:transform .4s cubic-bezier(.3,1.6,.5,1);transition-delay:calc(var(--i,0)*40ms + 300ms)}
.anim .features.is-in li::before{transform:scale(1)}

/* buttons: arrow nudge + light sweep */
.btn svg{transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.btn:hover svg{transform:translateX(4px)}
.btn--accent{position:relative;overflow:hidden;isolation:isolate}
.btn--accent::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translateX(-120%);transition:transform .8s ease}
.btn--accent:hover::after{transform:translateX(120%)}
.action span[aria-hidden]{transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.action:hover span[aria-hidden]{transform:translateX(5px)}

/* cards lift */
.card{transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s ease}
.card:hover{transform:translateY(-6px);box-shadow:0 24px 50px rgba(22,38,46,.12)}

/* lightbox fades */
.lightbox:not([hidden]){animation:lbIn .35s ease}
.lightbox:not([hidden]) .lb__figure img{animation:lbImg .45s cubic-bezier(.2,.8,.2,1)}
@keyframes lbIn{from{opacity:0}to{opacity:1}}
@keyframes lbImg{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}

/* booking calendar: selection pops */
.bk-grid button.is-start,.bk-grid button.is-end{animation:pop .35s cubic-bezier(.3,1.6,.5,1)}
@keyframes pop{from{transform:scale(.8)}to{transform:none}}
.bk-done:not([hidden]) .bk-done__icon{animation:pop .5s cubic-bezier(.3,1.6,.5,1)}

@media (prefers-reduced-motion:reduce){
  .chip svg,.bk-grid button,.bk-done__icon{animation:none!important}
  .card:hover{transform:none}
  .scroll-progress{display:none}
}
