/* ============================================================
   ANIMATIONS.CSS — fade, reveal, hover, parallax
   ============================================================ */

/* ── Reveal on scroll ───────────────────────────────────────── */
.reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal.visible {
    opacity: 1;
    transform: translateY(0);
}

.reveal--left {
    opacity: 0;
    transform: translateX(-32px);
    transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal--left.visible {
    opacity: 1;
    transform: translateX(0);
}

.reveal--right {
    opacity: 0;
    transform: translateX(32px);
    transition: opacity 0.65s ease, transform 0.65s ease;
}
.reveal--right.visible {
    opacity: 1;
    transform: translateX(0);
}

/* Staggered delays per figli diretti di griglia */
.grid .reveal:nth-child(1) { transition-delay: 0s; }
.grid .reveal:nth-child(2) { transition-delay: 0.1s; }
.grid .reveal:nth-child(3) { transition-delay: 0.2s; }
.grid .reveal:nth-child(4) { transition-delay: 0.3s; }
.grid .reveal:nth-child(5) { transition-delay: 0.4s; }
.grid .reveal:nth-child(6) { transition-delay: 0.5s; }

/* ── Hero parallax (JS-driven, classe di supporto) ──────────── */
.hero__bg {
    will-change: transform;
}

/* ── Page load ──────────────────────────────────────────────── */
@keyframes fadeDown {
    from { opacity: 0; transform: translateY(-16px); }
    to   { opacity: 1; transform: translateY(0); }
}

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

@keyframes fadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

.hero__content h1    { animation: fadeDown 0.8s ease 0.2s both; }
.hero__content p     { animation: fadeUp 0.8s ease 0.4s both; }
.hero__buttons       { animation: fadeUp 0.8s ease 0.6s both; }

/* ── Hover card glow ────────────────────────────────────────── */
.card--feature {
    position: relative;
    overflow: hidden;
}
.card--feature::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: radial-gradient(
        circle at 50% 0%,
        rgba(161,5,44,0.07) 0%,
        transparent 70%
    );
    opacity: 0;
    transition: opacity var(--transition);
}
.card--feature:hover::after { opacity: 1; }

/* ── Pulsante shine effect ──────────────────────────────────── */
.btn--primary {
    position: relative;
    overflow: hidden;
}
.btn--primary::after {
    content: '';
    position: absolute;
    top: 0; left: -100%;
    width: 60%;
    height: 100%;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(255,255,255,0.2),
        transparent
    );
    transition: left 0.5s ease;
}
.btn--primary:hover::after { left: 150%; }

/* ── Smooth image zoom on card--media hover ─────────────────── */
.card--media .card__img {
    transition: transform 0.5s ease;
}
.card--media:hover .card__img {
    transform: scale(1.04);
}

/* ── Navbar scroll shrink (supporto) ───────────────────────── */
#navbar {
    transition: background 0.35s ease, box-shadow 0.35s ease;
}

/* ── Reduced motion ─────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .reveal, .reveal--left, .reveal--right {
        opacity: 1;
        transform: none;
        transition: none;
    }
    .hero__content h1,
    .hero__content p,
    .hero__buttons {
        animation: none;
    }
    .btn--primary::after { display: none; }
}
