/* ════════════════════════════════════════════
   ANIMATIONS — reveals · path-draw · stagger
   ════════════════════════════════════════════ */

/* ─── Reveal au scroll ─── */
.reveal-item {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out);
    transition-delay: var(--delay, 0s);
    will-change: opacity, transform;
}
.reveal-item.is-visible {
    opacity: 1;
    transform: none;
}

/* ─── Reveal par masque vertical (titres) ─── */
.reveal-title {
    clip-path: inset(0 0 100% 0);
    transition: clip-path 0.9s var(--ease-out);
    transition-delay: var(--delay, 0s);
}
.reveal-title.is-visible { clip-path: inset(0 0 0 0); }

/* ─── Reveal par masque horizontal (images) ─── */
.reveal-clip {
    clip-path: inset(0 100% 0 0);
    transition: clip-path 1.3s var(--ease-out);
    transition-delay: var(--delay, 0s);
}
.reveal-clip.is-visible { clip-path: inset(0 0 0 0); }

/* ─── Path-drawing du monument ─── */
.hero__monument path,
.hero__monument line,
.hero__monument rect {
    stroke-dasharray: 100;
    stroke-dashoffset: 100;
}
.hero__monument.is-drawn path,
.hero__monument.is-drawn line,
.hero__monument.is-drawn rect {
    animation: drawPath 2.2s var(--ease-draw) forwards;
    animation-delay: var(--d, 0s);
}
@keyframes drawPath { to { stroke-dashoffset: 0; } }

/* ─── Letter-by-letter (Benvenuti) ─── */
.letter-stagger { display: inline-block; }
.letter-stagger .letter {
    display: inline-block;
    opacity: 0;
    transform: translateY(0.32em) rotate(3deg);
    will-change: opacity, transform;
}
.letter-stagger.is-playing .letter {
    animation: letterIn 0.8s var(--ease-out) forwards;
    animation-delay: calc(var(--i, 0) * 58ms + 0.25s);
}
@keyframes letterIn {
    to { opacity: 1; transform: none; }
}

/* ─── Tampon Specialità : entrée spring ─── */
.menu__item--sig.is-visible::after,
.menu__item--sig::after {
    animation: stampIn 0.6s var(--ease-spring) both;
}
@keyframes stampIn {
    from { opacity: 0; transform: rotate(-3deg) scale(0.4); }
    to   { opacity: 0.85; transform: rotate(-3deg) scale(1); }
}

/* ─── Marquee hero ─── */
@keyframes marqueeSlide {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* ─── prefers-reduced-motion : tout désactivé ─── */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.001ms !important;
        animation-delay: 0ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        transition-delay: 0ms !important;
        scroll-behavior: auto !important;
    }
    .reveal-item { opacity: 1 !important; transform: none !important; }
    .reveal-title, .reveal-clip { clip-path: none !important; }
    .letter-stagger .letter { opacity: 1 !important; transform: none !important; }
    .hero__monument path,
    .hero__monument line,
    .hero__monument rect { stroke-dashoffset: 0 !important; }
    .hero__footer-scroll::after { animation: none !important; }
    .hero__marquee-track { animation: none !important; }
}
