/* =====================================================================
   ViYu — estilo "juego" (guía de marca oficial: Inter, #13ADAA, #E65A14, #F2BB16)
   Se carga DESPUÉS de viyu.css, solo en la página del jugador.
   ===================================================================== */
:root, :root[data-x] {
  --verde: #13ADAA; --naranja: #E65A14; --amarillo: #F2BB16;
  --azul: #13ADAA; --azul-medio: #13ADAA; --naranja-osc: #b84308;
  --tinta: #eef4f8; --suave: #9fb3c4; --linea: rgba(255,255,255,.12);
  --fondo: #0b1622; --tarjeta: rgba(22,37,55,.78);
  --ok:#8ff0c4; --ok-fondo:rgba(19,173,170,.16); --err:#ffb4a0; --err-fondo:rgba(230,90,20,.16);
  --aviso:#ffd968; --aviso-fondo:rgba(242,187,22,.14);
  --sombra: 0 8px 30px rgba(0,0,0,.35);
  --radio: 18px;
}
body {
  font-family: Inter, "Segoe UI", system-ui, sans-serif;
  background: radial-gradient(1200px 600px at 80% -10%, rgba(19,173,170,.18), transparent 60%),
              radial-gradient(900px 500px at -10% 110%, rgba(230,90,20,.14), transparent 60%), var(--fondo);
  background-attachment: fixed;
}
.titulo-juego { font-family: "Lilita One", Inter, sans-serif; font-weight: 400; letter-spacing: .5px; }

/* ---------------------------------------------------------- portada */
.portada {
  position: relative; overflow: hidden; color: #fff;
  min-height: clamp(260px, 52vw, 460px);
  display: flex; align-items: flex-end;
  padding: calc(14px + env(safe-area-inset-top)) 18px 26px;
}
.portada video, .portada .fondo {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0;
}
.portada .fondo { background: url(img/portada-1600.webp) center 40% / cover; animation: acercar 18s ease-in-out infinite alternate; }
@keyframes acercar { from { transform: scale(1) } to { transform: scale(1.08) } }
.portada::after {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(11,22,34,.35) 0%, rgba(11,22,34,.15) 40%, rgba(11,22,34,.95) 100%);
}
.portada .dentro { position: relative; z-index: 2; width: 100%; max-width: var(--ancho, 860px); margin: 0 auto; }
.barra-top {
  position: absolute; z-index: 3; top: calc(12px + env(safe-area-inset-top)); left: 0; right: 0;
  max-width: var(--ancho, 860px); margin: 0 auto; padding: 0 18px;
  display: flex; align-items: center; justify-content: space-between;
}
.barra-top img { height: 46px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.5)); }
.portada h1 { margin: 0; font-size: clamp(2.2rem, 9vw, 3.6rem); line-height: 1; text-shadow: 0 3px 0 #0b1622, 0 6px 20px rgba(0,0,0,.6); }
.portada h1 span { color: var(--amarillo); }
.portada p { margin: 8px 0 0; font-size: clamp(.95rem, 3.6vw, 1.1rem); color: #dfe9f1; max-width: 520px; }
.chip { display: inline-flex; gap: 6px; align-items: center; background: var(--naranja); color: #fff;
        font-weight: 800; font-size: .72rem; letter-spacing: 1px; text-transform: uppercase;
        padding: 5px 11px; border-radius: 99px; margin-bottom: 10px; box-shadow: 0 3px 0 #9e3a07; }
.barra-top button.sec { color: #fff; border-color: rgba(255,255,255,.5); background: rgba(11,22,34,.45); backdrop-filter: blur(6px); }

main { padding-top: 6px; }
h2 { color: #fff; font-family: "Lilita One", Inter, sans-serif; font-weight: 400; font-size: 1.45rem; letter-spacing: .5px; }
h2::before { content: ""; display: inline-block; width: 10px; height: 10px; border-radius: 3px;
             background: var(--amarillo); margin-right: 10px; transform: rotate(45deg) translateY(-3px); }
.caja { backdrop-filter: blur(10px); }

/* ------------------------------------------------------------ botones */
button, .boton { background: var(--verde); color: #04201f; box-shadow: 0 4px 0 #0b7472; font-weight: 800; }
button:active { transform: translateY(3px); box-shadow: 0 1px 0 #0b7472; }
button.naranja { background: var(--naranja); color: #fff; box-shadow: 0 4px 0 #9e3a07; }
button.naranja:active { box-shadow: 0 1px 0 #9e3a07; }
button.sec { background: transparent; color: #fff; box-shadow: none; border: 1px solid var(--linea); }
button:disabled { box-shadow: none; }
input { background: rgba(255,255,255,.06); color: #fff; border-color: rgba(255,255,255,.18); }

/* -------------------------------------------------------------- saldo */
.saldo { background: linear-gradient(135deg, rgba(22,37,55,.9), rgba(19,173,170,.25)) !important;
         border: 1px solid rgba(242,187,22,.35) !important; margin-top: 8px; position: relative; z-index: 3; }
.moneda { width: 58px; height: 58px; flex: none; border-radius: 50%;
          background: radial-gradient(circle at 35% 30%, #ffe89a, var(--amarillo) 45%, #b98300 100%);
          box-shadow: inset 0 -4px 0 rgba(0,0,0,.18), 0 0 24px rgba(242,187,22,.45);
          display: grid; place-items: center; color: #7a5200; font-weight: 900; font-size: 1.6rem;
          animation: girar 3.2s ease-in-out infinite; }
@keyframes girar { 0%,70%,100% { transform: rotateY(0) } 85% { transform: rotateY(180deg) } }
.saldo .num { color: var(--amarillo) !important; text-shadow: 0 0 18px rgba(242,187,22,.35);
              font-family: "Lilita One", Inter, sans-serif; font-weight: 400 !important; }
.progreso { background: rgba(255,255,255,.1) !important; height: 10px !important; }
.progreso span { background: linear-gradient(90deg, var(--verde), var(--amarillo)) !important;
                 box-shadow: 0 0 12px rgba(242,187,22,.6); }

/* ------------------------------------------------------------- premios */
.premio { border: 1px solid rgba(255,255,255,.1) !important; transition: transform .18s, box-shadow .18s, border-color .18s; }
.premio::before { height: 5px !important; background: linear-gradient(90deg, var(--verde), var(--naranja), var(--amarillo)) !important; opacity: 1 !important; }
.premio:hover { transform: translateY(-4px); border-color: rgba(242,187,22,.5) !important; box-shadow: 0 14px 34px rgba(0,0,0,.45), 0 0 0 1px rgba(242,187,22,.25); }
.premio h3 { color: #fff; font-size: 1.12rem !important; }
.premio .costo { color: var(--amarillo) !important; }
.premio .costo::before { content: "●"; color: var(--amarillo); margin-right: 6px; text-shadow: 0 0 8px rgba(242,187,22,.7); }

.canje, .vacio { background: var(--tarjeta) !important; }
.etq.pendiente { background: rgba(242,187,22,.18); color: var(--amarillo); }

/* ------------------------------------------------------ video personaje */
.personaje { display: grid; grid-template-columns: 1fr; gap: 14px; align-items: center; margin: 28px 0 8px;
             background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--radio); overflow: hidden; }
.personaje video { width: 100%; display: block; aspect-ratio: 16/10; object-fit: cover; background: #000; }
.personaje .txt { padding: 4px 18px 18px; }
.personaje .txt h3 { margin: 0 0 4px; font-family: "Lilita One", Inter, sans-serif; font-weight: 400; font-size: 1.5rem; color: var(--amarillo); }
@media (min-width: 720px) { .personaje { grid-template-columns: 1.2fr 1fr; } .personaje .txt { padding: 18px 22px 18px 0; } }

/* ---------------------------------------------------------------- pie */
.pie-marca { text-align: center; padding: 26px 16px calc(30px + env(safe-area-inset-bottom)); color: var(--suave); font-size: .8rem;
             border-top: 1px solid var(--linea); }
.pie-marca img { height: 34px; opacity: .8; filter: brightness(0) invert(1); display: block; margin: 0 auto 8px; }

@media (prefers-reduced-motion: reduce) { .portada video { display: none; } }

/* ================================================== MEJORAS v2 */
/* La portada trae a la derecha la franja de patrocinadores: la recortamos. */
/* La franja de patrocinadores ya se recorto en el archivo portada-*.webp */
@media (max-width: 700px) { .portada .fondo { background-image: url(img/portada-820.webp); } }
.portada { min-height: clamp(330px, 60vw, 540px); }
.chispas { position: absolute; inset: 0; z-index: 1; pointer-events: none; overflow: hidden; }
.chispas i { position: absolute; bottom: -10px; border-radius: 50%;
             background: var(--amarillo); box-shadow: 0 0 10px 2px rgba(242,187,22,.8); opacity: 0;
             animation: flotar linear infinite; }
@keyframes flotar { 0% { transform: translateY(0) scale(.6); opacity: 0 } 15% { opacity: 1 } 100% { transform: translateY(-420px) scale(1.1); opacity: 0 } }
.portada h1 span { background: linear-gradient(90deg, #F2BB16, #fff3b0, #F2BB16); background-size: 200% auto;
                   -webkit-background-clip: text; background-clip: text; color: transparent; animation: brillo 3s linear infinite;
                   text-shadow: none; filter: drop-shadow(0 3px 0 #0b1622) drop-shadow(0 4px 14px rgba(0,0,0,.5)); }
@keyframes brillo { to { background-position: 200% center } }
.cta-portada { margin-top: 16px; display: flex; gap: 10px; flex-wrap: wrap; }
.boton-grande { display: inline-flex; align-items: center; gap: 8px; min-height: 52px; padding: 12px 22px; border-radius: 14px; text-decoration: none;
                font-weight: 900; font-size: 1.02rem; color: #fff; background: var(--naranja); box-shadow: 0 5px 0 #9e3a07, 0 10px 30px rgba(230,90,20,.45); }
.boton-grande.sec2 { background: rgba(11,22,34,.55); box-shadow: inset 0 0 0 2px rgba(255,255,255,.35); backdrop-filter: blur(6px); }

/* Pasos */
.pasos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 22px 0 10px; }
.paso { text-align: center; background: var(--tarjeta); border: 1px solid var(--linea); border-radius: 16px; padding: 16px 8px 12px; position: relative; }
.paso .ico { font-size: 1.9rem; line-height: 1; display: block; margin-bottom: 6px; filter: drop-shadow(0 4px 8px rgba(0,0,0,.4)); }
.paso b { display: block; font-family: "Lilita One", Inter, sans-serif; font-weight: 400; font-size: 1.1rem; color: #fff; }
.paso small { color: var(--suave); font-size: .78rem; line-height: 1.3; display: block; }
.paso .n { position: absolute; top: -10px; left: 50%; transform: translateX(-50%); background: var(--amarillo); color: #3a2a00;
           font-weight: 900; font-size: .72rem; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; }
@media (max-width: 380px) { .paso small { display: none; } }

/* Rareza de premios */
.premio .icono-premio { font-size: 2.3rem; line-height: 1; margin-top: 6px; filter: drop-shadow(0 6px 12px rgba(0,0,0,.45)); }
.rareza { position: absolute; top: 14px; right: 14px; font-size: .64rem; font-weight: 900; letter-spacing: 1px;
          text-transform: uppercase; padding: 3px 9px; border-radius: 99px; }
.r-comun .rareza { background: rgba(19,173,170,.2); color: #6fe3df; }
.r-raro .rareza { background: rgba(80,140,255,.2); color: #9cc0ff; }
.r-epico .rareza { background: rgba(190,90,255,.22); color: #dcaaff; }
.r-legendario .rareza { background: rgba(242,187,22,.22); color: var(--amarillo); }
.r-raro { box-shadow: 0 0 0 1px rgba(80,140,255,.25), var(--sombra) !important; }
.r-epico { box-shadow: 0 0 0 1px rgba(190,90,255,.3), 0 0 28px rgba(190,90,255,.15) !important; }
.r-legendario { box-shadow: 0 0 0 1px rgba(242,187,22,.45), 0 0 34px rgba(242,187,22,.2) !important; }
.r-legendario::after { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(115deg, transparent 40%, rgba(255,255,255,.12) 50%, transparent 60%); background-size: 250% 100%;
  animation: reflejo 3.5s ease-in-out infinite; }
@keyframes reflejo { from { background-position: 150% 0 } to { background-position: -100% 0 } }
.faltan { height: 6px; border-radius: 99px; background: rgba(255,255,255,.1); overflow: hidden; margin-top: 4px; }
.faltan span { display: block; height: 100%; background: linear-gradient(90deg, var(--verde), var(--amarillo)); }

/* Personajes */
.galeria { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(170px, 46%); gap: 12px;
           overflow-x: auto; scroll-snap-type: x mandatory; padding: 6px 2px 14px; scrollbar-width: none; }
.galeria::-webkit-scrollbar { display: none; }
@media (min-width: 720px) { .galeria { grid-auto-flow: row; grid-template-columns: repeat(4, 1fr); overflow: visible; } }
.carta { scroll-snap-align: start; position: relative; border-radius: 18px; overflow: hidden; aspect-ratio: 5/6;
         border: 2px solid rgba(255,255,255,.12); background: #000; transition: transform .25s, border-color .25s, box-shadow .25s; }
.carta img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; transition: transform .4s; }
.carta:hover { transform: translateY(-6px) rotate(-1deg); border-color: var(--amarillo); box-shadow: 0 16px 40px rgba(0,0,0,.5), 0 0 30px rgba(242,187,22,.25); }
.carta:hover img { transform: scale(1.05); }
.carta .rol { position: absolute; left: 0; right: 0; bottom: 0; padding: 26px 12px 10px; font-size: .72rem; font-weight: 800;
              letter-spacing: .6px; text-transform: uppercase; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.85)); }

/* Confeti y ventana del premio */
#confeti { position: fixed; inset: 0; pointer-events: none; z-index: 60; }
.ventana { animation: premioSale .45s cubic-bezier(.2,1.4,.4,1); }
@keyframes premioSale { from { transform: scale(.7); opacity: 0 } to { transform: none; opacity: 1 } }

@media (prefers-reduced-motion: reduce) { .chispas, #confeti { display: none; } }

/* Espacio para la barra del logo en celular */
.portada { padding-top: calc(78px + env(safe-area-inset-top)); }

/* ================================================== Encabezado gamer (tienda y equipo) */
.marca {
  position: relative; overflow: hidden;
  background: linear-gradient(90deg, rgba(11,22,34,.96) 0%, rgba(11,22,34,.82) 55%, rgba(11,22,34,.55) 100%),
              url(img/portada-820.webp) center 35% / cover;
  border-bottom: 3px solid transparent;
  border-image: linear-gradient(90deg, #13ADAA, #E65A14, #F2BB16) 1;
  padding-bottom: 20px;
}
.marca h1 { font-family: "Lilita One", Inter, sans-serif; font-weight: 400; letter-spacing: .5px; font-size: 1.55rem; }
.marca p { color: var(--amarillo); font-weight: 700; }
.logo-juego { width: 52px; height: 52px; flex: none; filter: drop-shadow(0 4px 10px rgba(0,0,0,.5)); }
@media (max-width: 360px) { .logo-juego { width: 40px; height: 40px; } }

/* Tablas y pestañas en modo oscuro */
.tabla th { color: var(--amarillo); }
.pestanas button { background: var(--tarjeta); color: #cfe0ea; box-shadow: none; }
.pestanas button.activa { background: var(--naranja); border-color: var(--naranja); color: #fff; box-shadow: 0 3px 0 #9e3a07; }
select, textarea { background: rgba(255,255,255,.06); color: #fff; border-color: rgba(255,255,255,.18); }
select option { color: #111; }
.etq.canjeado, .etq.si { background: rgba(19,173,170,.2); color: #6fe3df; }
button.peligro { color: #ff9a80; }
button.exito { background: #13ADAA; color: #04201f; box-shadow: 0 4px 0 #0b7472; }
.velo .ventana { color: #1c2330; }

/* Tienda: botón de escanear tipo "start" */
.escanear { font-family: "Lilita One", Inter, sans-serif; font-weight: 400 !important; font-size: 1.35rem !important; letter-spacing: .5px;
            min-height: 76px !important; animation: latido 2.4s ease-in-out infinite; }
@keyframes latido { 0%,100% { box-shadow: 0 5px 0 #9e3a07, 0 0 0 0 rgba(230,90,20,.5) } 50% { box-shadow: 0 5px 0 #9e3a07, 0 0 0 12px rgba(230,90,20,0) } }
.resultado { border: 1px solid var(--linea); }
.resultado h2 { font-family: "Lilita One", Inter, sans-serif; font-weight: 400; font-size: 1.6rem !important; }
.resultado h2::before { display: none; }
.resultado.ok { box-shadow: 0 0 30px rgba(19,173,170,.35); }
.resultado.error { box-shadow: 0 0 30px rgba(230,90,20,.3); }
.premioGrande { color: #fff !important; font-family: "Lilita One", Inter, sans-serif; font-weight: 400 !important; }
#codigoManual { color: var(--amarillo); }
.sep { color: var(--suave); }
@media (prefers-reduced-motion: reduce) { .escanear { animation: none; } }

/* Foto del premio en la tarjeta del jugador */
.foto-premio { margin: -16px -16px 6px; aspect-ratio: 4 / 3; overflow: hidden; background: rgba(255,255,255,.04); position: relative; }
.foto-premio img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .35s; }
.foto-premio::after { content: ""; position: absolute; inset: auto 0 0 0; height: 40%; background: linear-gradient(transparent, rgba(22,37,55,.85)); }
.premio:hover .foto-premio img { transform: scale(1.06); }
.premio .rareza { z-index: 2; }
.premio::before { z-index: 2; }
.premio:has(.foto-premio) .rareza { background: rgba(11,22,34,.82); backdrop-filter: blur(6px); }

/* Pie con enlaces y enlace de "olvidé mi contraseña" */
.enlaces-pie { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; margin-top: 10px; }
.enlaces-pie a, .enlace-juego { color: #6fe3df; font-size: .86rem; }
.barra-top a { display: block; line-height: 0; }

/* Tráiler vertical: se muestra completo, sin recortar cabezas */
.personaje video { aspect-ratio: auto; max-height: 72vh; object-fit: contain; background: #05090e; }
