/* La Paz runtime polish: shared motion, stable anchor scroll, map fallback UI. */
:root {
    --lapaz-slide-duration: 5s;
    --lapaz-ease-soft: cubic-bezier(.16, 1, .3, 1);
    --lapaz-ease-smooth: cubic-bezier(.22, 1, .36, 1);
    --lapaz-ease-standard: cubic-bezier(.4, 0, .2, 1);
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: 0;
}

body {
    overflow-x: hidden;
}

section[id] {
    scroll-margin-top: 0;
}

@media (max-width: 960px) {
    @supports (height: 100dvh) {
        .hero { height: 100dvh; }
    }
}

.hero-slide {
    transition:
        opacity 1.15s var(--lapaz-ease-standard),
        transform 7.5s var(--lapaz-ease-smooth) !important;
}

.reveal,
.reveal-left,
.reveal-right,
.reveal-scale,
.room-card,
.ac,
.nb-card {
    transition-timing-function: var(--lapaz-ease-soft) !important;
}

.map-box { position: relative; }

.map-box.is-map-loading::after {
    content: "Đang tải bản đồ…";
    position: absolute;
    left: 50%;
    top: 40%;
    z-index: 4;
    transform: translate(-50%, -50%);
    padding: .55rem .85rem;
    border: 1px solid rgba(232, 184, 0, .22);
    border-radius: 999px;
    background: rgba(15, 42, 42, .88);
    color: var(--ink-2);
    font-size: .68rem;
    letter-spacing: .08em;
    pointer-events: none;
}

.map-box.is-map-loaded::after { display: none; }

.map-reload-btn {
    display: none;
    width: fit-content;
    margin: .75rem auto 0;
    border: 1px solid rgba(232, 184, 0, .28);
    border-radius: 999px;
    background: rgba(240, 232, 200, .045);
    color: var(--moss);
    padding: .52rem .9rem;
    font-size: .58rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    cursor: pointer;
}

.map-box.is-map-failed .map-reload-btn { display: inline-flex; }

.map-fallback-link {
    display: none;
    position: absolute;
    left: 50%;
    top: 42%;
    z-index: 5;
    transform: translate(-50%, -50%);
    border: 1px solid rgba(232, 184, 0, .34);
    border-radius: 999px;
    background: rgba(15, 42, 42, .92);
    color: var(--moss);
    padding: .62rem 1rem;
    font-size: .62rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    text-decoration: none;
    white-space: nowrap;
}

.map-box.is-map-failed .map-fallback-link { display: inline-flex; }

@media (max-width: 960px) {
    .map-box.is-map-loading::after,
    .map-fallback-link {
        top: 35%;
        font-size: .56rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }

    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}
