/**
 * PlayNova Spark — motion & scroll reveal
 */

/* —— Ambient background drift —— */
body.sg-motion-ready::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background:
        radial-gradient(ellipse 55% 42% at 12% 18%, rgba(37, 99, 235, 0.06), transparent 62%),
        radial-gradient(ellipse 48% 38% at 88% 8%, rgba(225, 29, 72, 0.07), transparent 58%);
    animation: sg-bg-drift 20s ease-in-out infinite alternate;
}

@keyframes sg-bg-drift {
    from { transform: translate3d(0, 0, 0) scale(1); }
    to { transform: translate3d(1.5%, 1%, 0) scale(1.04); }
}

/* —— Scroll reveal —— */
.sg-reveal,
.sg-reveal-child {
    opacity: 0;
    transform: translateY(1.25rem);
    transition:
        opacity 0.55s var(--sg-ease-smooth),
        transform 0.55s var(--sg-ease-smooth);
    transition-delay: var(--sg-reveal-delay, 0ms);
}

.sg-reveal.is-visible,
.sg-reveal-child.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* —— Page enter (hero) —— */
.sg-motion-ready .sg-hero__intro-copy > .sg-label {
    animation: sg-rise 0.65s var(--sg-ease-smooth) 0.05s backwards;
}

.sg-motion-ready .sg-hero__intro-copy > .sg-hero__title {
    animation: sg-rise 0.7s var(--sg-ease-smooth) 0.12s backwards;
}

.sg-motion-ready .sg-hero__intro-copy > .sg-hero__lead {
    animation: sg-rise 0.75s var(--sg-ease-smooth) 0.2s backwards;
}

.sg-motion-ready .sg-hero__intro-art {
    animation: sg-rise 0.8s var(--sg-ease-smooth) 0.15s backwards;
}

@keyframes sg-rise {
    from {
        opacity: 0;
        transform: translateY(1.5rem);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* —— Header scroll state —— */
.sg-header {
    transition:
        box-shadow 0.3s var(--sg-ease-smooth),
        border-color 0.3s var(--sg-ease-smooth),
        background 0.3s var(--sg-ease-smooth);
}

.sg-header.is-scrolled {
    box-shadow: var(--sg-shadow-md);
    border-bottom-color: rgba(24, 24, 27, 0.06);
}

.sg-header.is-scrolled .sg-header__bar {
    background: rgba(255, 255, 255, 0.96);
}

/* —— Brand mark hover —— */
.sg-brand__mark {
    transition: transform 0.35s var(--sg-ease-smooth), box-shadow 0.35s var(--sg-ease-smooth);
}

.sg-brand:hover .sg-brand__mark {
    transform: rotate(-4deg) scale(1.06);
    box-shadow: var(--sg-shadow-md);
}

/* —— Hero picks stagger —— */
.sg-hero-pick {
    opacity: 0;
    transform: translateY(1rem);
    animation: sg-rise 0.6s var(--sg-ease-smooth) forwards;
}

.sg-hero-pick:nth-child(1) { animation-delay: 0.08s; }
.sg-hero-pick:nth-child(2) { animation-delay: 0.16s; }
.sg-hero-pick:nth-child(3) { animation-delay: 0.24s; }
.sg-hero-picks__more .sg-hero-pick:nth-child(1) { animation-delay: 0.2s; }
.sg-hero-picks__more .sg-hero-pick:nth-child(2) { animation-delay: 0.28s; }

/* —— Tile image zoom —— */
.sg-tile__thumb img,
.sg-hero-pick__media img {
    transition: transform 0.45s var(--sg-ease-smooth);
}

.sg-tile:hover .sg-tile__thumb img,
.sg-hero-pick:hover .sg-hero-pick__media img {
    transform: scale(1.06);
}

.sg-related-card__icon {
    transition: transform 0.4s var(--sg-ease-smooth);
}

.sg-related-card:hover .sg-related-card__icon {
    transform: scale(1.05);
}

/* —— Loading shimmer —— */
.sg-hero__picks-loading,
.sg-category-sections__loading,
.sg-loading {
    background: linear-gradient(
        90deg,
        var(--sg-ink-muted) 0%,
        var(--sg-ink-soft) 45%,
        var(--sg-ink-muted) 90%
    );
    background-size: 200% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    animation: sg-shimmer 1.8s ease-in-out infinite;
}

@keyframes sg-shimmer {
    0% { background-position: 100% 0; }
    100% { background-position: -100% 0; }
}

/* —— Cookie bar slide-up —— */
.sg-cookie {
    transform: translateY(110%);
    opacity: 0;
    transition:
        transform 0.45s var(--sg-ease-smooth),
        opacity 0.45s var(--sg-ease-smooth);
}

.sg-cookie.is-entering {
    transform: translateY(0);
    opacity: 1;
}

.sg-cookie.is-exiting {
    transform: translateY(110%);
    opacity: 0;
}

/* —— Guide panel swap —— */
.sg-guide-panel {
    animation: sg-panel-in 0.35s var(--sg-ease-smooth);
}

@keyframes sg-panel-in {
    from {
        opacity: 0;
        transform: translateY(0.35rem);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* —— Play overlay pulse —— */
.sg-play-overlay .sg-btn--primary {
    animation: sg-cta-pulse 2.4s ease-in-out infinite;
}

@keyframes sg-cta-pulse {
    0%, 100% { box-shadow: var(--sg-shadow-sm); }
    50% { box-shadow: 0 6px 22px rgba(225, 29, 72, 0.35); }
}

/* —— Assurance cards hover —— */
.sg-assurance__item {
    transition:
        transform 0.35s var(--sg-ease-smooth),
        box-shadow 0.35s var(--sg-ease-smooth),
        border-color 0.35s var(--sg-ease-smooth);
}

.sg-assurance__item:hover {
    transform: translateY(-3px);
    box-shadow: var(--sg-shadow-md);
    border-color: rgba(225, 29, 72, 0.15);
}

/* —— Reduced motion —— */
@media (prefers-reduced-motion: reduce) {
    body.sg-motion-ready::before,
    .sg-hero-pick,
    .sg-motion-ready .sg-hero__intro-copy > *,
    .sg-motion-ready .sg-hero__intro-art,
    .sg-play-overlay .sg-btn--primary {
        animation: none;
    }

    .sg-reveal,
    .sg-reveal-child {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .sg-hero-pick {
        opacity: 1;
        transform: none;
    }

    .sg-tile__thumb img,
    .sg-hero-pick__media img,
    .sg-related-card__icon,
    .sg-brand__mark,
    .sg-assurance__item,
    .sg-header,
    .sg-cookie {
        transition: none;
    }

    .sg-hero__picks-loading,
    .sg-category-sections__loading,
    .sg-loading {
        animation: none;
        color: var(--sg-ink-muted);
        background: none;
        -webkit-background-clip: unset;
        background-clip: unset;
    }
}
