/* Explain: App-specific layout utilities (section padding, hero scrims, animations). */
.section-pad {
    padding-block: clamp(5rem, 10vw, 8.5rem);
}

.hero-media {
    animation: slowZoom 2.6s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

/* Voile sombre conservé uniquement par-dessus les photos plein écran
   (héros, bandeau CTA) pour garder les titres blancs parfaitement lisibles. */
.hero-scrim {
    background:
        linear-gradient(to top, rgba(22, 17, 12, 0.94) 0%, rgba(22, 17, 12, 0.55) 44%, rgba(22, 17, 12, 0.34) 100%),
        linear-gradient(to right, rgba(22, 17, 12, 0.6) 0%, rgba(22, 17, 12, 0) 70%);
}

.booking-scrim {
    background: linear-gradient(100deg, rgba(22, 17, 12, 0.94) 0%, rgba(22, 17, 12, 0.86) 45%, rgba(22, 17, 12, 0.66) 100%);
}

.scroll-cue {
    width: 1px;
    height: 3.5rem;
    background: linear-gradient(to bottom, var(--primary-color), transparent);
    animation: cuePulse 2.2s ease-in-out infinite;
}

.vertical-note {
    writing-mode: vertical-rl;
}

@keyframes slowZoom {
    from { transform: scale(1.08); }
    to { transform: scale(1); }
}

@keyframes cuePulse {
    0%, 100% { opacity: 0.3; transform: scaleY(0.6); transform-origin: top; }
    50% { opacity: 1; transform: scaleY(1); transform-origin: top; }
}