<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>LA DIARIA · Apuestas Honduras</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Barlow+Condensed:wght@400;600;700;800&family=Nunito:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;600;700&display=swap" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
<style>
/* =====================================================
   OCULTAR HEADER WORDPRESS
===================================================== */
header.site-header:not(#app header.site-header),
.ast-site-header-wrap,.main-header-bar,.main-header-bar-wrap,
.ast-masthead-custom-menu-items,.ast-primary-header-bar,
#masthead,#site-header,.site-branding,.site-title,.site-description,
.wp-site-blocks > header,body > header:not(#app header){
  display:none!important;height:0!important;overflow:hidden!important;
}
.entry-title,.page-title,h1.entry-title{display:none!important;}

/* =====================================================
   MODO CLARO (UNICO TEMA)
===================================================== */
:root {
  --bg:#EEF5E8;
  --surface:#FFFFFF;
  --surface2:#E4EFD8;
  --surface3:#D0E4C0;
  --border:rgba(50,100,30,0.15);
  --accent:#2E6820;
  --accent2:#1A4A10;
  --accent-rgb:46,104,32;
  --green:#1E7A28;
  --red:#B82020;
  --blue:#1050A0;
  --orange:#C85000;
  --text:#101E08;
  --text-light:#204010;
  --muted:#3A6028;
  --shadow-card:0 2px 14px rgba(30,60,10,0.13);
  --btn-login-color:#FFFFFF;
  --toggle-bg:#E4EFD8;
  --toggle-border:rgba(46,104,32,0.35);
  --overlay-bg:rgba(220,240,205,0.97);
  --modal-bg:rgba(210,235,195,0.96);
  --radius:18px;
  --font-display:'Bebas Neue',cursive;
  --font-cond:'Barlow Condensed',sans-serif;
  --font-body:'Nunito',sans-serif;
  --font-mono:'JetBrains Mono',monospace;
}

/* =====================================================
   RESET + BASE
===================================================== */
*{box-sizing:border-box;margin:0;padding:0;}
html{background:var(--bg)!important;min-height:100vh;}

body{
  font-family:var(--font-body);
  font-size:16px;
  font-weight:500;
  background:var(--bg)!important;
  color:var(--text);
  min-height:100vh;
  overflow-x:hidden;
  margin:0;padding:0;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

#app{
  position:relative;z-index:1;
  max-width:1400px;margin:0 auto;
  padding:0 14px 60px;
  background:transparent;
}
@media(max-width:600px){#app{padding:0 0 60px;}}

/* =====================================================
   TIPOGRAFÍA MODERNA — ESCALA FLUIDA
===================================================== */
:root{
  --text-xs:   clamp(0.72rem, 1.8vw, 0.78rem);
  --text-sm:   clamp(0.85rem, 2vw,   0.92rem);
  --text-base: clamp(1rem,    2.2vw, 1.05rem);
  --text-md:   clamp(1.1rem,  2.5vw, 1.2rem);
  --text-lg:   clamp(1.25rem, 3vw,   1.5rem);
  --text-xl:   clamp(1.6rem,  4vw,   2rem);
  --text-2xl:  clamp(2rem,    5vw,   2.8rem);
  --text-3xl:  clamp(2.5rem,  7vw,   4rem);
}

/* Números: JetBrains Mono negrita */
.n-num, .azar-num, .num-ganador,
.ci-num, .total-val, .hora-tag,
.sorteo-chip,
.page-numbers, .clock-badge span,
[class*="num-"], [class*="precio"], [class*="monto"],
input[type="number"], input[type="tel"]{
  font-family:var(--font-mono)!important;
  font-weight:700!important;
  font-variant-numeric:tabular-nums!important;
}

/* =====================================================
   HEADER
===================================================== */
.site-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 0 16px;
  border-bottom:1px solid var(--border);
  margin-bottom:28px;
  flex-wrap:wrap;gap:12px;
  background:transparent;
}
.logo-img{height:54px;width:auto;object-fit:contain;}
.header-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}

.clock-badge{
  font-family:var(--font-mono);
  font-size:var(--text-md);
  font-weight:700;
  background:var(--surface2);
  border:1px solid var(--border);
  padding:8px 18px;border-radius:40px;
  display:flex;align-items:center;gap:8px;
  color:var(--text);
}
.clock-dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulse 2s infinite;flex-shrink:0;}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.4;transform:scale(.75);}}

.btn-header{
  font-family:var(--font-body);font-size:var(--text-sm);font-weight:700;
  background:transparent;border:1px solid var(--border);
  color:var(--text-light);padding:9px 18px;border-radius:40px;
  cursor:pointer;transition:all .2s;letter-spacing:.3px;
}
.btn-header:hover{border-color:var(--accent);color:var(--accent);}
.btn-header.mis-compras{border-color:rgba(var(--accent-rgb),.35);color:var(--green);}
.btn-header.mis-compras:hover{background:rgba(var(--accent-rgb),.08);}

.btn-login-header{
  font-family:var(--font-body);
  font-size:var(--text-sm);
  font-weight:800;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:var(--btn-login-color)!important;
  border:none;padding:10px 24px;border-radius:40px;cursor:pointer;
  transition:all .25s;letter-spacing:.4px;
  text-transform:uppercase;
}
.btn-login-header:hover{transform:translateY(-2px);}

/* =====================================================
   SECCIÓN NÚMEROS AL AZAR
===================================================== */
.azar-section{
  background:var(--surface);
  border:1px solid rgba(var(--accent-rgb),.18);
  border-radius:var(--radius);
  padding:24px 28px 22px;
  margin-bottom:24px;
  position:relative;overflow:hidden;
  box-shadow:var(--shadow-card);
}
.azar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:10px;}

.azar-title{
  font-family:var(--font-display);
  font-size:var(--text-xl);
  letter-spacing:4px;
  color:var(--accent);
  display:flex;align-items:center;gap:10px;
  text-transform:uppercase;
}

.btn-generar{
  font-family:var(--font-cond);font-size:var(--text-sm);font-weight:700;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:var(--btn-login-color);
  border:none;border-radius:40px;padding:10px 24px;cursor:pointer;
  transition:all .2s;letter-spacing:1px;text-transform:uppercase;
}
.btn-generar:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(var(--accent-rgb),.35);}
.btn-generar:active{transform:scale(.96);}

.azar-cards{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;}

.azar-card{
  flex:1;min-width:110px;max-width:170px;
  background:var(--surface2);border:1px solid var(--border);border-radius:16px;
  padding:20px 14px 16px;text-align:center;position:relative;
  transition:all .3s cubic-bezier(.34,1.56,.64,1);
  box-shadow:var(--shadow-card);
}
.azar-card.animando{animation:cardFlip .5s ease;}
@keyframes cardFlip{0%{transform:scale(.8) rotateY(30deg);opacity:0;}100%{transform:scale(1) rotateY(0);opacity:1;}}
.azar-card.caliente{border-color:var(--orange);background:rgba(200,100,0,.07);}

.badge-caliente{
  position:absolute;top:-11px;left:50%;transform:translateX(-50%);
  background:linear-gradient(135deg,#b06010,var(--orange));
  color:#fff;font-size:0.6rem;font-weight:800;letter-spacing:1.5px;
  padding:3px 12px;border-radius:20px;white-space:nowrap;text-transform:uppercase;
  box-shadow:0 4px 12px rgba(200,120,0,.4);
}

.azar-num{
  font-family:var(--font-mono);
  font-size:clamp(2rem,5vw,2.8rem);
  font-weight:700;
  letter-spacing:2px;
  color:var(--text);
  line-height:1;
}
.azar-card.caliente .azar-num{color:var(--orange)!important;}

.azar-img{width:52px;height:52px;object-fit:cover;border-radius:12px;margin:6px auto;display:block;border:1px solid var(--border);}
.azar-name{
  font-family:var(--font-cond);
  font-size:0.75rem;font-weight:600;
  text-transform:uppercase;letter-spacing:1px;line-height:1.3;
  color:var(--text);
}
.btn-azar-apostar{
  margin-top:10px;background:transparent;border:1px solid var(--border);
  color:var(--muted);font-size:0.7rem;font-weight:700;
  border-radius:8px;padding:5px 10px;cursor:pointer;transition:all .2s;width:100%;
}
.btn-azar-apostar:hover{border-color:var(--accent);color:var(--accent);}
.azar-footer{text-align:center;font-size:0.72rem;color:var(--muted);margin-top:16px;opacity:.8;}

/* =====================================================
   OVERLAY LOGIN
===================================================== */
.overlay-bienvenida{
  position:fixed;inset:0;
  background:var(--overlay-bg);
  display:flex;justify-content:center;align-items:center;
  z-index:9000;padding:20px;backdrop-filter:blur(10px);
}
.bienvenida-card{
  background:var(--surface);
  border:1px solid rgba(var(--accent-rgb),.25);
  border-radius:32px;
  padding:40px 32px 48px;
  max-width:500px;
  width:100%;
  text-align:center;
  position:relative;
  animation:popIn .4s cubic-bezier(.34,1.56,.64,1);
  box-shadow:0 20px 40px rgba(0,0,0,0.15);
}
@keyframes popIn{from{opacity:0;transform:scale(.88);}to{opacity:1;transform:scale(1);}}

.role-icons{
  position:absolute;
  top:16px;
  right:16px;
  display:flex;
  gap:12px;
  z-index:10;
}
.role-icon-btn{
  width: 48px !important;
  height: 48px !important;
  min-width: 48px !important;
  min-height: 48px !important;
  border-radius: 50% !important;
  background: #FFFFFF !important;
  border: 2px solid #2E8B57 !important;
  color: #2E8B57;
  font-size: 1.3rem;
  cursor: pointer;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  box-shadow: 0 2px 6px rgba(0,0,0,0.1);
  flex-shrink: 0;
  line-height: 1;
  margin: 0;
  padding: 0;
}
.role-icon-btn:first-child {
  background: #FFFFFF !important;
  border-color: #2E8B57 !important;
}
.role-icon-btn:hover {
  transform: scale(1.08);
  background: #F0F8F0 !important;
  box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}

.btn-cerrar-overlay{
  position:absolute;
  top:16px;
  left:16px;
  background: #FF8C00;
  border: 2px solid #FFFFFF;
  color: #FFFFFF;
  width: 42px;
  height: 42px;
  min-width: 42px;
  min-height: 42px;
  border-radius: 50%;
  font-size: 1.4rem;
  font-weight: bold;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  line-height: 1;
  padding: 0;
  margin: 0;
  flex-shrink: 0;
}
.btn-cerrar-overlay:hover{
  background: #E67600;
  transform: scale(1.05);
}

.bienvenida-card img {
  max-height: 70px;
  margin-bottom: 8px;
}
.bienvenida-card h2{
  font-family:var(--font-display);
  font-size:var(--text-2xl);
  letter-spacing:3px;
  color:var(--accent);
  margin-bottom: 12px;
}
.bienvenida-card > p{
  color:var(--text-light);
  font-size:var(--text-sm);
  margin-bottom: 24px;
  font-weight: 500;
}

.tabs-login{
  display: flex;
  gap: 16px;
  justify-content: center;
  margin-bottom: 32px;
  background: transparent;
  padding: 0;
}
.tab-btn{
  flex: 0 1 auto;
  padding: 10px 28px;
  border: 2px solid var(--border);
  background: var(--surface2);
  color: var(--muted);
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: 700;
  cursor: pointer;
  border-radius: 60px;
  transition: all 0.2s ease;
  letter-spacing: 0.5px;
}
.tab-btn.active{
  background: linear-gradient(135deg, var(--accent), var(--accent2));
  color: white;
  border-color: var(--accent);
  box-shadow: 0 4px 12px rgba(var(--accent-rgb),0.3);
}
.tab-btn:hover:not(.active){
  border-color: var(--accent);
  color: var(--accent);
  background: rgba(var(--accent-rgb),0.05);
}

.form-group{
  margin-bottom: 20px;
  text-align: left;
}
.form-group label{
  font-family: var(--font-cond);
  font-size: var(--text-xs);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--muted);
  display: block;
  margin-bottom: 6px;
  font-weight: 700;
}
.form-group input{
  width: 100%;
  background: #FFFFFF;
  border: 1.5px solid var(--border);
  border-radius: 16px;
  padding: 14px 18px;
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: #001000;
  font-weight: 600;
  outline: none;
  transition: all 0.2s;
}
.form-group input:focus{
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(46,104,32,0.1);
}
.form-group input::placeholder{
  color: #aaa;
  font-weight: 400;
}
.form-group .hint{
  font-size: var(--text-xs);
  color: var(--muted);
  margin-top: 6px;
  font-style: italic;
}
.password-wrapper{
  position: relative;
  display: flex;
  align-items: center;
}
.password-wrapper input{
  flex: 1;
  padding-right: 48px;
}
.password-toggle{
  position: absolute;
  right: 14px;
  cursor: pointer;
  font-size: 1.2rem;
  background: transparent;
  color: #888;
  transition: color 0.2s;
}
.password-toggle:hover{
  color: var(--accent);
}

.btn-ingresar{
  width: 100%;
  background: linear-gradient(135deg, var(--accent), var(--accent2));
  color: #fff;
  font-weight: 800;
  font-size: var(--text-base);
  border: none;
  border-radius: 60px;
  padding: 16px;
  cursor: pointer;
  font-family: var(--font-cond);
  text-transform: uppercase;
  letter-spacing: 1.2px;
  margin-top: 12px;
  transition: all 0.2s;
}
.btn-ingresar:hover{
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(var(--accent-rgb),0.35);
}
.error-msg{
  color: var(--red);
  font-size: var(--text-xs);
  margin-top: 10px;
  text-align: center;
  font-weight: 600;
}
.link-recuperar{
  color: var(--accent);
  font-size: var(--text-xs);
  text-align: center;
  margin-top: 16px;
  cursor: pointer;
  text-decoration: underline;
  display: inline-block;
  background: none;
  border: none;
  font-weight: 600;
}

/* =====================================================
   RESULTADOS
===================================================== */
.resultados-strip{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:22px 26px;margin-bottom:24px;
  box-shadow:var(--shadow-card);
}
.strip-title{
  font-family:var(--font-display);
  font-size:var(--text-xl);
  letter-spacing:3px;
  color:var(--text);margin-bottom:18px;text-transform:uppercase;
  display:flex;align-items:center;gap:12px;
}
.strip-title::after{content:'';flex:1;height:1px;background:var(--border);}

.dias-resultados{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
@media(max-width:600px){.dias-resultados{grid-template-columns:1fr;}}

.dia-card{background:var(--surface2);border-radius:14px;padding:18px;border:1px solid var(--border);}
.dia-label{
  font-family:var(--font-cond);
  font-size:var(--text-sm);font-weight:700;
  text-transform:uppercase;letter-spacing:3px;
  color:var(--accent);margin-bottom:14px;
}

.sorteo-result-row{display:flex;align-items:center;gap:12px;font-size:var(--text-sm);flex-wrap:wrap;margin-bottom:10px;}
.hora-tag{
  font-family:var(--font-mono);font-size:var(--text-sm);
  color:var(--muted);min-width:76px;font-weight:700;
}

.num-ganador{
  font-family:var(--font-mono);
  font-size:clamp(1.8rem,4vw,2.4rem);
  font-weight:700;letter-spacing:2px;
  color:var(--accent);line-height:1;
}
.nombre-ganador{color:var(--text-light);font-size:var(--text-sm);font-weight:600;opacity:.9;display:flex;align-items:center;gap:6px;}
.nombre-ganador-img{width:26px;height:26px;object-fit:cover;border-radius:6px;}

/* =====================================================
   SORTEOS NAV
===================================================== */
.sorteos-nav{display:flex;gap:10px;margin-bottom:22px;flex-wrap:wrap;}
.sorteo-chip{
  font-family:var(--font-mono);font-size:var(--text-base);font-weight:700;
  background:var(--surface2);border:1.5px solid var(--border);
  padding:11px 24px;border-radius:40px;
  display:flex;align-items:center;gap:8px;color:var(--muted);transition:all .2s;
}
.sorteo-chip.activo{border-color:var(--green);color:var(--green);background:rgba(var(--accent-rgb),.08);}
.sorteo-chip.manana-chip{border-color:var(--blue);color:var(--blue);}
.sorteo-chip.bloqueado-chip{border-color:var(--red);color:var(--red);}

.estado-banner{border-radius:14px;padding:14px 20px;margin-bottom:18px;font-weight:600;font-size:var(--text-sm);display:none;border:1px solid;animation:slideIn .3s ease;}
@keyframes slideIn{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:translateY(0);}}
.estado-banner.bloqueado{background:rgba(224,80,80,.08);border-color:rgba(224,80,80,.3);color:var(--red);display:block;}
.estado-banner.manana{background:rgba(80,144,232,.06);border-color:rgba(80,144,232,.22);color:var(--blue);display:block;}
.estado-banner.info{background:rgba(var(--accent-rgb),.06);border-color:rgba(var(--accent-rgb),.22);color:var(--accent);display:block;}

/* =====================================================
   SECCIÓN NÚMEROS
===================================================== */
.numeros-header-row{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:18px;flex-wrap:wrap;gap:10px;
}
.numeros-titulo{
  font-family:var(--font-display);
  font-size:var(--text-xl);
  letter-spacing:3px;
  color:var(--text-light);
  text-transform:uppercase;
}
.numeros-controles{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}

.toggle-vista{
  display:flex;background:var(--surface2);border:1px solid var(--border);
  border-radius:40px;padding:3px;gap:2px;
}
.toggle-vista-btn{
  font-family:var(--font-cond);font-size:var(--text-sm);font-weight:700;
  background:transparent;border:none;
  color:var(--muted);padding:7px 16px;border-radius:40px;
  cursor:pointer;transition:all .2s;letter-spacing:.5px;text-transform:uppercase;
}
.toggle-vista-btn.activo{
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:var(--btn-login-color);
}

.lineas-filtro-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px;animation:fadeIn .25s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:translateY(0);}}
.linea-filtro-chip{
  font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;
  background:var(--surface2);border:1px solid var(--border);
  color:var(--muted);padding:5px 12px;border-radius:40px;
  cursor:pointer;transition:all .2s;
}
.linea-filtro-chip:hover{border-color:var(--accent);color:var(--accent);}
.linea-filtro-chip.activa{background:rgba(var(--accent-rgb),.15);border-color:var(--accent);color:var(--accent);}

.lineas-nav{display:flex;flex-direction:column;gap:10px;margin-bottom:20px;}
.linea-btn{
  width:100%;background:var(--surface2);border:1.5px solid var(--border);
  border-radius:14px;padding:16px 24px;
  display:flex;align-items:center;justify-content:space-between;
  cursor:pointer;transition:all .22s cubic-bezier(.34,1.3,.64,1);
  font-family:var(--font-display);
  font-size:var(--text-lg);
  letter-spacing:2px;
  color:var(--accent);position:relative;overflow:hidden;
  box-shadow:var(--shadow-card);
  text-transform:uppercase;
}
.linea-btn:hover{border-color:var(--accent);transform:translateY(-2px);}
.linea-btn.activa{border-color:var(--accent);background:var(--surface);}
.linea-numeros{display:flex;gap:8px;flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted);opacity:.7;}
.linea-emoji-strip{display:flex;gap:4px;font-size:0.9rem;}
.linea-emoji-img{width:26px;height:26px;object-fit:cover;border-radius:6px;}
.linea-selected-count{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--green);font-weight:700;min-width:60px;text-align:right;}

/* =====================================================
   GRID DE NÚMEROS
===================================================== */
.grid-numeros{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:9px;margin-bottom:20px;
  animation:expandGrid .25s ease;
}
@keyframes expandGrid{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:translateY(0);}}
@media(max-width:640px){.grid-numeros{grid-template-columns:repeat(5,1fr);gap:7px;}}
@media(max-width:400px){.grid-numeros{grid-template-columns:repeat(4,1fr);gap:6px;}}
.grid-numeros.grid-completo{grid-template-columns:repeat(10,1fr);}
@media(max-width:900px){.grid-numeros.grid-completo{grid-template-columns:repeat(7,1fr);}}
@media(max-width:640px){.grid-numeros.grid-completo{grid-template-columns:repeat(5,1fr);}}
@media(max-width:400px){.grid-numeros.grid-completo{grid-template-columns:repeat(4,1fr);}}

/* =====================================================
   TARJETA DE NÚMERO
===================================================== */
.num-card{
  background:var(--surface2);
  border:1.5px solid var(--border);
  border-radius:14px;padding:13px 8px 11px;text-align:center;
  cursor:pointer;
  transition:all .22s cubic-bezier(.34,1.3,.64,1);
  position:relative;overflow:hidden;user-select:none;
  box-shadow:var(--shadow-card);
}
.num-card:hover:not(.bloqueado){
  border-color:var(--accent);
  transform:translateY(-3px) scale(1.04);
  background:rgba(var(--accent-rgb),.07);
}
.num-card.seleccionado{
  background:rgba(var(--accent-rgb),.1);
  border-color:var(--accent);
}
.num-card.bloqueado{
  opacity:.28;cursor:not-allowed;pointer-events:none;
  filter:grayscale(.7);
  border-color:rgba(200,60,60,.25)!important;
}
.num-card.bloqueado::after{
  content:'🔒';
  position:absolute;top:2px;right:4px;
  font-size:0.55rem;opacity:.6;
}

.num-card .n-num{
  font-family:var(--font-mono);
  font-size:clamp(1.3rem,3.5vw,1.7rem);
  font-weight:700;
  letter-spacing:1px;
  color:var(--accent);
  line-height:1;
}
.num-card .n-img{
  width:50px;height:50px;object-fit:cover;border-radius:12px;
  margin:5px auto;display:block;border:1px solid var(--border);
}
.num-card .n-name{
  font-family:var(--font-cond);
  font-size:0.68rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.5px;line-height:1.2;margin-top:4px;
  color:var(--text);
}
.num-card .n-apuesta{
  position:absolute;bottom:4px;right:5px;
  font-family:var(--font-mono);font-size:0.6rem;
  background:var(--accent);color:#fff;
  padding:2px 5px;border-radius:4px;font-weight:700;
}

.linea-divider{
  grid-column:1 / -1;display:flex;align-items:center;gap:10px;
  padding:6px 0 4px;
  font-family:var(--font-cond);font-size:var(--text-sm);
  font-weight:700;letter-spacing:2px;color:var(--muted);opacity:.7;text-transform:uppercase;
}
.linea-divider::before,.linea-divider::after{content:'';flex:1;height:1px;background:var(--border);}

/* =====================================================
   CARRITO
===================================================== */
.carrito-section{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:26px;margin-top:8px;
  box-shadow:var(--shadow-card);
}
.carrito-title{
  font-family:var(--font-display);
  font-size:var(--text-xl);
  letter-spacing:3px;margin-bottom:18px;
  color:var(--text);text-transform:uppercase;
}

.carrito-lista{max-height:270px;overflow-y:auto;scrollbar-width:thin;}
.carrito-item{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--border);font-size:var(--text-sm);}
.ci-num{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;color:var(--accent);}
.ci-img{width:34px;height:34px;object-fit:cover;border-radius:8px;margin-right:8px;}
.ci-amount{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--green);font-weight:700;}
.carrito-vacio{color:var(--muted);font-size:var(--text-sm);text-align:center;padding:28px;font-weight:500;}

.carrito-footer{margin-top:18px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;}
.total-label{
  font-family:var(--font-cond);
  font-size:var(--text-xs);color:var(--muted);
  text-transform:uppercase;letter-spacing:2px;font-weight:700;
}
.total-val{
  font-family:var(--font-mono);
  font-size:clamp(1.8rem,4vw,2.4rem);
  font-weight:700;color:var(--accent);
}

.btn-confirmar{
  background:linear-gradient(135deg,var(--green),#1A6020);
  color:#fff;font-weight:800;font-size:var(--text-sm);border:none;
  border-radius:14px;padding:14px 30px;cursor:pointer;
  font-family:var(--font-cond);letter-spacing:1px;text-transform:uppercase;
  transition:all .2s;
}
.btn-confirmar:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px rgba(var(--accent-rgb),.3);}
.btn-confirmar:disabled{background:var(--surface2);color:var(--muted);cursor:not-allowed;}

/* =====================================================
   MODALES
===================================================== */
.modal-overlay{
  position:fixed;inset:0;background:var(--modal-bg);
  display:flex;justify-content:center;align-items:center;
  z-index:8000;padding:20px;backdrop-filter:blur(6px);
}
.modal-box{
  background:var(--surface);border:1px solid rgba(var(--accent-rgb),.22);
  border-radius:24px;padding:32px;width:100%;max-width:370px;
  text-align:center;animation:popIn .3s cubic-bezier(.34,1.56,.64,1);
  box-shadow:var(--shadow-card);
}
.modal-box h3{
  font-family:var(--font-display);
  font-size:var(--text-2xl);
  letter-spacing:2px;margin-bottom:6px;color:var(--text);
}
.modal-box p{color:var(--text-light);font-size:var(--text-sm);margin-bottom:24px;font-weight:500;}

.monto-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:20px;}
.monto-btn{
  background:var(--surface2);border:2px solid var(--border);
  color:var(--text);font-family:var(--font-mono);font-size:var(--text-sm);
  padding:12px 4px;border-radius:10px;cursor:pointer;transition:all .18s;font-weight:700;
}
.monto-btn:hover{background:rgba(var(--accent-rgb),.1);border-color:var(--accent);color:var(--accent);}
.monto-btn.activo{
  background:var(--accent)!important;border-color:var(--accent)!important;
  color:#fff!important;box-shadow:0 4px 16px rgba(var(--accent-rgb),.45);
  transform:scale(1.06);font-weight:800;
}
.monto-custom{display:flex;gap:8px;margin-bottom:20px;align-items:center;}
.monto-custom span{color:var(--muted);font-weight:700;}
.monto-custom input{
  flex:1;background:var(--surface2);border:2px solid var(--border);color:var(--text);
  border-radius:10px;padding:10px 14px;font-family:var(--font-mono);font-size:var(--text-sm);
  outline:none;transition:border-color .2s;font-weight:700;
}
.monto-custom input:focus{border-color:var(--accent);}
.modal-btns{display:flex;gap:10px;}
.btn-cancelar-m{
  flex:1;background:var(--surface2);border:1px solid var(--border);
  color:var(--muted);border-radius:12px;padding:12px;cursor:pointer;
  font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);
}
.btn-cancelar-m:hover{border-color:var(--red);color:var(--red);}
.btn-aceptar-m{
  flex:2;background:linear-gradient(135deg,var(--accent),var(--accent2));
  color:#fff;border:none;border-radius:12px;padding:12px;cursor:pointer;
  font-family:var(--font-cond);font-weight:700;font-size:var(--text-sm);
  text-transform:uppercase;letter-spacing:.8px;
}

.alerta-limite{
  background:rgba(200,80,0,.1);
  border:1.5px solid rgba(200,100,0,.4);
  border-radius:10px;padding:10px 14px;
  margin-bottom:16px;font-size:var(--text-sm);
  color:var(--orange);font-weight:600;text-align:left;
  line-height:1.5;
}

.modal-grande-overlay{
  position:fixed;inset:0;background:var(--modal-bg);
  display:flex;justify-content:center;align-items:flex-start;
  z-index:8500;padding:20px;overflow-y:auto;backdrop-filter:blur(6px);
}
.modal-grande-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:24px;width:100%;max-width:700px;
  margin:auto;padding:32px;animation:popIn .3s ease;
  box-shadow:var(--shadow-card);
}
.modal-grande-card h2{
  font-family:var(--font-display);
  font-size:var(--text-2xl);
  letter-spacing:3px;margin-bottom:6px;
  text-align:center;color:var(--text);text-transform:uppercase;
}

.revisar-meta{text-align:center;color:var(--text-light);font-size:var(--text-sm);margin-bottom:24px;font-weight:500;}
.factura-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);}
.factura-table th{
  background:rgba(var(--accent-rgb),.10);color:var(--accent);font-weight:700;
  text-transform:uppercase;letter-spacing:1px;font-size:0.7rem;
  padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;
}
.factura-table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text-light);}
.num-td{font-family:var(--font-mono);font-size:1.4rem;font-weight:700;color:var(--accent);}
.num-td-img{width:34px;height:34px;object-fit:cover;border-radius:6px;vertical-align:middle;margin-right:6px;}
.premio-td{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--green);font-weight:700;}

.total-row{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border);margin-top:16px;padding-top:16px;}
.info-premio-box{background:rgba(var(--accent-rgb),.06);border:1px solid rgba(var(--accent-rgb),.15);border-radius:12px;padding:14px;margin-top:16px;font-size:var(--text-sm);color:var(--text-light);text-align:center;line-height:1.7;font-weight:500;}

.modal-btns-row{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;}
.btn-rv{flex:1;min-width:100px;padding:13px;border-radius:12px;font-family:var(--font-cond);font-weight:700;font-size:var(--text-sm);cursor:pointer;border:none;transition:all .2s;text-transform:uppercase;letter-spacing:.8px;}
.btn-rv.back{background:var(--surface2);color:var(--text-light);}
.btn-rv.finalizar{background:linear-gradient(135deg,var(--green),#1A6020);color:#fff;}
.btn-rv.png{background:#1050A0;color:white;}
.btn-rv.cerrar{background:var(--surface2);color:var(--muted);}

.vendedores-modal-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:12px;max-height:400px;overflow-y:auto;padding:4px;margin-bottom:20px;
}
.vendedor-modal-card{
  background:var(--surface2);border:1px solid var(--border);
  border-radius:14px;padding:16px;cursor:pointer;transition:all .2s;
  display:flex;align-items:center;gap:12px;
}
.vendedor-modal-card:hover{border-color:var(--accent);transform:translateY(-2px);background:rgba(var(--accent-rgb),.05);}
.vendedor-modal-avatar{
  width:50px;height:50px;border-radius:50%;object-fit:cover;
  background:var(--surface3);display:flex;align-items:center;justify-content:center;
  font-size:1.6rem;flex-shrink:0;
}
.vendedor-modal-info{flex:1;}
.vendedor-modal-nombre{font-family:var(--font-display);font-size:1.3rem;color:var(--accent);line-height:1.2;}
.vendedor-modal-email{font-size:0.72rem;color:var(--muted);}
.vendedor-modal-tel{font-size:0.72rem;font-family:var(--font-mono);color:var(--green);font-weight:700;}

.felicitaciones-card{
  background:linear-gradient(135deg,rgba(var(--accent-rgb),.14),rgba(40,120,40,.10));
  border:2px solid var(--accent);border-radius:20px;padding:26px;
  text-align:center;margin-bottom:22px;
}
.felicitaciones-card h3{
  font-family:var(--font-display);
  font-size:var(--text-xl);
  color:var(--accent);margin-bottom:8px;text-transform:uppercase;
}
.btn-premio{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border:none;border-radius:12px;padding:12px 26px;font-weight:700;cursor:pointer;font-family:var(--font-cond);text-transform:uppercase;margin-top:16px;}

footer{
  text-align:center;padding:30px 0;color:var(--muted);
  font-size:var(--text-sm);font-weight:500;
  border-top:1px solid var(--border);margin-top:40px;
  line-height:2.2;background:transparent;
}
footer strong{color:var(--accent);font-weight:700;}

::-webkit-scrollbar{width:4px;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px;}

@media(max-width:768px){
  .azar-cards{gap:10px;}
  .azar-num{font-size:1.8rem;}
  .num-card .n-num{font-size:1.2rem;}
  .carrito-title,.strip-title,.numeros-titulo{font-size:1.6rem;}
  .total-val{font-size:1.8rem;}
  .clock-badge{font-size:0.95rem;padding:7px 14px;}
}
@media(max-width:480px){
  .dias-resultados{grid-template-columns:1fr;}
  .sorteo-chip{font-size:0.85rem;padding:9px 16px;}
  .azar-num{font-size:1.6rem;}
}
</style>
</head>
<body>

<!-- LOGIN OVERLAY -->
<div class="overlay-bienvenida" id="overlayBienvenida" style="display:none">
  <div class="bienvenida-card">
    <button class="btn-cerrar-overlay" onclick="cerrarOverlayLogin()" title="Cerrar">✕</button>
    <div class="role-icons">
      <button class="role-icon-btn" onclick="redirigirAdmin()" title="Acceso Administrador">⚙️</button>
      <button class="role-icon-btn" onclick="redirigirVendedor()" title="Acceso Vendedor">🏪</button>
    </div>
    <div style="text-align:center;margin-bottom:16px;">
      <img src="https://ladiaria.online/wp-content/uploads/2026/05/logo-11-LA-DIARIA-1.png" style="height:64px;" onerror="this.style.display='none'">
    </div>
    <h2>LA DIARIA</h2>
    <p>Inicia sesión o crea tu cuenta para confirmar tu apuesta.</p>
    <div class="tabs-login">
      <button class="tab-btn active" onclick="switchTab('registro')">Registrarse</button>
      <button class="tab-btn" onclick="switchTab('login')">Iniciar Sesión</button>
    </div>
    <div id="tabRegistro">
      <div class="form-group"><label>Primer Nombre *</label><input type="text" id="regNombre" placeholder="Tu nombre" maxlength="40"></div>
      <div class="form-group"><label>Correo Electrónico *</label><input type="email" id="regEmail" placeholder="tu@email.com" maxlength="100"><div class="hint">Usado para recuperar contraseña</div></div>
      <div class="form-group"><label>Teléfono / WhatsApp *</label><input type="tel" id="regTel" placeholder=" 9999-9999" maxlength="20"></div>
      <div class="form-group"><label>Contraseña *</label><div class="password-wrapper"><input type="password" id="regPass" placeholder="Mínimo 6 caracteres" maxlength="40"><span class="password-toggle" onclick="togglePassword('regPass',this)">👁️</span></div></div>
      <div id="regError" class="error-msg"></div>
      <button class="btn-ingresar" onclick="registrarCliente()">CREAR CUENTA 🎰</button>
    </div>
    <div id="tabLogin" style="display:none">
      <div class="form-group"><label>Teléfono / WhatsApp</label><input type="tel" id="loginTel" placeholder=" 9999-9999" maxlength="20"></div>
      <div class="form-group"><label>Contraseña</label><div class="password-wrapper"><input type="password" id="loginPass" placeholder="••••••••" maxlength="40"><span class="password-toggle" onclick="togglePassword('loginPass',this)">👁️</span></div></div>
      <div id="loginError" class="error-msg"></div>
      <button class="btn-ingresar" onclick="loginCliente()">INGRESAR →</button>
      <button class="link-recuperar" onclick="alert('Función de recuperación')">¿Olvidaste tu contraseña?</button>
    </div>
  </div>
</div>

<!-- MODAL CANTIDAD -->
<div class="modal-overlay" id="modalCantidad" style="display:none">
  <div class="modal-box">
    <h3 id="modalNumPreview"></h3>
    <p id="modalNumNombre"></p>
    <div id="alertaLimite" class="alerta-limite" style="display:none;"></div>
    <div class="monto-grid" id="montoGrid"></div>
    <div class="monto-custom">
      <span style="color:var(--muted);font-size:var(--text-sm);font-weight:700;">L</span>
      <input type="number" id="montoCustomInput" placeholder="Otro monto" min="5" step="5">
    </div>
    <div class="modal-btns">
      <button class="btn-cancelar-m" onclick="cerrarModalCantidad()">Cancelar</button>
      <button class="btn-aceptar-m" onclick="guardarApuesta()">Apostar</button>
    </div>
  </div>
</div>

<div class="modal-grande-overlay" id="modalRevisar" style="display:none">
  <div class="modal-grande-card" id="revisarCard"></div>
</div>
<div class="modal-grande-overlay" id="modalFactura" style="display:none">
  <div class="modal-grande-card" id="facturaCard"></div>
</div>
<div class="modal-grande-overlay" id="modalMisCompras" style="display:none">
  <div class="modal-grande-card" id="misComprasContent"></div>
</div>
<div class="modal-grande-overlay" id="modalVendedoresLista" style="display:none">
  <div class="modal-grande-card" id="vendedoresListaCard" style="max-width:600px;"></div>
</div>

<div id="printRoot" style="display:none;"></div>

<div id="app">
  <header class="site-header">
    <div class="logo">
      <img src="https://ladiaria.online/wp-content/uploads/2026/05/logo-11-LA-DIARIA-1.png" class="logo-img" onerror="this.style.display='none'">
    </div>

    <div class="header-right">
      <div class="clock-badge">
        <div class="clock-dot"></div>
        <span id="relojDisplay">--:--:-- --</span>
      </div>
      <button class="btn-login-header" id="btnIniciarSesion" onclick="abrirOverlayLogin()">🔑 Iniciar Sesión</button>
      <button class="btn-header mis-compras" id="btnMisCompras" onclick="mostrarMisCompras()" style="display:none">🧾 Mis Compras</button>
      <button class="btn-header" onclick="cerrarSesionCliente()" id="btnCerrarSesion" style="display:none">Salir</button>
    </div>
  </header>
 <div class="resultados-strip">
    <div class="strip-title">🏆 Últimos Resultados</div>
    <div class="dias-resultados" id="resultadosContainer">
      <div style="text-align:center;padding:22px;color:var(--muted);">Cargando...</div>
    </div>
  </div>
  <div class="sorteos-nav" id="sorteosNav">
    <div class="sorteo-chip" data-hora="11:00 AM">🕚 11:00 AM</div>
    <div class="sorteo-chip" data-hora="3:00 PM">🕒 3:00 PM</div>
    <div class="sorteo-chip" data-hora="9:00 PM">🕘 9:00 PM</div>
  </div>
  <div class="estado-banner" id="estadoBanner"></div>
  <div id="felicitacionesContainer" style="margin-bottom:22px;"></div>
  <div class="numeros-header-row">
    <span class="numeros-titulo">Elige tus Números</span>
    <div class="numeros-controles">
      <span id="sorteoParaLabel" style="font-size:var(--text-sm);color:var(--muted);font-weight:700;">📅 Cargando...</span>
      <div class="toggle-vista">
        <button class="toggle-vista-btn activo" id="btnVistaTodos" onclick="setVista('todos')">📋 Todos</button>
        <button class="toggle-vista-btn" id="btnVistaLinea" onclick="setVista('linea')">🔢 Por Línea</button>
      </div>
    </div>
  </div>
  <div id="numerosContenedor"></div>
  <div class="carrito-section">
    <div class="carrito-title">🧾 Tu Apuesta</div>
    <div class="carrito-lista" id="carritoLista">
      <div class="carrito-vacio">Selecciona números arriba para apostar</div>
    </div>
    <div class="carrito-footer">
      <div>
        <div class="total-label">Total</div>
        <div class="total-val" id="totalVal">L 0</div>
      </div>
      <button class="btn-confirmar" id="btnConfirmar" disabled onclick="solicitarConfirmar()">Confirmar Apuesta →</button>
    </div>
  </div>
  <footer>
    ⏰ Sorteos: <strong>11:00 AM · 3:00 PM · 9:00 PM</strong> (Hora Honduras)<br>
    🚫 Compras bloqueadas 5 min antes y 7 min después de cada sorteo<br>
    💰 Por cada <strong>L 5</strong> apostado ganas <strong>L 350</strong> si aciertas
  </footer>
</div>

<script>
// =========================================================
//  REDIRECCIONES
// =========================================================
function redirigirAdmin(){window.location.href='/panel-admin/';}
function redirigirVendedor(){window.location.href='/panel-vendedor/';}

// =========================================================
//  DATOS
// =========================================================
const LOGO_URL = "https://ladiaria.online/wp-content/uploads/2026/05/logo-11-LA-DIARIA-1.png";
const LOGO_PAGO_URL = "https://ladiaria.online/wp-content/uploads/2026/05/logo-11-LA-DIARIA.png";
const NOMBRES=["AVION","PIES","MUJER","MUERTO","TIGRE","EMBARAZADA","ELEFANTE","NAVAJA","CONEJO","HOMBRE","ANILLO","PERRO","CABALLO","GATO","BODA","RATON","NIÑA","JOVEN","ANGEL","MARIPOSA","ESPEJO","PAJARO","ATAUD","MONO","SAPO","BALANZA","BANDERA","JUEGO","GALLO","PADRE","BOLO","ALACRAN","CULEBRA","CARPINTERO","MUSICA","VIRGEN","VIEJITA","SUERTE","PISTOLA","JABON","CIELO","NOVIA","MADRE","PANTERA","MESAS","IGLESIA","FAMILIA","BANCO","ESTRELLA","SOMBRA","LUNA NUEVA","POLICIA","ZORRILLO","LLANTA","LICOR","OLAS","ARBOL","CUCHILLO","VENADO","SELVA","DRAGON","GUERRA","LAGARTO","COCO","MUEBLE","PINTURA","DIABLO","VACA","LADRON","SOLDADO","ORO","ZAPATO","ARCO","FUEGO","EDIFICIO","REINA","PALOMAS","HUMO","TIENDA","FLORES","CAFÉ","RIELES","ESCUELA","BOTE","CORONAS","CASA","RELOJ","LEON","PLATOS","BUHO","LENTES","TORTUGA","AGUILA","CARTERO","CARRO","COSTURERA","DINERO","VIEJITO","BAILES","ARETES"];
const HORARIOS=[{label:"11:00 AM",min:11*60},{label:"3:00 PM",min:15*60},{label:"9:00 PM",min:21*60}];
const MINS_ANTES_BLOQUEO = 5;
const MINS_DESPUES_REABRIR = 7;
const MONTOS_RAPIDOS=[5,10,20,25,50,100,200,500];
const AJAX_URL = '/wp-admin/admin-ajax.php';

// =========================================================
//  PERSISTENCIA DEL CARRITO (1 HORA)
// =========================================================
const CARRITO_STORAGE_KEY = 'ladiaria_carrito_persistente';
const CARRITO_EXPIRACION = 60 * 60 * 1000; // 1 hora

function guardarCarritoEnStorage() {
    if (typeof window.seleccion !== 'undefined' && window.seleccion !== null) {
        var data = {
            items: JSON.parse(JSON.stringify(window.seleccion)),
            timestamp: Date.now()
        };
        localStorage.setItem(CARRITO_STORAGE_KEY, JSON.stringify(data));
    }
}

function cargarCarritoDesdeStorage() {
    var guardado = localStorage.getItem(CARRITO_STORAGE_KEY);
    if (!guardado) return null;
    
    try {
        var data = JSON.parse(guardado);
        var ahora = Date.now();
        
        // Verificar expiración
        if (ahora - data.timestamp > CARRITO_EXPIRACION) {
            localStorage.removeItem(CARRITO_STORAGE_KEY);
            return null;
        }
        
        return data.items;
    } catch(e) {
        localStorage.removeItem(CARRITO_STORAGE_KEY);
        return null;
    }
}

function limpiarCarritoStorage() {
    localStorage.removeItem(CARRITO_STORAGE_KEY);
}

// =========================================================
//  VARIABLES GLOBALES (con persistencia)
// =========================================================
let horaHN=null, bloqueado=false;
let horarioActivo=HORARIOS[0], proximoEsMañana=false;
let numActual=null, montoSeleccionado=5;
window.clienteActual = null;
let resultadosHistoricos={};
let vendedorAsignadoPago = null;
let limitesNumeros = {};

// Inicializar seleccion con datos guardados (si existen)
window.seleccion = cargarCarritoDesdeStorage() || {};

let vistaActual = 'todos';
let lineaFiltroActiva = null;
let lineaAbierta = null;

// =========================================================
//  AJAX
// =========================================================
async function ajaxGet(action){
  try{
    const r=await fetch(`${AJAX_URL}?action=${action}&_=${Date.now()}`);
    const j=await r.json();
    return j.success ? j.data : null;
  }catch(e){ console.error(action,e); return null; }
}
async function ajaxPost(action, payload){
  try{
    const r=await fetch(`${AJAX_URL}?action=${action}`,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(payload)});
    const j=await r.json();
    return j.success;
  }catch(e){ console.error(action,e); return false; }
}

async function getVendedores()       { return await ajaxGet('get_vendedores') || []; }
async function getVendedoresActivos(){ const v=await getVendedores(); return v.filter(x=>x.activo===true); }
async function getCompras()          { return await ajaxGet('get_compras') || []; }
async function saveCompras(d)        { return await ajaxPost('save_compras', d); }
async function getClientes()         { return await ajaxGet('get_clientes') || []; }
async function saveClientes(d)       { return await ajaxPost('save_clientes', d); }
async function getCuentasBancarias() { return await ajaxGet('get_cuentas_bancarias') || []; }
async function getReclamos()         { return await ajaxGet('get_reclamos') || []; }
async function saveReclamos(d)       { return await ajaxPost('save_reclamos', d); }

async function getResultadosAPI(){
  const data = await ajaxGet('get_resultados');
  resultadosHistoricos = (data && typeof data === 'object') ? data : {};
  return resultadosHistoricos;
}

async function getLimitesNumeros(){
  try{
    const data = await ajaxGet('get_limites_numeros');
    if(data && typeof data === 'object'){
      limitesNumeros = data;
    } else {
      limitesNumeros = {};
    }
  }catch(e){
    limitesNumeros = {};
  }
  return limitesNumeros;
}

async function cargarResultados(){
  await getResultadosAPI();
  renderResultados();
}

function fmt(n){ return Number(n).toLocaleString('es-HN'); }

// =========================================================
//  RESULTADOS
// =========================================================
function fechaAString(d){
  if(!d) return '';
  return `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`;
}
function obtenerResultado(fecha, label){
  if(!fecha || !(fecha instanceof Date) || isNaN(fecha.getTime())) return null;
  const fs = fechaAString(fecha);
  return (resultadosHistoricos[fs] && resultadosHistoricos[fs][label]) ? resultadosHistoricos[fs][label] : null;
}
async function actualizarResultados(){
  await getResultadosAPI();
  renderResultados();
}
function renderResultados(){
  const hoy  = horaHN || new Date();
  const ayer = new Date(hoy); ayer.setDate(ayer.getDate()-1);
  const fmtF = d => d.toLocaleDateString('es-HN',{weekday:'long',day:'numeric',month:'short'});
  const mins = minsDia(hoy);
  function buildRow(s, fecha, esHoy){
    const resultado = obtenerResultado(fecha, s.label);
    if(esHoy && mins < s.min){
      return `<div class="sorteo-result-row"><span class="hora-tag">${s.label}</span><span style="color:var(--muted);font-size:var(--text-sm);">ESPERANDO EL SORTEO..</span></div>`;
    }
    if(!resultado){
      return `<div class="sorteo-result-row"><span class="hora-tag">${s.label}</span><span style="color:var(--orange);font-size:var(--text-sm);">⏳ Sin resultado</span></div>`;
    }
    const ni = parseInt(resultado,10);
    const nombre = (!isNaN(ni) && NOMBRES[ni]) ? NOMBRES[ni] : '';
    const numStr = String(ni).padStart(2,'0');
    const imgUrl = `https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${numStr}.jpg`;
    return `<div class="sorteo-result-row">
      <span class="hora-tag">${s.label}</span>
      <span class="num-ganador">${resultado}</span>
      <div class="nombre-ganador"><img src="${imgUrl}" class="nombre-ganador-img" onerror="this.style.display='none'"><span>${nombre}</span><div style="font-size:0.7rem;color:var(--muted);"></div></div>
    </div>`;
  }
  const html = `
    <div class="dia-card">
      <div class="dia-label">HOY — ${fmtF(hoy)}</div>
      <div>${HORARIOS.map(s=>buildRow(s,hoy,true)).join('')}</div>
    </div>
    <div class="dia-card">
      <div class="dia-label">AYER — ${fmtF(ayer)}</div>
      <div>${HORARIOS.map(s=>buildRow(s,ayer,false)).join('')}</div>
    </div>`;
  const container = document.getElementById('resultadosContainer');
  if(container) container.innerHTML = html;
}

// =========================================================
//  CLIENTES / SESIÓN
// =========================================================
function abrirOverlayLogin(){ document.getElementById('overlayBienvenida').style.display='flex'; }
function cerrarOverlayLogin(){ document.getElementById('overlayBienvenida').style.display='none'; }
function togglePassword(id,el){ const i=document.getElementById(id); i.type=i.type==='password'?'text':'password'; el.textContent=i.type==='password'?'👁️':'🙈'; }
function switchTab(t){
  document.querySelectorAll('.tab-btn').forEach((b,i)=>b.classList.toggle('active',(i===0&&t==='registro')||(i===1&&t==='login')));
  document.getElementById('tabRegistro').style.display=t==='registro'?'block':'none';
  document.getElementById('tabLogin').style.display=t==='login'?'block':'none';
}
async function registrarCliente(){
  const nombre=document.getElementById('regNombre').value.trim();
  const email=document.getElementById('regEmail').value.trim();
  const tel=document.getElementById('regTel').value.trim();
  const pass=document.getElementById('regPass').value;
  const err=document.getElementById('regError');
  if(!nombre||!email||!tel||!pass){err.textContent='Todos los campos son obligatorios.';return;}
  if(pass.length<6){err.textContent='Mínimo 6 caracteres';return;}
  const clientes=await getClientes();
  if(clientes.find(c=>c.tel===tel)){err.textContent='Teléfono ya registrado';return;}
  const nuevo={nombre,email,tel,pass,creado:new Date().toISOString()};
  clientes.push(nuevo); await saveClientes(clientes);
  abrirSesionCliente(nuevo);
  mostrarRevisar();
}
async function loginCliente(){
  const tel=document.getElementById('loginTel').value.trim();
  const pass=document.getElementById('loginPass').value;
  const err=document.getElementById('loginError');
  const clientes=await getClientes();
  const c=clientes.find(x=>x.tel===tel&&x.pass===pass);
  if(!c){err.textContent='Credenciales incorrectas';return;}
  abrirSesionCliente(c); mostrarRevisar();
}
function abrirSesionCliente(c){
  window.clienteActual=c;
  localStorage.setItem('laguaca_sesion',JSON.stringify({tel:c.tel,pass:c.pass}));
  document.getElementById('overlayBienvenida').style.display='none';
  document.getElementById('btnIniciarSesion').style.display='none';
  document.getElementById('btnMisCompras').style.display='inline-flex';
  document.getElementById('btnCerrarSesion').style.display='inline-flex';
  verificarPremiosPendientes();
}
function cerrarSesionCliente(){
  window.clienteActual=null; 
  localStorage.removeItem('laguaca_sesion');
  // Limpiar carrito persistente al cerrar sesión
  limpiarCarritoStorage();
  window.seleccion = {};
  renderNumerosContenedor();
  renderCarrito();
  document.getElementById('btnIniciarSesion').style.display='inline-flex';
  document.getElementById('btnMisCompras').style.display='none';
  document.getElementById('btnCerrarSesion').style.display='none';
  document.getElementById('felicitacionesContainer').innerHTML='';
  vendedorAsignadoPago=null;
}
async function cargarSesionCliente(){
  try{
    const s=localStorage.getItem('laguaca_sesion'); if(!s) return;
    const {tel,pass}=JSON.parse(s);
    const clientes=await getClientes();
    const c=clientes.find(x=>x.tel===tel&&x.pass===pass);
    if(c) abrirSesionCliente(c);
  }catch{}
}

// =========================================================
//  SISTEMA DE REFERIDO
// =========================================================
let vendedorReferido = null;
function obtenerVendedorPorReferido(){
  const urlParams = new URLSearchParams(window.location.search);
  const ref = urlParams.get('ref');
  if(!ref) return null;
  try { return atob(decodeURIComponent(ref)); } catch(e) { return null; }
}
window.addEventListener('DOMContentLoaded', () => {
  vendedorReferido = obtenerVendedorPorReferido();
  if(vendedorReferido){
    sessionStorage.setItem('vendedor_referido', vendedorReferido);
    const msg = document.createElement('div');
    msg.style.cssText='position:fixed;bottom:20px;right:20px;background:var(--accent);color:var(--btn-login-color);padding:10px 20px;border-radius:30px;font-size:var(--text-sm);z-index:9999;box-shadow:0 4px 12px rgba(0,0,0,.2);font-weight:700;';
    msg.innerHTML='🎯 Has sido referido por un vendedor';
    document.body.appendChild(msg);
    setTimeout(()=>msg.remove(), 4000);
  }
});

// =========================================================
//  HORA Y ESTADO
// =========================================================
async function fetchHoraHN(){
  try{
    const r=await fetch('https://timeapi.io/api/timezone/zone?timeZone=America/Tegucigalpa');
    const d=await r.json();
    return d?.datetime ? new Date(d.datetime) : new Date();
  }catch{ return new Date(); }
}
function fmtHora12(d){ return d.toLocaleTimeString('es-HN',{hour12:true,hour:'2-digit',minute:'2-digit',second:'2-digit'}); }
function minsDia(d){ return d.getHours()*60+d.getMinutes(); }
function tickReloj(){ if(horaHN){ horaHN=new Date(horaHN.getTime()+1000); document.getElementById('relojDisplay').textContent=fmtHora12(horaHN); } }

function verificarEstado(){
  if(!horaHN) return;
  const mins=minsDia(horaHN);
  let blq=false, motivo='', proximo=HORARIOS[0];
  proximoEsMañana=false;
  for(const s of HORARIOS){
    const diff=mins-s.min;
    if(diff>=-MINS_ANTES_BLOQUEO && diff<=0){ blq=true; motivo=`⛔ Compras cerradas: faltan ${Math.abs(Math.floor(diff))} min para el sorteo de las ${s.label}.`; if(diff===0)motivo=`⛔ ¡Sorteo de las ${s.label} en curso! Compras cerradas.`; proximo=s; break; }
    if(diff>0 && diff<=MINS_DESPUES_REABRIR){ blq=true; motivo=`⏰ Período post-sorteo de las ${s.label}. Reabre en ${MINS_DESPUES_REABRIR-Math.floor(diff)} min.`; proximo=s; break; }
  }
  if(!blq){ const futuros=HORARIOS.filter(s=>s.min>mins); if(futuros.length>0){proximo=futuros[0];}else{proximo=HORARIOS[0];proximoEsMañana=true;} }
  bloqueado=blq;
  horarioActivo=proximo;
  const banner=document.getElementById('estadoBanner');
  if(blq){ banner.className='estado-banner bloqueado'; banner.textContent=motivo; }
  else if(proximoEsMañana){ const manana=new Date(horaHN.getTime()+86400000); banner.className='estado-banner manana'; banner.textContent=`🌙 Sorteos de hoy concluidos. Tus compras son para ${proximo.label} del ${manana.toLocaleDateString('es-HN',{day:'numeric',month:'short'})}.`; }
  else{
    banner.className='estado-banner';
    for(const s of HORARIOS){ const diff=mins-s.min; if(diff>MINS_DESPUES_REABRIR && diff<=30){ banner.className='estado-banner info'; banner.textContent=`✅ Compras abiertas · Próximo sorteo: ${proximo.label} de hoy`; break; } }
  }
  document.getElementById('sorteoParaLabel').textContent=blq?`🔴 Compras cerradas`:proximoEsMañana?`🗓 Sorteo ${proximo.label} · Mañana`:`🎯 Sorteo ${proximo.label} · Hoy`;
  document.getElementById('btnConfirmar').disabled=blq||Object.keys(window.seleccion).length===0;
  document.querySelectorAll('.sorteo-chip').forEach(c=>{
    c.className='sorteo-chip';
    if(c.dataset.hora===proximo.label) c.classList.add(blq?'bloqueado-chip':proximoEsMañana?'manana-chip':'activo');
  });
  renderNumerosContenedor();
}

// =====================================================
//  VISTA: TODOS vs POR LÍNEA
// =====================================================

function setVista(v){
  vistaActual = v;
  document.getElementById('btnVistaTodos').classList.toggle('activo', v === 'todos');
  document.getElementById('btnVistaLinea').classList.toggle('activo', v === 'linea');
  renderNumerosContenedor();
}

function renderNumerosContenedor(){
  const cont = document.getElementById('numerosContenedor');
  cont.innerHTML = '';

  if(vistaActual === 'todos'){
    const filtroRow = document.createElement('div');
    filtroRow.className = 'lineas-filtro-row';
    const chipTodos = document.createElement('button');
    chipTodos.className = 'linea-filtro-chip' + (lineaFiltroActiva === null ? ' activa' : '');
    chipTodos.textContent = 'Todas';
    chipTodos.onclick = () => { lineaFiltroActiva = null; renderNumerosContenedor(); };
    filtroRow.appendChild(chipTodos);
    for(let l = 0; l < 10; l++){
      const desde = l * 10, hasta = desde + 9;
      const chip = document.createElement('button');
      chip.className = 'linea-filtro-chip' + (lineaFiltroActiva === l ? ' activa' : '');
      chip.textContent = `${String(desde).padStart(2,'0')}-${String(hasta).padStart(2,'0')}`;
      chip.onclick = (()=>{ const ll=l; return () => { lineaFiltroActiva = lineaFiltroActiva === ll ? null : ll; renderNumerosContenedor(); }; })();
      filtroRow.appendChild(chip);
    }
    cont.appendChild(filtroRow);

    const grid = document.createElement('div');
    grid.className = 'grid-numeros grid-completo';
    cont.appendChild(grid);
    const inicio = lineaFiltroActiva !== null ? lineaFiltroActiva * 10 : 0;
    const fin    = lineaFiltroActiva !== null ? inicio + 9 : 99;
    for(let i = inicio; i <= fin; i++){
      if(lineaFiltroActiva === null && i % 10 === 0){
        const div = document.createElement('div');
        div.className = 'linea-divider';
        div.textContent = `${String(i).padStart(2,'0')} — ${String(i+9).padStart(2,'0')}`;
        grid.appendChild(div);
      }
      grid.appendChild(crearNumCard(i));
    }
  } else {
    const nav = document.createElement('div');
    nav.className = 'lineas-nav';
    cont.appendChild(nav);
    for(let linea = 0; linea < 10; linea++){
      const desde = linea * 10, hasta = desde + 9;
      let contSel = 0;
      for(let i = desde; i <= hasta; i++){
        const k = String(i).padStart(2,'0');
        if(window.seleccion[k]) contSel++;
      }
      const emojisLinea = [...Array(5)].map((_,j)=>{
        const idx = desde + j;
        const numStr = String(idx).padStart(2,'0');
        const imgUrl = `https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${numStr}.jpg`;
        return `<img src="${imgUrl}" class="linea-emoji-img" onerror="this.style.display='none'">`;
      }).join('');
      const estaAbierta = lineaAbierta === linea;
      const btn = document.createElement('button');
      btn.className = 'linea-btn' + (estaAbierta ? ' activa' : '') + (bloqueado ? ' bloqueado' : '');
      btn.style.cursor = bloqueado ? 'not-allowed' : 'pointer';
      btn.innerHTML = `
        <div style="display:flex;align-items:center;gap:16px;">
          <span>LÍNEA ${String(desde).padStart(2,'0')} AL ${String(hasta).padStart(2,'0')}</span>
          <span class="linea-emoji-strip">${emojisLinea}</span>
        </div>
        <div style="display:flex;align-items:center;gap:12px;">
          ${contSel > 0 ? `<span class="linea-selected-count">✓ ${contSel} elegido${contSel>1?'s':''}</span>` : ''}
          <span style="color:var(--muted);font-size:1rem;">${estaAbierta ? '▲' : '▼'}</span>
        </div>`;
      if(!bloqueado){
        btn.onclick = () => {
          lineaAbierta = estaAbierta ? null : linea;
          renderNumerosContenedor();
          if(lineaAbierta !== null){
            setTimeout(() => {
              const firstGrid = cont.querySelector('.grid-numeros');
              if(firstGrid) firstGrid.scrollIntoView({behavior:'smooth',block:'nearest'});
            }, 100);
          }
        };
      }
      nav.appendChild(btn);
      if(estaAbierta){
        const gridWrapper = document.createElement('div');
        gridWrapper.className = 'grid-numeros';
        for(let i = desde; i <= hasta; i++) gridWrapper.appendChild(crearNumCard(i));
        nav.appendChild(gridWrapper);
      }
    }
  }
}

function crearNumCard(i){
  const num = String(i).padStart(2,'0');
  const nombre = NOMBRES[i] || '';
  const sel = !!window.seleccion[num];

  const limiteData = limitesNumeros[num] || { limite: 0, bloqueado: false, ventaActual: 0 };
  const estaBloqueado = limiteData.bloqueado || false;

  const div = document.createElement('div');
  div.className = 'num-card' + (sel ? ' seleccionado' : '') + (estaBloqueado ? ' bloqueado' : '');
  const imageUrl = `https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${num}.jpg`;
  div.innerHTML = `
    <div class="n-num">${num}</div>
    <img src="${imageUrl}" class="n-img" onerror="this.style.display='none'">
    <div class="n-name">${nombre}</div>
    ${sel ? `<div class="n-apuesta">L ${fmt(window.seleccion[num])}</div>` : ''}
  `;
  if(!estaBloqueado) div.onclick = () => abrirModalCantidad(num);
  return div;
}

// =========================================================
//  NÚMEROS Y SELECCIÓN
// =========================================================
function generarNumerosAzar(){
  const total=NOMBRES.length; const elegidos=new Set();
  while(elegidos.size<3) elegidos.add(Math.floor(Math.random()*total));
  const nums=[...elegidos]; const calienteIdx=Math.floor(Math.random()*3);
  const cont=document.getElementById('azarCards'); cont.innerHTML='';
  nums.forEach((n,i)=>{
    const numStr=String(n).padStart(2,'0'); const nombre=NOMBRES[n]; const esCaliente=i===calienteIdx;
    const imageUrl=`https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${numStr}.jpg`;
    const card=document.createElement('div');
    card.className='azar-card animando'+(esCaliente?' caliente':'');
    card.style.animationDelay=(i*.12)+'s';
    card.innerHTML=`${esCaliente?'<div class="badge-caliente">🔥 Más Caliente</div>':''}<div class="azar-num">${numStr}</div><img src="${imageUrl}" class="azar-img" onerror="this.style.display='none'"><div class="azar-name">${nombre}</div><button class="btn-azar-apostar" onclick="apostarAzar('${numStr}')">+ Apostar este</button>`;
    cont.appendChild(card);
  });
  document.getElementById('azarFooter').style.display='block';
}
function apostarAzar(num){ if(bloqueado){alert('⛔ Compras cerradas.');return;} abrirModalCantidad(num); }

function obtenerDisponible(num){
  const data = limitesNumeros[num] || { limite: 0, bloqueado: false, ventaActual: 0 };
  if(data.bloqueado) return 0;
  if(!data.limite || data.limite === 0) return Infinity;
  const disponible = data.limite - (data.ventaActual || 0);
  return Math.max(0, disponible);
}

function abrirModalCantidad(num){
  numActual = num;
  const nombre = NOMBRES[parseInt(num)];
  const imageUrl = `https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${num}.jpg`;
  document.getElementById('modalNumPreview').innerHTML = `<img src="${imageUrl}" style="width:52px;height:52px;object-fit:cover;border-radius:12px;display:block;margin:0 auto 8px;"> ${num}`;
  document.getElementById('modalNumNombre').innerHTML = `<strong style="color:var(--accent);font-size:1.2rem;font-family:var(--font-display);">${nombre}</strong>`;
  document.getElementById('montoCustomInput').value = '';

  const disponible = obtenerDisponible(num);
  const alertaDiv = document.getElementById('alertaLimite');

  if(disponible === 0){
    alertaDiv.innerHTML = `🔒 Este número está bloqueado`;
    alertaDiv.style.display = 'block';
  } else if(disponible !== Infinity){
    alertaDiv.innerHTML = `⚠️ Solo quedan <strong>L ${fmt(disponible)}</strong> disponibles en este número.`;
    alertaDiv.style.display = 'block';
  } else {
    alertaDiv.style.display = 'none';
  }

  montoSeleccionado = window.seleccion[num] || 5;
  const grid = document.getElementById('montoGrid'); grid.innerHTML = '';
  MONTOS_RAPIDOS.forEach(m => {
    const excede = disponible !== Infinity && m > disponible;
    const b = document.createElement('button');
    b.className = 'monto-btn' + (montoSeleccionado===m?' activo':'');
    b.textContent = `L ${m}`;
    if(excede){ b.disabled=true; b.style.opacity='.3'; b.style.cursor='not-allowed'; b.title=`Solo quedan L ${fmt(disponible)}`; }
    else {
      b.onclick = () => {
        document.querySelectorAll('.monto-btn').forEach(x=>x.classList.remove('activo'));
        b.classList.add('activo');
        montoSeleccionado = m;
        document.getElementById('montoCustomInput').value = '';
      };
    }
    grid.appendChild(b);
  });

  if(window.seleccion[num] && !MONTOS_RAPIDOS.includes(window.seleccion[num])){
    document.getElementById('montoCustomInput').value = window.seleccion[num];
    montoSeleccionado = window.seleccion[num];
    document.querySelectorAll('.monto-btn').forEach(x=>x.classList.remove('activo'));
  }
  document.getElementById('modalCantidad').style.display = 'flex';
}

function cerrarModalCantidad(){ document.getElementById('modalCantidad').style.display='none'; numActual=null; }

function guardarApuesta(){
  const cv = parseInt(document.getElementById('montoCustomInput').value);
  const m  = cv > 0 ? cv : montoSeleccionado;
  if(!m || m < 5){ alert('Mínimo L 5'); return; }

  const disponible = obtenerDisponible(numActual);
  if(disponible === 0){
    alert('🔒 Este número está bloqueado y no acepta más apuestas.');
    cerrarModalCantidad();
    return;
  }
  if(disponible !== Infinity && m > disponible){
    const confirmar = confirm(`⚠️ Solo quedan L ${fmt(disponible)} disponibles en el número ${numActual}.\n\n¿Deseas apostar esos L ${fmt(disponible)} en lugar de L ${fmt(m)}?`);
    if(!confirmar){ return; }
    window.seleccion[numActual] = disponible;
    cerrarModalCantidad();
    guardarCarritoEnStorage(); // Guardar después de modificar
    renderNumerosContenedor();
    renderCarrito();
    return;
  }

  window.seleccion[numActual] = m;
  cerrarModalCantidad();
  guardarCarritoEnStorage(); // Guardar después de modificar
  renderNumerosContenedor();
  renderCarrito();
}

function renderCarrito(){
  const lista=document.getElementById('carritoLista'), keys=Object.keys(window.seleccion);
  if(!keys.length){
    lista.innerHTML='<div class="carrito-vacio">Selecciona números arriba para apostar</div>';
    document.getElementById('totalVal').textContent='L 0';
    document.getElementById('btnConfirmar').disabled=true;
    return;
  }
  let total=0;
  lista.innerHTML=keys.map(num=>{
    const m=window.seleccion[num]; total+=m;
    const n=NOMBRES[parseInt(num)];
    const imgUrl=`https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${num}.jpg`;
    return `<div class="carrito-item">
      <div style="display:flex;align-items:center;gap:10px;">
        <span class="ci-num">${num}</span>
        <img src="${imgUrl}" class="ci-img" onerror="this.style.display='none'">
        <span style="font-size:var(--text-sm);font-weight:600;">${n}</span>
      </div>
      <div style="display:flex;align-items:center;gap:10px;">
        <span class="ci-amount">L ${fmt(m)}</span>
        <button style="background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:3px 9px;cursor:pointer;font-weight:700;" onclick="eliminarDelCarrito('${num}')">✕</button>
      </div>
    </div>`;
  }).join('');
  document.getElementById('totalVal').textContent=`L ${fmt(total)}`;
  document.getElementById('btnConfirmar').disabled=bloqueado;
}

function eliminarDelCarrito(num){ 
  delete window.seleccion[num]; 
  guardarCarritoEnStorage(); // Guardar después de eliminar
  renderNumerosContenedor(); 
  renderCarrito(); 
}

function fechaSorteoActivo(){
  if(!horaHN) return new Date();
  if(proximoEsMañana){ const m=new Date(horaHN); m.setDate(m.getDate()+1); return m; }
  return horaHN;
}

// =========================================================
//  PREMIOS Y RECLAMOS
// =========================================================
async function verificarPremiosPendientes(){
  if(!window.clienteActual) return;
  const compras=await getCompras();
  const misCompras=compras.filter(c=>c.clienteTel===window.clienteActual.tel&&c.estado==='aprobado');
  const reclamos=await getReclamos();
  let tienePremios=false;
  for(const c of misCompras){
    const f=new Date(c.fecha);
    for(const s of HORARIOS){
      const res=obtenerResultado(f,s.label);
      if(res&&c.sorteo===s.label){
        for(const num in c.seleccion){
          if(num===res&&!reclamos.some(r=>r.compraId===c.id&&r.numero===num)) tienePremios=true;
        }
      }
    }
  }
  const cont=document.getElementById('felicitacionesContainer');
  cont.innerHTML=tienePremios?`<div class="felicitaciones-card"><h3>🎉 ¡FELICITACIONES! 🎉</h3><p style="font-size:1.1rem;margin:10px 0;">Tienes números ganadores pendientes</p><button class="btn-premio" onclick="mostrarReclamosPremios()">🏆 RECLAMAR PREMIO</button></div>`:'';
}

async function mostrarReclamosPremios(){
  const compras=await getCompras();
  const misCompras=compras.filter(c=>c.clienteTel===window.clienteActual?.tel&&c.estado==='aprobado');
  const reclamos=await getReclamos();
  const pendientes=[];
  for(const c of misCompras){
    const f=new Date(c.fecha);
    for(const s of HORARIOS){
      const res=obtenerResultado(f,s.label);
      if(res&&c.sorteo===s.label){
        for(const num in c.seleccion){
          if(num===res&&!reclamos.some(r=>r.compraId===c.id&&r.numero===num))
            pendientes.push({compraId:c.id,numero:num,montoApostado:c.seleccion[num],montoGanado:c.seleccion[num]*70,sorteo:c.sorteo,fecha:c.fechaDisplay});
        }
      }
    }
  }
  if(!pendientes.length){alert("No tienes premios pendientes.");return;}
  const m=document.createElement('div'); m.className='modal-grande-overlay'; m.style.display='flex';
  m.innerHTML=`<div class="modal-grande-card" style="max-width:600px;"><h2>🏆 RECLAMAR PREMIO</h2>${pendientes.map(p=>`<div style="background:var(--surface2);border-radius:12px;padding:16px;margin-bottom:12px;border:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;"><div><span style="font-family:var(--font-mono);font-size:1.6rem;color:var(--accent);">${p.numero}</span><br><span style="font-size:0.7rem;color:var(--muted);">${p.sorteo} · ${p.fecha}</span></div><div style="text-align:right;"><span style="color:var(--green);font-weight:700;font-size:1.1rem;">L ${fmt(p.montoGanado)}</span></div><button class="btn-rv finalizar" style="padding:8px 20px;" onclick="reclamarPremio(${p.compraId},'${p.numero}',${p.montoGanado})">RECLAMAR</button></div>`).join('')}<div class="modal-btns-row"><button class="btn-rv cerrar" onclick="this.closest('.modal-grande-overlay').remove()">Cerrar</button></div></div>`;
  document.body.appendChild(m);
}

async function reclamarPremio(compraId,numero,montoGanado){
  const reclamos=await getReclamos();
  reclamos.push({id:Date.now(),compraId,numero,monto:montoGanado,clienteTel:window.clienteActual.tel,clienteNombre:window.clienteActual.nombre,fecha:new Date().toISOString(),estado:'pendiente'});
  await saveReclamos(reclamos);
  alert(`✅ ¡Reclamo registrado! Premio de L ${fmt(montoGanado)} en proceso.`);
  document.querySelector('.modal-grande-overlay')?.remove();
  verificarPremiosPendientes();
}

// =========================================================
//  GENERAR FACTURA (BASE64 PARA NUEVA PESTAÑA)
// =========================================================
function generarBase64Factura(compraData) {
    const ahora = new Date();
    const fechaEmision = ahora.toLocaleDateString('es-HN');
    const horaEmision = ahora.toLocaleTimeString('es-HN', { hour12: true });
    let fechaSorteo = compraData.fechaDisplay || new Date(compraData.fecha).toLocaleDateString('es-HN', {
        weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'
    });
    const items = [];
    for (const [num, monto] of Object.entries(compraData.seleccion)) {
        const idx = parseInt(num, 10);
        const nombre = NOMBRES[idx] || '';
        const imagen = `https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${num}.jpg`;
        items.push({ numero: num, nombre: nombre, imagen: imagen, apuesta: monto });
    }
    const codigoVerificacion = compraData.numeroFactura || `VER-${compraData.id}`;
    const facturaData = {
        numeroFactura: compraData.numeroFactura,
        fecha: fechaEmision,
        hora: horaEmision,
        cliente: compraData.cliente,
        clienteNombre: compraData.cliente,
        clienteTel: compraData.clienteTel,
        telefono: compraData.clienteTel,
        sorteo: compraData.sorteo,
        fechaSorteo: fechaSorteo,
        items: items,
        seleccion: compraData.seleccion,
        totalApuesta: compraData.total,
        codigoVerificacion: codigoVerificacion
    };
    let jsonStr = JSON.stringify(facturaData);
    let base64 = btoa(unescape(encodeURIComponent(jsonStr)));
    base64 = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
    return base64;
}

function abrirFacturaExterna(compra) {
    if (!compra) return;
    const base64Data = generarBase64Factura(compra);
    const url = `https://ladiaria.online/factura-html/?data=${base64Data}`;
    window.open(url, '_blank');
}

// =========================================================
//  PROCESO DE COMPRA
// =========================================================
function solicitarConfirmar(){
  if(bloqueado||!Object.keys(window.seleccion).length) return;
  if(!window.clienteActual){abrirOverlayLogin();return;}
  mostrarRevisar();
}
function mostrarRevisar(){
  if(bloqueado||!Object.keys(window.seleccion).length) return;
  let total=0, filas='';
  for(const num in window.seleccion){
    const m=window.seleccion[num]; total+=m;
    const n=NOMBRES[parseInt(num)]; const p=m*70;
    const imgUrl=`https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${num}.jpg`;
    filas+=`<tr><td class="num-td">${num}</td><td><img src="${imgUrl}" class="num-td-img" onerror="this.style.display='none'"> ${n}</td><td style="font-family:var(--font-mono);font-size:0.85rem;font-weight:700;">L ${fmt(m)}</td><td class="premio-td">L ${fmt(p)}</td></tr>`;
  }
  const fs=fechaSorteoActivo();
  const fdStr=fs.toLocaleDateString('es-HN',{weekday:'long',day:'numeric',month:'long'});
  document.getElementById('revisarCard').innerHTML=`
    <div style="text-align:center;margin-bottom:16px;"><img src="${LOGO_URL}" style="height:54px;" onerror="this.style.display='none'"></div>
    <h2>🔍 Revisar Compra</h2>
    <div class="revisar-meta">Sorteo: <strong>${horarioActivo.label}</strong> · ${fdStr} · Cliente: <strong>${window.clienteActual?.nombre||'Invitado'}</strong></div>
    <table class="factura-table"><thead><tr><th>#</th><th>Número</th><th>Apuesta</th><th>🏆 Premio si Gana</th></tr></thead><tbody>${filas}</tbody></table>
    <div class="total-row"><div><div class="total-label">Total Apuesta</div><div style="font-family:var(--font-mono);font-size:2.4rem;font-weight:700;color:var(--accent);">L ${fmt(total)}</div></div></div>
    <div class="info-premio-box">💰 Por cada <strong>L 5</strong> apostado en el número ganador recibes <strong>L 350</strong></div>
    <div class="modal-btns-row"><button class="btn-rv back" onclick="cerrarRevisar()">◀ Regresar</button><button class="btn-rv finalizar" onclick="finalizarCompra(${total})">✅ Finalizar Compra</button></div>`;
  document.getElementById('modalRevisar').style.display='flex';
}
function cerrarRevisar(){ document.getElementById('modalRevisar').style.display='none'; }

let compraEnCurso=null;
async function finalizarCompra(total){
  cerrarRevisar();
  const fs=fechaSorteoActivo();
  let refVendedor=sessionStorage.getItem('vendedor_referido')||null;
  compraEnCurso={
    seleccion:{...window.seleccion},total,sorteo:horarioActivo.label,
    cliente:window.clienteActual?.nombre||'Invitado',clienteTel:window.clienteActual?.tel||'',
    clienteEmail:window.clienteActual?.email||'',fecha:fs.toISOString(),
    fechaDisplay:fs.toLocaleDateString('es-HN',{day:'2-digit',month:'short',year:'numeric'}),
    id:Date.now(),estado:'pendiente',refVendedor,
    metodoPago:null,vendedorEfectivo:null,
    comprobante_url:null
  };
  mostrarModalPago();
}

function mostrarModalPago(){
  document.getElementById('facturaCard').innerHTML=`
    <div style="text-align:center;margin-bottom:16px;"><img src="${LOGO_PAGO_URL}" style="height:60px;" onerror="this.style.display='none'"></div>
    <h2>💳 MÉTODO DE PAGO</h2>
    <p style="text-align:center;color:var(--text-light);font-size:var(--text-sm);margin-bottom:28px;">Selecciona cómo deseas pagar tu apuesta de <strong style="color:var(--accent);">L ${fmt(compraEnCurso.total)}</strong></p>
    <div style="display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:8px;">
      <button onclick="seleccionarPago('transferencia')" style="background:rgba(80,144,232,.1);border:2px solid rgba(80,144,232,.35);color:var(--text);border-radius:16px;padding:22px 12px;cursor:pointer;font-size:1rem;font-family:var(--font-body);font-weight:700;">🏦 Transferencia</button>
      <button onclick="seleccionarPago('efectivo')" style="background:rgba(var(--accent-rgb),.08);border:2px solid rgba(var(--accent-rgb),.3);color:var(--text);border-radius:16px;padding:22px 12px;cursor:pointer;font-size:1rem;font-family:var(--font-body);font-weight:700;">💰 Enviar a Vendedor</button>
    </div>
    <div class="modal-btns-row"><button class="btn-rv back" onclick="cancelarPago()">◀ Regresar</button></div>`;
  document.getElementById('modalFactura').style.display='flex';
}

function cancelarPago(){ document.getElementById('modalFactura').style.display='none'; compraEnCurso=null; vendedorAsignadoPago=null; }

async function seleccionarPago(metodo){
  compraEnCurso.metodoPago=metodo;
  if(metodo==='transferencia'){ await mostrarCuentasBancarias(); }
  else if(metodo==='efectivo'){
    const refVendedor=sessionStorage.getItem('vendedor_referido');
    if(refVendedor){
      const vendedores=await getVendedores();
      const vendedor=vendedores.find(v=>v.email===refVendedor&&v.activo===true);
      if(vendedor){ compraEnCurso.vendedorEfectivo=vendedor.email; compraEnCurso.refVendedor=vendedor.email; mostrarSubidaComprobante(metodo,vendedor); }
      else await mostrarListaVendedores();
    } else await mostrarListaVendedores();
  }
}

async function mostrarListaVendedores(){
  const vendedores=await getVendedoresActivos();
  if(!vendedores.length){ alert('No hay vendedores disponibles. Contacta al administrador.'); cancelarPago(); return; }
  const card=document.getElementById('vendedoresListaCard');
  card.innerHTML=`<div style="text-align:center;margin-bottom:16px;"><img src="${LOGO_URL}" style="height:50px;" onerror="this.style.display='none'"></div><h2>👨‍💼 SELECCIONA UN VENDEDOR</h2><p style="text-align:center;color:var(--text-light);margin-bottom:20px;">Elige a qué vendedor le entregarás el dinero en efectivo</p><div class="vendedores-modal-grid" id="vendedoresModalGrid"></div><div class="modal-btns-row"><button class="btn-rv back" onclick="cerrarModalVendedores()">◀ Regresar</button></div>`;
  const grid=document.getElementById('vendedoresModalGrid');
  grid.innerHTML='';
  for(const v of vendedores){
    const avatarHtml=v.foto?`<img src="${v.foto}" class="vendedor-modal-avatar" style="object-fit:cover;">`:`<div class="vendedor-modal-avatar">👤</div>`;
    const div=document.createElement('div'); div.className='vendedor-modal-card';
    div.onclick=()=>seleccionarVendedorPago(v.email);
    div.innerHTML=`${avatarHtml}<div class="vendedor-modal-info"><div class="vendedor-modal-nombre">${escapeHtml(v.nombre)}</div><div class="vendedor-modal-email">${escapeHtml(v.email)}</div><div class="vendedor-modal-tel">📱 ${escapeHtml(v.telefono||'')}</div></div>`;
    grid.appendChild(div);
  }
  document.getElementById('modalVendedoresLista').style.display='flex';
}
function cerrarModalVendedores(){ document.getElementById('modalVendedoresLista').style.display='none'; }
function seleccionarVendedorPago(vendedorEmail){
  compraEnCurso.vendedorEfectivo=vendedorEmail; compraEnCurso.refVendedor=vendedorEmail;
  cerrarModalVendedores();
  getVendedores().then(vendedores=>{ const v=vendedores.find(x=>x.email===vendedorEmail); mostrarSubidaComprobante('efectivo',v); });
}

async function mostrarCuentasBancarias(){
  const cuentas=await getCuentasBancarias();
  if(!cuentas||!cuentas.length){ if(confirm('No hay cuentas bancarias configuradas. ¿Continuar?')){ mostrarSubidaComprobante('transferencia'); }else{ cancelarPago(); } return; }
  const card=document.getElementById('vendedoresListaCard');
  card.innerHTML=`<div style="text-align:center;margin-bottom:16px;"><img src="${LOGO_URL}" style="height:50px;" onerror="this.style.display='none'"></div><h2>🏦 CUENTAS BANCARIAS</h2><p style="text-align:center;color:var(--text-light);margin-bottom:20px;">Selecciona la cuenta para la transferencia</p><div class="vendedores-modal-grid" id="cuentasModalGrid"></div><div class="modal-btns-row"><button class="btn-rv back" onclick="cerrarModalVendedores()">◀ Regresar</button></div>`;
  const grid=document.getElementById('cuentasModalGrid'); grid.innerHTML='';
  for(const cuenta of cuentas){
    const div=document.createElement('div'); div.className='vendedor-modal-card';
    div.onclick=()=>{ compraEnCurso.cuentaSeleccionada=cuenta; cerrarModalVendedores(); mostrarSubidaComprobante('transferencia',null,cuenta); };
    div.innerHTML=`<div class="vendedor-modal-avatar">🏦</div><div class="vendedor-modal-info"><div class="vendedor-modal-nombre">${escapeHtml(cuenta.nombre)}</div><div class="vendedor-modal-email">${escapeHtml(cuenta.banco)} · ${escapeHtml(cuenta.tipo)}</div><div class="vendedor-modal-tel">🔢 ${escapeHtml(cuenta.numero)}</div></div>`;
    grid.appendChild(div);
  }
  document.getElementById('modalVendedoresLista').style.display='flex';
}

// =========================================================
//  SUBIDA DE COMPROBANTE
// =========================================================
async function subirComprobanteAlServidor(file) {
  if(!file) return false;
  
  const tiposPermitidos = ['image/jpeg','image/png','image/jpg','application/pdf'];
  if(!tiposPermitidos.includes(file.type)){
    alert('❌ Solo se permiten JPG, PNG o PDF');
    return false;
  }
  
  if(file.size > 5 * 1024 * 1024){
    alert('❌ El archivo no puede superar los 5MB');
    return false;
  }
  
  const formData = new FormData();
  formData.append('action', 'subir_comprobante');
  formData.append('comprobante', file);
  
  try {
    const btnEnviar = document.getElementById('btnEnviarComprobante');
    if(btnEnviar){
      btnEnviar.textContent = '📤 Subiendo...';
      btnEnviar.disabled = true;
    }
    
    const response = await fetch('/wp-admin/admin-ajax.php', {
      method: 'POST',
      body: formData
    });
    
    if(!response.ok) throw new Error(`Error HTTP: ${response.status}`);
    
    const result = await response.json();
    
    if(result.success && result.data && result.data.url){
      compraEnCurso.comprobante_url = result.data.url;
      compraEnCurso.comprobanteNombre = file.name;
      
      const iconDiv = document.getElementById('comprobanteIcon');
      const textDiv = document.getElementById('comprobanteText');
      const nombreDiv = document.getElementById('comprobanteNombre');
      const areaDiv = document.getElementById('comprobanteArea');
      const errorDiv = document.getElementById('comprobanteError');
      
      if(iconDiv) iconDiv.innerHTML = '✅';
      if(textDiv) textDiv.innerHTML = '¡Comprobante cargado correctamente!';
      if(nombreDiv) nombreDiv.innerHTML = file.name;
      if(areaDiv) areaDiv.style.borderColor = 'var(--green)';
      if(errorDiv) errorDiv.style.display = 'none';
      
      const btnFinalizar = document.getElementById('btnEnviarComprobante');
      if(btnFinalizar){
        btnFinalizar.disabled = false;
        btnFinalizar.style.opacity = '1';
      }
      
      return true;
    } else {
      throw new Error(result.data?.message || 'Error al subir el comprobante');
    }
  } catch(error) {
    console.error('Error subiendo comprobante:', error);
    alert('❌ Error al subir el comprobante: ' + error.message);
    return false;
  } finally {
    const btnEnviar = document.getElementById('btnEnviarComprobante');
    if(btnEnviar){
      btnEnviar.disabled = false;
      btnEnviar.textContent = 'Enviar →';
    }
  }
}

window.procesarArchivo = async function(file) {
  if(!file) return;
  await subirComprobanteAlServidor(file);
};

function mostrarSubidaComprobante(metodo, vendedor=null, cuenta=null){
  let infoAdicional='';
  if(metodo==='transferencia'&&cuenta){
    infoAdicional=`<div style="background:rgba(var(--accent-rgb),.1);border-radius:12px;padding:12px;margin-bottom:16px;text-align:left;"><div style="font-weight:800;margin-bottom:8px;font-family:var(--font-cond);letter-spacing:1px;text-transform:uppercase;">✅ Cuenta seleccionada:</div><div style="font-weight:700;">${escapeHtml(cuenta.nombre)}</div><div style="font-size:var(--text-sm);">${escapeHtml(cuenta.banco)} (${escapeHtml(cuenta.tipo)})</div><div style="font-family:var(--font-mono);font-size:var(--text-sm);font-weight:700;">No. ${escapeHtml(cuenta.numero)}</div></div>`;
  } else if(metodo==='efectivo'&&vendedor){
    infoAdicional=`<div style="background:rgba(var(--accent-rgb),.1);border-radius:12px;padding:12px;margin-bottom:16px;text-align:left;"><div style="font-weight:800;margin-bottom:8px;font-family:var(--font-cond);letter-spacing:1px;text-transform:uppercase;">💰 Vendedor asignado:</div><div style="font-weight:700;">${escapeHtml(vendedor.nombre)}</div><div style="font-size:var(--text-sm);">📧 ${escapeHtml(vendedor.email)}</div><div style="font-size:var(--text-sm);">📱 ${escapeHtml(vendedor.telefono||'N/A')}</div></div>`;
  }
  document.getElementById('facturaCard').innerHTML=`
    <div style="text-align:center;margin-bottom:16px;"><img src="${LOGO_URL}" style="height:50px;" onerror="this.style.display='none'"></div>
    <h2>${metodo==='transferencia'?'🏦 Transferencia Bancaria':'💰 Pago en Efectivo'}</h2>
    ${infoAdicional}
    ${metodo==='transferencia' ? `
    <div id="comprobanteArea" style="border:2px dashed var(--border);border-radius:16px;padding:32px;text-align:center;cursor:pointer;margin-bottom:16px;background:var(--surface2);transition:all .2s;" onclick="document.getElementById('fileInput').click()">
      <div id="comprobanteIcon" style="font-size:2.2rem;">📎</div>
      <div id="comprobanteText" style="margin-top:8px;font-weight:600;">Subir comprobante (OBLIGATORIO)</div>
      <div id="comprobanteNombre" style="font-size:var(--text-xs);color:var(--muted);margin-top:8px;"></div>
    </div>
    <input type="file" id="fileInput" style="display:none" accept="image/*,.pdf" onchange="procesarArchivo(this.files[0])">
    <div id="comprobanteError" style="color:var(--red);font-size:var(--text-xs);text-align:center;margin-bottom:12px;display:none;font-weight:600;"></div>
    ` : `
    <div style="text-align:center;padding:20px;margin-bottom:16px;background:rgba(var(--accent-rgb),.05);border-radius:12px;">
      <div style="font-size:2rem;">💰</div>
      <div style="font-weight:600;margin-top:8px;">Pago en efectivo</div>
      <div style="font-size:var(--text-sm);color:var(--muted);margin-top:4px;">Entrega el dinero al vendedor asignado</div>
    </div>
    `}
    <div class="modal-btns-row">
      <button class="btn-rv back" onclick="mostrarModalPago()">◀ Cambiar</button>
      <button class="btn-rv finalizar" id="btnEnviarComprobante" onclick="enviarComprobanteAlServidor()" ${metodo==='transferencia' && !compraEnCurso?.comprobante_url ? 'style="opacity:0.5;" disabled' : ''}>Enviar →</button>
    </div>`;
  
  if(metodo==='transferencia'){
    compraEnCurso.comprobante_url = null;
    compraEnCurso.comprobanteNombre = null;
  }
}

// =========================================================
//  ENVÍO DE COMPROBANTE Y FINALIZACIÓN
// =========================================================
async function enviarComprobanteAlServidor() {
  if (compraEnCurso.metodoPago === 'efectivo') {
    const compras = await getCompras();
    compraEnCurso.estado = 'aprobado';
    compraEnCurso.numeroFactura = generarNumeroFactura();
    compras.push(compraEnCurso);
    await saveCompras(compras);
    
    // Limpiar carrito después de comprar
    window.seleccion = {};
    limpiarCarritoStorage();
    
    // Abrir factura externa
    abrirFacturaExterna(compraEnCurso);
    
    lineaAbierta = null;
    renderNumerosContenedor();
    renderCarrito();
    document.getElementById('modalFactura').style.display = 'none';
    compraEnCurso = null;
    verificarPremiosPendientes();
    return;
  }
  
  if (!compraEnCurso.comprobante_url) {
    const errorDiv = document.getElementById('comprobanteError');
    if (errorDiv) {
      errorDiv.style.display = 'block';
      errorDiv.textContent = '⚠️ Debes subir un comprobante de pago para continuar';
    }
    alert('⚠️ Debes subir un comprobante de pago antes de continuar');
    return;
  }
  
  const btnEnviar = document.getElementById('btnEnviarComprobante');
  const textoOriginal = btnEnviar.textContent;
  if(btnEnviar){
    btnEnviar.textContent = '⏳ Enviando...';
    btnEnviar.disabled = true;
  }
  
  try {
    const compras = await getCompras();
    compraEnCurso.estado = 'pendiente_verificacion';
    compraEnCurso.numeroFactura = generarNumeroFactura();
    compraEnCurso.fechaSubida = new Date().toISOString();
    compras.push(compraEnCurso);
    await saveCompras(compras);
    
    alert('✅ Comprobante enviado correctamente. Tu compra está pendiente de verificación.');
    
    // Limpiar carrito después de comprar
    window.seleccion = {};
    limpiarCarritoStorage();
    
    // Abrir factura externa
    abrirFacturaExterna(compraEnCurso);
    
    lineaAbierta = null;
    renderNumerosContenedor();
    renderCarrito();
    document.getElementById('modalFactura').style.display = 'none';
    compraEnCurso = null;
    verificarPremiosPendientes();
    
  } catch (error) {
    console.error('Error al guardar:', error);
    alert('❌ Error al guardar la compra. Por favor intenta de nuevo.\n' + (error.message || ''));
    if(btnEnviar){
      btnEnviar.textContent = textoOriginal;
      btnEnviar.disabled = false;
    }
  }
}

function generarNumeroFactura(){
  const f=new Date();
  return `FD-${f.getFullYear()}${String(f.getMonth()+1).padStart(2,'0')}${String(f.getDate()).padStart(2,'0')}-${f.getTime().toString().slice(-6)}${Math.floor(Math.random()*1000).toString().padStart(3,'0')}`;
}
function escapeHtml(str){ if(!str) return ''; return str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;'); }

// =========================================================
//  MIS COMPRAS
// =========================================================
async function mostrarMisCompras(){
  if(!window.clienteActual){ alert('Debes iniciar sesión primero'); abrirOverlayLogin(); return; }
  const compras=await getCompras();
  const misCompras=compras.filter(c=>c.clienteTel===window.clienteActual.tel).sort((a,b)=>new Date(b.fecha)-new Date(a.fecha));
  if(!misCompras.length){
    document.getElementById('misComprasContent').innerHTML=`<div style="text-align:center;padding:40px;"><div style="font-size:3rem;margin-bottom:16px;">🛒</div><h2 style="color:var(--accent);margin-bottom:8px;">Sin compras</h2><p style="color:var(--text-light);">No has realizado ninguna compra aún.</p><button class="btn-rv cerrar" onclick="cerrarModalMisCompras()" style="margin-top:24px;">Cerrar</button></div>`;
    document.getElementById('modalMisCompras').style.display='flex';
    return;
  }
  let html='<h2>🧾 MIS COMPRAS</h2><div style="margin-bottom:20px;text-align:center;color:var(--text-light);font-weight:500;">Historial de apuestas</div>';
  for(const compra of misCompras){
    const fechaCompra=new Date(compra.fecha);
    const fechaStr=fechaCompra.toLocaleDateString('es-HN',{weekday:'long',day:'numeric',month:'long',year:'numeric'});
    const horaStr=fechaCompra.toLocaleTimeString('es-HN');
    let totalApuesta=0, itemsHtml='';
    for(const [num,monto] of Object.entries(compra.seleccion)){
      totalApuesta+=monto;
      const nombre=NOMBRES[parseInt(num)]||'';
      const premioPosible=monto*70;
      const imgUrl=`https://ladiaria.online/wp-content/uploads/2026/05/ladiaria${num}.jpg`;
      itemsHtml+=`<div class="carrito-item" style="padding:12px 0;"><div style="display:flex;align-items:center;gap:12px;"><img src="${imgUrl}" style="width:40px;height:40px;object-fit:cover;border-radius:8px;" onerror="this.style.display='none'"><div><div style="font-family:var(--font-mono);font-size:1.4rem;font-weight:700;color:var(--accent);">${num}</div><div style="font-size:0.7rem;color:var(--muted);">${nombre}</div></div></div><div style="text-align:right;"><div class="ci-amount">L ${fmt(monto)}</div><div style="font-size:0.65rem;color:var(--muted);">Premio: L ${fmt(premioPosible)}</div></div></div>`;
    }
    let estadoBadge='';
    if(compra.estado==='aprobado') estadoBadge='<span style="background:var(--green);color:#fff;padding:3px 10px;border-radius:20px;font-size:0.7rem;font-weight:700;">✅ Aprobado</span>';
    else if((compra.estado==='pendiente'||compra.estado==='pendiente_verificacion')&&compra.metodoPago==='transferencia') estadoBadge='<span style="background:var(--orange);color:#fff;padding:3px 10px;border-radius:20px;font-size:0.7rem;font-weight:700;">⏳ Pendiente</span>';
    const metodoPagoTexto=compra.metodoPago==='transferencia'?'🏦 Transferencia':'💰 Enviar a Vendedor';
    const infoExtra=compra.metodoPago==='efectivo'&&compra.vendedorEfectivo?`<div style="font-size:0.7rem;color:var(--muted);">Vendedor: ${escapeHtml(compra.vendedorEfectivo)}</div>`:(compra.metodoPago==='transferencia'&&compra.cuentaSeleccionada?`<div style="font-size:0.7rem;color:var(--muted);">Cuenta: ${escapeHtml(compra.cuentaSeleccionada.banco)}</div>`:'');
    html+=`<div style="background:var(--surface2);border-radius:16px;padding:20px;margin-bottom:20px;border:1px solid var(--border);">
      <div style="display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border);">
        <div><div style="font-family:var(--font-mono);font-size:0.8rem;color:var(--accent);font-weight:700;">#${compra.id}</div><div style="font-size:0.75rem;color:var(--muted);">${fechaStr} · ${horaStr}</div><div style="font-size:0.72rem;color:var(--green);font-weight:700;">${metodoPagoTexto}</div>${infoExtra}</div>
        <div style="display:flex;gap:8px;align-items:center;">${estadoBadge}<span style="background:var(--accent);color:#fff;padding:3px 10px;border-radius:20px;font-size:0.7rem;font-weight:700;">${compra.sorteo}</span></div>
      </div>
      ${itemsHtml}
      <div style="margin-top:16px;padding-top:12px;border-top:2px solid var(--border);display:flex;justify-content:space-between;align-items:center;">
        <span class="total-label">TOTAL APOSTADO</span>
        <span class="total-val" style="font-size:1.5rem;">L ${fmt(totalApuesta)}</span>
      </div>
    </div>`;
  }
  html+=`<div class="modal-btns-row" style="justify-content:center;"><button class="btn-rv cerrar" onclick="cerrarModalMisCompras()">Cerrar</button></div>`;
  document.getElementById('misComprasContent').innerHTML=html;
  document.getElementById('modalMisCompras').style.display='flex';
}
function cerrarModalMisCompras(){ document.getElementById('modalMisCompras').style.display='none'; }

// =========================================================
//  INIT
// =========================================================
async function init(){
  await actualizarResultados();
  await getLimitesNumeros();
  await cargarSesionCliente();

  horaHN = await fetchHoraHN();
  document.getElementById('relojDisplay').textContent = fmtHora12(horaHN);
  setInterval(tickReloj, 1000);

  verificarEstado();
  renderNumerosContenedor();
  renderCarrito();

  setInterval(async()=>{
    horaHN = await fetchHoraHN();
    await actualizarResultados();
    await getLimitesNumeros();
    verificarEstado();
  }, 5*60*1000);

  setInterval(async()=>{
    await getLimitesNumeros();
    verificarEstado();
  }, 30000);
  
  // Guardar carrito periódicamente (cada 30 segundos)
  setInterval(function() {
    if (Object.keys(window.seleccion).length > 0) {
      guardarCarritoEnStorage();
    }
  }, 30000);
}
init();

// Exponer funciones globalmente
window.reclamarPremio = reclamarPremio;
window.apostarAzar = apostarAzar;
window.eliminarDelCarrito = eliminarDelCarrito;
window.cancelarPago = cancelarPago;
window.seleccionarPago = seleccionarPago;
window.mostrarModalPago = mostrarModalPago;
window.enviarComprobanteAlServidor = enviarComprobanteAlServidor;
window.mostrarMisCompras = mostrarMisCompras;
window.cerrarModalMisCompras = cerrarModalMisCompras;
window.cerrarModalVendedores = cerrarModalVendedores;
window.generarNumeroFactura = generarNumeroFactura;
window.mostrarRevisar = mostrarRevisar;
window.cerrarRevisar = cerrarRevisar;
window.finalizarCompra = finalizarCompra;
window.registrarCliente = registrarCliente;
window.loginCliente = loginCliente;
window.abrirOverlayLogin = abrirOverlayLogin;
window.cerrarOverlayLogin = cerrarOverlayLogin;
window.switchTab = switchTab;
window.togglePassword = togglePassword;
window.generarNumerosAzar = generarNumerosAzar;
window.setVista = setVista;
window.solicitarConfirmar = solicitarConfirmar;
window.cerrarSesionCliente = cerrarSesionCliente;
window.mostrarReclamosPremios = mostrarReclamosPremios;
window.redirigirAdmin = redirigirAdmin;
window.redirigirVendedor = redirigirVendedor;
window.cerrarModalCantidad = cerrarModalCantidad;
window.guardarApuesta = guardarApuesta;
window.subirComprobanteAlServidor = subirComprobanteAlServidor;
window.procesarArchivo = procesarArchivo;

// Exponer funciones adicionales para el menú inferior
window.renderCarrito = renderCarrito;
window.renderNumerosContenedor = renderNumerosContenedor;
window.guardarCarritoEnStorage = guardarCarritoEnStorage;
</script>
</body>
</html><?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://ladiaria.online/wp-sitemap-index.xsl" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://ladiaria.online/wp-sitemap-posts-post-1.xml</loc></sitemap><sitemap><loc>https://ladiaria.online/wp-sitemap-posts-page-1.xml</loc></sitemap><sitemap><loc>https://ladiaria.online/wp-sitemap-taxonomies-category-1.xml</loc></sitemap><sitemap><loc>https://ladiaria.online/wp-sitemap-users-1.xml</loc></sitemap></sitemapindex>
