/* 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;
}

.hero-scrim {
    background:
        linear-gradient(to top, rgba(18, 18, 18, 0.97) 0%, rgba(18, 18, 18, 0.62) 42%, rgba(18, 18, 18, 0.4) 100%),
        linear-gradient(to right, rgba(18, 18, 18, 0.75) 0%, rgba(18, 18, 18, 0) 70%);
}

.booking-scrim {
    background: linear-gradient(100deg, rgba(18, 18, 18, 0.96) 0%, rgba(18, 18, 18, 0.88) 45%, rgba(18, 18, 18, 0.7) 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; }
}