/* ================= EuroLeague TV ================= */

/* ---- Pallino voce di menu ---- */
.tv-link { display: inline-flex; align-items: center; gap: .5rem; }
.tv-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; flex: 0 0 auto; }
.tv-dot-off { background: #9aa0a6; box-shadow: none; }
.tv-dot-live { background: #e50914; animation: tvBlink 1s ease-in-out infinite; }
@keyframes tvBlink {
    0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(229, 9, 20, .6); }
    50% { opacity: .35; box-shadow: 0 0 0 6px rgba(229, 9, 20, 0); }
}

/* ---- Corpo broadcast ---- */
.tv-body { margin: 0; min-height: 100vh; background: radial-gradient(circle at 50% 0%, #1b2735 0%, #0b1017 70%); color: #f4f6fb; font-family: 'Poppins', system-ui, sans-serif; }
.tv-page { max-width: 1200px; margin: 0 auto; padding: 1.5rem 1.25rem 3rem; }

/* ---- Testata broadcast ---- */
.tv-head { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; flex-wrap: wrap; }
.tv-head-title { font-size: 1.9rem; font-weight: 700; margin: 0; flex: 1; }
.tv-head-sub { font-size: 1rem; font-weight: 400; opacity: .6; margin-left: .5rem; }
.tv-live-badge { display: inline-flex; align-items: center; gap: .4rem; background: #e50914; color: #fff; font-weight: 700; letter-spacing: .08em; font-size: .85rem; padding: .25rem .75rem; border-radius: 999px; white-space: nowrap; animation: tvLiveBlink 1s ease-in-out infinite; }
@keyframes tvLiveBlink { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }

/* Le spie "in onda" (pallino menu + badge LIVE) devono lampeggiare anche con
   prefers-reduced-motion attivo: il reset globale in tokens.css azzera durata e
   iterazioni di TUTTE le animazioni con !important. Qui le riattivo solo per
   questi due indicatori (scelta voluta: sono piccoli e segnalano la diretta). */
@media (prefers-reduced-motion: reduce) {
    .tv-dot-live, .tv-live-badge { animation-duration: 1s !important; animation-iteration-count: infinite !important; }
}
.tv-logo { font-size: 1.4rem; letter-spacing: .12em; text-transform: uppercase; opacity: .8; }

/* ---- Tasto "torna indietro" (tutte le pagine TV) ---- */
.tv-back { display: inline-flex; align-items: center; gap: .4rem; text-decoration: none; color: #f4f6fb; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.2); border-radius: 999px; padding: .35rem .9rem; font-size: .85rem; font-weight: 600; white-space: nowrap; transition: background .15s ease; }
.tv-back:hover { background: rgba(255,255,255,.18); color: #fff; }
.tv-back-fixed { position: fixed; top: 14px; left: 16px; z-index: 5; }

/* ---- Nessuna diretta ---- */
.tv-empty { min-height: 100vh; display: grid; place-items: center; padding: 2rem; }
.tv-empty-card { text-align: center; max-width: 640px; }
.tv-empty .tv-logo { margin-bottom: 1.5rem; }
.tv-empty-title { font-size: 2.4rem; font-weight: 700; margin: 0 0 .75rem; }
.tv-empty-sub { font-size: 1.1rem; opacity: .7; margin: 0 0 2rem; }
.tv-next { display: inline-flex; flex-direction: column; gap: .25rem; padding: 1rem 1.5rem; border: 1px solid rgba(255,255,255,.12); border-radius: 12px; background: rgba(255,255,255,.04); }
.tv-next-label { font-size: .8rem; text-transform: uppercase; letter-spacing: .1em; opacity: .6; }
.tv-next-value { font-size: 1.1rem; font-weight: 600; text-transform: capitalize; }

/* ---- Comune ---- */
.tv-empty-inline { text-align: center; opacity: .6; padding: 3rem 0; }

/* ---- DirettaGol ---- */
.tv-sez { margin-bottom: 2rem; }
.tv-sez-title { font-size: 1.1rem; text-transform: uppercase; letter-spacing: .08em; opacity: .75; border-bottom: 1px solid rgba(255,255,255,.12); padding-bottom: .4rem; margin-bottom: 1rem; }
.tv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1rem; }
.tv-card { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.10); border-radius: 12px; padding: 1rem; }
.tv-card.attesa { opacity: .7; }
.tv-card-comp { font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; opacity: .55; margin-bottom: .6rem; }
.tv-attesa { color: #f5c518; }
.tv-card-row { display: grid; grid-template-columns: 1fr auto 1fr; gap: .75rem; align-items: start; }
.tv-team-name { display: block; font-weight: 600; margin-bottom: .35rem; }
.tv-team.away { text-align: right; }
.tv-card-score { align-self: center; }
.tv-score { font-size: 1.6rem; font-weight: 800; white-space: nowrap; }
.tv-vs { font-size: 1.4rem; opacity: .5; }
.tv-ev { font-size: .82rem; opacity: .85; }
.tv-ev-ic { margin-left: .25rem; }

/* ---- DirettaAsta ---- */
.tv-asta-controls { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; margin-bottom: 1.25rem; }
.tv-switch { display: inline-flex; border: 1px solid rgba(255,255,255,.15); border-radius: 999px; overflow: hidden; }
.tv-switch-btn { background: transparent; color: inherit; border: 0; padding: .5rem 1.1rem; cursor: pointer; font: inherit; }
.tv-switch-btn.active { background: #e50914; color: #fff; }
.tv-follow { display: inline-flex; align-items: center; gap: .5rem; }
.tv-follow-lbl { opacity: .7; }
/* fondo scuro esplicito su select E option: senza, le option native restano
   bianche e col testo chiaro ereditato risultano "bianco su bianco". */
.tv-follow-sel { background: #1b2735; color: #f4f6fb; border: 1px solid rgba(255,255,255,.25); border-radius: 8px; padding: .4rem .6rem; }
.tv-follow-sel option { background: #1b2735; color: #f4f6fb; }
.tv-follow-clear { background: transparent; border: 1px solid rgba(255,255,255,.25); color: inherit; border-radius: 8px; padding: .4rem .7rem; cursor: pointer; }

/* ---- Pannello economico squadra seguita ---- */
.tv-eco { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.12); border-radius: 12px; padding: 1rem; margin-bottom: 1rem; }
.tv-eco-title { font-size: 1.1rem; font-weight: 700; margin: 0 0 .75rem; display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.tv-eco-fascia { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; background: rgba(255,255,255,.12); padding: .12rem .55rem; border-radius: 999px; opacity: .85; }
.tv-eco-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(115px, 1fr)); gap: .6rem; }
.tv-eco-item { background: rgba(255,255,255,.04); border-radius: 8px; padding: .5rem .6rem; }
.tv-eco-lbl { font-size: .66rem; text-transform: uppercase; letter-spacing: .05em; opacity: .55; display: block; margin-bottom: .15rem; }
.tv-eco-val { font-size: 1.05rem; font-weight: 700; }
.tv-eco-val.pos { color: #7ee787; }
.tv-eco-val.neg { color: #ff7b72; }
/* Banco di gara dell'asta guidata live (#102) */
.tv-banco { background: rgba(229,9,20,.08); border: 1px solid rgba(229,9,20,.45); border-radius: 12px; padding: .9rem 1.1rem; margin-bottom: 1.25rem; }
.tv-banco-head { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-bottom: .5rem; }
.tv-banco-titolo { font-weight: 800; letter-spacing: .08em; color: #e50914; }
.tv-banco-stato { padding: 0 .5rem; border-radius: 10px; background: rgba(126,231,135,.15); color: #7ee787; font-size: .8rem; font-weight: 700; }
.tv-banco-stato.pausa { background: rgba(245,197,24,.18); color: #f5c518; }
.tv-banco-blocco { font-size: .8rem; opacity: .8; text-transform: uppercase; letter-spacing: .05em; }
.tv-banco-giocatore { font-size: 1.6rem; font-weight: 800; }
.tv-banco-ruolo { font-size: .95rem; opacity: .75; font-weight: 600; }
.tv-banco-u21 { font-size: .75rem; background: rgba(126,231,135,.18); color: #7ee787; border-radius: 8px; padding: 0 .4rem; vertical-align: middle; font-weight: 700; }
.tv-banco-offerta { font-size: 1.2rem; margin-top: .2rem; }
.tv-banco-offerta strong { color: #7ee787; }
.tv-banco-turno { margin-top: .3rem; font-size: .95rem; }
.tv-banco-timer { display: inline-block; min-width: 48px; text-align: center; font-weight: 800; font-variant-numeric: tabular-nums; padding: 0 .45rem; border-radius: 6px; background: rgba(255,255,255,.12); }
.tv-banco-timer.warn { background: #e50914; color: #fff; animation: tv-banco-pulse 1s infinite; }
.tv-banco-timer.scaduto { background: rgba(255,255,255,.25); }
@keyframes tv-banco-pulse { 50% { opacity: .5; } }
.tv-banco-ftb { color: #ff7b72; font-size: .8rem; font-weight: 700; }
.tv-banco-log { margin-top: .45rem; display: flex; flex-wrap: wrap; gap: .6rem; font-size: .82rem; opacity: .85; }
.tv-banco-off { background: rgba(255,255,255,.06); border-radius: 6px; padding: 0 .4rem; }
.tv-banco-ultima { font-size: .95rem; opacity: .9; }
.tv-asta-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 1.5rem; }
@media (max-width: 900px) { .tv-asta-grid { grid-template-columns: 1fr; } }
.tv-asta-teams { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .75rem; align-content: start; }
.tv-asta-team { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.10); border-radius: 10px; padding: .8rem; }
.tv-asta-team.followed { border-color: #e50914; box-shadow: 0 0 0 1px #e50914; }
.tv-asta-team-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: .5rem; gap: .5rem; }
.tv-asta-team-name { font-weight: 700; }
.tv-asta-cred { color: #7ee787; font-weight: 700; white-space: nowrap; }
.tv-asta-slots { font-size: .8rem; opacity: .85; display: flex; flex-wrap: wrap; gap: .35rem; }
.tv-slot { padding: 0 .3rem; border-radius: 4px; }
.tv-slot.open { background: rgba(245,197,24,.18); color: #f5c518; }
.tv-slot.full { opacity: .5; }
.tv-asta-empty { font-size: .78rem; opacity: .6; margin-top: .4rem; }
.tv-asta-feed { background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.08); border-radius: 12px; padding: 1rem; max-height: 70vh; overflow-y: auto; }
.tv-mov { display: grid; grid-template-columns: auto 1fr auto auto; gap: .5rem; align-items: baseline; padding: .5rem 0; border-bottom: 1px solid rgba(255,255,255,.06); font-size: .85rem; }
.tv-mov-tipo { font-weight: 700; color: #58a6ff; }
.tv-mov-old { opacity: .6; }
.tv-mov-cart { color: #7ee787; font-weight: 600; white-space: nowrap; }
