/* Globais e animacoes do design (extraidos do export do canvas).
   Nao editar a mao: build/gerar_estatico.py regenera este arquivo. */

/* Aviso: o export NAO tem reset global. O carregador do canvas descarta o proprio
   <head> ao montar (replaceWith), entao o `*{box-sizing:border-box}` dele nao vale.
   Com box-sizing content-box, a caixa de oferta (max-width + padding) tem 586px de
   largura como no design — por isso nao ha reset aqui. */

body { margin: 0; background: #0B0B14; }
    ::selection { background: #FF2E93; color: #fff; }
    a { color: #93A0F0; }
    a:hover { color: #FF2E93; }
    @keyframes pulseRing { 0% { box-shadow: 0 0 0 0 rgba(255,46,147,0.45); } 70% { box-shadow: 0 0 0 14px rgba(255,46,147,0); } 100% { box-shadow: 0 0 0 0 rgba(255,46,147,0); } }
    @keyframes ctaPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.08); } }
    @keyframes ctaGlow { 0%, 100% { box-shadow: 0 10px 28px rgba(255,46,147,0.4), 0 0 0 0 rgba(255,46,147,0); } 50% { box-shadow: 0 10px 28px rgba(255,46,147,0.4), 0 0 0 20px rgba(255,46,147,0); } }
    .cta-animated { animation: ctaPulse 1.8s ease-in-out infinite, ctaGlow 2.5s ease-in-out 0.3s infinite; }
    @keyframes shineMove { 0% { left: -150%; } 55% { left: 150%; } 100% { left: 150%; } }
    .cta-shine { position: absolute; top: 0; left: -150%; width: 60%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255,255,255,0.6), transparent); transform: skewX(-20deg); animation: shineMove 2.4s ease-in-out infinite; }
    @keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
    .marquee-track { animation: marquee 22s linear infinite; }
    @keyframes gradientScroll { 0% { background-position: 200% center; } 100% { background-position: 0% center; } }
    .highlight-animated { display: inline; background-image: linear-gradient(90deg, #FF2E93, #FFC9E4, #B8006B, #FFC9E4); background-size: 300% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: gradientScroll 4s linear infinite; }
    .reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.7s ease-out, transform 0.7s ease-out; }
    .reveal.is-visible { opacity: 1; transform: translateY(0); }
    .pain-card { opacity: 0; transform: translateY(28px) scale(.94); transition: opacity 0.55s ease-out, transform 0.55s ease-out; }
    .pain-card.is-in { opacity: 1; transform: translateY(0) scale(1); }
    .pain-card:nth-child(2) { transition-delay: 0.08s; }
    .pain-card:nth-child(3) { transition-delay: 0.16s; }
    .pain-card:nth-child(4) { transition-delay: 0.24s; }
    @keyframes shineSweep { 0% { background-position: -200% center; } 100% { background-position: 200% center; } }
    .shiny-title { background-image: linear-gradient(90deg, currentColor 0%, currentColor 40%, #fff 50%, currentColor 60%, currentColor 100%); background-size: 250% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: shineSweep 3s linear infinite; }
    .how-scroll{scrollbar-width:none;-ms-overflow-style:none}
    .how-scroll::-webkit-scrollbar{display:none;width:0;height:0}
    @keyframes foil-shift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
    .ticket-pop{opacity:0;transform:scale(.9) rotate(-3deg);transition:opacity .6s ease-out,transform .6s cubic-bezier(.34,1.56,.64,1)}
    .reveal.is-visible .ticket-pop{opacity:1;transform:scale(1) rotate(0)}
