/* DA broadcast EVA — polices obligatoires + keyframes partagés par les overlays. */

@font-face{font-family:'Gotham Condensed';src:url('/static/assets/fonts/GothamCondensed-Book.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Gotham Condensed';src:url('/static/assets/fonts/GothamCondensed-Bold.otf') format('opentype');font-weight:500 900;font-style:normal;font-display:swap;}
@font-face{font-family:'Gotham';src:url('/static/assets/fonts/Gotham-Light.otf') format('opentype');font-weight:300 400;font-style:normal;font-display:swap;}
@font-face{font-family:'Gotham';src:url('/static/assets/fonts/Gotham-Black.otf') format('opentype');font-weight:500 900;font-style:normal;font-display:swap;}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;background:#070709;overflow:hidden;font-family:'Gotham';}

/* Canvas fixe : flex-shrink:0 -> le conteneur flex ne réduit JAMAIS le canvas
   avant le scale (sinon innerWidth/1920 fausserait l'échelle sur < 1920px). */
#eva-fit{width:1920px;height:1080px;flex:none;transform-origin:center center;}

/* Entrées */
@keyframes slideInL{from{transform:translateX(-140%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes slideInR{from{transform:translateX(140%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes riseIn{from{transform:translateY(48px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes fadeDown{from{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes popIn{0%{transform:scale(.4);opacity:0}68%{transform:scale(1.09);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes growBar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes markerIn{from{opacity:0;transform:translate(-50%,-50%) rotate(45deg) scale(.3)}to{opacity:1;transform:translate(-50%,-50%) rotate(45deg) scale(1)}}
/* Ambiance (boucles) */
@keyframes sheen{from{left:-45%}to{left:145%}}
@keyframes driftDots{from{background-position:0 0}to{background-position:60px 60px}}
@keyframes glowPulse{0%,100%{opacity:.32}50%{opacity:.7}}
@keyframes brushFlicker{0%,100%{opacity:.12}50%{opacity:.22}}
@keyframes bracketFlicker{0%,100%{opacity:.95}46%{opacity:.5}52%{opacity:1}}
@keyframes vsThrob{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@keyframes camScan{0%{top:-2px}100%{top:100%}}
@keyframes camRec{0%,100%{opacity:1}50%{opacity:.3}}
/* Changement de joueur (swap d'une carte) : sortie sèche puis retour stylé. */
@keyframes cardSwapOut{from{opacity:1}to{opacity:0;transform:translateY(-12px) scale(.9) rotateX(18deg)}}
@keyframes cardSwapIn{0%{opacity:0;transform:translateY(20px) scale(.86)}60%{opacity:1;transform:translateY(0) scale(1.04)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes cardFlash{0%{box-shadow:0 0 0 0 rgba(226,36,31,0)}30%{box-shadow:0 0 26px 4px rgba(226,36,31,.75)}100%{box-shadow:0 0 0 0 rgba(226,36,31,0)}}
@keyframes cellIn{from{opacity:0;transform:scale(.86)}to{opacity:1;transform:scale(1)}}
@keyframes recBlink{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes logoReveal{from{opacity:0}to{opacity:.12}}
@keyframes logoPulse{0%,100%{opacity:.12}50%{opacity:.2}}
@keyframes haloPulse{0%,100%{opacity:.5}50%{opacity:.95}}
@keyframes drawLine{to{stroke-dashoffset:0}}
@keyframes areaFade{to{opacity:1}}
@keyframes arrowBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes endHaloFade{to{opacity:1}}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.08)}}
@keyframes crownDrop{from{opacity:0;transform:translateY(-22px)}60%{transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@keyframes crownShine{0%,100%{filter:brightness(1)}50%{filter:brightness(1.35)}}
@keyframes rowIn{from{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}
/* Duel : demi-barres pilotées par --bw (largeur cible), sans JS. */
@keyframes barGrowVar{from{width:0}to{width:var(--bw)}}
@keyframes rowSlide{from{transform:translateY(28px);opacity:0}to{transform:translateY(0);opacity:1}}
/* Habillage : ticker bas (piste dupliquée -> -50% en boucle) + pip live. */
@keyframes tickerScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes pipLive{0%,100%{box-shadow:0 0 0 0 rgba(226,36,31,.7)}50%{box-shadow:0 0 10px 2px rgba(226,36,31,1)}}
@keyframes pipIn{from{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes pipGlowL{0%,100%{box-shadow:0 0 10px rgba(226,36,31,.6)}50%{box-shadow:0 0 20px rgba(226,36,31,1)}}
@keyframes pipGlowR{0%,100%{box-shadow:0 0 10px rgba(31,176,106,.6)}50%{box-shadow:0 0 20px rgba(31,176,106,1)}}
