:root{
  --gold:#ffcf3a; --gold2:#ff8a00; --fire:#ff3d00; --ink:#0b0710; --pane:rgba(12,6,20,.62);
  --f-ui:'Fira Sans Extra Condensed','Helvetica Neue',Arial,sans-serif;
  --f-metal:'Metal Mania','Fira Sans Extra Condensed',serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;overflow:hidden;background:#000;color:#fff;font-family:var(--f-ui);user-select:none;-webkit-user-select:none}
#gl{position:fixed;inset:0;width:100%;height:100%;display:block;outline:none}
.hidden{display:none!important}

/* ---------- HUD ---------- */
#hud{position:fixed;inset:0;pointer-events:none;z-index:5}
.hud-box{position:absolute;display:flex;align-items:center;gap:.35em;font-weight:900;font-style:italic;font-size:clamp(26px,3.6vw,46px);
  color:var(--gold);text-shadow:0 3px 0 #7a2c00,0 0 14px rgba(255,120,0,.55),2px 2px 0 #000,-2px -2px 0 #000,2px -2px 0 #000,-2px 2px 0 #000;letter-spacing:.02em;transition:transform .12s}
.hud-box.bump{transform:scale(1.25)}
#hud-cymbals{left:2.2vw;top:1.8vh}
#hud-crates{left:50%;top:1.8vh;transform:translateX(-50%);opacity:0;transition:opacity .35s}
#hud-crates.show{opacity:1}
#hud-lives{right:2.2vw;top:1.8vh}
#hud-score{position:absolute;left:2.4vw;top:calc(1.8vh + 62px);font:900 italic clamp(15px,1.6vw,22px) var(--f-ui);color:#fff;opacity:.85;text-shadow:1px 1px 0 #000,0 0 8px #000}
.ico{display:inline-block;width:1.15em;height:1.15em;background-size:contain;background-repeat:no-repeat;background-position:center;filter:drop-shadow(0 2px 2px rgba(0,0,0,.7))}
#hud-dragon{position:absolute;right:2.4vw;top:calc(1.8vh + 1.5em);display:flex;gap:6px}
#hud-dragon i{width:22px;height:28px;border-radius:50% 50% 46% 46%/60% 60% 40% 40%;background:rgba(255,255,255,.12);border:2px solid rgba(255,255,255,.25)}
#hud-dragon i.on{background:radial-gradient(circle at 35% 30%,#fff6c2,#ffb300 40%,#e8480c 75%);border-color:#fff3b0;box-shadow:0 0 12px #ff9d00}

#hud-groove{position:absolute;left:50%;bottom:2.4vh;transform:translateX(-50%);display:flex;align-items:center;gap:14px}
#beat-ring{position:relative;width:58px;height:58px}
#beat-core{position:absolute;inset:14px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#fff,#ffcf3a 35%,#ff5a00 75%,#6a1400);box-shadow:0 0 16px #ff7a00;transform:scale(.8)}
#beat-approach{position:absolute;inset:0;border-radius:50%;border:3px solid rgba(255,220,120,.9);box-shadow:0 0 10px rgba(255,160,40,.8)}
#groove-bar{width:min(34vw,360px);height:16px;border-radius:9px;background:rgba(0,0,0,.55);border:2px solid rgba(255,255,255,.28);overflow:hidden;box-shadow:0 0 12px rgba(0,0,0,.6) inset}
#groove-fill{height:100%;width:0%;background:linear-gradient(90deg,#ff2200,#ff8a00,#ffe14a,#fff);box-shadow:0 0 14px #ff6a00;transition:width .12s}
#groove-mult{font:900 italic 34px var(--f-ui);color:#fff;text-shadow:0 0 12px #ff5a00,2px 2px 0 #000;min-width:52px}
#groove-mult.hot{color:#ffe14a;animation:hot .4s infinite alternate}
@keyframes hot{from{transform:scale(1)}to{transform:scale(1.18)}}

#hud-level-name{position:absolute;left:50%;top:22vh;transform:translateX(-50%);font:900 italic clamp(34px,5vw,72px) var(--f-ui);color:#fff;
  text-shadow:0 0 22px #ff6a00,3px 3px 0 #000;opacity:0;transition:opacity .6s;white-space:nowrap;text-align:center}
#hud-hint{position:absolute;left:50%;top:15vh;transform:translateX(-50%);max-width:86vw;text-align:center;font:900 italic clamp(18px,2.2vw,30px) var(--f-ui);color:#fff;text-shadow:0 0 14px #ff6a00,2px 2px 0 #000;opacity:0;transition:opacity .4s;background:rgba(0,0,0,.35);padding:6px 18px;border-radius:12px}
#hud-hint.show{opacity:1}
#hud-level-name small{display:block;font-size:.42em;color:var(--gold);letter-spacing:.2em}
#hud-level-name.show{opacity:1}
#hud-boss{position:absolute;left:50%;top:9vh;transform:translateX(-50%);text-align:center}
#boss-name{font:900 italic 28px var(--f-ui);color:#fff;text-shadow:0 0 12px #f0f,2px 2px 0 #000}
#boss-bar{width:min(50vw,520px);height:14px;margin-top:6px;border:2px solid #fff;border-radius:8px;background:rgba(0,0,0,.6);overflow:hidden}
#boss-fill{height:100%;width:100%;background:linear-gradient(90deg,#ff1a6a,#ff8ad0);transition:width .3s}

/* ---------- popups & bubbles ---------- */
#popups,#bubbles{position:fixed;inset:0;pointer-events:none;z-index:6}
.pop{position:absolute;transform:translate(-50%,-50%);font:900 italic 34px var(--f-ui);color:#fff;white-space:nowrap;
  text-shadow:0 0 14px #ff6a00,2px 2px 0 #000,-2px -2px 0 #000;animation:pop 1s ease-out forwards}
.pop.beat{color:#ffe14a;font-size:28px}
.pop.big{font-size:64px;color:#ffe14a}
.pop.green{color:#9dff6a;text-shadow:0 0 14px #1f9d00,2px 2px 0 #000}
@keyframes pop{0%{opacity:0;transform:translate(-50%,-30%) scale(.5)}15%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}30%{transform:translate(-50%,-55%) scale(1)}100%{opacity:0;transform:translate(-50%,-140%) scale(1)}}
.bubble{position:absolute;transform:translate(-50%,-100%);background:#fff;color:#111;font:800 18px var(--f-ui);padding:6px 12px;border-radius:14px;border:3px solid #111;
  white-space:nowrap;box-shadow:3px 3px 0 rgba(0,0,0,.35);animation:bub .25s ease-out}
.bubble:after{content:'';position:absolute;left:50%;bottom:-12px;margin-left:-8px;border:8px solid transparent;border-top:10px solid #111}
.bubble.shout{background:#ffe14a;font-size:22px}
@keyframes bub{from{transform:translate(-50%,-80%) scale(.4)}to{transform:translate(-50%,-100%) scale(1)}}
#fade{position:fixed;inset:0;background:#000;opacity:1;pointer-events:none;z-index:20;transition:opacity .5s}

/* ---------- screens ---------- */
.screen{position:fixed;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center}
#screen-loading{background:radial-gradient(circle at 50% 45%,#2a0b12,#000 70%);z-index:30}
.loading-text{font:64px var(--f-metal);color:var(--gold);text-shadow:0 0 30px #ff4a00}
.loading-sub{margin-top:12px;font:600 20px var(--f-ui);opacity:.8;letter-spacing:.12em}
#screen-title{justify-content:flex-start;padding-top:9vh;background:linear-gradient(180deg,rgba(0,0,0,.35),transparent 30%,transparent 72%,rgba(0,0,0,.55))}
.logo{font-family:var(--f-metal);font-size:clamp(56px,10.5vw,168px);line-height:.95;letter-spacing:.02em;display:flex;filter:drop-shadow(0 8px 0 rgba(0,0,0,.55)) drop-shadow(0 0 40px rgba(255,90,0,.55))}
.logo span{background:linear-gradient(180deg,#fffbe0 0%,#ffd84a 30%,#ff8a00 55%,#d42300 80%,#5a0800 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:2px #1a0400}
.logo .logo-b{background:linear-gradient(180deg,#e9fff5 0%,#7dffcf 28%,#18c28a 55%,#0b6b5c 80%,#032824 100%);-webkit-background-clip:text;background-clip:text}
.tagline{margin-top:1.4vh;font:800 italic clamp(14px,1.6vw,24px) var(--f-ui);letter-spacing:.14em;color:#fff;text-shadow:0 2px 6px #000}
.press{position:absolute;bottom:14vh;font:900 italic clamp(22px,2.6vw,40px) var(--f-ui);color:#fff;text-shadow:0 0 18px #ff6a00,2px 2px 0 #000;letter-spacing:.15em}
.blink{animation:blink 1.1s infinite}
@keyframes blink{50%{opacity:.25}}
.credits{position:absolute;bottom:3vh;font:600 15px var(--f-ui);opacity:.75;letter-spacing:.1em;text-shadow:0 1px 3px #000}
.menu{position:absolute;bottom:10vh;display:flex;flex-direction:column;gap:8px;align-items:center}
.menu .item{font:900 italic clamp(22px,2.4vw,36px) var(--f-ui);color:rgba(255,255,255,.62);text-shadow:2px 2px 0 #000;letter-spacing:.08em;padding:2px 18px;cursor:pointer;pointer-events:auto}
.menu .item.sel{color:#ffe14a;text-shadow:0 0 18px #ff6a00,2px 2px 0 #000;transform:scale(1.08)}
.menu .item.dis{opacity:.35}

#screen-card{background:radial-gradient(ellipse at center,rgba(10,4,16,.55),rgba(0,0,0,.85))}
.card{width:min(820px,92vw);background:linear-gradient(160deg,rgba(40,14,30,.94),rgba(12,6,20,.96));border:3px solid #ffb300;border-radius:18px;padding:26px 34px;
  box-shadow:0 0 50px rgba(255,120,0,.35),0 20px 60px rgba(0,0,0,.7)}
.card h1{font:900 italic 44px var(--f-ui);color:#ffe14a;text-shadow:0 0 16px #ff5a00,2px 2px 0 #000;letter-spacing:.04em}
.card h2{font:700 18px var(--f-ui);color:#fff;opacity:.75;letter-spacing:.14em;margin-top:2px}
.card .lvls{margin-top:18px;display:flex;flex-direction:column;gap:8px}
.card .lv{display:flex;align-items:center;gap:14px;padding:10px 16px;border-radius:12px;background:rgba(255,255,255,.06);border:2px solid transparent;font:800 24px var(--f-ui);pointer-events:auto;cursor:pointer}
.card .lv.sel{border-color:#ffe14a;background:rgba(255,200,40,.14);box-shadow:0 0 18px rgba(255,160,0,.35)}
.card .lv.lock{opacity:.35}
.card .lv .n{color:#ffb300;min-width:48px}
.card .lv .t{flex:1}
.card .lv .st{font:700 17px var(--f-ui);opacity:.85;display:flex;gap:12px}
.card .lv .rec{color:#ffe14a}
.card .hint{margin-top:16px;font:600 16px var(--f-ui);opacity:.65;letter-spacing:.08em;text-align:center}
#screen-pause{background:rgba(5,0,10,.6);backdrop-filter:blur(6px)}
#screen-pause h1,#screen-result h1{font:900 italic 64px var(--f-ui);color:#ffe14a;text-shadow:0 0 18px #ff5a00,3px 3px 0 #000}
#screen-pause .menu,#screen-result .menu{position:static;margin-top:24px}
#screen-result{background:radial-gradient(ellipse at center,rgba(20,6,10,.55),rgba(0,0,0,.88))}
.tally{margin-top:18px;display:grid;grid-template-columns:auto auto;gap:6px 36px;font:800 28px var(--f-ui)}
.tally .k{opacity:.75;text-align:right}
.tally .v{color:#ffe14a;text-shadow:0 0 10px #ff6a00}
.record{margin-top:18px;font:900 italic 34px var(--f-ui);color:#fff;text-shadow:0 0 22px #ffd000;animation:hot .5s infinite alternate}
.help{margin-top:18px;font:600 17px var(--f-ui);opacity:.8;line-height:1.55;text-align:center}
.help b{color:#ffe14a}

/* ---------- drum solo ---------- */
#drumsolo{position:fixed;inset:0;z-index:7;pointer-events:none}
#ds-top{position:absolute;top:3vh;left:50%;transform:translateX(-50%);display:flex;gap:28px;align-items:baseline;font:900 italic 40px var(--f-ui);text-shadow:0 0 16px #ff5a00,2px 2px 0 #000}
#ds-title{font-family:var(--f-metal);color:#ffe14a;font-style:normal;font-size:48px}
#ds-combo{color:#9dff6a}
#ds-keys{position:absolute;bottom:3vh;left:50%;transform:translateX(-50%);display:flex;gap:min(9vw,120px);font:900 30px var(--f-ui);opacity:.8;text-shadow:2px 2px 0 #000}

/* ---------- touch ---------- */
#touch{position:fixed;inset:0;z-index:8;pointer-events:none}
#t-stick{position:absolute;left:5vw;bottom:6vh;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.1);border:2px solid rgba(255,255,255,.3);pointer-events:auto}
#t-knob{position:absolute;left:45px;top:45px;width:60px;height:60px;border-radius:50%;background:rgba(255,200,60,.55)}
#t-btns{position:absolute;right:4vw;bottom:6vh;display:flex;gap:14px;pointer-events:auto}
#t-btns button{width:78px;height:78px;border-radius:50%;border:2px solid rgba(255,255,255,.4);background:rgba(255,120,0,.35);color:#fff;font:900 34px var(--f-ui)}
