:root{--bg:#03070a;--g:#00ff88;--c:#00ccff;--tx:#e8f1f2;--mut:#8aa3a8;--err:#ff5470;--bd:rgba(0,255,136,.22);
--fh:'Space Grotesk','Segoe UI',system-ui,sans-serif;--fb:'Inter','Segoe UI',system-ui,sans-serif}
*{box-sizing:border-box}html,body{height:100%}
body{margin:0;font-family:var(--fb);color:var(--tx);background:var(--bg)}
.shell{min-height:100%;display:grid;grid-template-columns:1.1fr 1fr}

/* Panel izquierdo */
.hero{position:relative;overflow:hidden;padding:44px 52px;display:flex;flex-direction:column;justify-content:space-between;gap:28px;
background:radial-gradient(600px 400px at 30% 40%,rgba(0,255,136,.13),transparent 70%),
linear-gradient(rgba(0,255,136,.05) 1px,transparent 1px) 0 0/44px 44px,
linear-gradient(90deg,rgba(0,255,136,.05) 1px,transparent 1px) 0 0/44px 44px,#04100f;border-right:1px solid var(--bd)}
.brand{display:flex;align-items:center;gap:12px;font:700 1.1rem var(--fh);color:var(--g)}
.brand img,.brand svg{height:42px;width:auto}
.hero h2{font:700 clamp(1.7rem,3vw,2.5rem)/1.12 var(--fh);margin:0;max-width:15ch;letter-spacing:-.02em;color:#fff}
.hero p{margin:10px 0 0;color:var(--mut);max-width:38ch;line-height:1.55}

/* Recibo: el elemento memorable */
.tkw{display:flex;justify-content:center}
.ticket{width:min(300px,100%);background:#eef5f0;color:#0a1a14;padding:18px 18px 30px;font:.8rem/1.45 ui-monospace,'Cascadia Mono',Consolas,monospace;
-webkit-mask:conic-gradient(from -45deg at bottom,#0000,#000 1deg 89deg,#0000 90deg) 50%/14px 100%;mask:conic-gradient(from -45deg at bottom,#0000,#000 1deg 89deg,#0000 90deg) 50%/14px 100%;
box-shadow:0 0 60px rgba(0,255,136,.25);transform:rotate(-2deg)}
.tk-h{text-align:center;border-bottom:1px dashed #7c9a8c;padding-bottom:10px;margin-bottom:10px}
.tk-h b{font:700 .95rem var(--fh);display:block}
.tk-b{min-height:122px}
.ln{display:flex;justify-content:space-between;gap:10px;animation:print .35s ease-out}
.ln b{font-weight:600}
@keyframes print{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.tk-f{border-top:1px dashed #7c9a8c;margin-top:8px;padding-top:8px}
.tk-f .ln{animation:none;font-size:.95rem;font-weight:700}
#tkState{text-align:center;margin-top:8px;color:#5a6f66;min-height:1.4em}
#tkState.paid{color:#087a45;font-weight:700}

/* Panel derecho */
.side{display:grid;place-items:center;padding:32px 20px;background:radial-gradient(circle at 50% 0,#06151a,var(--bg) 70%)}
.card{width:min(410px,100%)}
.card.shake{animation:shake .45s}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
h1{font:700 1.8rem var(--fh);margin:0 0 4px;letter-spacing:-.01em;color:#fff}
.sub{margin:0 0 18px;color:var(--mut);font-size:.92rem}
.badge{display:none;margin-bottom:14px;padding:9px 11px;border-radius:8px;background:rgba(255,209,102,.1);border:1px solid rgba(255,209,102,.3);color:#ffd166;font-size:.8rem}
.badge.show{display:block}.badge b{color:#fff}

.tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin-bottom:18px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}
.tab{padding:10px;border:0;border-radius:9px;background:none;color:var(--mut);font:500 .9rem var(--fb);cursor:pointer;transition:background .2s,color .2s}
.tab[aria-selected=true]{background:linear-gradient(90deg,var(--g),var(--c));color:#02110a;font-weight:600}
[hidden]{display:none!important}

label{display:block;font-size:.85rem;font-weight:500;margin-bottom:6px;color:#cfe3e6}
.field{margin-bottom:14px}
.wrap{position:relative}
input[type=text],input[type=password]{width:100%;padding:12px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.45);color:var(--tx);font:inherit;font-size:.95rem;transition:border-color .2s,box-shadow .2s}
input::placeholder{color:#5d7378}
input:focus,button:focus-visible,.chip input:focus-visible+span{outline:none;border-color:var(--c);box-shadow:0 0 0 3px rgba(0,204,255,.3)}
.wrap input{padding-right:46px}
.eye{position:absolute;right:6px;top:50%;translate:0 -50%;width:36px;height:36px;display:grid;place-items:center;background:none;border:0;border-radius:8px;color:var(--mut);cursor:pointer}
.eye:hover{color:var(--c)}
.field.invalid input{border-color:var(--err)}
.hint{min-height:18px;margin:6px 0 0;font-size:.8rem;color:#ffd166}
.row{display:flex;justify-content:space-between;align-items:center;font-size:.85rem}
.check{display:flex;align-items:center;gap:8px;color:var(--mut);cursor:pointer;margin:0;font-weight:400}
.check input{width:16px;height:16px;accent-color:var(--g)}
.link{color:var(--c);background:none;border:0;padding:2px;font:inherit;cursor:pointer;border-radius:4px}
.link:hover{text-decoration:underline}

/* PIN */
.dots{display:flex;justify-content:center;gap:14px;margin:4px 0 16px}
.dots i{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.3);transition:.15s}
.dots i.on{background:var(--g);border-color:var(--g);box-shadow:0 0 12px var(--g)}
.pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:290px;margin:0 auto}
.pad button{height:54px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:var(--tx);font:600 1.25rem var(--fh);cursor:pointer;transition:background .15s,transform .1s}
.pad button:hover{background:rgba(0,204,255,.16)}.pad button:active{transform:scale(.94)}
.pad .aux{font-size:.9rem;color:var(--mut)}

/* Sucursal */
#sucursal{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .4s,opacity .4s}
#sucursal.open{grid-template-rows:1fr;opacity:1;margin-top:14px}
#sucursal>div{overflow:hidden}
.chips{display:flex;flex-wrap:wrap;gap:8px;padding:3px}
.chip{margin:0}.chip input{position:absolute;opacity:0}
.chip span{display:block;padding:9px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.18);cursor:pointer;font-size:.88rem;color:var(--tx);transition:.2s}
.chip input:checked+span{background:rgba(0,255,136,.16);border-color:var(--g);color:var(--g)}

#msg{min-height:20px;margin:12px 0 0;font-size:.88rem;color:var(--err)}#msg.ok{color:var(--g)}
.go{width:100%;margin-top:8px;padding:13px;border:0;border-radius:10px;font:600 1rem var(--fb);color:#02110a;cursor:pointer;background:linear-gradient(90deg,var(--g),var(--c));display:flex;align-items:center;justify-content:center;gap:10px;transition:transform .15s,box-shadow .2s,filter .2s}
.go:hover:not(:disabled){box-shadow:0 0 26px rgba(0,204,255,.5);transform:translateY(-1px)}
.go:disabled{filter:grayscale(.6) brightness(.7);cursor:not-allowed}
.spin{width:16px;height:16px;border-radius:50%;border:2px solid rgba(2,17,10,.3);border-top-color:#02110a;animation:rot .7s linear infinite;display:none}
.go.load .spin{display:block}@keyframes rot{to{transform:rotate(360deg)}}
.foot{margin-top:20px;padding-top:14px;border-top:1px solid rgba(255,255,255,.08);font-size:.78rem;color:var(--mut);text-align:center;line-height:1.6}
.foot a{color:var(--c);text-decoration:none}

@media (max-width:900px){
  .shell{grid-template-columns:1fr}.hero{padding:20px 22px;border:0;border-bottom:1px solid var(--bd)}
  .hero h2,.hero p,.tkw{display:none}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

