/* =====================================================================
   tu_sorteo.css - la tarjeta "Tu sorteo" (Premios e Inicio, con sesion)
   ---------------------------------------------------------------------
   El hueco no mide nada hasta que hay algo que mostrar: el molde (con
   aviso de cuenta, mientras llegan los datos) o la tarjeta. Ver
   includes/vistas/tu_sorteo.php.
   ===================================================================== */

/* ---------------- El hueco y el molde ---------------- */
/* Un poco mas angosta que el contenido de la pagina (1222 px), centrada */
.ts-hueco{max-width:1100px}
.ts-hueco.ts-espera,
.ts-hueco.ts-lista{padding-top:34px;padding-bottom:22px}
/* Dentro de una pagina (Premios) va arriba del todo: sin aire arriba, si abajo */
.pagina .ts-hueco.ts-espera,
.pagina .ts-hueco.ts-lista{padding-top:0;padding-bottom:0;margin-bottom:26px}

/* En Inicio va en el lugar de la cuenta regresiva de la portada (su hermana
   siguiente): con aviso de cuenta, la banda no se pinta mientras llega la
   tarjeta ni cuando esta. Si al final no hay tarjeta, el hueco queda sin
   clase y la banda vuelve. */
.ts-hueco--portada.ts-espera ~ .hm-zona2,
.ts-hueco--portada.ts-lista ~ .hm-zona2{display:none}

/* El alto de la tarjeta mas comun (con tickets), para que nada se mueva al llegar */
.ts-hueco{--ts-molde:144px}
.ts-hueco.ts-espera::before{content:"";display:block;height:var(--ts-molde);border-radius:22px;
  border:1px solid rgba(255,255,255,.12);
  background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.07) 50%,transparent 70%) 0 0 / 250% 100% no-repeat,
             linear-gradient(120deg,rgba(139,63,255,.38),rgba(76,29,149,.38) 45%,rgba(19,229,213,.12));
  animation:ts-brillo 1.4s ease-in-out infinite}
@keyframes ts-brillo{from{background-position:120% 0,0 0}to{background-position:-20% 0,0 0}}
@media (prefers-reduced-motion:reduce){.ts-hueco.ts-espera::before{animation:none}}

/* ---------------- La tarjeta ---------------- */
.ts-card{position:relative;display:grid;grid-template-columns:1.25fr 1.1fr 1fr auto;align-items:center;gap:28px;
  padding:22px 26px;border-radius:22px;color:#fff;font-family:var(--fuente);overflow:hidden;
  background:linear-gradient(120deg,rgba(139,63,255,.55),rgba(76,29,149,.55) 45%,rgba(19,229,213,.18));
  border:1px solid rgba(255,255,255,.16);
  box-shadow:0 18px 40px -18px rgba(10,0,30,.65),inset 0 1px 0 rgba(255,255,255,.12)}
.ts-card::after{content:"";position:absolute;right:-60px;top:-80px;width:260px;height:260px;border-radius:50%;
  background:radial-gradient(circle,rgba(132,242,199,.22),transparent 65%);pointer-events:none}
:where(.ts-card) p{margin:0}   /* sin peso: los margenes de abajo mandan */
/* Sin cuenta regresiva: el sorteo aun no tiene fecha */
.ts-card--sin-reloj{grid-template-columns:1.3fr 1.2fr auto}

.ts-col{position:relative;z-index:1;min-width:0}
.ts-col + .ts-col{padding-left:28px;border-left:1px solid rgba(255,255,255,.12)}
.ts-col.ts-acciones{padding-left:0;border-left:0}

/* Solo para el lector de pantalla */
.ts-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Quien y cuando */
.ts-eyebrow{display:inline-flex;align-items:center;gap:6px;font:600 11px/1 var(--fuente-titulos);letter-spacing:1.6px;color:#84f2c7;text-transform:uppercase}
.ts-eyebrow i{width:7px;height:7px;border-radius:50%;background:#84f2c7;box-shadow:0 0 0 4px rgba(132,242,199,.18)}
.ts-cerrado{color:rgba(255,255,255,.62)}
.ts-titulo{margin:8px 0 4px;font:400 30px/1.05 var(--fuente-titulo);letter-spacing:.5px;color:#fff;overflow-wrap:anywhere}
.ts-fecha{display:flex;align-items:center;gap:7px;font-size:14px;line-height:1.35;color:rgba(255,255,255,.78)}
.ts-fecha svg{width:16px;height:16px;flex:none;fill:none;stroke:#84f2c7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* Tus tickets */
.ts-tickets{display:grid;grid-template-columns:auto 1fr;column-gap:12px;align-items:center}
.ts-num{grid-row:1 / span 2;font:400 64px/.9 var(--fuente-titulo);color:#defdbb;text-shadow:0 0 24px rgba(200,255,122,.35)}
.ts-num-txt{display:flex;flex-direction:column;gap:2px;font-size:13px;color:rgba(255,255,255,.7)}
.ts-num-txt b{font:600 17px/1.1 var(--fuente-titulos);color:#fff}
.ts-mas{margin-top:2px;font-size:12px;color:#84f2c7}
.ts-tickets--espera .ts-num{color:rgba(255,255,255,.72);text-shadow:none}
.ts-codigo{grid-column:2;margin-top:6px;font-size:12.5px;color:rgba(255,255,255,.7)}
.ts-codigo code{display:inline-block;margin-left:4px;padding:4px 8px;border-radius:8px;font:700 13px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:1.5px;
  color:#fff;background:rgba(255,255,255,.12);border:1px dashed rgba(255,255,255,.35);user-select:all}

/* Aun no participa */
.ts-vacio{display:block}
.ts-vacio-t{font:600 16px/1.35 var(--fuente-titulos);color:#fff}
.ts-vacio-s{margin-top:4px;font-size:13px;line-height:1.4;color:rgba(255,255,255,.7)}

/* Cuanto falta */
.ts-reloj{display:flex;gap:8px;margin-top:10px}
.ts-reloj span{display:flex;flex-direction:column;align-items:center;min-width:54px;padding:8px 6px 6px;border-radius:12px;
  background:rgba(10,0,30,.35);border:1px solid rgba(255,255,255,.1)}
.ts-reloj b{font:400 28px/1 var(--fuente-titulo);color:#fff;font-variant-numeric:tabular-nums}
.ts-reloj i{margin-top:3px;font-style:normal;font-size:10.5px;letter-spacing:.8px;text-transform:uppercase;color:rgba(255,255,255,.55)}
.ts-vivo{display:none;font:600 15px/1.35 var(--fuente-titulos);color:#defdbb}
.ts-ya .ts-eyebrow,
.ts-ya .ts-reloj{display:none}
.ts-ya .ts-vivo{display:block}
/* "Faltan" y, a su derecha, "En vivo" (el boton de la banda de la portada,
   que en Inicio la tarjeta reemplaza): en la misma linea, no suma alto */
.ts-cuenta{display:flex;flex-direction:column}
.ts-cuenta-cab{display:flex;align-items:center;gap:8px}
.ts-en-vivo{display:inline-flex;align-items:center;gap:5px;margin-left:auto;font:600 12px/1 var(--fuente-titulos);color:rgba(255,255,255,.78);
  text-decoration:none;white-space:nowrap;border-radius:6px;transition:color .2s ease}
.ts-en-vivo svg{width:15px;height:15px;flex:none;fill:#84f2c7}
.ts-en-vivo:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}
.ts-en-vivo:focus-visible{outline:2px solid #84f2c7;outline-offset:3px}
/* A la hora del sorteo: "¡ya empezó!" y, debajo, "En vivo" como boton (es cuando se busca) */
.ts-ya .ts-cuenta-cab{order:2}
.ts-ya .ts-en-vivo{margin:10px 0 0;padding:7px 12px;border-radius:999px;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.28)}
.ts-ya .ts-en-vivo:hover{text-decoration:none;background:rgba(255,255,255,.16)}

/* Que puede hacer */
.ts-acciones{display:flex;flex-direction:column;gap:10px;min-width:190px}
.ts-btn,
.ts-hecho{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border-radius:999px;
  font:600 14.5px/1 var(--fuente-titulos);white-space:nowrap;text-decoration:none}
.ts-btn svg,
.ts-hecho svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ts-btn{transition:filter .2s ease,background-color .2s ease,box-shadow .2s ease}
.ts-btn-1{background:linear-gradient(228deg,#13e5d5 -51%,#84f2c7 8%,#defdbb 72%);color:#6d28d9;box-shadow:0 10px 24px -10px rgba(132,242,199,.7)}
.ts-btn-1:hover{filter:brightness(1.05) saturate(1.05);box-shadow:0 12px 28px -10px rgba(132,242,199,.85)}
.ts-btn-2{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.28)}
.ts-btn-2:hover{background:rgba(255,255,255,.16)}
.ts-btn:focus-visible{outline:2px solid #84f2c7;outline-offset:3px}
.ts-hecho{font-size:13.5px;color:rgba(255,255,255,.6);border:1px dashed rgba(255,255,255,.25)}
.ts-hecho svg{width:16px;height:16px;stroke:#84f2c7;stroke-width:2.4}
@media (prefers-reduced-motion:reduce){.ts-btn{transition:none}}

/* ---------------- PC chica (1024 a 1199 px) ---------------- */
@media (min-width:1024px) and (max-width:1199px){
  .ts-hueco{--ts-molde:140px}
  .ts-card{gap:18px;padding:20px 22px}
  .ts-col + .ts-col:not(.ts-acciones){padding-left:18px}
  .ts-fecha{font-size:13px}
  .ts-reloj span{min-width:48px}
  .ts-acciones{min-width:172px}
}

/* ---------------- Tablet y celular (hasta 1023 px) ----------------
   Lo que comparten: letras y cajas mas chicas, y los tickets y la cuenta
   regresiva lado a lado, con una linea arriba en vez de al costado. */
@media (max-width:1023px){
  .ts-hueco.ts-espera,
  .ts-hueco.ts-lista{padding-top:22px}
  .ts-hueco.ts-espera::before{border-radius:20px}
  .ts-card{gap:14px 16px;padding:16px;border-radius:20px}
  .ts-col + .ts-col{padding-left:0;border-left:0}
  .ts-titulo{margin:6px 0 2px;font-size:24px}
  .ts-fecha{font-size:13px}
  .ts-tickets{padding-top:12px;border-top:1px solid rgba(255,255,255,.12);column-gap:8px}
  .ts-num{font-size:46px}
  .ts-num-txt b{font-size:15px}
  .ts-cuenta{align-self:stretch;padding-top:12px;border-top:1px solid rgba(255,255,255,.12)}
  .ts-reloj{gap:6px;margin-top:8px}
  .ts-reloj span{flex:1;min-width:0;max-width:88px;padding:6px 2px 5px;border-radius:10px}
  .ts-reloj b{font-size:22px}
  .ts-reloj i{font-size:9px}
  .ts-acciones > *{height:42px;padding:0 12px;font-size:13.5px}
}

/* Celular: todo en una columna de dos; los botones en fila abajo */
@media (max-width:699px){
  .ts-hueco{--ts-molde:267px}
  .ts-card,
  .ts-card--sin-reloj{grid-template-columns:auto 1fr}
  .ts-quien{grid-column:1 / -1}
  .ts-tickets{grid-column:1}
  .ts-codigo{grid-column:1 / -1;margin-top:8px}
  .ts-cuenta{grid-column:2}
  /* Sin tickets: el aviso a todo lo ancho y la cuenta debajo */
  .ts-card--sin-tickets .ts-tickets{grid-column:1 / -1}
  .ts-card--sin-tickets .ts-cuenta{grid-column:1 / -1;padding-top:0;border-top:0}
  /* Sin cuenta regresiva: los tickets a todo lo ancho, el codigo al lado del numero */
  .ts-card--sin-reloj .ts-tickets{grid-column:1 / -1}
  .ts-card--sin-reloj .ts-codigo{grid-column:2;margin-top:4px}
  /* Los botones en fila; si no caben (pantallas muy angostas), uno debajo del otro */
  .ts-acciones{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;min-width:0}
  .ts-acciones > *{flex:1 1 140px}
}

/* Tablet: los botones a la derecha, uno sobre otro, como en la PC */
@media (min-width:700px) and (max-width:1023px){
  .ts-hueco{--ts-molde:211px}
  .ts-card{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"quien quien acciones" "tickets cuenta acciones";column-gap:24px}
  .ts-card--sin-reloj{grid-template-areas:"quien quien acciones" "tickets tickets acciones"}
  .ts-quien{grid-area:quien}
  .ts-tickets{grid-area:tickets}
  .ts-cuenta{grid-area:cuenta}
  .ts-acciones{grid-area:acciones;align-self:stretch;justify-content:center;min-width:180px}
  .ts-card .ts-acciones{padding-left:24px;border-left:1px solid rgba(255,255,255,.12)}
  /* El aviso de "Aún no participas" es largo: que no se lleve todo el ancho */
  .ts-card--sin-tickets{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) auto}
}

/* Celulares angostos (hasta 374 px): la cuenta regresiva no cabe al lado
   de los tickets; va debajo, a todo lo ancho, y el codigo junto al numero */
@media (max-width:374px){
  .ts-hueco{--ts-molde:347px}
  .ts-tickets,
  .ts-cuenta{grid-column:1 / -1}
  .ts-cuenta{padding-top:0;border-top:0}
  .ts-codigo{grid-column:2;margin-top:4px}
}
/* Hasta 358 px los dos botones no caben en una fila: van uno debajo del otro */
@media (max-width:358px){
  .ts-hueco{--ts-molde:399px}
}
