/* ========================================
   Animations — LP Conjunto PI64
   ======================================== */

/* ---- Reveal Up ---- */
.reveal-up {
    opacity: 0;
    -webkit-transform: translateY(30px);
    transform: translateY(30px);
    -webkit-transition: opacity 0.75s ease, -webkit-transform 0.75s ease;
    transition: opacity 0.75s ease, transform 0.75s ease;
}
.reveal-up.visible {
    opacity: 1;
    -webkit-transform: translateY(0);
    transform: translateY(0);
}
.reveal-up.delay-1 { transition-delay: 0.10s; }
.reveal-up.delay-2 { transition-delay: 0.22s; }
.reveal-up.delay-3 { transition-delay: 0.38s; }
.reveal-up.delay-4 { transition-delay: 0.54s; }
.reveal-up.delay-5 { transition-delay: 0.70s; }

/* ---- Reveal Left (hero text) ---- */
.reveal-left {
    opacity: 0;
    -webkit-transform: translateX(-60px);
    transform: translateX(-60px);
    -webkit-transition: opacity 0.80s cubic-bezier(0.22, 1, 0.36, 1),
                        -webkit-transform 0.80s cubic-bezier(0.22, 1, 0.36, 1);
    transition: opacity 0.80s cubic-bezier(0.22, 1, 0.36, 1),
                transform 0.80s cubic-bezier(0.22, 1, 0.36, 1);
}
.reveal-left.visible {
    opacity: 1;
    -webkit-transform: translateX(0);
    transform: translateX(0);
}
.reveal-left.delay-1 { transition-delay: 0.10s; }
.reveal-left.delay-2 { transition-delay: 0.22s; }
.reveal-left.delay-3 { transition-delay: 0.38s; }
.reveal-left.delay-4 { transition-delay: 0.54s; }

/* ---- Reveal Right (hero banner) ---- */
@-webkit-keyframes revealFromRight {
    from { opacity: 0; -webkit-transform: translateX(80px); transform: translateX(80px); }
    to   { opacity: 1; -webkit-transform: translateX(0);    transform: translateX(0); }
}
@keyframes revealFromRight {
    from { opacity: 0; transform: translateX(80px); }
    to   { opacity: 1; transform: translateX(0); }
}
.reveal-right {
    -webkit-animation: revealFromRight 1.0s cubic-bezier(0.22, 1, 0.36, 1) 0.15s both;
    animation: revealFromRight 1.0s cubic-bezier(0.22, 1, 0.36, 1) 0.15s both;
}
.reveal-right.visible { opacity: 1; -webkit-transform: translateX(0); transform: translateX(0); }

/* ---- CTA Glow ---- */
@keyframes ctaGlow {
    0%, 100% { box-shadow: 0 4px 24px rgba(191, 155, 48, 0.25); }
    50%       { box-shadow: 0 4px 38px rgba(191, 155, 48, 0.55), 0 0 60px rgba(191, 155, 48, 0.15); }
}

/* ---- CTA Note Pulse ---- */
@keyframes ctaNotePulse {
    0%, 100% { opacity: 0.06; }
    50%       { opacity: 0.65; }
}

/* ---- Steel Shine on material-card.featured ---- */
@keyframes steelShine {
    0%   { left: -100%; }
    100% { left: 200%; }
}
.material-card.featured {
    position: relative;
    overflow: hidden;
}
.material-card.featured::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 40%;
    height: 100%;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(154, 164, 175, 0.08),
        transparent
    );
    animation: steelShine 5s ease-in-out infinite 3s;
    pointer-events: none;
}

/* ---- Hover Lift ---- */
.hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; }
.hover-lift:hover {
    transform: translateY(-5px);
    box-shadow: 0 16px 40px rgba(0,0,0,0.4);
}

/* ---- Shine on hover ---- */
.shine { position: relative; overflow: hidden; }
.shine::before {
    content: '';
    position: absolute;
    top: 0; left: -100%;
    width: 50%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
    transition: left 0.5s;
}
.shine:hover::before { left: 150%; }

/* ---- Spec Counter ---- */
@keyframes countTick {
    0%   { opacity: 0.55; transform: translateY(6px); }
    50%  { opacity: 1;    transform: translateY(-3px); }
    100% { opacity: 0.55; transform: translateY(6px); }
}

@keyframes countFinish {
    0%   { transform: scale(1);    color: var(--ivory); }
    35%  { transform: scale(1.07); color: var(--gold-light); text-shadow: 0 0 32px rgba(191,155,48,0.55); }
    100% { transform: scale(1);    color: var(--ivory); }
}

.spec-count.counting {
    animation: countTick 0.09s ease-in-out infinite;
}

.spec-count.count-done {
    animation: countFinish 0.65s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* ---- Reduced Motion ---- */
@media (prefers-reduced-motion: reduce) {
    .reveal-up,
    .reveal-left,
    .reveal-right {
        opacity: 1;
        -webkit-transform: none;
        transform: none;
        -webkit-transition: none;
        transition: none;
        -webkit-animation: none;
        animation: none;
    }
}
