/**
 * Arcade90 — CSS di supporto.
 * Contiene SOLO ciò che i selettori globali di Breakdance non possono esprimere
 * (media query non legate ai breakpoint, keyframes condivisi, preferenze utente).
 * Tutto il resto dello stile è in Breakdance > Selettori globali (prefisso "arcade90-").
 */

/* Micro-animazioni condivise */
@keyframes a90-press { 0% { transform: scale(1); } 40% { transform: scale(.97); } 100% { transform: scale(1); } }
@keyframes a90-flash { 0% { opacity: .35; transform: translateY(4px); } 100% { opacity: 1; transform: none; } }
@keyframes a90-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .45; } }
@keyframes a90-scan { from { background-position: 0 0; } to { background-position: 0 100%; } }
@keyframes a90-grid { from { background-position: 0 0; } to { background-position: 0 64px; } }      /* griglia neon dell'hero */
@keyframes a90-ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }     /* nastro scorrevole */
@keyframes a90-spin { to { transform: rotate(360deg); } }                                            /* sigillo del certificato */
@keyframes a90-holo { 0% { background-position: 0% 50%; } 100% { background-position: 200% 50%; } } /* riflesso olografico */

.arcade90-choice.is-pressed { animation: a90-press .28s cubic-bezier(.2, .8, .2, 1); }
[data-a90-price].is-updated { animation: a90-flash .35s cubic-bezier(.2, .8, .2, 1); }
.arcade90-live-dot { animation: a90-pulse 1.8s ease-in-out infinite; }

/* Hover "che risponde" solo su dispositivi con puntatore reale */
@media (hover: hover) and (pointer: fine) {
  .arcade90-card:hover { transform: translateY(-4px); }
  .arcade90-btn:hover { transform: translateY(-2px); }
}

/* Visibilità del focus da tastiera, coerente su tutto il sito */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--arcade90-cyan, #22E1FF);
  outline-offset: 3px;
}

/* Rispetto di "riduci movimento": niente transizioni, parallasse o autoplay visivi.
   Le animazioni d'ingresso di Breakdance vengono mostrate subito nello stato finale. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  [data-entrance], .bde-animation, [class*="breakdance-animate"] {
    opacity: 1 !important;
    transform: none !important;
  }
}
