/* Partial: recursos de campanha (lightbox de entrada e botão flutuante) */
.floating-cta { position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 800; box-shadow: var(--shadow-lg); animation: float-in var(--dur-slow) var(--ease-out) 1.2s both; }
/* Ao alcançar o rodapé o botão sobe o tanto que invadiria, para não tapar os
   links. O deslocamento vem do JS em --lift-cta. */
/* Sem transição: o deslocamento acompanha a rolagem quadro a quadro, então o
   botão parece descer normalmente e simplesmente travar ao encostar na linha. */
.floating-cta.is-raised { animation: none; transform: translateY(calc(var(--lift-cta, 0px) * -1)); }
@keyframes float-in { from { opacity: 0; transform: translateY(20px) scale(0.96); } to { opacity: 1; transform: none; } }
@media (max-width: 640px) { .floating-cta { right: 1rem; bottom: 1rem; left: 1rem; } .floating-cta .btn { width: 100%; } }
.modal { position: fixed; inset: 0; z-index: 1500; display: none; align-items: center; justify-content: center; padding: 1.25rem; background: rgba(12,6,32,0.7); backdrop-filter: blur(6px); }
.modal.is-open { display: flex; }
.modal__box { position: relative; width: min(100%, 720px); background: #fff; border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-lg); transform: perspective(var(--perspective)) rotateX(6deg) translateY(20px) scale(0.97); opacity: 0; transition: transform var(--dur-slow) var(--ease-out), opacity var(--dur-slow) var(--ease-out); }
.modal.is-open .modal__box { transform: none; opacity: 1; }
.modal__media { aspect-ratio: 16 / 7; background: var(--c-purple-900); }
.modal__media img { width: 100%; height: 100%; object-fit: cover; }
.modal__body { padding: clamp(1.5rem, 4vw, 2.5rem); }
.modal__body h2 { font-size: var(--fs-h3); }
.modal__close { position: absolute; top: 0.75rem; right: 0.75rem; width: 40px; height: 40px; border-radius: 50%; border: 0; background: rgba(255,255,255,0.9); color: var(--c-purple-900); display: grid; place-items: center; cursor: pointer; z-index: 2; }
.modal__close svg { width: 18px; height: 18px; }
@media (prefers-reduced-motion: reduce) { .modal__box { transform: none; transition-duration: 200ms; } .floating-cta { animation: none; } }
