:root { --hero-ease: cubic-bezier(0.22, 1, 0.36, 1); }

/* Initial hero state */
.hero__copy .eyebrow,
.hero__title,
.hero__rule,
.hero__meta,
.hero__location,
.hero__tagline,
.hero__copy .button-row {
    opacity: 0;
    transform: translateY(24px);
}

.hero__portrait {
    opacity: 0;
    transform: translateX(34px) scale(0.985);
}

.hero__ambient {
    opacity: 0;
    transform: scale(0.9);
}

.player-details {
    opacity: 0;
    transform: translateY(18px);
}

/* Entrance sequence */
body.hero-is-ready .hero__ambient {
    animation:
        heroAmbientIn 1.4s var(--hero-ease) 120ms forwards,
        heroAmbientPulse 7s ease-in-out 1.8s infinite alternate;
}

body.hero-is-ready .hero__portrait {
    animation: heroPortraitIn 1.05s var(--hero-ease) 180ms forwards;
}

body.hero-is-ready .hero__copy .eyebrow {
    animation: heroItemIn 620ms var(--hero-ease) 180ms forwards;
}

body.hero-is-ready .hero__title {
    animation: heroItemIn 760ms var(--hero-ease) 280ms forwards;
}

body.hero-is-ready .hero__rule {
    animation: heroRuleIn 700ms var(--hero-ease) 470ms forwards;
    transform-origin: left center;
}

body.hero-is-ready .hero__meta {
    animation: heroItemIn 620ms var(--hero-ease) 560ms forwards;
}

body.hero-is-ready .hero__location {
    animation: heroItemIn 620ms var(--hero-ease) 640ms forwards;
}

body.hero-is-ready .hero__tagline {
    animation: heroItemIn 620ms var(--hero-ease) 720ms forwards;
}

body.hero-is-ready .hero__copy .button-row {
    animation: heroItemIn 620ms var(--hero-ease) 820ms forwards;
}

body.hero-is-ready .player-details {
    animation: heroDetailsIn 720ms var(--hero-ease) 940ms forwards;
}

@keyframes heroItemIn {
    from { opacity: 0; transform: translateY(24px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes heroPortraitIn {
    from { opacity: 0; transform: translateX(34px) scale(0.985); }
    to   { opacity: 1; transform: translateX(0) scale(1); }
}

@keyframes heroRuleIn {
    from { opacity: 0; transform: scaleX(0); }
    to   { opacity: 1; transform: scaleX(1); }
}

@keyframes heroAmbientIn {
    from { opacity: 0; transform: scale(0.9); }
    to   { opacity: 1; transform: scale(1); }
}

@keyframes heroAmbientPulse {
    from { filter: blur(24px); transform: scale(1); }
    to   { filter: blur(32px); transform: scale(1.05); }
}

@keyframes heroDetailsIn {
    from { opacity: 0; transform: translateY(18px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Existing scroll reveal */
[data-animate] {
    opacity: 0;
    transition: opacity 650ms ease, transform 650ms ease;
}

[data-animate="fade-up"] { transform: translateY(24px); }
[data-animate="fade-in"] { transform: scale(0.985); }

[data-animate].is-visible {
    opacity: 1;
    transform: none;
}

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

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    .hero__copy .eyebrow,
    .hero__title,
    .hero__rule,
    .hero__meta,
    .hero__location,
    .hero__tagline,
    .hero__copy .button-row,
    .hero__portrait,
    .hero__ambient,
    .player-details,
    [data-animate] {
        opacity: 1 !important;
        transform: none !important;
    }
}
