/* =============================================
   animations.css — Animações do tema TechCommerce
   Usa IntersectionObserver via animations.js
   ============================================= */

/* =============================================
   RESPEITA PREFERS-REDUCED-MOTION
   ============================================= */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    .tc-animate {
        opacity: 1 !important;
        transform: none !important;
    }
}

/* =============================================
   ESTADO INICIAL (elementos a animar)
   ============================================= */
.tc-animate {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.65s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.65s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: opacity, transform;
}

/* Estado visível (adicionado pelo JS) */
.tc-animate.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* =============================================
   VARIAÇÕES DE ENTRADA
   ============================================= */
.tc-animate-left {
    opacity: 0;
    transform: translateX(-30px);
    transition: opacity 0.65s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.65s cubic-bezier(0.16, 1, 0.3, 1);
}

.tc-animate-left.is-visible {
    opacity: 1;
    transform: translateX(0);
}

.tc-animate-right {
    opacity: 0;
    transform: translateX(30px);
    transition: opacity 0.65s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.65s cubic-bezier(0.16, 1, 0.3, 1);
}

.tc-animate-right.is-visible {
    opacity: 1;
    transform: translateX(0);
}

.tc-animate-scale {
    opacity: 0;
    transform: scale(0.92);
    transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.tc-animate-scale.is-visible {
    opacity: 1;
    transform: scale(1);
}

/* =============================================
   HERO — ANIMAÇÕES DE ENTRADA
   ============================================= */
.hero-content .section-label,
.hero-content .hero-title,
.hero-content .hero-subtitle,
.hero-content .hero-actions,
.hero-content .hero-stats {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}

.hero-loaded .hero-content .section-label { opacity: 1; transform: none; transition-delay: 0.1s; }
.hero-loaded .hero-content .hero-title    { opacity: 1; transform: none; transition-delay: 0.2s; }
.hero-loaded .hero-content .hero-subtitle { opacity: 1; transform: none; transition-delay: 0.32s; }
.hero-loaded .hero-content .hero-actions  { opacity: 1; transform: none; transition-delay: 0.44s; }
.hero-loaded .hero-content .hero-stats    { opacity: 1; transform: none; transition-delay: 0.56s; }

.hero-visual {
    opacity: 0;
    transform: translateX(30px) scale(0.96);
    transition: opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
    transition-delay: 0.3s;
}

.hero-loaded .hero-visual {
    opacity: 1;
    transform: translateX(0) scale(1);
}

/* =============================================
   HERO CARDS — FLOATING
   ============================================= */
.hero-card-stat {
    animation: float-stat 4s ease-in-out infinite;
    animation-delay: 0.5s;
}

.hero-card-platform {
    animation: float-platform 4.5s ease-in-out infinite;
    animation-delay: 1s;
}

@keyframes float-stat {
    0%, 100% { transform: translateY(-50%) translateX(0); }
    50%       { transform: translateY(calc(-50% - 8px)) translateX(4px); }
}

@keyframes float-platform {
    0%, 100% { transform: translateY(0); }
    50%       { transform: translateY(-10px); }
}

/* =============================================
   GLOW PULSO
   ============================================= */
.hero-glow-1 {
    animation: glow-pulse 6s ease-in-out infinite;
}

.hero-glow-2 {
    animation: glow-pulse 8s ease-in-out infinite reverse;
}

@keyframes glow-pulse {
    0%, 100% { opacity: 0.6; transform: scale(1); }
    50%       { opacity: 1;   transform: scale(1.1); }
}

/* =============================================
   SCROLL WHEEL
   ============================================= */
.scroll-wheel {
    animation: scroll-down 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

/* =============================================
   COUNTER (números animados)
   ============================================= */
.counter-value {
    display: inline-block;
    transition: all 0.1s;
}

/* =============================================
   LOADING SKELETON
   ============================================= */
.skeleton {
    background: linear-gradient(
        90deg,
        rgba(255,255,255,0.04) 25%,
        rgba(255,255,255,0.08) 50%,
        rgba(255,255,255,0.04) 75%
    );
    background-size: 200% 100%;
    animation: skeleton-loading 1.5s infinite;
    border-radius: var(--radius-sm);
}

@keyframes skeleton-loading {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* =============================================
   PAGE TRANSITION
   ============================================= */
.page-transition {
    opacity: 0;
    animation: page-in 0.4s ease forwards;
}

@keyframes page-in {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* =============================================
   BOTÕES — RIPPLE EFFECT
   ============================================= */
.btn .ripple {
    position: absolute;
    border-radius: 50%;
    background: rgba(255,255,255,0.3);
    transform: scale(0);
    animation: ripple-effect 0.6s linear;
    pointer-events: none;
}

@keyframes ripple-effect {
    to {
        transform: scale(4);
        opacity: 0;
    }
}

/* =============================================
   PLATFORM CARD — SHIMMER
   ============================================= */
.platform-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        105deg,
        transparent 40%,
        rgba(255,255,255,0.025) 50%,
        transparent 60%
    );
    background-size: 200% 100%;
    opacity: 0;
    transition: opacity 0.3s;
}

.platform-card:hover::after {
    opacity: 1;
    animation: shimmer 1.5s infinite;
}

@keyframes shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* =============================================
   SECTION LABEL — PULSE
   ============================================= */
.section-label::before {
    animation: label-pulse 2.5s ease-in-out infinite;
}

@keyframes label-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%       { opacity: 0.5; transform: scale(0.7); }
}

/* =============================================
   CTA BOX — BORDER GLOW
   ============================================= */
.cta-box {
    animation: border-glow 4s ease-in-out infinite;
}

@keyframes border-glow {
    0%, 100% { box-shadow: 0 0 20px rgba(10,191,188,0.05), 0 20px 60px rgba(0,0,0,0.3); }
    50%       { box-shadow: 0 0 40px rgba(10,191,188,0.12), 0 20px 60px rgba(0,0,0,0.3); }
}

/* =============================================
   MENU MOBILE — SLIDE IN
   ============================================= */
@media (max-width: 900px) {
    .main-nav {
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        width: 280px;
        background: var(--color-dark-2);
        border-left: 1px solid var(--color-border);
        z-index: 1001;
        transform: translateX(100%);
        transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
        overflow-y: auto;
        padding: 80px var(--space-lg) var(--space-lg);
    }

    .main-nav.nav-open {
        transform: translateX(0);
    }
}
