/* =====================================================================
   Bannières univers : au survol (ou quand la carte est à l'écran sur
   mobile), une vidéo de 5 s du personnage remplace l'image fixe.
   Chargement paresseux : la vidéo n'est téléchargée qu'au 1er survol.
   ===================================================================== */
.ub-card .ub-video { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; object-position: left 25%; opacity: 0; transform: scale(1.02); transition: opacity .45s ease, transform 5s linear; pointer-events: none; }
.ub-card.is-playing .ub-video { opacity: 1; transform: scale(1.08); }
.ub-card.is-playing img { opacity: 0; transition: opacity .45s ease .1s, transform .7s; }
.ub-card .ub-info { z-index: 1; }

/* barre de progression des 5 s */
.ub-card::before { content: ''; position: absolute; left: 0; bottom: 0; z-index: 2; height: 2px; width: 0; background: var(--accent); box-shadow: 0 0 10px var(--accent); }
.ub-card.is-playing::before { animation: ubProg 5s linear forwards; }
@keyframes ubProg { to { width: 100%; } }

/* chargement : petit halo sur la carte */
.ub-card.is-loading::before { width: 30%; animation: ubLoad 1s ease-in-out infinite alternate; }
@keyframes ubLoad { from { left: 0; } to { left: 70%; } }

@media (prefers-reduced-motion: reduce) { .ub-card .ub-video { display: none; } .ub-card.is-playing img { opacity: 1; } }
