/* Site-wide motion: hero sliders, scroll reveals, subtle hovers */

@keyframes motionHeroKenBurns {
    from {
        transform: scale(1);
    }
    to {
        transform: scale(1.04);
    }
}

@keyframes motionHeroTextUp {
    from {
        opacity: 0;
        transform: translateY(28px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes motionFadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

/* Hero slide zoom (Ken Burns) */
.motion-hero-slide {
    overflow: hidden;
    width: 100%;
    height: 100%;
}

.motion-hero-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transform: scale(1);
    will-change: transform;
}

.motion-hero-carousel.carousel-fade .carousel-item {
    transition: opacity 0.9s ease-in-out;
}

.motion-hero-carousel .carousel-item.active .motion-hero-slide img {
    animation: motionHeroKenBurns 7s ease-out forwards;
}

.motion-hero-carousel .carousel-item:not(.active) .motion-hero-slide img {
    animation: none;
    transform: scale(1);
}

/* Hero overlay text */
.motion-hero-ready .hero-overlay h1,
.motion-hero-ready .hero-overlay .display-4,
.motion-hero-ready .accomodation-hero-overlay h1 {
    animation: motionHeroTextUp 0.85s ease forwards;
    animation-delay: 0.15s;
    opacity: 0;
}

.motion-hero-ready .hero-overlay p,
.motion-hero-ready .hero-overlay .lead,
.motion-hero-ready .accomodation-hero-overlay p {
    animation: motionHeroTextUp 0.85s ease forwards;
    animation-delay: 0.35s;
    opacity: 0;
}

.motion-hero-ready .hero-overlay .btn,
.motion-hero-ready .accomodation-hero-overlay .btn {
    animation: motionHeroTextUp 0.75s ease forwards;
    animation-delay: 0.55s;
    opacity: 0;
}

.motion-hero-ready .restaurant-hero-title {
    animation: motionHeroTextUp 0.85s ease forwards;
    animation-delay: 0.1s;
    opacity: 0;
}

.motion-hero-ready .restaurant-hero-lead {
    animation: motionHeroTextUp 0.85s ease forwards;
    animation-delay: 0.28s;
    opacity: 0;
}

.motion-hero-ready .restaurant-hero .btn-restaurant-menu {
    animation: motionHeroTextUp 0.75s ease forwards;
    animation-delay: 0.45s;
    opacity: 0;
}

.motion-hero-ready .restaurant-hero-visual {
    animation: motionHeroTextUp 0.9s ease forwards;
    animation-delay: 0.2s;
    opacity: 0;
}

/* Scroll reveal */
.motion-reveal {
    opacity: 0;
    transform: translateY(32px);
    transition:
        opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
    transition-delay: var(--motion-delay, 0s);
    will-change: opacity, transform;
}

.motion-reveal.motion-reveal--fade {
    transform: none;
}

.motion-reveal.motion-reveal--left {
    transform: translateX(-32px);
}

.motion-reveal.motion-reveal--right {
    transform: translateX(32px);
}

.motion-reveal.is-visible {
    opacity: 1;
    transform: none;
}

/* Card hover lift */
.motion-hover-lift {
    transition: transform 0.35s ease, box-shadow 0.35s ease;
}

.motion-hover-lift:hover {
    transform: translateY(-6px);
    box-shadow: 0 14px 32px rgba(28, 44, 59, 0.12);
}

/* Feature icon pulse on hover */
.feature-mini-card .feature-mini-icon {
    transition: transform 0.35s ease, color 0.35s ease;
}

.feature-mini-link:hover .feature-mini-icon {
    transform: scale(1.12) translateY(-2px);
}

/* Service card image subtle zoom */
.service-card-media {
    overflow: hidden;
}

.service-card-media .service-card-bgimg {
    transition: transform 0.55s ease;
}

.service-card-media:hover .service-card-bgimg {
    transform: scale(1.06);
}

/* Accommodation full-width hero */
.accomodation-hero .carousel-item,
.accomodation-hero .motion-hero-slide {
    height: 360px;
}

@media (max-width: 991px) {
    .accomodation-hero .carousel-item,
    .accomodation-hero .motion-hero-slide {
        height: 300px;
    }
}

/* Home hero full viewport height */
.hero .motion-hero-slide {
    height: 80vh;
}

/* About carousel */
.about-carousel .motion-hero-slide {
    border-radius: 1rem;
    height: 100%;
    min-height: 280px;
}

.about-carousel .motion-hero-slide img {
    min-height: 280px;
}

/* Restaurant hero portrait frame */
.restaurant-hero-carousel .motion-hero-slide {
    aspect-ratio: 3 / 4;
}

@media (prefers-reduced-motion: reduce) {
    .motion-reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .motion-hero-slide img,
    .motion-hero-ready .hero-overlay h1,
    .motion-hero-ready .hero-overlay p,
    .motion-hero-ready .hero-overlay .btn,
    .motion-hero-ready .accomodation-hero-overlay h1,
    .motion-hero-ready .accomodation-hero-overlay p,
    .motion-hero-ready .restaurant-hero-title,
    .motion-hero-ready .restaurant-hero-lead,
    .motion-hero-ready .restaurant-hero-visual,
    .motion-hero-ready .restaurant-hero .btn-restaurant-menu {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }

    .motion-hover-lift:hover {
        transform: none;
    }

    .feature-mini-link:hover .feature-mini-icon {
        transform: none;
    }

    .service-card-media:hover .service-card-bgimg {
        transform: none;
    }

    .feature-mini-link {
        animation: none;
        background: rgba(194, 154, 58, 0.35);
    }
}
