/* =============================================
   ANIMATIONS — keyframes + scroll-reveal classes
   ============================================= */

/* Scroll reveal — initial state */
[data-reveal] {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 900ms var(--ease-out), transform 900ms var(--ease-out);
    transition-delay: var(--reveal-delay, 0ms);
    will-change: opacity, transform;
}
[data-reveal="fade"]      { transform: none; }
[data-reveal="left"]      { transform: translateX(-40px); }
[data-reveal="right"]     { transform: translateX(40px); }
[data-reveal="zoom"]      { transform: scale(0.96); }
[data-reveal="rise"]      { transform: translateY(60px); }

[data-reveal].is-revealed {
    opacity: 1;
    transform: none;
}

/* Stagger helpers */
[data-stagger] > * { transition-delay: calc(var(--stagger-base, 0ms) + var(--stagger-step, 100ms) * var(--i, 0)); }

/* ---------- Hero Ken Burns ---------- */
@keyframes ken-burns {
    0%   { transform: scale(1.08) translate3d(-1%, 1%, 0); }
    100% { transform: scale(1.18) translate3d(2%, -2%, 0); }
}
.kb-image {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    object-position: center 60%;
    transform-origin: center;
    animation: ken-burns 24s var(--ease-in-out) infinite alternate;
    will-change: transform;
}

/* ---------- Hero text reveal ---------- */
@keyframes hero-rise {
    from { opacity: 0; transform: translateY(40px); }
    to   { opacity: 1; transform: none; }
}
@keyframes hero-rise-soft {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: none; }
}
@keyframes hero-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes draw-rule {
    from { transform: scaleX(0); }
    to   { transform: scaleX(1); }
}
@keyframes drift {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-10px); }
}
@keyframes bottle-slide-in-left {
    from { opacity: 0; transform: translateX(-12%) rotate(-2deg); }
    to   { opacity: 1; transform: none; }
}
@keyframes bottle-slide-in-right {
    from { opacity: 0; transform: translateX(12%) rotate(2deg); }
    to   { opacity: 1; transform: none; }
}

/* ---------- Hero text classes ---------- */
.hero__eyebrow  { animation: hero-rise 900ms var(--ease-out) 200ms backwards; }
.hero__title    { animation: hero-rise 1100ms var(--ease-out) 400ms backwards; }
.hero__subtitle { animation: hero-rise 1100ms var(--ease-out) 700ms backwards; }
.hero__rule     { animation: draw-rule 1200ms var(--ease-out) 1000ms backwards; transform-origin: left; }
.hero__scroll   { animation: hero-fade 900ms var(--ease-out) 1500ms backwards; }
.hero__scroll .scroll-cue { animation: drift 2.4s var(--ease-in-out) infinite; animation-delay: 1.5s; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    .kb-image { animation: none; transform: none; }
    [data-reveal] { opacity: 1; transform: none; transition: none; }
}
