/* Bar Jukebox v2 — Neon Cantina theme. Deep plum-black, violet→magenta→amber glows, glass surfaces.
   Tight/compact by design (Carlos hates loose layouts). All effects CSS-only where possible. */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0b0612; --bg2:#120a1e;
  --glass:rgba(255,255,255,.055); --glass2:rgba(255,255,255,.09);
  --line:rgba(255,255,255,.10); --line-grad:linear-gradient(120deg,rgba(167,139,250,.55),rgba(236,72,153,.35),rgba(245,185,66,.45));
  --txt:#f7f3ff; --dim:#b9aed1; --dim2:#8f84ab;
  --vio:#7c3aed; --mag:#db2777; --amb:#f5b942; --gold:#f5b942; --gold2:#d99a26;
  --red:#fb7185; --green:#34d399;
  --grad:linear-gradient(120deg,#7c3aed,#db2777 55%,#f59e0b);
  --disp:"Bricolage Grotesque","Sora",-apple-system,sans-serif;
  --ui:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
}
html{scrollbar-color:#3b2a5e var(--bg)}
body{background:
  radial-gradient(1100px 520px at 85% -10%,rgba(219,39,119,.20),transparent 60%),
  radial-gradient(900px 480px at -10% 8%,rgba(124,58,237,.24),transparent 60%),
  radial-gradient(800px 500px at 50% 115%,rgba(245,158,11,.12),transparent 60%),
  linear-gradient(180deg,var(--bg2),var(--bg) 320px);
  background-color:var(--bg); color:var(--txt); font-family:var(--ui); font-size:15px; min-height:100vh}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}
#app{position:relative;z-index:2}
a{color:var(--amb)}
button{font:inherit;cursor:pointer;border-radius:10px;padding:8px 12px;background:var(--glass2);color:var(--txt);border:1px solid var(--line);transition:transform .15s ease,box-shadow .2s ease,background .2s ease,opacity .2s}
button:active{transform:scale(.96)}
button.primary{background:var(--grad);color:#fff;font-weight:700;border:none;box-shadow:0 4px 18px rgba(219,39,119,.35),inset 0 1px 0 rgba(255,255,255,.25);text-shadow:0 1px 2px rgba(0,0,0,.25)}
button.primary:disabled{background:#3a3350;color:#8f84ab;box-shadow:none;cursor:not-allowed;text-shadow:none}
button.danger{background:transparent;color:var(--red);border-color:rgba(251,113,133,.5)}
button.small{padding:5px 9px;font-size:13px;border-radius:9px}
button:disabled{opacity:.45;cursor:not-allowed}
input,select,textarea{background:rgba(10,6,18,.65);color:var(--txt);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;width:100%;transition:border-color .2s,box-shadow .2s}
input:focus,select:focus,textarea:focus{outline:none;border-color:rgba(219,39,119,.65);box-shadow:0 0 0 3px rgba(219,39,119,.22)}
label{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:9px 0 4px}
.wrap{max-width:640px;margin:0 auto;padding:10px 12px}
/* header */
header.venue{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 2px;position:sticky;top:0;z-index:30;background:linear-gradient(180deg,rgba(11,6,18,.92),rgba(11,6,18,.75));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
header.venue h1{font-family:var(--disp);font-size:23px;font-weight:800;letter-spacing:.01em;background:linear-gradient(92deg,#fff 20%,#e9d5ff 55%,var(--amb));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.credit-pill{background:linear-gradient(135deg,#ffd977,#f5b942 45%,#d98a1f)!important;color:#241300!important;border:none!important;font-weight:800;box-shadow:0 0 0 1px rgba(255,217,119,.5),0 4px 16px rgba(245,185,66,.40),inset 0 1px 0 rgba(255,255,255,.6);text-shadow:none!important;border-radius:999px!important;padding:7px 13px!important}
.lang-btn{border-radius:999px!important;padding:6px 10px!important;font-size:12px;font-weight:700;letter-spacing:.06em}
/* glass cards */
.card,.glass{background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:11px 12px;margin:9px 0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 8px 24px rgba(0,0,0,.28);position:relative}
.card::before{content:"";position:absolute;inset:0 0 auto 0;height:1px;border-radius:14px;background:var(--line-grad);opacity:.5;pointer-events:none}
.card h2{font-size:11px;text-transform:uppercase;letter-spacing:.16em;color:var(--dim);margin-bottom:7px;font-weight:700}
/* NOW PLAYING hero */
.hero{display:flex;gap:12px;align-items:center;background:linear-gradient(135deg,rgba(124,58,237,.22),rgba(219,39,119,.14) 55%,rgba(245,158,11,.10));border:1px solid rgba(219,39,119,.30);border-radius:18px;padding:12px;margin:4px 0 10px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 12px 32px rgba(124,58,237,.22),inset 0 1px 0 rgba(255,255,255,.10);overflow:hidden;position:relative}
.hero .h-tile{width:84px;height:84px;border-radius:16px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-size:30px;font-weight:800;color:#fff;text-shadow:0 2px 10px rgba(0,0,0,.4);box-shadow:0 8px 22px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.35)}
.hero .h-main{flex:1;min-width:0}
.hero .h-kicker{font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--amb);font-weight:800;display:flex;align-items:center;gap:8px}
.hero .h-title{font-family:var(--disp);font-size:21px;font-weight:800;line-height:1.12;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.hero .h-artist{color:#e9d5ff;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hero .h-req{color:var(--dim);font-size:12px;margin-top:2px}
.hero .h-shimmer{height:4px;border-radius:2px;margin-top:8px;background:rgba(255,255,255,.12);overflow:hidden;position:relative}
.hero .h-shimmer::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);animation:shim 2.2s infinite;transform:translateX(-100%)}
@keyframes shim{60%,100%{transform:translateX(100%)}}
.eq{display:inline-flex;gap:2.5px;align-items:flex-end;height:12px}
.eq i{width:3px;border-radius:2px;background:var(--amb);animation:eq 0.9s ease-in-out infinite}
.eq i:nth-child(1){height:60%}.eq i:nth-child(2){height:100%;animation-delay:.15s}.eq i:nth-child(3){height:45%;animation-delay:.3s}.eq i:nth-child(4){height:80%;animation-delay:.45s}.eq i:nth-child(5){height:55%;animation-delay:.6s}
@keyframes eq{0%,100%{transform:scaleY(.4)}50%{transform:scaleY(1)}}
.eq{transform-origin:bottom}
/* search + tabs */
.search{font-size:17px!important;padding:13px 15px!important;border-radius:14px!important;background:rgba(255,255,255,.07)!important;border:1px solid rgba(255,255,255,.14)!important;box-shadow:inset 0 2px 8px rgba(0,0,0,.35)}
.search:focus{border-color:rgba(219,39,119,.8)!important;box-shadow:0 0 0 4px rgba(219,39,119,.25),inset 0 2px 8px rgba(0,0,0,.35)}
#tabs{display:flex;gap:4px;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:999px;padding:4px;margin:10px 0 4px;backdrop-filter:blur(10px)}
#tabs .chip{flex:1;border:none;background:transparent;border-radius:999px;padding:7px 4px;font-size:13px;font-weight:600;color:var(--dim);white-space:nowrap}
#tabs .chip.on{background:var(--grad);color:#fff;box-shadow:0 3px 12px rgba(219,39,119,.4)}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.chip{padding:6px 11px;border-radius:999px;font-size:13px;font-weight:600;background:hsla(var(--h,265),70%,45%,.28);border:1px solid hsla(var(--h,265),85%,70%,.35)}
.chip.on{background:var(--grad);color:#fff;border-color:transparent;font-weight:700}
/* song cards */
.queue-row,.song-row{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.queue-row:last-child,.song-row:last-child{border-bottom:none}
#songList .song-row,.card .song-row{border-bottom:1px solid rgba(255,255,255,.06)}
#songList>.song-row,#homeTop .song-row,#hotList .song-row,#newList .song-row,#songList .card .song-row{background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:9px 10px;margin:7px 0;backdrop-filter:blur(10px);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);animation:rise .25s ease both}
#songList .card .song-row{background:rgba(255,255,255,.03)}
@keyframes rise{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.tile{width:46px;height:46px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:800;font-size:16px;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.45);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 12px rgba(0,0,0,.35)}
.song-main{flex:1;min-width:0}
.song-title{font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15.5px}
.song-sub{color:var(--dim);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.req{color:var(--dim2);font-size:12px}
.prio{color:var(--amb);font-size:11px;font-weight:800;letter-spacing:.05em}
.x-badge{display:inline-block;background:linear-gradient(135deg,#ef4444,#b91c1c);color:#fff;font-size:9.5px;font-weight:800;border-radius:5px;padding:1.5px 5px;vertical-align:2px;letter-spacing:.06em}
.fav-btn{background:transparent!important;border:none!important;font-size:19px;padding:2px 4px!important;color:var(--amb)}
.play-btn{border-radius:999px!important;padding:7px 11px!important;font-size:12.5px!important;white-space:nowrap}
.next-btn{border-radius:999px!important;padding:6px 10px!important;font-size:12.5px!important;white-space:nowrap;background:transparent!important;border:1px solid rgba(219,39,119,.55)!important;color:#f9a8d4}
.g-tile{width:42px;height:42px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;font-size:19px;box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
/* skeleton */
.skel{height:62px;border-radius:14px;margin:7px 0;background:linear-gradient(100deg,rgba(255,255,255,.05) 40%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.05) 60%);background-size:200% 100%;animation:sk 1.1s infinite}
@keyframes sk{to{background-position:-200% 0}}
/* queue bar */
.queuebar{position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:40;padding:8px 13px 11px;background:rgba(20,11,36,.88);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(219,39,119,.40);border-radius:19px;box-shadow:0 14px 38px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.09)}
.q-pill-row{text-align:center;margin-bottom:7px}
.q-pill{display:inline-block;background:linear-gradient(120deg,rgba(124,58,237,.85),rgba(219,39,119,.85));border:1px solid rgba(255,255,255,.25);color:#fff;font-size:12px;font-weight:800;letter-spacing:.05em;border-radius:999px;padding:4px 14px;box-shadow:0 4px 14px rgba(219,39,119,.4)}
.venue-switch{display:flex;align-items:center;gap:5px;text-decoration:none;min-width:0}
.venue-switch .chev{color:var(--amb);font-size:15px;-webkit-text-fill-color:var(--amb)}
.gear-btn{border-radius:999px!important;padding:7px 10px!important;font-size:15px}
.stats-row{display:flex;gap:8px;margin:2px 0 10px}
.mini-stat{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;background:var(--glass);border:1px solid var(--line);border-radius:13px;padding:8px 6px;backdrop-filter:blur(10px);font-size:12.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.09em;font-weight:700}
.mini-stat b{font-family:var(--disp);font-size:19px;color:#fff;letter-spacing:0}
.mini-stat .ms-ic{font-size:16px}
.sec-head{display:flex;justify-content:space-between;align-items:center;margin:13px 1px 5px}
.sec-title{font-family:var(--disp);font-size:17.5px;font-weight:800;letter-spacing:.01em}
.rail{display:flex;gap:11px;overflow-x:auto;padding:5px 2px 9px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.rail::-webkit-scrollbar{display:none}
.rail-card{width:106px;flex:none;scroll-snap-align:start;animation:rise .25s ease both}
.rail-card .r-tile{width:106px;height:106px;border-radius:17px;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-size:35px;font-weight:800;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.45);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 8px 20px rgba(0,0,0,.4)}
.rail-card .r-title{font-size:13px;font-weight:650;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-card .r-artist{font-size:12px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-empty{background:var(--glass);border:1px dashed rgba(255,255,255,.22);border-radius:14px;padding:14px;text-align:center;color:var(--dim);font-size:13.5px;margin:4px 0 6px}
.plays-n{color:var(--amb);font-weight:700}
.queuebar .q-tile{width:38px;height:38px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:800;font-size:13px;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
.queuebar.pulse{animation:qpulse .5s ease}
@keyframes qpulse{0%{box-shadow:0 0 0 0 rgba(245,185,66,.55)}100%{box-shadow:0 0 0 16px rgba(245,185,66,0)}}
.badge{display:inline-block;background:linear-gradient(135deg,rgba(245,185,66,.25),rgba(219,39,119,.25));border:1px solid rgba(245,185,66,.4);border-radius:999px;padding:3px 9px;font-size:11.5px;font-weight:700;color:#ffd977;white-space:nowrap}
/* modal / buy sheet */
.modal{position:fixed;inset:0;background:rgba(5,2,10,.72);backdrop-filter:blur(4px);display:none;align-items:flex-end;justify-content:center;z-index:50}
.modal.open{display:flex}
.modal .sheet{background:linear-gradient(180deg,#1d1130,#130a20);width:100%;max-width:640px;border-radius:20px 20px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));max-height:86vh;overflow:auto;border:1px solid rgba(219,39,119,.30);border-bottom:none;animation:up .28s cubic-bezier(.2,.9,.3,1)}
@keyframes up{from{transform:translateY(46px);opacity:.4}to{transform:none;opacity:1}}
.pkg{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:14px;margin:8px 0;background:var(--glass)}
.pkg.best{border:1.5px solid rgba(245,185,66,.75);background:linear-gradient(135deg,rgba(245,185,66,.14),rgba(219,39,119,.10));box-shadow:0 6px 22px rgba(245,185,66,.16)}
.pkg .best-tag{display:inline-block;background:linear-gradient(135deg,#ffd977,#f59e0b);color:#241300;font-size:10px;font-weight:800;letter-spacing:.08em;border-radius:999px;padding:2px 8px;margin-left:7px;vertical-align:2px}
.pkg .per{color:var(--amb);font-size:12px;font-weight:700}
/* toast */
.toast{position:fixed;left:50%;transform:translateX(-50%) translateY(16px);bottom:calc(76px + env(safe-area-inset-bottom));background:rgba(24,14,40,.92);backdrop-filter:blur(14px);border:1px solid rgba(245,185,66,.55);color:var(--txt);padding:10px 15px;border-radius:14px;z-index:99;display:none;max-width:92vw;text-align:center;box-shadow:0 12px 34px rgba(0,0,0,.55);opacity:0;transition:all .25s ease;font-weight:600}
.toast.show{display:block;opacity:1;transform:translateX(-50%) translateY(0)}
.toast .t-tile{display:inline-flex;width:30px;height:30px;border-radius:8px;align-items:center;justify-content:center;font-family:var(--disp);font-weight:800;font-size:12px;color:#fff;vertical-align:-9px;margin-right:8px}
.muted{color:var(--dim);font-size:13px}
.progress{height:6px;background:rgba(255,255,255,.10);border-radius:3px;overflow:hidden;margin-top:8px}
.progress>div{height:100%;background:var(--grad);width:0%}
/* player */
.player-wrap{max-width:1150px;margin:0 auto;padding:26px 22px;text-align:center}
.player-wrap .venue-name{font-family:var(--disp);font-size:clamp(26px,4vw,40px);font-weight:800;background:linear-gradient(92deg,#fff,#e9d5ff 55%,var(--amb));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.qr-card{display:inline-block;background:var(--glass);border:1px solid rgba(255,255,255,.16);border-radius:20px;padding:14px 16px 10px;backdrop-filter:blur(12px);box-shadow:0 14px 36px rgba(0,0,0,.4)}
.qr-card img{background:#fff;border-radius:12px;display:block;margin:0 auto}
.qr-card .qr-cap{font-weight:800;font-size:15px;margin-top:9px;letter-spacing:.02em}
#npTile{width:min(272px,58vw);height:min(272px,58vw);margin:16px auto 6px;border-radius:30px;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-size:96px;font-weight:800;color:#fff;text-shadow:0 4px 24px rgba(0,0,0,.45);box-shadow:0 24px 70px hsla(var(--h,265),85%,55%,.45),inset 0 2px 0 rgba(255,255,255,.35)}
.player-wrap .np-title{font-family:var(--disp);font-size:clamp(40px,6.5vw,72px);font-weight:800;line-height:1.05}
.player-wrap .np-artist{font-size:clamp(22px,3.4vw,34px);color:#e9d5ff;font-weight:600}
.player-wrap h2{color:var(--dim);text-transform:uppercase;letter-spacing:.24em;font-size:14px;margin:20px 0 8px;font-weight:700}
.player-queue{max-width:720px;margin:0 auto;text-align:left;font-size:18px}
.player-queue .queue-row{padding:10px 12px;background:var(--glass);border:1px solid var(--line);border-radius:13px;margin:7px 0}
.player-queue .q-pos{font-family:var(--disp);font-weight:800;font-size:19px;color:var(--amb);width:30px;flex:none;text-align:center}
.mode-badge{display:inline-block;margin-top:10px;background:rgba(245,185,66,.14);border:1px solid rgba(245,185,66,.5);color:#ffd977;border-radius:999px;padding:4px 13px;font-size:12.5px;font-weight:700;letter-spacing:.05em}
.mode-badge.live{background:rgba(52,211,153,.14);border-color:rgba(52,211,153,.5);color:#6ee7b7}
.ctl-cluster{max-width:720px;margin:16px auto;background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:12px;backdrop-filter:blur(12px)}
.locked-note{color:var(--dim);font-size:13.5px;margin-top:9px}
input[type=range]{accent-color:#db2777}
/* admin */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
.stat{background:linear-gradient(160deg,rgba(255,255,255,.08),rgba(255,255,255,.03));border:1px solid var(--line);border-radius:13px;padding:11px;text-align:center}
.stat .n{font-family:var(--disp);font-size:23px;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.stat .l{font-size:10.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.12em;margin-top:2px}
details{background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:12px;margin:9px 0;backdrop-filter:blur(10px)}
details summary{cursor:pointer;font-weight:700;font-family:var(--disp)}
.row{display:flex;gap:8px;align-items:center}
.row>*{flex:1}
.walletbar{display:flex;align-items:center;gap:8px}
.walletbar .credits{font-size:18px;font-weight:800;color:var(--amb)}
.venue-pick-tile{display:flex;align-items:center;gap:11px;background:var(--glass);border:1px solid var(--line);border-radius:14px;padding:11px 12px;margin:8px 0}
@media print{body *{visibility:hidden}#printCard,#printCard *{visibility:visible}#printCard{position:absolute;inset:0;display:block!important;background:#fff;color:#000;text-align:center;padding:40px}}
#printCard{display:none}
