@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:wght@400;500;700&display=swap');
:root{--bg:#0d0d14;--sur:#16161f;--sur2:#1e1e2e;--gold:#f5c842;--gold2:#e8a020;--pink:#e8407a;--teal:#2dd4bf;--purple:#9b5de5;--text:#f0eeff;--muted:#8888aa}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:'DM Sans',sans-serif;min-height:100vh}
.screen{display:none;min-height:100vh;flex-direction:column;align-items:center;padding:40px 20px;position:relative}
.screen.active{display:flex}
#screen-home{background:radial-gradient(ellipse 80% 60% at 50% 0%,#2a1060,transparent 70%);justify-content:center}
.logo{font-family:'Bebas Neue',sans-serif;font-size:clamp(52px,10vw,90px);letter-spacing:4px;line-height:1;text-align:center;background:linear-gradient(135deg,var(--gold),var(--pink) 60%,var(--purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:6px}
.logo-sub{font-size:13px;letter-spacing:6px;text-transform:uppercase;color:var(--muted);margin-bottom:44px;text-align:center}
.era-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:16px;width:100%;max-width:960px}
.era-card{background:var(--sur);border:1px solid rgba(255,255,255,.08);border-radius:18px;padding:28px 24px;cursor:pointer;transition:transform .2s,box-shadow .2s;position:relative;overflow:hidden}
.era-card:hover{transform:translateY(-4px)}
.c70{border-color:rgba(251,146,60,.25)}.c70:hover{box-shadow:0 20px 50px rgba(251,146,60,.2);border-color:rgba(251,146,60,.5)}
.c2k{border-color:rgba(45,212,191,.25)}.c2k:hover{box-shadow:0 20px 50px rgba(45,212,191,.2);border-color:rgba(45,212,191,.5)}
.cac{border-color:rgba(232,64,122,.25)}.cac:hover{box-shadow:0 20px 50px rgba(232,64,122,.2);border-color:rgba(232,64,122,.5)}
.ces{border-color:rgba(245,200,66,.25)}.ces:hover{box-shadow:0 20px 50px rgba(245,200,66,.2);border-color:rgba(245,200,66,.5)}
.cit{border-color:rgba(156,220,90,.25)}.cit:hover{box-shadow:0 20px 50px rgba(156,220,90,.2);border-color:rgba(156,220,90,.5)}
.cmx{border-color:rgba(155,93,229,.25)}.cmx:hover{box-shadow:0 20px 50px rgba(155,93,229,.2);border-color:rgba(155,93,229,.5)}
.csp{border-color:rgba(30,215,96,.25)}.csp:hover{box-shadow:0 20px 50px rgba(30,215,96,.2);border-color:rgba(30,215,96,.5)}
.era-emoji{font-size:40px;margin-bottom:14px;display:block}
.era-title{font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:3px;margin-bottom:6px}
.c70 .era-title{color:#fb923c}.c2k .era-title{color:var(--teal)}.cac .era-title{color:var(--pink)}.ces .era-title{color:var(--gold)}.cit .era-title{color:#9cdc5a}.cmx .era-title{color:var(--purple)}.csp .era-title{color:#1db954}
.era-desc{font-size:12px;color:var(--muted);line-height:1.5}
.era-count{position:absolute;top:14px;right:14px;background:rgba(255,255,255,.07);border-radius:20px;padding:3px 10px;font-size:11px;color:var(--muted)}
#screen-setup{background:radial-gradient(ellipse 80% 60% at 50% 0%,#2a1060,transparent 70%);justify-content:center}
.setup-card{background:var(--sur);border:1px solid rgba(255,255,255,.07);border-radius:20px;padding:36px;width:100%;max-width:520px;box-shadow:0 30px 80px rgba(0,0,0,.6)}
.setup-card h2{font-family:'Bebas Neue',sans-serif;font-size:26px;letter-spacing:2px;color:var(--gold);margin-bottom:4px}
.era-badge{font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--muted);margin-bottom:20px;display:block}
.player-row{display:flex;gap:10px;margin-bottom:12px}
.player-row input{flex:1;background:var(--sur2);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:12px 16px;color:var(--text);font-family:'DM Sans',sans-serif;font-size:15px;outline:none;transition:border-color .2s}
.player-row input:focus{border-color:var(--gold)}
.player-row input::placeholder{color:var(--muted)}
.btn-rm{background:rgba(232,64,122,.12);border:1px solid rgba(232,64,122,.3);border-radius:10px;color:var(--pink);width:44px;height:44px;cursor:pointer;font-size:18px}
.btn-add-p{width:100%;height:44px;margin-bottom:4px;background:rgba(245,200,66,.1);border:1px solid rgba(245,200,66,.25);border-radius:10px;color:var(--gold);font-family:'DM Sans',sans-serif;font-size:15px;cursor:pointer}
.btn-back{background:var(--sur2);border:1px solid rgba(255,255,255,.1);border-radius:10px;color:var(--muted);padding:10px 18px;font-family:'DM Sans',sans-serif;font-size:14px;cursor:pointer;margin-bottom:20px}
.btn-primary{width:100%;margin-top:24px;padding:16px;background:linear-gradient(135deg,var(--gold),var(--gold2));border:none;border-radius:12px;color:#111;font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:3px;cursor:pointer}
.btn-config{position:absolute;top:20px;right:20px;background:var(--sur);border:1px solid rgba(255,255,255,.1);border-radius:12px;width:44px;height:44px;font-size:20px;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}
.btn-config:hover{color:var(--gold);border-color:var(--gold)}
#screen-cards{background:radial-gradient(ellipse 80% 50% at 50% 0%,#0e2a40,transparent 70%);gap:32px}
.screen-title{font-family:'Bebas Neue',sans-serif;font-size:38px;letter-spacing:3px;color:var(--teal);text-align:center}
.screen-sub{color:var(--muted);font-size:13px;text-align:center}
.cards-grid{display:flex;flex-wrap:wrap;gap:28px;justify-content:center;width:100%;max-width:1100px}
.player-card{background:var(--sur);border:1px solid rgba(45,212,191,.2);border-radius:20px;padding:32px 24px;display:flex;flex-direction:column;align-items:center;gap:16px;width:300px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.pc-name{font-family:'Bebas Neue',sans-serif;font-size:28px;letter-spacing:3px;color:var(--teal);text-align:center}
.qr-box{background:#fff;border-radius:12px;padding:10px;line-height:0;display:inline-block}
.qr-box canvas,.qr-box img{display:block!important;width:220px!important;height:220px!important}
.qr-box>div{line-height:0!important}
.qr-hint{font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--muted);text-align:center}
.btn-start{padding:16px 48px;background:linear-gradient(135deg,var(--pink),var(--purple));border:none;border-radius:12px;color:#fff;font-family:'Bebas Neue',sans-serif;font-size:26px;letter-spacing:3px;cursor:pointer;box-shadow:0 8px 30px rgba(232,64,122,.4)}
#screen-game{padding:20px;background:radial-gradient(ellipse 60% 40% at 50% 0%,#1a0a30,transparent 60%);align-items:stretch}
.game-header{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:1400px;padding-bottom:16px;flex-wrap:wrap;gap:10px}
.game-logo{font-family:'Bebas Neue',sans-serif;font-size:28px;letter-spacing:3px;background:linear-gradient(135deg,var(--gold),var(--pink));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.hbtns{display:flex;gap:10px}
.btn-bingo{padding:12px 28px;background:linear-gradient(135deg,var(--gold),var(--gold2));border:none;border-radius:10px;color:#111;font-family:'Bebas Neue',sans-serif;font-size:20px;letter-spacing:3px;cursor:pointer;animation:glow 2s infinite alternate}
@keyframes glow{from{box-shadow:0 6px 20px rgba(245,200,66,.3)}to{box-shadow:0 6px 40px rgba(245,200,66,.7)}}
.btn-rst{padding:12px 20px;background:var(--sur2);border:1px solid rgba(255,255,255,.15);border-radius:10px;color:var(--muted);font-family:'Bebas Neue',sans-serif;font-size:17px;letter-spacing:2px;cursor:pointer}
.btn-rst:hover{color:var(--pink);border-color:var(--pink)}
.stats-bar{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;padding:12px 20px;background:var(--sur2);border-radius:12px;margin-bottom:16px;width:100%;max-width:1400px}
.stat-item{text-align:center}
.stat-val{font-family:'Bebas Neue',sans-serif;font-size:26px;color:var(--gold)}
.stat-lbl{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--muted)}
.game-layout{display:grid;grid-template-columns:1fr 320px;gap:20px;width:100%;max-width:1400px;flex:1}
@media(max-width:900px){.game-layout{grid-template-columns:1fr}}
.game-left{display:flex;flex-direction:column;gap:16px}
.now-playing{background:var(--sur);border:1px solid rgba(245,200,66,.2);border-radius:18px;padding:24px 28px;position:relative;overflow:hidden}
.now-playing::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(245,200,66,.05),transparent 60%);pointer-events:none}
.np-lbl{font-size:11px;letter-spacing:4px;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.np-num{font-family:'Bebas Neue',sans-serif;font-size:15px;color:var(--muted);letter-spacing:2px;margin-bottom:4px}
.np-title{font-family:'Bebas Neue',sans-serif;font-size:clamp(26px,4vw,44px);letter-spacing:2px;line-height:1;color:var(--gold);margin-bottom:6px}
.np-artist{font-size:16px;color:var(--text);font-weight:500;margin-bottom:2px}
.np-year{font-size:13px;color:var(--muted);margin-bottom:16px}
.controls{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.btn-ctrl{padding:12px 22px;border-radius:10px;border:none;font-family:'Bebas Neue',sans-serif;font-size:17px;letter-spacing:2px;cursor:pointer}
.btn-next{background:linear-gradient(135deg,var(--pink),var(--purple));color:#fff;box-shadow:0 6px 20px rgba(232,64,122,.35)}
.btn-pause{background:var(--sur2);border:1px solid rgba(255,255,255,.12);color:var(--text)}
.paused-badge{display:inline-flex;align-items:center;gap:6px;background:rgba(232,64,122,.15);border:1px solid rgba(232,64,122,.4);border-radius:20px;padding:6px 14px;font-size:12px;color:var(--pink);letter-spacing:2px;text-transform:uppercase}
.paused-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--pink);animation:blink 1s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}
.audio-box{background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:14px 16px;margin-top:4px}
.a-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.a-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex-shrink:0;transition:background .3s}
.a-dot.playing{background:#4ade80;box-shadow:0 0 8px #4ade80;animation:blink 1.2s infinite}
.a-dot.loading{background:var(--gold);animation:blink .6s infinite}
.a-dot.error{background:var(--pink)}
.a-txt{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted)}
.prog-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.prog-bar{flex:1;height:6px;background:rgba(255,255,255,.1);border-radius:3px;overflow:hidden;cursor:pointer}
.prog-fill{height:100%;background:linear-gradient(90deg,var(--teal),var(--purple));border-radius:3px;width:0%;transition:width .25s linear}
.t-lbl{font-size:11px;color:var(--muted);min-width:32px;text-align:center}
.vol-row{display:flex;align-items:center;gap:10px}
.vol-icon{font-size:18px;cursor:pointer;color:var(--muted);user-select:none}
input[type=range].vol{flex:1;-webkit-appearance:none;height:4px;border-radius:2px;background:rgba(255,255,255,.15);outline:none;cursor:pointer}
input[type=range].vol::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--teal);cursor:pointer}
.board-wrap{background:var(--sur);border:1px solid rgba(255,255,255,.07);border-radius:18px;padding:20px;flex:1}
.board-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap;gap:8px}
.board-ttl{font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:3px;color:var(--purple)}
.btn-rst-board{padding:8px 16px;background:rgba(232,64,122,.12);border:1px solid rgba(232,64,122,.3);border-radius:8px;color:var(--pink);font-family:'Bebas Neue',sans-serif;font-size:14px;letter-spacing:2px;cursor:pointer}
.board-grid{display:grid;grid-template-columns:repeat(9,1fr);gap:4px}
@media(max-width:700px){.board-grid{grid-template-columns:repeat(6,1fr)}}
.bcell{background:var(--sur2);border:1px solid rgba(255,255,255,.05);border-radius:8px;padding:5px 4px;text-align:center;min-height:54px;display:flex;flex-direction:column;justify-content:center;transition:all .4s}
.bcell.called{background:linear-gradient(135deg,#1e0a3c,#12082a);border-color:var(--purple);box-shadow:0 0 12px rgba(155,93,229,.25);animation:pop .3s ease}
.bcell.current{background:linear-gradient(135deg,#0f2e1a,#0a3d1f)!important;border-color:#4ade80!important;box-shadow:0 0 18px rgba(74,222,128,.45)!important;animation:pop .3s ease}
.bcell.current .bn{color:#4ade80!important}
.bcell.current .bt{color:#86efac!important}
.bcell.current .ba{color:#4ade80!important}
@keyframes pop{0%{transform:scale(.8);opacity:0}70%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
.bn{font-family:'Bebas Neue',sans-serif;font-size:12px;color:var(--muted);margin-bottom:1px}
.bcell.called .bn{color:var(--purple)}
.bt{font-size:6.5px;font-weight:700;color:var(--text);line-height:1.2}
.bcell.called .bt{color:#d8b4fe}
.ba{font-size:6px;color:var(--muted);line-height:1.1;margin-top:1px}
.bcell.called .ba{color:#a78bfa}
.game-right{background:var(--sur);border:1px solid rgba(255,255,255,.07);border-radius:18px;padding:20px;overflow-y:auto;max-height:calc(100vh - 40px);position:sticky;top:20px}
.panel-ttl{font-family:'Bebas Neue',sans-serif;font-size:20px;letter-spacing:3px;color:var(--teal);margin-bottom:4px}
.panel-hint{font-size:10px;color:var(--muted);letter-spacing:1px;margin-bottom:14px}
.hist-empty{font-size:12px;color:var(--muted);text-align:center;padding:20px 0}
.hist-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--sur2);border-radius:10px;margin-bottom:6px;border-left:3px solid var(--purple);animation:slideIn .3s ease}
@keyframes slideIn{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}
.hist-num{font-family:'Bebas Neue',sans-serif;font-size:16px;color:var(--purple);min-width:36px}
.hist-info{flex:1;min-width:0}
.hist-title{font-size:12px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hist-artist{font-size:10px;color:var(--muted)}
.hist-year{font-size:10px;color:var(--gold);flex-shrink:0}
#screen-winner{justify-content:center;align-items:center;background:radial-gradient(ellipse 80% 60% at 50% 50%,#1a0a30,transparent 70%)}
.w-emoji{font-size:80px;margin-bottom:16px;text-align:center;animation:bounce 1s infinite alternate}
@keyframes bounce{from{transform:translateY(0)}to{transform:translateY(-16px)}}
.w-lbl{font-size:14px;letter-spacing:6px;color:var(--muted);text-transform:uppercase;margin-bottom:8px;text-align:center}
.w-name{font-family:'Bebas Neue',sans-serif;font-size:clamp(50px,12vw,100px);letter-spacing:4px;background:linear-gradient(135deg,var(--gold),var(--pink));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:30px;text-align:center}
.modal-ov{display:none;position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:300;align-items:center;justify-content:center}
.modal-ov.open{display:flex}
.modal-box{background:var(--sur);border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:32px;max-width:380px;width:90%;text-align:center}
.modal-box h3{font-family:'Bebas Neue',sans-serif;font-size:24px;letter-spacing:2px;color:var(--pink);margin-bottom:10px}
.modal-box p{color:var(--muted);font-size:14px;margin-bottom:24px;line-height:1.5}
.modal-btns{display:flex;gap:12px;justify-content:center}
.mbtn{padding:12px 28px;border:none;border-radius:10px;font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:2px;cursor:pointer}
.mbtn.ok{background:linear-gradient(135deg,var(--pink),var(--purple));color:#fff}
.mbtn.ok-green{background:linear-gradient(135deg,#1ed760,#1db954);color:#111}
.mbtn.no{background:var(--sur2);border:1px solid rgba(255,255,255,.12);color:var(--muted)}
.form-grp{margin-bottom:16px;text-align:left}
.form-grp label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;letter-spacing:1px}
.form-grp input{width:100%;background:var(--sur2);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:12px;color:var(--text);font-family:'DM Sans',sans-serif;font-size:14px;outline:none;transition:border-color .2s}
.form-grp input:focus{border-color:var(--gold)}
.form-hint{font-size:11px;color:var(--muted);margin-top:6px;display:block}
.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(80px);background:var(--sur);border:1px solid var(--gold);border-radius:12px;padding:14px 24px;font-family:'Bebas Neue',sans-serif;font-size:18px;letter-spacing:2px;color:var(--gold);z-index:200;transition:transform .35s}
.toast.show{transform:translateX(-50%) translateY(0)}
::-webkit-scrollbar{width:6px}::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:3px}
@keyframes fall{0%{transform:translateY(0) rotate(0);opacity:1}100%{transform:translateY(110vh) rotate(720deg);opacity:0}}