:root{
  --bg1:#070814;
  --bg2:#0b1630;
  --card:#0e1330cc;
  --stroke:#2a3b77;
  --neon:#64ffda;
  --neon2:#ff4fd8;
  --text:#eaf1ff;
  --muted:#9fb1ff;
  --good:#4dff88;
  --bad:#ff4d6d;
  --gold:#ffd36a;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  color:var(--text);
  background:
    radial-gradient(1200px 700px at 20% 10%, #1a0f3a 0%, transparent 60%),
    radial-gradient(900px 600px at 80% 20%, #0b3a55 0%, transparent 55%),
    radial-gradient(900px 700px at 50% 90%, #2a103a 0%, transparent 55%),
    linear-gradient(180deg, var(--bg1), var(--bg2));
  overflow-x:hidden;
}

.wrap{max-width:1280px;margin:0 auto;padding:18px}
.topbar{
  display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between;
  padding:14px 14px;
  border:1px solid #2b2b55;
  border-radius:18px;
  background: linear-gradient(180deg, #0e0f2aee, #0a0b1dee);
  box-shadow: 0 12px 40px #00000066;
  position:sticky;top:10px;z-index:10;
  backdrop-filter: blur(10px);
}
.brand{display:flex;align-items:center;gap:12px}
.logo{
  width:44px;height:44px;border-radius:14px;
  background: radial-gradient(circle at 30% 30%, #fff, #a9b7ff 12%, #2a2b55 45%, #0a0b1d 70%);
  box-shadow: 0 0 18px #6b7cff66, 0 0 26px #ff4fd833;
  border:1px solid #3a3a88;
  position:relative;overflow:hidden;
}
.logo:after{
  content:"";
  position:absolute;inset:-30%;
  background: conic-gradient(from 0deg, transparent 0 25%, #64ffda55 25% 35%, transparent 35% 60%, #ff4fd855 60% 70%, transparent 70% 100%);
  animation: spin 6s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.title{line-height:1.1}
.title h1{margin:0;font-size:18px;letter-spacing:0.4px}
.title small{display:block;color:var(--muted);margin-top:4px}

.controls{
  display:flex;gap:10px;flex-wrap:wrap;align-items: baseline;
}
select, button, input{
  border-radius:14px;
  border:1px solid #2e3c7c;
  background: #0b1030;
  color:var(--text);
  padding:10px 12px;
  font-size:14px;
  outline:none;
  box-shadow: 0 10px 25px #00000033;
}
button{
  cursor:pointer;
  transition: transform .08s ease, box-shadow .2s ease, border-color .2s ease;
}
button:hover{
  border-color:#5a6bff;
  box-shadow: 0 0 0 3px #4a60ff22, 0 16px 35px #00000055;
}
button:active{transform: translateY(1px) scale(.99)}
.btn-primary{
  background: linear-gradient(135deg, #1a2cff, #ff4fd8);
  border:0;
}
.btn-soft{
  background: linear-gradient(180deg, #0c1438, #080b1f);
}

.grid{
  margin-top:16px;
  display:grid;
  grid-template-columns: 420px 1fr;
  gap:14px;
}
@media (max-width: 980px){
  .grid{grid-template-columns:1fr}
}

.panel{
  background: linear-gradient(180deg, #0d1030cc, #070a1acc);
  border:1px solid #2a2f66;
  border-radius:22px;
  box-shadow: 0 16px 45px #00000055;
  overflow:hidden;
}
.panel .head{
  padding:14px 16px;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  border-bottom:1px solid #232a55;
  background: linear-gradient(180deg, #0e1336, #0b0f2a);
}
.panel .head h2{margin:0;font-size:15px;letter-spacing:.3px}
.panel .body{padding:14px 16px}

.ball{
  width:100%;
  aspect-ratio: 1/1;
  border-radius:28px;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at 30% 25%, #ffffff, #d7dcff 12%, #7a8cff 30%, #182055 55%, #070a1a 75%);
  border:1px solid #3c4a99;
  box-shadow:
    0 0 0 6px #ffffff08,
    0 0 30px #64ffda22,
    0 0 45px #ff4fd822,
    0 20px 60px #00000066;
  position:relative;
  overflow:hidden;
}
.ball:before{
  content:"";
  position:absolute;inset:-40%;
  background: conic-gradient(from 0deg, transparent 0 30%, #64ffda66 30% 38%, transparent 38% 65%, #ff4fd866 65% 72%, transparent 72% 100%);
  animation: spin 5s linear infinite;
  opacity:.55;
}
.ballInner{
  width:70%;
  aspect-ratio:1/1;
  border-radius:999px;
  display:grid;
  place-items:center;
  background: radial-gradient(circle at 35% 30%, #ffffff, #f3f5ff 35%, #c8d1ff 65%, #8b99ff 100%);
  border:1px solid #ffffff55;
  box-shadow: inset 0 0 18px #00000022, 0 0 22px #64ffda33;
  z-index:1;
}
.ballNum{
  font-size:62px;
  font-weight:900;
  color:#141a3b;
  text-shadow: 0 2px 0 #ffffffcc;
  letter-spacing:1px;
}
.pulse{animation: pop .35s ease}
@keyframes pop{
  0%{transform: scale(.92); filter: brightness(1.1)}
  60%{transform: scale(1.02)}
  100%{transform: scale(1)}
}

.called{display:flex;flex-wrap:wrap;gap:8px}
.chip{
  padding:7px 10px;
  border-radius:999px;
  border:1px solid #2d3b7a;
  background:#0b1030;
  color:#dce6ff;
  font-weight:700;
  font-size:13px;
  box-shadow: 0 10px 18px #00000022;
}
.chip.new{
  border-color:#64ffda;
  box-shadow: 0 0 0 3px #64ffda22, 0 10px 18px #00000033;
}

.players{
  display:grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap:14px;
}
@media (max-width: 980px){
  .players{grid-template-columns:1fr}
}
.playerCard{
  border-radius:22px;
  border:1px solid #2a2f66;
  background: linear-gradient(180deg, #0e1336cc, #070a1acc);
  box-shadow: 0 16px 45px #00000055;
  overflow:hidden;
}
.playerTop{
  padding:12px 14px;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  border-bottom:1px solid #232a55;
  background: linear-gradient(180deg, #0e1336, #0b0f2a);
}
.pName{display:flex;align-items:center;gap:10px;font-weight:800}
.dot{
  width:12px;height:12px;border-radius:999px;
  background: radial-gradient(circle at 30% 30%, #fff, #64ffda 25%, #0a0b1d 70%);
  box-shadow: 0 0 14px #64ffda55;
}
.score{color:var(--gold);font-weight:900;letter-spacing:.3px}

.ticket{padding:12px}
.ticketGrid{
  display:grid;
  grid-template-columns: repeat(5, 1fr);
  gap:8px;
}
.cell{
  aspect-ratio: 1/1;
  border-radius:14px;
  border:1px solid #2a3b77;
  background: linear-gradient(180deg, #0c1234, #070a1a);
  display:grid;
  place-items:center;
  font-weight:900;
  color:#dfe8ff;
  box-shadow: 0 12px 20px #00000033;
  user-select:none;
  cursor:pointer;
  position:relative;
  overflow:hidden;
  font-size:18px;
}
.cell.marked{
  border-color:#64ffda;
  box-shadow: 0 0 0 3px #64ffda22, 0 12px 20px #00000044;
}
.cell.free{
  background: radial-gradient(circle at 30% 30%, #fff, #ffd36a 35%, #2a103a 85%);
  border-color:#ffd36a;
  color:#1a0f3a;
  cursor:default;
}
.actions{
  display:flex;gap:10px;flex-wrap:wrap;
  padding:12px 14px 14px;
  border-top:1px solid #232a55;
  background: linear-gradient(180deg, #0b0f2a, #070a1a);
}
.actions button{flex:1;min-width:140px}

.toast{
  position:fixed;
  left:50%;bottom:18px;
  transform:translateX(-50%);
  background: linear-gradient(135deg, #0c1234, #070a1a);
  border:1px solid #2a3b7a;
  padding:12px 14px;
  border-radius:16px;
  box-shadow: 0 18px 55px #00000077;
  max-width:min(560px, calc(100vw - 28px));
  display:none;
  z-index:99;
}
.toast.show{display:block;animation: toast .25s ease}
@keyframes toast{from{transform:translateX(-50%) translateY(10px);opacity:.2}to{transform:translateX(-50%) translateY(0);opacity:1}}
.toast.good{border-color:var(--good)}
.toast.bad{border-color:var(--bad)}
.toast.info{border-color:var(--neon)}

/* Laser background */
.lasers{
  position:fixed; inset:0;
  pointer-events:none;
  opacity:.22;
  mix-blend-mode: screen;
  z-index:0;
}
.lasers span{
  position:absolute;
  width:2px;
  height:120vh;
  top:-10vh;
  background: linear-gradient(180deg, transparent, #64ffda, transparent);
  filter: blur(.2px);
  animation: laser 6s linear infinite;
}
.lasers span:nth-child(2){left:15%; animation-duration:7.5s; opacity:.18}
.lasers span:nth-child(3){left:35%; animation-duration:5.5s; opacity:.16}
.lasers span:nth-child(4){left:55%; animation-duration:8.2s; opacity:.18}
.lasers span:nth-child(5){left:75%; animation-duration:6.8s; opacity:.16; background: linear-gradient(180deg, transparent, #ff4fd8, transparent)}
.lasers span:nth-child(6){left:90%; animation-duration:9.1s; opacity:.14; background: linear-gradient(180deg, transparent, #ffd36a, transparent)}
@keyframes laser{
  0%{transform: translateY(-20vh) rotate(10deg)}
  100%{transform: translateY(20vh) rotate(10deg)}
}

a{color:var(--neon);text-decoration: none;}
small{color:var(--muted)}

            body.login {
                color:white;
                display:flex;
                align-items:center;
                justify-content:center;
                height:100vh;
            }
            .box {
                background:#111633;
                padding:30px;
                border-radius:10px;
                box-shadow:0 0 20px #000;
                text-align:center;
            }
            input {
                padding:10px;
                font-size:16px;
                margin-top:10px;
                width:200px;
            }
            button {
                padding:10px 20px;
                margin-top:10px;
                cursor:pointer;
            }
            .error { color:#ff6b6b; }