/* SUPER SORTEO — dirección «Casino» con máquina de lotería.
   El impacto vive arriba: una cabecera negra y bordó con reflector sobre el
   premio, lamparitas y letras de cartel. Todo lo demás es blanco y limpio.
   Números: bolillas de lotería. Verde = libre, dorado = elegido, gris claro = ocupado.
   Letra: San Francisco Pro en Apple; en el resto, Inter (la más parecida). */
:root {
  --noche: #12040a;
  --bordo: #4a0a1f;
  --bordo-claro: #6d0f2c;
  --oro: #ffc933;
  --oro-hondo: #e0a000;
  --oro-sombra: #8a5a00;
  --rojo: #d90f33;
  --rojo-hondo: #a8001c;
  --verde: #1fcf74;
  --verde-borde: #12a95b;
  --verde-tinta: #053d20;
  --verde-texto: #0f7a43;
  --bloqueado: #1d1720;
  --ocupado: #ebe8ec;
  --ocupado-borde: #dcd7de;
  --ocupado-texto: #a59dab;
  --fondo: #ffffff;
  --papel: #f7f5f6;
  --texto: #16121a;
  --suave: #6b6272;
  --borde: rgba(22,18,26,.12);
  --radio: 18px;
  --cartel: "SF Pro Display", -apple-system, BlinkMacSystemFont, "Inter", system-ui, sans-serif;
  --sans: "SF Pro Text", -apple-system, BlinkMacSystemFont, "Inter", system-ui, sans-serif;
  /* Vidrio: luz en la mitad de arriba. */
  --reflejo: linear-gradient(180deg, rgba(255,255,255,.5) 0%, rgba(255,255,255,.12) 48%, rgba(255,255,255,0) 52%);
  --lamina: linear-gradient(180deg, #fff1b8 0%, #ffc933 45%, #e0a000 100%);
  --sombra: 0 1px 2px rgba(22,18,26,.06), 0 10px 28px rgba(22,18,26,.08);
  /* Guilloché: las líneas finas de los billetes de lotería, en dorado muy suave. */
  --guilloche:
    repeating-radial-gradient(circle at 0 100%, rgba(224,160,0,0) 0 9px, rgba(224,160,0,.16) 9px 10px),
    repeating-radial-gradient(circle at 100% 100%, rgba(155,12,53,0) 0 9px, rgba(155,12,53,.08) 9px 10px);
  /* Curvas de la skill animate. */
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
  --tilde: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.5 16.2 5.3 12l-1.8 1.8 6 6L21 8.3l-1.8-1.8z'/%3E%3C/svg%3E");
  /* Cuántas cifras tiene el número: la letra de las bolillas se achica para
     seguir entrando en el disco blanco. */
  --ajuste-cifras: 1;
  color-scheme: light;
}
/* Lo fija quien lleve `data-cifras`: el <body> con el número más alto del
   sorteo de ahora (lo pone grilla.js), y cada tarjeta de la vitrina con el
   suyo, porque cada sorteo anterior tuvo su cantidad de números. */
[data-cifras] { --ajuste-cifras: 1; }
[data-cifras="4"] { --ajuste-cifras: .84; }
[data-cifras="5"] { --ajuste-cifras: .70; }

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; color: var(--texto); font: 16px/1.55 var(--sans); background: var(--fondo); min-height: 100vh; -webkit-font-smoothing: antialiased; }
.num, .grilla button, .reloj, .contador b, .chips span, .cuenta b { font-variant-numeric: tabular-nums; }
a { color: #9b0c35; text-underline-offset: 3px; }
button { font: inherit; cursor: pointer; }
button:disabled { cursor: not-allowed; }
:focus-visible { outline: 3px solid var(--rojo); outline-offset: 3px; }
.envoltura { max-width: 780px; margin: 0 auto; padding: 0 16px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
[hidden] { display: none !important; }

/* ── Cabecera de casino ─────────────────────────────── */
.hero {
  color: #fff; text-align: center; padding: 20px 16px 44px;
  background: radial-gradient(ellipse 90% 60% at 50% 0%, var(--bordo-claro) 0%, var(--bordo) 38%, var(--noche) 82%);
}
.hero > * { max-width: 760px; margin-left: auto; margin-right: auto; }
/* Lamparitas: puntos de luz. Titilan despacio; con movimiento reducido quedan fijas. */
.luces {
  height: 8px; margin-bottom: 14px;
  background: radial-gradient(circle, #fff3b8 2.2px, rgba(255,201,51,.35) 3.2px, transparent 4px) 0 50% / 14px 8px repeat-x;
  filter: drop-shadow(0 0 4px var(--oro));
  animation: lamparitas 2.4s steps(2) infinite;
}
.luces.abajo { margin-top: 16px; margin-bottom: 0; animation-delay: -1.2s; }
@keyframes lamparitas { 50% { opacity: .55; } }
.marca {
  margin: 0 auto; font: 900 clamp(34px, 9vw, 54px)/.95 var(--cartel); letter-spacing: -0.02em; text-transform: uppercase;
  color: var(--oro); text-shadow: 0 3px 0 var(--oro-sombra), 0 0 28px rgba(255,201,51,.45);
}
/* Bolillas de lotería flotando alrededor del premio. Suben y bajan despacio. */
.hero { position: relative; overflow: hidden; }
.hero > .bolillas-aire { position: absolute; inset: 0; max-width: none; margin: 0; pointer-events: none; }
.bolillas-aire span {
  --bola-claro: #fff6cf; --bola: var(--oro); --bola-hondo: #b87c00;
  position: absolute; display: grid; place-items: center; width: var(--t, 52px); aspect-ratio: 1; border-radius: 50%;
  font: 800 calc(var(--t, 52px) * .3)/1 var(--sans); color: var(--texto);
  background:
    radial-gradient(circle closest-side at 34% 26%, rgba(255,255,255,.9), rgba(255,255,255,0) 60%) 0 0 / 60% 60% no-repeat,
    radial-gradient(circle closest-side, #fff 0 56%, rgba(255,255,255,0) 59%),
    radial-gradient(circle at 36% 30%, var(--bola-claro), var(--bola) 45%, var(--bola-hondo) 100%);
  box-shadow: inset -3px -5px 9px rgba(0,0,0,.28), 0 12px 24px rgba(0,0,0,.45);
  animation: flotar var(--d, 5s) ease-in-out infinite alternate;
}
.bolillas-aire .b-oro { --t: 64px; left: calc(50% - 330px); top: 150px; --d: 5.2s; }
.bolillas-aire .b-rojo { --t: 46px; --bola-claro: #ff9aa9; --bola: var(--rojo); --bola-hondo: #7a0014; left: calc(50% - 250px); top: 245px; --d: 4.4s; animation-delay: -2s; }
.bolillas-aire .b-verde { --t: 56px; --bola-claro: #c6f7dc; --bola: var(--verde); --bola-hondo: #08803f; left: calc(50% + 250px); top: 130px; --d: 4.8s; animation-delay: -1s; }
.bolillas-aire .b-blanca { --t: 42px; --bola-claro: #fff; --bola: #eee7ea; --bola-hondo: #a99ca3; left: calc(50% + 300px); top: 240px; --d: 5.6s; animation-delay: -3s; }
@keyframes flotar { from { transform: translateY(-8px) rotate(-6deg); } to { transform: translateY(8px) rotate(6deg); } }

/* Reflector sobre el premio */
.spot {
  height: clamp(150px, 26vw, 200px); margin-top: 4px; display: grid; place-items: end center; padding: 0 clamp(50px, 18vw, 180px) 8px;
  background: conic-gradient(from 180deg at 50% -20%, transparent 160deg, rgba(255,240,200,.16) 172deg, rgba(255,240,200,.26) 180deg, rgba(255,240,200,.16) 188deg, transparent 200deg);
}
.spot img { max-width: 100%; max-height: 100%; object-fit: contain; filter: drop-shadow(0 16px 24px rgba(0,0,0,.6)); }
.moto { width: 100%; max-width: 300px; }
.piso { width: min(260px, 60%); height: 18px; margin-top: -10px; margin-bottom: 10px; border-radius: 50%; background: radial-gradient(rgba(255,201,51,.45), transparent 70%); }
.premio { text-shadow: 0 4px 0 rgba(0,0,0,.45), 0 0 30px rgba(255,240,200,.18);
   margin: 0 auto; font: 800 clamp(34px, 9.5vw, 66px)/1 var(--cartel); letter-spacing: -0.02em; text-wrap: balance; }
.datos-rapidos { display: flex; justify-content: center; flex-wrap: wrap; gap: 4px 18px; margin: 10px auto 0; padding: 0; list-style: none; color: #e9d9df; font-size: 15px; }
.datos-rapidos b { color: var(--oro); font-weight: 700; }

/* Participantes: la rayita dorada que se llena, con rayas que corren como un tubo de luz. */
.vendidos { max-width: 420px; margin-top: 18px; padding: 12px 14px 10px; border-radius: 16px; background: rgba(0,0,0,.35); box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 0 0 1px rgba(255,201,51,.25); }
.vendidos p { margin: 0; font-size: 15px; font-weight: 600; color: #f3e6eb; }
.vendidos p b { color: var(--oro); font-weight: 800; font-size: 18px; }
.vendidos-barra { position: relative; height: 12px; margin: 9px 0 7px; border-radius: 99px; overflow: hidden; background: rgba(255,255,255,.1); box-shadow: inset 0 1px 3px rgba(0,0,0,.6); }
.vendidos-barra i {
  display: block; height: 100%; border-radius: inherit;
  background: repeating-linear-gradient(115deg, rgba(255,255,255,.35) 0 8px, rgba(255,255,255,0) 8px 16px), var(--lamina);
  background-size: 34px 100%, auto;
  box-shadow: 0 0 14px rgba(255,201,51,.6);
  transform: scaleX(0); transform-origin: left; transition: transform 1100ms var(--ease-out);
  animation: tubo 1.2s linear infinite;
}
@keyframes tubo { to { background-position: 34px 0, 0 0; } }
.vendidos p.vendidos-numeros { display: flex; justify-content: space-between; gap: 8px; font-size: 13px; font-weight: 500; color: #cdbfc5; }
.vendidos p.vendidos-numeros b { font-size: 13px; color: #fff; }
#vendidos-porcentaje { color: var(--oro); font-weight: 800; }

/* ── Cuenta regresiva: contador de máquina de casino ──
   Tablero negro con marco dorado y lamparitas; cada dígito en su ventanita,
   rojo encendido, con la línea del medio de los contadores de rodillo. */
.cuenta {
  position: relative; margin: -26px 0 22px; text-align: center; color: #fff; border-radius: 22px; padding: 12px 14px 14px;
  background: radial-gradient(ellipse 80% 100% at 50% 0%, #2a0612, var(--noche) 70%);
  border: 3px solid transparent; background-clip: padding-box;
  box-shadow: 0 0 0 3px var(--oro-hondo), 0 0 0 5px var(--oro-sombra), 0 18px 36px rgba(18,4,10,.35);
}
.cuenta .luces { margin: 0 4px 8px; background-position: 50% 50%; }
.cuenta-titulo { margin: 0 0 10px; font-weight: 800; font-size: 13px; text-transform: uppercase; letter-spacing: .14em; color: var(--oro); }
.cuenta-cajas { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; max-width: 520px; margin: 0 auto; }
.cuenta-cajas div { min-width: 0; }
.cuenta-cajas b { display: flex; justify-content: center; gap: 3px; font: 800 clamp(28px, 8vw, 42px)/1 var(--cartel); }
.cuenta-cajas i {
  position: relative; display: block; width: 1.02em; padding: .16em 0 .14em; font-style: normal; overflow: hidden; border-radius: 8px;
  color: #ff3b52; text-shadow: 0 0 10px rgba(255,40,70,.85), 0 0 22px rgba(255,40,70,.45);
  background: linear-gradient(180deg, #050103 0%, #1d0710 48%, #050103 50%, #1a060e 100%);
  box-shadow: inset 0 0 0 1px rgba(255,201,51,.35), inset 0 6px 10px rgba(0,0,0,.8);
}
/* Línea del medio y brillo del vidrio */
.cuenta-cajas i::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: rgba(0,0,0,.9); box-shadow: 0 1px 0 rgba(255,255,255,.06); }
.cuenta-cajas i::before { content: ""; position: absolute; inset: 0 0 55%; background: linear-gradient(180deg, rgba(255,255,255,.1), rgba(255,255,255,0)); }
.cuenta-cajas span { display: block; margin-top: 6px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: #e9d9df; }
.cuenta-fecha { margin: 12px 0 0; font-size: 14px; font-weight: 600; color: #e9d9df; }
.cuenta-fecha::first-letter { text-transform: uppercase; }

/* ── Grilla ─────────────────────────────────────────── */
.titulo-grilla { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin: 6px 0 8px; }
.titulo-grilla h2 { margin: 0; font: 800 clamp(24px, 6vw, 30px)/1.05 var(--cartel); }
.titulo-grilla span { font-size: 14px; color: var(--suave); white-space: nowrap; }
.titulo-grilla b { color: var(--texto); }
/* Queda pegado arriba mientras se recorre la grilla: buscar o elegir al azar sin volver a subir. */
.buscador {
  position: sticky; top: 0; z-index: 5; display: flex; gap: 8px; margin: 0 -16px 10px; padding: 10px 16px 12px;
  background: linear-gradient(180deg, #fff 82%, rgba(255,255,255,0));
}
.buscador input { flex: 1; min-width: 0; min-height: 48px; font: 700 18px var(--sans); font-variant-numeric: tabular-nums; }
.buscador input::placeholder { font: 500 16px var(--sans); }
.buscador .boton { min-height: 48px; padding: 0 20px; }
/* Elegí por mí: botón verde de la suerte con un trébol de cuatro hojas que gira mientras busca. */
.boton.azar {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px; white-space: nowrap;
  color: #fff; text-shadow: 0 1px 0 rgba(0,0,0,.25);
  background: linear-gradient(180deg, rgba(255,255,255,.3), rgba(255,255,255,0) 50%), linear-gradient(180deg, #22d47a, #0a9a50);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 4px 0 #07703a, 0 8px 18px rgba(10,154,80,.35);
}
.trebol-boton { width: 26px; height: 26px; flex: none; fill: #fff; filter: drop-shadow(0 1px 1px rgba(0,0,0,.25)); }
.trebol-boton g { transform-origin: 100px 100px; }
.boton.azar.buscando .trebol-boton { animation: trebol-gira 700ms linear infinite; }
@keyframes trebol-gira { to { transform: rotate(360deg); } }
.boton.azar:active:not(:disabled) { transform: translateY(3px); box-shadow: inset 0 1px 0 rgba(255,255,255,.5), 0 1px 0 #07703a, 0 4px 10px rgba(10,154,80,.3); }
.boton.azar:disabled { opacity: 1; }
@media (hover: hover) and (pointer: fine) { .boton.azar:hover:not(:disabled) { filter: brightness(1.06); } }
.buscar svg { display: none; width: 22px; height: 22px; }
/* Celular: todo en una fila; «Buscar» pasa a ser una lupa (el teclado también busca con «Ir»). */
@media (max-width: 600px) {
  .buscador input { flex-basis: 0; padding-inline: 12px; }
  .buscador .boton.buscar { width: 48px; padding: 0; display: grid; place-items: center; }
  .buscar svg { display: block; }
  .buscar span { display: none; }
  .buscador .azar { padding: 0 14px; font-size: 15px; gap: 6px; }
  .buscador .azar .trebol-boton { width: 22px; height: 22px; }
}

.grilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(56px, 1fr)); gap: 8px 7px; padding-bottom: 150px; /* lugar para la barra de abajo */ }
/* Con vitrina, el lugar de la barra lo guarda ella, al final de todo. */
body.con-vitrina .grilla { padding-bottom: 26px; }
/* Bolilla: esfera de color con el disco blanco del número y un brillo arriba a la izquierda. */
.grilla button {
  --bola-claro: #c6f7dc; --bola: var(--verde); --bola-hondo: #08803f;
  position: relative; aspect-ratio: 1; width: 100%; max-width: 64px; justify-self: center; padding: 0; border: 0; border-radius: 50%;
  font: 800 calc(15px * var(--ajuste-cifras))/1 var(--sans); letter-spacing: -0.01em; color: var(--texto);
  background:
    radial-gradient(circle closest-side at 34% 26%, rgba(255,255,255,.9), rgba(255,255,255,0) 60%) 0 0 / 60% 60% no-repeat,
    radial-gradient(circle closest-side, #fff 0 60%, rgba(0,0,0,.08) 61%, rgba(255,255,255,0) 64%),
    radial-gradient(circle at 36% 30%, var(--bola-claro), var(--bola) 45%, var(--bola-hondo) 100%);
  box-shadow: inset -3px -5px 8px rgba(0,0,0,.22), 0 3px 6px rgba(22,18,26,.18);
  /* Se toca decenas de veces: respuesta rápida y sutil. */
  transition: transform 140ms var(--ease-out), box-shadow 160ms ease;
}
.grilla button:active:not(:disabled) { transform: scale(.9); }
@media (hover: hover) and (pointer: fine) {
  .grilla button:hover:not(:disabled) { transform: translateY(-2px) scale(1.05); box-shadow: inset -3px -5px 8px rgba(0,0,0,.22), 0 7px 12px rgba(22,18,26,.22); }
}
.grilla button.elegido {
  --bola-claro: #fff6cf; --bola: var(--oro); --bola-hondo: #c98a00;
  box-shadow: inset -3px -5px 8px rgba(0,0,0,.18), 0 0 0 3px rgba(255,201,51,.45), 0 6px 14px rgba(224,168,0,.45);
}
/* Tilde en un círculo oscuro, arriba a la derecha de la bolilla elegida */
.grilla button.elegido::before, .grilla button.elegido::after { content: ""; position: absolute; top: -2px; right: -2px; width: 19px; height: 19px; border-radius: 50%; }
.grilla button.elegido::before { background: var(--noche); box-shadow: 0 0 0 2px #fff; }
.grilla button.elegido::after { background: var(--oro); -webkit-mask: var(--tilde) center / 13px no-repeat; mask: var(--tilde) center / 13px no-repeat; }
/* Ocupada: bolilla gris clara y chata, sin brillo. Bloqueada nomás. */
.grilla button.ocupado {
  color: var(--ocupado-texto); background: radial-gradient(circle closest-side, #f6f4f7 0 60%, rgba(255,255,255,0) 61%), var(--ocupado);
  box-shadow: inset 0 0 0 1px var(--ocupado-borde);
}
/* Cuando alguien la toma en vivo, se apaga de verde a gris: muestra que cambió. */
.grilla button.recien { animation: apagarse 600ms ease-out; }
@keyframes apagarse { from { opacity: .4; transform: scale(.9); } }
/* Bolilla encontrada con el buscador: un pulso para ubicarla. */
.grilla button.encontrado { animation: encontrado 900ms var(--ease-out); }
@keyframes encontrado { from { box-shadow: 0 0 0 0 rgba(217,15,51,.6); } to { box-shadow: 0 0 0 14px rgba(217,15,51,0); } }

/* Ruleta de «Elegí por mí»: los libres titilan en dorado y el elegido cae con un pulso dorado. */
.grilla button.girando { --bola-claro: #fff6cf; --bola: var(--oro); --bola-hondo: #c98a00; transition: none; }
.grilla button.suerte { animation: suerte 1000ms var(--ease-out); }
@keyframes suerte {
  0% { transform: scale(1.18); box-shadow: 0 0 0 0 rgba(255,201,51,.9); }
  100% { transform: none; box-shadow: 0 0 0 18px rgba(255,201,51,0); }
}

/* ── Barra de abajo: sube con el primer número ──────── */
.barra {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10; color: #fff;
  background: var(--noche); border-radius: 22px 22px 0 0;
  box-shadow: 0 -10px 30px rgba(18,4,10,.3);
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  transform: translateY(100%); opacity: 0; pointer-events: none;
  transition: transform 280ms var(--ease-drawer), opacity 200ms ease-out;
}
.barra.visible { transform: none; opacity: 1; pointer-events: auto; }
.barra .envoltura { display: flex; align-items: center; gap: 14px; padding: 0; }
.barra .resumen { flex: 1; min-width: 0; }
.barra .resumen b { display: block; font: 800 20px/1.2 var(--cartel); letter-spacing: -0.01em; }
.barra .resumen small { color: #cdbfc5; font-size: 13px; display: flex; align-items: center; gap: 5px; margin-top: 5px; overflow: hidden; white-space: nowrap; }
/* Bolilla chica: el disco blanco tiene que dar para las cifras del número más
   alto, así que el aro dorado es más fino que el de la grilla. */
.bolita { flex: none; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; font: 800 calc(11px * var(--ajuste-cifras))/1 var(--sans); letter-spacing: -0.02em; color: var(--texto); background: radial-gradient(circle closest-side, #fff 0 77%, rgba(0,0,0,.07) 78%, rgba(255,255,255,0) 81%), radial-gradient(circle at 36% 30%, #fff6cf, var(--oro) 45%, #c98a00); box-shadow: inset -1px -2px 4px rgba(0,0,0,.18); }

/* ── Vitrina de ganadores ────────────────────────────
   Cierra la página con la misma banda oscura de la cabecera, pero la luz viene
   de abajo. Las tarjetas van en una pista que se arrastra con el dedo: el
   scroll-snap lo hace el navegador, el JS sólo pone flechas, puntos y el pase
   solo. Sin foto, la tarjeta muestra la bolilla grande sobre el guilloché. */
.vitrina {
  margin-top: 30px; padding: 22px 0 calc(150px + env(safe-area-inset-bottom));
  color: #fff; text-align: center;
  background: radial-gradient(ellipse 95% 75% at 50% 100%, var(--bordo-claro) 0%, var(--bordo) 42%, var(--noche) 88%);
}
.vitrina .luces { margin-bottom: 16px; }
.vitrina .luces.abajo { margin-top: 26px; }
.vitrina h2 {
  margin: 0 16px; font: 900 clamp(23px, 6.2vw, 34px)/1.05 var(--cartel);
  letter-spacing: -0.01em; text-transform: uppercase; color: var(--oro);
  text-shadow: 0 2px 0 var(--oro-sombra), 0 0 24px rgba(255,201,51,.35);
}
.vitrina-bajada { margin: 7px 16px 16px; font-size: 14px; font-weight: 600; color: #e9d9df; }

/* La pista: una fila que se corre. La barra de scroll no se muestra, se arrastra. */
.vitrina-caja { position: relative; max-width: 1120px; margin: 0 auto; padding: 0 16px; }
.vitrina-pista {
  display: flex; gap: 14px; padding: 6px 0 8px;
  overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; scrollbar-width: none;
}
.vitrina-pista::-webkit-scrollbar { display: none; }

.ganador {
  scroll-snap-align: start; flex: 0 0 min(78%, 280px); text-align: left;
  border-radius: var(--radio); overflow: hidden; background: rgba(255,255,255,.07);
  box-shadow: inset 0 0 0 1px rgba(255,201,51,.3), 0 14px 30px rgba(0,0,0,.4);
}
.ganador-foto { position: relative; aspect-ratio: 1; background: #2a0612; }
.ganador-foto img { display: block; width: 100%; height: 100%; object-fit: cover; }
/* La bolilla del número ganador, como un sello en la esquina de la foto. */
.ganador-foto .bolita {
  position: absolute; top: 10px; right: 10px; width: 46px; height: 46px;
  font-size: calc(16px * var(--ajuste-cifras));
  box-shadow: inset -1px -2px 4px rgba(0,0,0,.18), 0 0 0 3px rgba(18,4,10,.55), 0 4px 10px rgba(0,0,0,.45);
}
/* Sin foto: la bolilla pasa a ser el dibujo, sobre las líneas del billete. */
.ganador-foto.sin-foto { display: grid; place-items: center; background-image: var(--guilloche); }
.ganador-foto.sin-foto .bolita {
  position: static; width: 96px; height: 96px; font-size: calc(34px * var(--ajuste-cifras));
  box-shadow: inset -2px -4px 10px rgba(0,0,0,.2), 0 10px 24px rgba(0,0,0,.45);
}
.ganador-datos { display: flex; flex-direction: column; padding: 13px 14px 15px; }
.ganador-datos b { font: 800 17px/1.25 var(--cartel); letter-spacing: -0.01em; }
.ganador-premio { margin-top: 2px; font-size: 14px; font-weight: 700; color: var(--oro); }
/* Cuando el premio es el título (ganador sin nombre), toma su tamaño. */
.ganador-datos b.ganador-premio { margin-top: 0; font: 800 17px/1.25 var(--cartel); letter-spacing: -0.01em; }
.ganador-datos time { margin-top: 5px; font-size: 12.5px; color: #cdbfc5; }
.ganador-datos time::first-letter { text-transform: uppercase; }

/* Flechas: montadas sobre los bordes de la pista, para no comerle ancho. */
.vitrina-flecha {
  position: absolute; top: 50%; z-index: 2; transform: translateY(-50%);
  display: grid; place-items: center; width: 40px; height: 40px; padding: 0;
  border: 0; border-radius: 50%; color: #3a2700; background: var(--lamina);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7), 0 4px 14px rgba(0,0,0,.45);
  transition: transform 120ms var(--ease-out), filter 160ms ease;
}
.vitrina-flecha[data-hacia="-1"] { left: 6px; }
.vitrina-flecha[data-hacia="1"] { right: 6px; }
.vitrina-flecha svg { width: 22px; height: 22px; }
.vitrina-flecha:active { transform: translateY(-50%) scale(.92); }
@media (hover: hover) and (pointer: fine) { .vitrina-flecha:hover { filter: brightness(1.07); } }

/* Puntos: chicos a la vista, pero con 26px de área para el dedo. */
.vitrina-puntos { display: flex; justify-content: center; gap: 4px; margin-top: 12px; }
.vitrina-punto { display: grid; place-items: center; width: 26px; height: 26px; padding: 0; border: 0; background: none; }
.vitrina-punto::before {
  content: ""; width: 9px; height: 9px; border-radius: 99px; background: rgba(255,255,255,.34);
  transition: width 220ms var(--ease-out), background-color 220ms ease;
}
.vitrina-punto[aria-current]::before { width: 22px; background: var(--oro); box-shadow: 0 0 10px rgba(255,201,51,.6); }

@media (min-width: 1024px) {
  .ganador { flex-basis: 262px; }
  .vitrina-flecha { width: 46px; height: 46px; }
  .vitrina-flecha[data-hacia="-1"] { left: -8px; }
  .vitrina-flecha[data-hacia="1"] { right: -8px; }
}

/* ── Botones ────────────────────────────────────────── */
.boton {
  border: 0; border-radius: 12px; padding: 12px 22px; min-height: 48px;
  font: 800 17px/1 var(--sans);
  color: #3a2700; background: var(--lamina);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.7), 0 4px 14px rgba(224,160,0,.35);
  transition: transform 120ms var(--ease-out), opacity 160ms ease;
}
.boton:active:not(:disabled) { transform: scale(.97); }
.boton:disabled { opacity: .45; box-shadow: none; }
.boton.secundario { color: var(--texto); background: #fff; border: 1.5px solid var(--borde); box-shadow: none; }
.boton.ok { color: var(--verde-tinta); background: var(--reflejo), var(--verde); border: 1px solid var(--verde-borde); box-shadow: inset 0 1px 0 rgba(255,255,255,.6); }
.boton.mal { color: var(--rojo-hondo); background: #fff; border: 1.5px solid rgba(217,15,51,.45); box-shadow: none; }
.boton.ancho { width: 100%; }
.boton.chico { padding: 10px 16px; min-height: 44px; font-size: 15px; }

/* ── Hoja del formulario ────────────────────────────── */
.velo { position: fixed; inset: 0; background: rgba(18,4,10,.55); z-index: 20; opacity: 0; pointer-events: none; transition: opacity 250ms ease-out; }
.velo.abierto { opacity: 1; pointer-events: auto; }
/* Va en el medio de la pantalla, en celular y en computadora. Si no entra a lo
   alto (pantalla baja o teclado abierto), se achica y se desliza adentro: los
   botones de abajo nunca quedan fuera de vista. */
.hoja {
  position: fixed; left: 50%; top: 50%; z-index: 21; background: #fff;
  width: min(560px, calc(100% - 28px));
  max-height: 86vh; max-height: 86dvh; overflow-y: auto; overscroll-behavior: contain;
  border-radius: 24px; box-shadow: 0 24px 60px rgba(18,4,10,.35);
  padding: 22px 18px;
  transform: translate(-50%, -50%) scale(.96); opacity: 0; visibility: hidden;
  transition: transform 280ms var(--ease-drawer), opacity 200ms ease-out, visibility 0s linear 280ms;
}
.hoja.abierta { transform: translate(-50%, -50%) scale(1); opacity: 1; visibility: visible; transition-delay: 0s; }
.hoja h2 { margin: 0 0 4px; font: 800 30px/1 var(--cartel); letter-spacing: -0.02em; }
.hoja .elegidos { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin: 8px 0 4px; }
.hoja .elegidos b { margin-left: 6px; font-size: 15px; }
label { display: block; font-size: 14px; font-weight: 700; margin: 14px 0 6px; }
input[type=text], input[type=tel], input[type=email], input[type=password], input[type=number], input[type=search], input[type=datetime-local], input[type=file], textarea {
  width: 100%; font: inherit; padding: 12px 14px; border-radius: 12px;
  border: 1.5px solid var(--borde); background: var(--papel); color: var(--texto);
}
input::placeholder, textarea::placeholder { color: #7d7482; }
input:focus, textarea:focus { outline: none; border-color: var(--rojo); box-shadow: 0 0 0 3px rgba(217,15,51,.15); background: #fff; }
.ayuda { font-size: 13px; color: var(--suave); margin: 6px 0 0; }
/* Los botones quedan pegados al pie de la ventana: si el formulario no entra
   a lo alto y hay que deslizar, «Reservar» sigue estando a la vista. */
.hoja .acciones {
  display: flex; gap: 10px; position: sticky; bottom: -22px; z-index: 1;
  margin: 20px 0 -22px; padding: 12px 0 22px; background: #fff;
  box-shadow: 0 -12px 16px -12px rgba(18,4,10,.18);
}
.hoja .acciones .boton { flex: 1; }

/* ── Aviso ──────────────────────────────────────────── */
#aviso {
  position: fixed; top: 16px; left: 50%; transform: translate(-50%, calc(-100% - 24px));
  background: var(--noche); color: #fff; padding: 12px 18px; border-radius: 12px;
  font-size: 15px; font-weight: 600; z-index: 50; width: max-content; max-width: calc(100% - 32px);
  box-shadow: 0 12px 30px rgba(18,4,10,.35); transition: transform 250ms var(--ease-out);
}
#aviso.visible { transform: translate(-50%, 0); }

/* ── Cabecera chica (compra y panel) ────────────────── */
.barra-marca {
  color: #fff; padding: 12px 16px;
  background: radial-gradient(ellipse 80% 140% at 50% 0%, var(--bordo-claro), var(--bordo) 45%, var(--noche) 90%);
}
.barra-marca .envoltura { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0; }
.barra-marca { position: relative; }
.barra-marca::after { content: ""; position: absolute; left: 0; right: 0; bottom: 3px; height: 8px; background: radial-gradient(circle, #fff3b8 2px, rgba(255,201,51,.3) 3px, transparent 3.6px) 50% 50% / 14px 8px repeat-x; opacity: .8; }
/* El nombre del sorteo puede ser largo: se achica antes que partirse en dos
   renglones, y «Tu compra» nunca se corta. */
.barra-marca .marca { font-size: clamp(19px, 5.2vw, 26px); text-shadow: 0 2px 0 var(--oro-sombra); }
.barra-marca small { color: #cdbfc5; font-size: 13px; white-space: nowrap; }

/* ── Boleto: tarjeta con troquel ─────────────────────
   Dos medias lunas a los costados y una línea punteada, como el talón de un
   billete de lotería. Las medias lunas son del color del fondo de la página;
   la tarjeta recorta lo que sobresale. */
.boleto { position: relative; overflow: hidden; }

/* ── Compra ─────────────────────────────────────────── */
.tarjeta.boleto-compra { padding: 0; }
.boleto-cara { padding: 18px 18px 20px; background: var(--guilloche), #fffdf8; }
.boleto-cab { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.boleto-cab h2 { margin: 0; }
.serie { font: 700 12px/1 var(--sans); letter-spacing: .08em; color: var(--suave); font-variant-numeric: tabular-nums; }
.boleto-compra .chips { justify-content: flex-start; gap: 8px; }
.boleto-compra .chips span { width: 54px; height: 54px; font-size: calc(16px * var(--ajuste-cifras)); }
.boleto-talon { position: relative; padding: 6px 18px 10px; border-top: 2px dashed rgba(22,18,26,.16); }
.boleto-talon::before, .boleto-talon::after {
  content: ""; position: absolute; top: -13px; width: 24px; height: 24px; border-radius: 50%;
  background: var(--fondo); box-shadow: inset 0 0 0 1px var(--borde);
}
.boleto-talon::before { left: -13px; }
.boleto-talon::after { right: -13px; }

.tarjeta { background: #fff; border: 1px solid var(--borde); border-radius: var(--radio); padding: 18px; margin: 0 0 14px; box-shadow: var(--sombra); }
.tarjeta h2 { font: 800 24px/1.1 var(--cartel); letter-spacing: -0.02em; margin: 0 0 10px; }
.fila { display: flex; justify-content: space-between; gap: 12px; align-items: center; padding: 10px 0; border-top: 1px solid var(--borde); }
.fila:first-of-type { border-top: 0; }
.fila span { color: var(--suave); font-size: 14px; }
/* El CBU es largo: se parte en dos renglones si hace falta, pero el botón
   «Copiar» se queda al lado y no se cae abajo. */
.fila b { display: flex; align-items: center; justify-content: flex-end; gap: 8px;
  flex: 1 1 auto; min-width: 0; text-align: right; font-weight: 700; }
.fila b > span { word-break: break-all; }
.fila b .copiar { margin-left: 0; flex: none; }
#cbu { font-size: 13px; letter-spacing: -.01em; }   /* 22 cifras: así entran en un renglón */
.copiar { border: 1.5px solid var(--borde); background: #fff; color: var(--texto); border-radius: 10px; padding: 0 12px; min-height: 40px; font-size: 13px; font-weight: 700; margin-left: 8px; transition: transform 120ms var(--ease-out), border-color 160ms ease; }
.copiar:active { transform: scale(.95); }
@media (hover: hover) and (pointer: fine) { .copiar:hover { border-color: var(--rojo); } }

.estado { border-radius: var(--radio); padding: 22px 18px; margin: 18px 0 14px; text-align: center; border: 1px solid var(--borde); background: #fff; box-shadow: var(--sombra); }
.estado h1 { margin: 0 0 6px; font: 800 32px/1 var(--cartel); letter-spacing: -0.02em; }
.estado p { margin: 0; color: var(--suave); }
.estado .estado-titulo { font: 600 15px/1.3 var(--sans); text-transform: none; letter-spacing: 0; color: var(--suave); margin: 0; }
.estado.reservada { color: #fff; background: radial-gradient(ellipse 80% 100% at 50% 0%, #2a0612, var(--noche) 70%); border: 3px solid transparent; background-clip: padding-box; box-shadow: 0 0 0 3px var(--oro-hondo), 0 0 0 5px var(--oro-sombra), 0 18px 36px rgba(18,4,10,.3); }
.estado.reservada p, .estado.reservada .estado-titulo { color: #cdbfc5; }
.estado.revision { border-color: var(--oro); background: #fffaf0; }
.estado.revision h1 { color: var(--oro-sombra); }
.estado.pagada { border-color: #86efac; background: #f0fdf5; }
.estado.pagada h1 { color: var(--verde-texto); }
.estado.rechazada, .estado.vencida { border-color: rgba(217,15,51,.4); background: #fff5f6; }
.estado.rechazada h1, .estado.vencida h1 { color: var(--rojo-hondo); }
.reloj { font: 900 84px/1 var(--cartel); margin: 8px 0 8px; color: var(--oro); text-shadow: 0 3px 0 var(--oro-sombra), 0 0 24px rgba(255,201,51,.35); }
.reloj.apurado { color: #ff6b80; text-shadow: 0 0 20px rgba(217,15,51,.6); }
.chips { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
.chips span {
  width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
  font: 800 calc(14px * var(--ajuste-cifras))/1 var(--sans); color: var(--texto);
  background: radial-gradient(circle closest-side, #fff 0 60%, rgba(255,255,255,0) 63%), radial-gradient(circle at 36% 30%, #fff6cf, var(--oro) 45%, #c98a00);
  box-shadow: inset -2px -4px 6px rgba(0,0,0,.18), 0 2px 5px rgba(22,18,26,.18);
}
.subir { position: relative; display: block; border: 2px dashed #d9cfd4; background: var(--papel); border-radius: var(--radio); padding: 22px; text-align: center; cursor: pointer; transition: border-color 160ms ease; }
@media (hover: hover) and (pointer: fine) { .subir:hover { border-color: var(--rojo); } }
.subir:focus-within { outline: 3px solid var(--rojo); outline-offset: 3px; }
.subir input { position: absolute; width: 1px; height: 1px; opacity: 0; }
/* El archivo elegido y el botón que lo manda: elegirlo no manda nada. */
.comprobante-elegido { display: flex; align-items: center; gap: 6px; margin: 12px 0 0; font-size: 14px; font-weight: 700; color: var(--verde-texto); }
.comprobante-elegido::before { content: ""; width: 16px; height: 16px; flex: none; background: var(--verde-texto); -webkit-mask: var(--tilde) center / contain no-repeat; mask: var(--tilde) center / contain no-repeat; }
#confirmar-pago { margin-top: 12px; }
.progreso { height: 6px; background: #eee6ea; border-radius: 99px; overflow: hidden; margin-top: 12px; }
.progreso i { display: block; height: 100%; width: 100%; background: var(--rojo); transform: scaleX(0); transform-origin: left; transition: transform .2s linear; }

/* ── Panel ──────────────────────────────────────────── */
.panel-cab { display: flex; justify-content: space-between; align-items: center; padding: 18px 0 12px; gap: 12px; }
.panel-cab h1 { font: 800 30px/1 var(--cartel); letter-spacing: -0.02em; margin: 0; }
.panel-cab small { color: var(--suave); display: block; font-size: 13px; }
.contadores { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-bottom: 16px; }
.contador { background: #fff; border: 1px solid var(--borde); border-radius: 14px; padding: 10px 12px; box-shadow: var(--sombra); }
.contador b { display: block; font: 900 30px/1.05 var(--cartel); }
.contador span { font-size: 12.5px; color: var(--suave); }
.contador.destacado { background: var(--noche); border-color: var(--noche); }
.contador.destacado b { color: var(--oro); }
.contador.destacado span { color: #cdbfc5; }
@media (max-width: 560px) {
  .contadores { grid-template-columns: repeat(2, 1fr); }
  .contador:last-child { grid-column: span 2; }
}
.solapas { display: flex; gap: 4px; overflow-x: auto; margin-bottom: 16px; border-bottom: 1px solid var(--borde); }
.solapas button { background: none; border: 0; border-bottom: 3px solid transparent; padding: 10px 12px; color: var(--suave); white-space: nowrap; font-weight: 700; transition: color 160ms ease, border-color 160ms ease; }
.solapas button[aria-selected=true] { color: var(--texto); border-bottom-color: var(--rojo); }
.pedido { display: grid; grid-template-columns: 76px 1fr; gap: 16px; }
.miniatura { width: 76px; height: 96px; border-radius: 10px; border: 1px solid var(--borde); background: repeating-linear-gradient(0deg, #fff 0 9px, #eee6ea 9px 10px); display: grid; place-items: center; font-size: 11px; color: var(--suave); text-align: center; }
.pedido h3 { margin: 0; font: 800 24px/1.05 var(--cartel); letter-spacing: -0.02em; }
.pedido .meta { color: var(--suave); font-size: 13px; margin: 3px 0 10px; }
.pedido .chips, #resultado .chips { justify-content: flex-start; }
.pedido .chips span, #resultado .chips span { width: 38px; height: 38px; font-size: calc(12px * var(--ajuste-cifras)); }
.pedido .acciones { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.rechazo { margin-top: 12px; }
.rechazo textarea { min-height: 70px; resize: vertical; }
.rechazo .acciones { margin-top: 8px; display: flex; gap: 8px; }
.vacio { text-align: center; color: var(--suave); padding: 40px 16px; }
.grilla.panel { padding-bottom: 20px; grid-template-columns: repeat(auto-fill, minmax(52px, 1fr)); }
.grilla.panel button { max-width: 52px; font-size: calc(13px * var(--ajuste-cifras)); }
.grilla.panel button.reservado { --bola-claro: #ffe0b0; --bola: #ff9f1c; --bola-hondo: #c46a00; }
.grilla.panel button.revision { --bola-claro: #fff6cf; --bola: var(--oro); --bola-hondo: #c98a00; }
.grilla.panel button.pagado { --bola-claro: #6b6272; --bola: #3a3340; --bola-hondo: var(--bloqueado); }
table { width: 100%; border-collapse: collapse; font-size: 14px; }
th, td { text-align: left; padding: 10px 6px; border-bottom: 1px solid var(--borde); }
th { color: var(--suave); font-weight: 700; font-size: 13px; }

/* ── Trébol de la suerte: se confirma el pago ────────── */
.festejo { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; padding: 16px; background: rgba(18,4,10,.6); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.festejo-tarjeta {
  position: relative; width: min(360px, 100%); text-align: center; padding: 26px 22px 22px; color: #fff;
  border-radius: 26px; box-shadow: 0 30px 80px rgba(0,0,0,.45);
  background: radial-gradient(ellipse 90% 60% at 50% 0%, var(--bordo-claro), var(--bordo) 40%, var(--noche) 85%);
}
.trebol { width: 150px; height: 150px; display: block; margin: 0 auto 6px; overflow: visible; filter: drop-shadow(0 0 18px rgba(31,207,116,.35)); }
.trebol .hoja-trebol { transform-box: view-box; transform-origin: 100px 100px; }
.chispas { position: absolute; left: 50%; top: 101px; width: 0; height: 0; pointer-events: none; }
.chispas i { position: absolute; left: -4px; top: -4px; width: 8px; height: 8px; border-radius: 50%; background: var(--oro); opacity: 0; box-shadow: 0 0 8px var(--oro); }
.chispas i:nth-child(3n) { background: var(--verde); box-shadow: 0 0 8px var(--verde); }
.chispas i:nth-child(3n+1) { background: #fff3b8; width: 6px; height: 6px; }
.festejo h2 { margin: 4px 0 6px; font: 800 48px/.95 var(--cartel); letter-spacing: -0.02em; color: var(--oro); text-shadow: 0 3px 0 var(--oro-sombra), 0 0 24px rgba(255,201,51,.45); }
.festejo p { margin: 0 0 14px; color: #e9d9df; }
.festejo .chips { justify-content: center; margin-bottom: 20px; }

/* ── Celular ────────────────────────────────────────── */
@media (max-width: 600px) {
  .hero { padding: 14px 12px 40px; }
  .luces { margin-bottom: 10px; }
  .spot { height: 150px; }
  .datos-rapidos { font-size: 14px; }
  .bolillas-aire .b-oro { --t: 40px; left: 10px; top: 92px; }
  .bolillas-aire .b-rojo { --t: 30px; left: 30px; top: 168px; }
  .bolillas-aire .b-verde { --t: 36px; left: auto; right: 12px; top: 84px; }
  .bolillas-aire .b-blanca { --t: 28px; left: auto; right: 34px; top: 160px; }
  .cuenta { margin-top: -24px; padding: 10px 8px 12px; }
  .cuenta-cajas { gap: 6px; }
  .cuenta-cajas b { font-size: 26px; gap: 2px; }
  .cuenta-cajas span { font-size: 10.5px; letter-spacing: .06em; }
  .reloj { font-size: 72px; }
}

/* Movimiento reducido: menos y más suave, no cero. Se quita el desplazamiento, queda el fundido. */
@media (prefers-reduced-motion: reduce) {
  .luces { animation: none; }
  .bolillas-aire span { animation: none; }
  .vendidos-barra i { animation: none; transition: none; }
  .boton.azar.buscando .trebol-boton { animation: none; }
  .grilla button.suerte { animation: aparecer 200ms ease; }
  .grilla button, .boton, .copiar { transition: background-color 160ms ease, color 160ms ease; }
  .grilla button:active:not(:disabled), .boton:active:not(:disabled), .grilla button:hover:not(:disabled) { transform: none; }
  .barra { transform: none; transition: opacity 200ms ease; }
  .hoja { transition: none; }
  #aviso { transition: none; }
  .vitrina-punto::before { transition: none; }
  .vitrina-flecha { transition: none; }
}
@keyframes aparecer { from { opacity: 0; } }

/* ── Tamaños de pantalla ────────────────────────────────
   Celular: 6 bolillas por fila (la grilla de 600 no se hace eterna).
   Computadora: la página usa el ancho; la cuenta queda centrada y angosta. */
@media (max-width: 600px) {
  .grilla { grid-template-columns: repeat(6, 1fr); gap: 7px 6px; }
  .grilla button { font-size: calc(13px * var(--ajuste-cifras)); }
  .grilla button.elegido::before, .grilla button.elegido::after { width: 17px; height: 17px; top: -3px; right: -3px; }
  .grilla button.elegido::after { -webkit-mask-size: 11px; mask-size: 11px; }
  .titulo-grilla { flex-wrap: wrap; row-gap: 2px; }
}
@media (max-width: 359px) {
  .grilla { grid-template-columns: repeat(5, 1fr); }
}
@media (min-width: 1024px) {
  .envoltura { max-width: 1120px; }
  .cuenta { max-width: 780px; margin-left: auto; margin-right: auto; }
  .titulo-grilla { margin-top: 12px; }
  .buscador input { flex: 0 1 420px; }
  .buscador .azar { margin-left: auto; }
  .grilla { grid-template-columns: repeat(auto-fill, minmax(58px, 1fr)); gap: 10px 8px; }
  .barra .envoltura { max-width: 1120px; }
}
/* Compra: una columna en celular; en computadora el boleto a la izquierda y el pago a la derecha. */
.compra { max-width: 560px; }
@media (min-width: 900px) {
  .compra { max-width: 1000px; }
  .compra-columnas:not([hidden]) { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; align-items: start; }
  .compra-col > .estado:first-child, .compra-col > .tarjeta:first-child { margin-top: 18px; }
  .compra-col .estado { margin-top: 18px; }
}

/* ── Lo que sólo existe en las páginas de verdad ─────── */

/* Estado de la venta: sólo aparece cuando NO está abierta (en pausa o cerrada). */
.venta-aviso {
  width: max-content; margin: 10px auto 0; padding: 6px 14px; border-radius: 99px;
  font-size: 13px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: #ffd9df; background: rgba(217,15,51,.25); box-shadow: inset 0 0 0 1px rgba(217,15,51,.55);
}

/* Si la grilla no se pudo cargar, el mensaje ocupa todo el ancho y no una celda. */
.error-grilla { grid-column: 1 / -1; text-align: center; color: var(--suave); padding: 40px 16px; margin: 0; }

/* Estado de la subida del comprobante (página de la compra). */
#subir-estado:empty { display: none; }
#subir-estado.mal { color: var(--rojo-hondo); font-weight: 700; }

/* Lista del equipo (panel). */
.lista-equipo { list-style: none; margin: 0; padding: 0; }
.lista-equipo li { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--borde); }
.lista-equipo li:last-child { border-bottom: 0; }
.lista-equipo .baja { color: var(--suave); }

/* Nombre y apellido lado a lado; en celulares muy angostos, uno abajo del otro. */
.dos-campos { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
@media (max-width: 340px) { .dos-campos { grid-template-columns: 1fr; } }
.aviso-datos { font-size: 12.5px; margin-top: 10px; }
.aviso-datos a { color: inherit; }

/* Campo que la base marcó como mal. */
input[aria-invalid=true] { border-color: var(--rojo); box-shadow: 0 0 0 3px rgba(217,15,51,.15); }

/* ── Tu base de gente (/gente/) ──────────────────────
   Una ficha por persona, no una tabla: así se lee igual en el celular. */
.contadores.tres { grid-template-columns: repeat(3, 1fr); }
.contadores.tres .contador:last-child { grid-column: auto; }
.contadores.tres .contador b { font-size: clamp(22px, 7vw, 30px); }

.filtros { display: grid; gap: 12px; }
.filtros input[type=search] { margin: 0; }
.interruptor { display: flex; align-items: center; gap: 9px; margin: 0; font-size: 14.5px; font-weight: 600; cursor: pointer; }
.interruptor input { width: 20px; height: 20px; margin: 0; accent-color: var(--rojo); }

.orden { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.orden > span { font-size: 13px; font-weight: 700; color: var(--suave); margin-right: 2px; }
.orden button { background: #fff; border: 1px solid var(--borde); border-radius: 99px; padding: 6px 13px; font: 600 13.5px var(--sans); color: var(--suave); }
.orden button[aria-pressed=true] { background: var(--noche); border-color: var(--noche); color: var(--oro); font-weight: 700; }

.lista-gente { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.ficha-persona { background: #fff; border: 1px solid var(--borde); border-radius: 14px; padding: 13px 15px; box-shadow: var(--sombra); }
.ficha-quien { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.ficha-quien b { font: 700 17px/1.25 var(--sans); }
.marquita { flex: none; font-size: 12px; font-weight: 700; padding: 3px 9px; border-radius: 99px; white-space: nowrap; }
.marquita.pago { color: var(--verde-tinta); background: rgba(31,207,116,.16); }
.marquita.debe { color: var(--suave); background: var(--papel); }
.ficha-datos { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 7px; font-size: 14px; font-variant-numeric: tabular-nums; }
.ficha-datos a { color: var(--texto); text-decoration-color: var(--borde); text-underline-offset: 3px; word-break: break-all; }
.ficha-datos .sin-dato { color: var(--ocupado-texto); }
.ficha-pie { margin-top: 6px; font-size: 12.5px; color: var(--suave); }
