/* ═══════════════════════════════════════════════════════════════════════
   landing.css — Estilos de la landing/lobby de TrivialApp (v1.9.4)
   Lo carga ÚNICAMENTE public/index.php. Aislado para no afectar al resto de
   la app. Reutiliza las variables de :root definidas en trivialista.css
   (--dark, --teal, --blue, --yellow, --pink, --purple, --bg, --surface,
   --border, --text, --muted, --font-head, --radius), por lo que NO se
   redefinen aquí: la coherencia visual con la app está garantizada.

   Convención: todas las clases llevan prefijo `lp-` (landing page) para
   evitar cualquier colisión con clases existentes (.tv-*, .q-*, etc.).
═══════════════════════════════════════════════════════════════════════ */

.lp-shadow-sm{box-shadow:0 2px 8px rgba(13,27,42,.06)}
/* v1.9.4a: este overflow-x sólo afecta a la home (landing.css solo se carga
   ahí). Evita el scroll horizontal de pocos píxeles que introduce el truco
   width:100vw del hero full-bleed cuando hay barra de scroll vertical. */
body{overflow-x:hidden}
/* v1.9.4a: ancho de contenido subido de 1120 a 1320 para aprovechar escritorio. */
.lp-wrap{max-width:1320px;margin:0 auto;padding:0 24px}

/* botones reutilizables de la landing */
.lp-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--font-head);font-weight:700;border-radius:12px;padding:11px 20px;
  font-size:.9rem;transition:.18s;white-space:nowrap;text-decoration:none;cursor:pointer;border:none}
.lp-btn-teal{background:var(--teal);color:var(--dark);box-shadow:0 6px 18px rgba(6,214,160,.32)}
.lp-btn-teal:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(6,214,160,.42)}
.lp-btn-blue{background:var(--blue);color:#fff;box-shadow:0 6px 18px rgba(58,134,255,.32)}
.lp-btn-blue:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(58,134,255,.42)}
.lp-btn-ghost{color:var(--text);border:1.5px solid var(--border);background:transparent}
.lp-btn-ghost:hover{border-color:var(--muted);background:var(--bg)}
.lp-btn-lg{padding:15px 28px;font-size:1rem;border-radius:14px}
.lp-btn-block{width:100%}

/* ═══════════════ HERO ═══════════════ */
/* v1.9.4a: fondo full-bleed (de borde a borde del viewport) aunque el hero
   esté dentro de .lp-wrap. La técnica: ancho = 100vw y margen lateral negativo
   que lo saca del contenedor hasta tocar ambos bordes. El CONTENIDO interior
   (.lp-hero-inner) se vuelve a centrar al ancho del wrap (1320) para quedar
   alineado con el resto de secciones. Así la banda oscura cruza la pantalla y
   el contenido respeta la rejilla del resto de la página. */
/* v1.9.4b: full-bleed robusto. El width:100vw original podía provocar un
   desbordamiento horizontal de ~15px en móvil (100vw incluye el ancho de la
   barra de scroll), que con overflow-x:hidden se recortaba y dejaba las
   tarjetas pegadas al borde derecho. Se sustituye por márgenes negativos
   medidos contra el ancho REAL del documento, que nunca desbordan. */
.lp-hero{position:relative;overflow:hidden;
  margin-left:calc(-50vw + 50%);margin-right:calc(-50vw + 50%);margin-top:0;margin-bottom:28px;
  background:radial-gradient(120% 140% at 80% 10%,#16304d 0%,var(--dark) 55%)}
.lp-hero-inner{max-width:1320px;margin:0 auto;
  display:grid;grid-template-columns:1.05fr .95fr;gap:20px;align-items:center;
  padding:64px 24px;position:relative;z-index:2}
.lp-hero h1{color:#fff;font-size:2.7rem;font-weight:900;line-height:1.1;letter-spacing:-.02em}
.lp-hero h1 em{font-style:normal;color:var(--teal)}
.lp-wave{display:inline-block;animation:lpWave 2.4s ease-in-out infinite;transform-origin:70% 70%}
@keyframes lpWave{0%,60%,100%{transform:rotate(0)}10%{transform:rotate(16deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(16deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}
.lp-hero-sub{color:#a9bcd4;font-size:1.1rem;margin-top:14px;max-width:440px}
.lp-feats{margin:28px 0 0;display:flex;flex-direction:column;gap:16px}
.lp-feat{display:flex;gap:14px;align-items:flex-start}
.lp-feat-ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:1.25rem;flex-shrink:0}
.lp-feat:nth-child(1) .lp-feat-ico{background:rgba(6,214,160,.16)}
.lp-feat:nth-child(2) .lp-feat-ico{background:rgba(255,183,3,.16)}
.lp-feat:nth-child(3) .lp-feat-ico{background:rgba(239,71,111,.16)}
.lp-feat b{color:#fff;font-size:1rem;font-weight:700;display:block}
.lp-feat p{color:#8ea3bd;font-size:.86rem;margin-top:2px}
.lp-hero-actions{margin-top:30px;display:flex;gap:12px;flex-wrap:wrap}
.lp-hero-ghost{color:#fff!important;border-color:rgba(255,255,255,.25)!important}
.lp-hero-free{margin-top:16px;color:#a9bcd4;font-size:.9rem}
.lp-hero-free b{color:var(--teal);font-weight:700}

/* arte del hero: emojis + confeti */
.lp-art{position:relative;height:360px;display:grid;place-items:center}
.lp-art-screen{width:80%;height:60%;border-radius:20px;border:2px solid rgba(255,255,255,.12);
  background:linear-gradient(160deg,rgba(255,255,255,.06),rgba(255,255,255,.02));position:absolute;top:14%}
.lp-brain{font-size:7.5rem;position:absolute;left:8%;top:30%;animation:lpFloat 4s ease-in-out infinite;filter:drop-shadow(0 16px 30px rgba(239,71,111,.4))}
.lp-trophy{font-size:6.5rem;position:absolute;right:6%;top:42%;animation:lpFloat 4s ease-in-out infinite .8s;filter:drop-shadow(0 16px 30px rgba(255,183,3,.45))}
.lp-q{position:absolute;right:30%;top:16%;font-size:2.8rem;color:#fff;opacity:.9;animation:lpFloat 5s ease-in-out infinite .4s}
@keyframes lpFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}
.lp-confetti{position:absolute;inset:0;overflow:hidden;z-index:1;pointer-events:none}
.lp-confetti i{position:absolute;width:10px;height:10px;border-radius:2px;opacity:.85;animation:lpFall linear infinite}
@keyframes lpFall{0%{transform:translateY(-30px) rotate(0);opacity:0}10%{opacity:.9}100%{transform:translateY(400px) rotate(360deg);opacity:0}}

/* tarjeta flotante CTA invitado (contador de partidas gratis) */
.lp-hero-card{position:absolute;right:44px;bottom:28px;z-index:3;background:#fff;border-radius:18px;
  padding:20px 22px;width:300px;box-shadow:0 24px 60px rgba(13,27,42,.28)}
.lp-free-count{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.lp-free-count b{font-size:.94rem;font-weight:800}
.lp-free-dots{display:flex;gap:4px;flex-shrink:0}
.lp-free-dots i{width:9px;height:9px;border-radius:50%;background:var(--border)}
.lp-free-dots i.on{background:var(--teal)}
.lp-hero-card p{color:var(--muted);font-size:.82rem;margin:0 0 14px}
.lp-hero-card-link{display:block;text-align:center;margin-top:12px;color:var(--blue);font-weight:700;font-size:.84rem;text-decoration:none}
.lp-hero-card-link:hover{text-decoration:underline}

/* ═══════════════ STATS ═══════════════ */
.lp-stats{background:#fff;border:1px solid var(--border);border-radius:20px;padding:24px;margin-bottom:30px;box-shadow:0 2px 8px rgba(13,27,42,.06)}
.lp-stats-head{font-size:.82rem;font-weight:700;color:var(--muted);margin-bottom:16px}
.lp-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.lp-stat{display:flex;align-items:center;gap:14px}
.lp-stat-ico{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:1.25rem;flex-shrink:0}
.lp-stat:nth-child(1) .lp-stat-ico{background:rgba(6,214,160,.14)}
.lp-stat:nth-child(2) .lp-stat-ico{background:rgba(255,183,3,.14)}
.lp-stat:nth-child(3) .lp-stat-ico{background:rgba(131,56,236,.14)}
.lp-stat:nth-child(4) .lp-stat-ico{background:rgba(239,71,111,.14)}
.lp-stat b{font-size:1.35rem;font-weight:800;display:block;line-height:1}
.lp-stat span{color:var(--muted);font-size:.78rem}

/* ═══════════════ SECCIONES ═══════════════ */
.lp-section-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 16px}
.lp-section-head h2{font-size:1.45rem;font-weight:800;letter-spacing:-.01em}
.lp-section-head .lp-link{color:var(--blue);font-size:.85rem;font-weight:700;text-decoration:none}
.lp-section-sub{color:var(--muted);font-size:.85rem;font-weight:600}

/* aviso 3 partidas gratis */
.lp-free-note{background:rgba(6,214,160,.10);border:1px solid rgba(6,214,160,.25);border-radius:12px;
  padding:10px 14px;font-size:.85rem;color:var(--text);margin-bottom:16px}
.lp-free-note b{color:#059b75;font-weight:700}
.lp-free-note span{color:var(--muted);font-weight:600}

/* tarjetas de categoría (con las 4 dificultades reales) */
.lp-cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:32px}
.lp-cat{background:#fff;border:1px solid var(--border);border-radius:16px;padding:18px;transition:.18s}
.lp-cat:hover{transform:translateY(-3px);box-shadow:0 8px 28px rgba(13,27,42,.10);border-color:transparent}
.lp-cat-top{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.lp-cat-ico{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:1.3rem;color:#fff;flex-shrink:0}
.lp-cat-top b{font-size:1rem;font-weight:700;display:block}
.lp-cat-top span{color:var(--muted);font-size:.76rem}
.lp-cat-difs{display:flex;gap:6px}
.lp-dif{flex:1;text-align:center;border-radius:9px;padding:7px 4px;font-size:.72rem;font-weight:700;
  border:none;cursor:pointer;transition:.15s;font-family:var(--font-head)}
.lp-dif small{display:block;font-size:.6rem;font-weight:600;opacity:.7}
.lp-dif:hover:not(:disabled){transform:translateY(-2px)}
.lp-dif:disabled{opacity:.4;cursor:not-allowed}
.lp-dif-f{background:rgba(6,214,160,.13);color:#059b75}
.lp-dif-m{background:rgba(255,183,3,.16);color:#b97f00}
.lp-dif-d{background:rgba(239,71,111,.13);color:#d12d54}
.lp-dif-x{background:rgba(131,56,236,.13);color:#6d28c9}

/* código privado + lobby */
.lp-panel{background:#fff;border:1px solid var(--border);border-radius:20px;padding:22px;margin-bottom:24px;box-shadow:0 2px 8px rgba(13,27,42,.06)}
.lp-code-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.lp-code-bar label{font-weight:700;font-size:.9rem;white-space:nowrap}
.lp-code-input{flex:1;min-width:140px;border:1.5px solid var(--border);border-radius:12px;padding:11px 16px;
  font-family:var(--font-head);font-size:1rem;letter-spacing:.18em;text-transform:uppercase;font-weight:700}
.lp-code-input:focus{outline:none;border-color:var(--blue)}

/* partidas públicas */
.lp-part-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.lp-part{background:#fff;border:1px solid var(--border);border-left:4px solid var(--card-accent,#3A86FF);
  border-radius:14px;padding:16px;cursor:pointer;transition:.18s}
.lp-part:hover{transform:translateY(-3px);box-shadow:0 8px 28px rgba(13,27,42,.10)}
.lp-part-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.lp-part-cat{font-size:.72rem;font-weight:700;padding:4px 9px;border-radius:8px;background:var(--bg)}
.lp-part-name{font-weight:700;font-size:.98rem;margin-bottom:8px}
.lp-part-meta{display:flex;gap:12px;color:var(--muted);font-size:.76rem;margin-bottom:12px}
.lp-part-foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);padding-top:10px}
.lp-part-by{color:var(--muted);font-size:.74rem}
.lp-empty{grid-column:1/-1;text-align:center;padding:40px;color:var(--muted)}
.lp-empty-ico{font-size:2.4rem;display:block;margin-bottom:8px}

/* ═══════════════ SIDEBAR ═══════════════ */
.lp-side-card{background:#fff;border:1px solid var(--border);border-radius:20px;padding:22px;margin-bottom:20px;box-shadow:0 2px 8px rgba(13,27,42,.06)}
.lp-side-card h3{font-size:1.12rem;font-weight:800;display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.lp-target{width:50px;height:50px;border-radius:50%;background:rgba(239,71,111,.12);display:grid;place-items:center;font-size:1.4rem}
.lp-daily-sub{color:var(--muted);font-size:.83rem;margin:-6px 0 14px}
.lp-daily-prog{display:flex;align-items:center;justify-content:space-between;font-size:.82rem;font-weight:700;margin-bottom:8px}
.lp-daily-prog .lp-pts{color:var(--teal)}
.lp-bar{height:8px;background:var(--bg);border-radius:99px;overflow:hidden;margin-bottom:16px}
.lp-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--teal),var(--blue))}
.lp-daily-timer{text-align:center;color:var(--muted);font-size:.8rem;margin-top:12px}
.lp-daily-timer b{color:var(--text)}
/* podio */
.lp-podium{display:flex;align-items:flex-end;justify-content:center;gap:8px;height:110px;margin:6px 0 12px}
.lp-pod{width:58px;border-radius:10px 10px 0 0;background:var(--bg);display:flex;flex-direction:column;
  align-items:center;justify-content:flex-start;padding-top:8px;color:var(--muted);font-weight:800;position:relative;font-size:.8rem}
.lp-pod .lp-medal{font-size:1.15rem;position:absolute;top:-24px}
.lp-pod.p1{height:100%;background:linear-gradient(180deg,rgba(255,183,3,.25),var(--bg))}
.lp-pod.p2{height:74%;background:linear-gradient(180deg,rgba(160,170,190,.25),var(--bg))}
.lp-pod.p3{height:56%;background:linear-gradient(180deg,rgba(205,127,50,.22),var(--bg))}
.lp-rank-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);font-size:.88rem}
.lp-rank-row:last-child{border-bottom:none}
.lp-rank-pos{font-size:1.05rem}
.lp-rank-name{flex:1;font-weight:600}
.lp-rank-pts{font-weight:700;color:var(--blue);font-size:.82rem}
.lp-side-empty{text-align:center;color:var(--muted);font-size:.83rem;margin:6px 0 12px}
.lp-why{list-style:none;padding:0;margin:0 0 14px}
.lp-why li{display:flex;align-items:center;gap:10px;font-size:.87rem;font-weight:500;padding:7px 0}
.lp-why .lp-ck{color:var(--teal);font-weight:900}
.lp-acct-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;font-size:.88rem}
.lp-acct-row .lp-lbl{color:var(--muted)}
.lp-acct-row .lp-val{font-weight:800}

/* banner registro */
.lp-banner{background:linear-gradient(120deg,rgba(6,214,160,.12),rgba(58,134,255,.10));border:1px solid var(--border);
  border-radius:20px;padding:24px;display:flex;align-items:center;gap:20px;margin:30px 0}
.lp-banner-ico{width:60px;height:60px;border-radius:18px;background:var(--teal);display:grid;place-items:center;font-size:1.7rem;flex-shrink:0}
.lp-banner b{font-size:1.15rem;font-weight:800;display:block}
.lp-banner p{color:var(--muted);font-size:.88rem;margin-top:3px}
.lp-banner .lp-btn{margin-left:auto}

/* layout 2 columnas */
.lp-cols{display:grid;grid-template-columns:1fr 330px;gap:24px;align-items:start;margin-top:4px}

/* ═══════════════ FOOTER (v1.9.5) ═══════════════ */
.lp-ftr{border-top:1px solid var(--border);background:#fff;margin-top:40px}
.lp-ftr-inner{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:28px;padding-bottom:20px}
.lp-ftr-brand{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
/* v1.9.5a: el logo del footer respeta su alto y no se estira al 100% (la regla
   global img{max-width:100%} lo deformaba dentro del contenedor flex). */
.lp-ftr-brand img{height:30px;width:auto;max-width:none}
.lp-ftr-brand .logo-text{font-family:var(--font-head);font-weight:800;font-size:1.2rem}
.lp-ftr-brand p{color:var(--muted);font-size:.86rem;margin:0}
.lp-ftr-links{display:flex;gap:20px;flex-wrap:wrap}
.lp-ftr-links a{color:var(--muted);font-size:.86rem;font-weight:600;text-decoration:none}
.lp-ftr-links a:hover{color:var(--blue)}
.lp-ftr-legal{border-top:1px solid var(--border);padding:16px 0;color:var(--muted);font-size:.8rem}

/* ═══════════════════════════════════════════════════════════════════════
   ║                        ESTILOS RESPONSIVE                              ║
   ║  Todo lo específico de tablet/móvil va AQUÍ, separado de los estilos   ║
   ║  base (que son los de ESCRITORIO, arriba). Organizado por breakpoint   ║
   ║  y, dentro de cada uno, componente a componente. (v1.9.4c)             ║
   ═══════════════════════════════════════════════════════════════════════ */

/* ───────────── TABLET / ESCRITORIO ESTRECHO (≤ 980px) ─────────────
   El layout de 2 columnas (contenido + sidebar) se apila, y las rejillas
   de 3-4 columnas se reducen. El hero pasa a una sola columna. */
@media (max-width: 1024px){
  /* Hero: una columna, el arte debajo y más bajo */
  .lp-hero-inner{grid-template-columns:1fr;gap:8px;padding:48px 26px}
  .lp-art{height:200px;order:-1}              /* arte arriba del texto en apilado */
  .lp-hero h1{font-size:2.1rem}
  .lp-hero-sub{max-width:none}
  /* La tarjeta flotante de "partidas gratis" deja de flotar y se integra */
  .lp-hero-card{position:static;width:100%;margin-top:20px;box-shadow:0 8px 28px rgba(13,27,42,.12)}

  /* Layout principal: el sidebar baja debajo del contenido */
  .lp-cols{grid-template-columns:1fr;gap:20px}

  /* Rejillas: de 3-4 a 2 columnas */
  .lp-stats-grid{grid-template-columns:repeat(2,1fr);gap:16px}
  .lp-cat-grid,.lp-part-grid{grid-template-columns:repeat(2,1fr)}
}

/* ───────────── MÓVIL (≤ 600px) ─────────────
   Todo a una sola columna. Aquí cada tarjeta ocupa el ancho completo, así
   que se ajustan paddings, márgenes y tipografías para que la versión
   apilada se vea cuidada y no como tarjetas de escritorio estiradas. */
@media (max-width: 600px){
  /* Contenedor: menos margen lateral (16px en vez de 24) para dar aire */
  .lp-wrap{padding:0 16px}

  /* HERO */
  .lp-hero-inner{padding:34px 16px}
  .lp-hero h1{font-size:1.8rem}
  .lp-hero-sub{font-size:1rem}
  .lp-hero-actions{flex-direction:column}        /* botones a ancho completo, apilados */
  .lp-hero-actions .lp-btn{width:100%}
  .lp-art{height:170px}
  .lp-brain{font-size:5.5rem}.lp-trophy{font-size:4.8rem}.lp-q{font-size:2rem}

  /* STATS: una columna, en fila compacta (icono + texto) */
  .lp-stats{padding:18px}
  .lp-stats-grid{grid-template-columns:1fr;gap:14px}

  /* SECCIONES: títulos algo menores y tarjetas a una columna */
  .lp-section-head h2{font-size:1.3rem}
  .lp-cat-grid,.lp-part-grid{grid-template-columns:1fr;gap:12px}

  /* Las tarjetas apiladas: padding un punto menor para no verse enormes */
  .lp-cat,.lp-part{padding:16px}
  .lp-panel{padding:18px}

  /* Código privado: el campo y el botón se apilan a ancho completo */
  .lp-code-bar{flex-direction:column;align-items:stretch}
  .lp-code-bar .lp-btn{width:100%}
  .lp-code-input{min-width:0;width:100%}

  /* SIDEBAR: tarjetas a ancho completo con algo menos de padding */
  .lp-side-card{padding:18px}

  /* BANNER de registro: de fila a columna, centrado, botón a ancho completo */
  .lp-banner{flex-direction:column;text-align:center;padding:22px;gap:14px}
  .lp-banner-ico{margin:0 auto}
  .lp-banner .lp-btn{margin-left:0;width:100%}
  .lp-ftr-inner{flex-direction:column;align-items:flex-start;gap:16px}
}

/* ───────────── MÓVIL PEQUEÑO (≤ 380px) ─────────────
   Ajuste fino para pantallas muy estrechas: las 3 pills de dificultad
   siguen cabiendo porque usan flex:1, pero reducimos un pelín el texto. */
@media (max-width: 380px){
  .lp-hero h1{font-size:1.6rem}
  .lp-dif{font-size:.68rem;padding:6px 2px}
  .lp-dif small{font-size:.56rem}
}
