@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@200;300;400;600;700;800&family=Space+Mono:wght@400;700&display=swap');
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#04040c;--star:#e8e4ff;--accent:#7b6fff;--accent2:#ff6b9d;
  --accent3:#4aeadc;--danger:#ff4757;--gold:#ffd369;
  --glass:rgba(6,6,18,0.55);--glass-border:rgba(255,255,255,0.06);
  --dim:rgba(255,255,255,0.3);--mid:rgba(255,255,255,0.55);
}
html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--star);font-family:'Outfit',system-ui,sans-serif;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
canvas{display:block;position:fixed;top:0;left:0}
#bg-canvas{z-index:0}#main-canvas{z-index:1}#fx-canvas{z-index:2;pointer-events:none}

/* ═══ HUD ═══ */
.hud{
  position:fixed;top:0;left:0;right:0;z-index:10;pointer-events:none;
  display:flex;justify-content:space-between;align-items:flex-start;
  padding:max(14px,env(safe-area-inset-top,14px)) 18px 0;
}
.hud-col{display:flex;flex-direction:column;gap:2px}
.hud-col-l{align-items:flex-start}
.hud-col-c{align-items:center;min-width:100px}
.hud-col-r{align-items:flex-end}

.hud-score{
  font-size:clamp(22px,4vw,32px);font-weight:800;line-height:1;
  background:linear-gradient(135deg,#a78bfa 0%,#67e8f9 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  filter:drop-shadow(0 0 8px rgba(123,111,255,.25));
}
.hud-sub{display:flex;align-items:center;gap:6px}
.hud-rank{
  font-family:'Space Mono',monospace;font-size:9px;letter-spacing:2.5px;
  color:var(--gold);text-transform:uppercase;
  text-shadow:0 0 6px rgba(255,211,105,.3);
}
.hud-depth-row{display:flex;align-items:baseline;gap:5px}
.hud-depth-label{font-family:'Space Mono',monospace;font-size:8px;letter-spacing:2px;color:var(--dim);text-transform:uppercase}
.hud-depth-num{font-family:'Space Mono',monospace;font-size:16px;font-weight:700;color:var(--accent3);text-shadow:0 0 8px rgba(74,234,220,.3)}
.hud-bar{width:min(120px,20vw);height:2px;background:rgba(255,255,255,.06);border-radius:1px;overflow:hidden;margin-top:2px}
.hud-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent3));border-radius:1px;transition:width .5s cubic-bezier(.22,1,.36,1)}
.hud-energy{display:flex;gap:3px;margin-top:4px}
.hud-pip{width:12px;height:3px;border-radius:1.5px;background:rgba(255,255,255,.06)}
.hud-pip.on{background:var(--accent3);box-shadow:0 0 5px var(--accent3)}
.hud-pip.warn{background:var(--danger);box-shadow:0 0 8px var(--danger);animation:pip-pulse .5s ease infinite}
@keyframes pip-pulse{0%,100%{opacity:1}50%{opacity:.3}}

.hud-combo{
  font-size:clamp(18px,3.5vw,26px);font-weight:800;line-height:1;
  color:var(--dim);transition:color .2s;
}
.hud-combo.hot{color:var(--gold);filter:drop-shadow(0 0 6px rgba(255,211,105,.3))}
.hud-combo.fire{color:var(--accent2);filter:drop-shadow(0 0 8px rgba(255,107,157,.4))}
.hud-diff{
  font-family:'Space Mono',monospace;font-size:8px;letter-spacing:2px;text-transform:uppercase;
}
.hud-diff.easy{color:#4aeadc}.hud-diff.normal{color:#a78bfa}.hud-diff.hard{color:#ff4757}

/* ═══ TOAST ═══ */
.toast-wrap{position:fixed;inset:0;z-index:50;pointer-events:none;display:flex;align-items:center;justify-content:center}
.toast{font-size:clamp(20px,5vw,36px);font-weight:700;letter-spacing:3px;opacity:0;transform:scale(.85) translateY(8px);transition:all .3s cubic-bezier(.34,1.56,.64,1);text-align:center;text-shadow:0 0 20px currentColor}
.toast.show{opacity:1;transform:scale(1) translateY(0)}
.toast.fade{opacity:0;transform:scale(1.05) translateY(-12px)}

/* ═══ GAME OVER ═══ */
.go-overlay{
  position:fixed;inset:0;z-index:100;
  display:flex;align-items:center;justify-content:center;
  background:rgba(2,2,8,.5);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
.go-card{
  display:flex;flex-direction:column;align-items:center;
  background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);
  border:1px solid var(--glass-border);border-radius:16px;
  padding:28px 36px;min-width:min(300px,85vw);
  box-shadow:0 20px 60px rgba(0,0,0,.5);
}
.go-title{font-size:24px;font-weight:200;letter-spacing:8px;text-transform:uppercase;color:var(--dim);margin-bottom:18px}
.go-stats{display:flex;gap:24px;margin-bottom:14px}
.go-stat{display:flex;flex-direction:column;align-items:center;gap:3px}
.go-val{font-size:28px;font-weight:800;background:linear-gradient(135deg,#a78bfa,#67e8f9);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.go-lbl{font-family:'Space Mono',monospace;font-size:8px;letter-spacing:2px;text-transform:uppercase;color:var(--dim)}
.go-rank{font-size:13px;font-weight:600;letter-spacing:3px;margin-bottom:6px}
.go-best{font-family:'Space Mono',monospace;font-size:10px;color:var(--gold);letter-spacing:2px;margin-bottom:8px;text-shadow:0 0 8px rgba(255,211,105,.3)}
.go-input{background:rgba(255,255,255,.03);border:1px solid var(--glass-border);border-radius:10px;padding:10px 16px;color:var(--star);font-family:'Outfit',sans-serif;font-size:14px;width:180px;outline:none;text-align:center;margin-bottom:14px}
.go-input::placeholder{color:var(--dim)}
.go-input:focus{border-color:rgba(123,111,255,.4)}
.go-btn{
  display:flex;align-items:center;justify-content:center;width:100%;
  padding:14px 28px;border:1px solid rgba(123,111,255,.2);border-radius:12px;
  background:linear-gradient(135deg,rgba(123,111,255,.15),rgba(74,234,220,.1));
  color:rgba(255,255,255,.85);font-family:'Outfit',sans-serif;font-size:13px;
  font-weight:600;letter-spacing:3px;text-transform:uppercase;cursor:pointer;
  transition:all .15s;
}
.go-btn:hover{background:linear-gradient(135deg,rgba(123,111,255,.25),rgba(74,234,220,.18));color:#fff;box-shadow:0 4px 20px rgba(123,111,255,.2)}

/* ═══ MENU BUTTON ═══ */
.menu-btn{
  position:fixed;top:max(68px,calc(env(safe-area-inset-top,14px) + 56px));right:14px;z-index:12;
  background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:8px;
  color:rgba(255,255,255,.45);padding:7px 8px;cursor:pointer;transition:all .15s;pointer-events:auto;
}
.menu-btn:hover{background:rgba(255,255,255,.08);color:#fff}

/* ═══ DRAWER (right slide-in) ═══ */
.drawer{
  position:fixed;top:0;right:0;bottom:0;z-index:200;
  pointer-events:none;display:flex;justify-content:flex-end;
}
.drawer::before{
  content:'';position:absolute;inset:0;
  background:rgba(2,2,8,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  opacity:0;transition:opacity .25s;pointer-events:none;
}
.drawer.open::before{opacity:1;pointer-events:auto}
.drawer-panel{
  position:relative;width:min(280px,80vw);height:100%;
  background:rgba(6,6,18,.92);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-left:1px solid rgba(255,255,255,.06);
  padding:max(16px,env(safe-area-inset-top,16px)) 20px 24px;
  display:flex;flex-direction:column;gap:10px;
  overflow-y:auto;pointer-events:auto;
  transform:translateX(100%);transition:transform .3s cubic-bezier(.22,1,.36,1);
}
.drawer.open .drawer-panel{transform:translateX(0)}
.drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.drawer-title{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:4px;text-transform:uppercase;color:var(--gold)}
.drawer-close{background:none;border:none;color:var(--dim);cursor:pointer;padding:6px;border-radius:6px;transition:all .15s}
.drawer-close:hover{color:#fff;background:rgba(255,255,255,.06)}
.drawer-section{display:flex;flex-direction:column;gap:8px}
.drawer-label{font-family:'Space Mono',monospace;font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--dim)}
.drawer-chips{display:flex;gap:6px;flex-wrap:wrap}
.drawer-hr{border:none;border-top:1px solid rgba(255,255,255,.06);margin:2px 0}
.drawer-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 0}
.drawer-row span{font-size:11px;color:var(--mid);letter-spacing:1px}
.slider{-webkit-appearance:none;appearance:none;width:90px;height:3px;background:rgba(255,255,255,.1);border-radius:2px;outline:none;cursor:pointer}
.slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent3);cursor:pointer}
.slider::-moz-range-thumb{width:14px;height:14px;border:none;border-radius:50%;background:var(--accent3);cursor:pointer}
.drawer-action{
  width:100%;padding:10px 16px;border:1px solid rgba(255,255,255,.04);border-radius:10px;
  background:rgba(255,255,255,.02);color:var(--mid);
  font-family:'Outfit',sans-serif;font-size:12px;font-weight:500;letter-spacing:1.5px;
  text-transform:uppercase;text-align:left;cursor:pointer;transition:all .12s;
}
.drawer-action:hover{background:rgba(123,111,255,.08);border-color:rgba(123,111,255,.15);color:#fff}
.chip{
  padding:7px 14px;border:1px solid rgba(255,255,255,.06);
  background:rgba(255,255,255,.02);color:var(--dim);
  font-family:'Space Mono',monospace;font-size:10px;letter-spacing:1.5px;
  text-transform:uppercase;border-radius:18px;cursor:pointer;transition:all .15s;
}
.chip:hover{background:rgba(255,255,255,.05);color:var(--mid)}
.chip.active[data-diff="easy"]{color:#4aeadc;border-color:rgba(74,234,220,.35);background:rgba(74,234,220,.08)}
.chip.active[data-diff="normal"]{color:#a78bfa;border-color:rgba(167,139,250,.35);background:rgba(167,139,250,.08)}
.chip.active[data-diff="hard"]{color:#ff4757;border-color:rgba(255,71,87,.35);background:rgba(255,71,87,.08)}

/* ═══ OVERLAY (leaderboard, tutorial) ═══ */
.overlay{
  position:fixed;inset:0;z-index:250;
  display:flex;align-items:center;justify-content:center;
  background:rgba(2,2,8,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
.overlay-card{
  background:rgba(6,6,18,.9);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,.06);border-radius:16px;
  padding:20px 24px;min-width:min(320px,88vw);max-height:80vh;overflow-y:auto;
  display:flex;flex-direction:column;gap:10px;
  box-shadow:0 20px 60px rgba(0,0,0,.5);
}
.lb-list{display:flex;flex-direction:column;gap:3px;max-height:55vh;overflow-y:auto}
.lb-entry{display:flex;align-items:center;padding:8px 12px;background:rgba(255,255,255,.02);border-radius:8px;border:1px solid transparent;font-size:13px}
.lb-entry.highlight{border-color:rgba(255,211,105,.2);background:rgba(255,211,105,.03)}
.lb-rank{font-family:'Space Mono',monospace;font-size:11px;color:var(--dim);width:28px}
.lb-rank.gold{color:var(--gold)}
.lb-name{flex:1}
.lb-score{font-family:'Space Mono',monospace;font-size:13px;color:var(--accent3);font-weight:700}
.lb-meta{font-family:'Space Mono',monospace;font-size:9px;color:var(--dim);margin-left:8px;display:flex;gap:5px}
.tut-card{text-align:center;max-width:340px}
.tut-icon{font-size:40px;margin-bottom:12px}
.tut-heading{font-size:17px;font-weight:600;margin-bottom:6px}
.tut-text{font-size:12px;color:var(--dim);line-height:1.7;margin-bottom:14px}
.tut-dots{display:flex;gap:5px;justify-content:center;margin-bottom:12px}
.tut-dot{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.08)}
.tut-dot.active{background:var(--accent);box-shadow:0 0 4px var(--accent)}
.tut-btn{
  padding:10px 24px;border:1px solid rgba(255,255,255,.06);border-radius:10px;
  background:rgba(255,255,255,.03);color:var(--mid);font-family:'Outfit',sans-serif;
  font-size:12px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .12s;
}
.tut-btn:hover{background:rgba(123,111,255,.08);color:#fff}

/* ═══ INACTIVITY HINT ═══ */
.hint-bar{
  position:fixed;bottom:0;left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:center;gap:10px;
  padding:14px 20px;
  background:linear-gradient(0deg,rgba(6,6,18,.9) 0%,rgba(6,6,18,.6) 70%,transparent 100%);
  font-family:'Space Mono',monospace;font-size:11px;letter-spacing:3px;text-transform:uppercase;
  color:rgba(255,255,255,.5);pointer-events:none;
  transform:translateY(100%);opacity:0;
  transition:transform .5s cubic-bezier(.22,1,.36,1),opacity .4s;
}
.hint-bar.show{transform:translateY(0);opacity:1}
.hint-icon{font-size:16px;animation:hint-pulse 2s ease infinite}
.hint-sub{font-size:9px;letter-spacing:2px;color:rgba(74,234,220,.5)}
@keyframes hint-pulse{0%,100%{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}

/* ═══ ANIMATED FIRST-TIME TUTORIAL ═══ */
.ftue-overlay{
  position:fixed;inset:0;z-index:400;
  display:flex;align-items:center;justify-content:center;
  background:rgba(2,2,8,.75);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
.ftue-card{
  display:flex;flex-direction:column;align-items:center;
  background:rgba(6,6,18,.92);border:1px solid rgba(123,111,255,.12);
  border-radius:20px;padding:24px 32px 20px;
  min-width:min(320px,88vw);
  box-shadow:0 0 60px rgba(123,111,255,.08),0 20px 60px rgba(0,0,0,.5);
  animation:ftue-in .5s cubic-bezier(.22,1,.36,1);
}
@keyframes ftue-in{from{opacity:0;transform:scale(.92) translateY(20px)}to{opacity:1;transform:none}}
#ftue-canvas{border-radius:12px;background:rgba(4,4,12,.8);margin-bottom:16px;border:1px solid rgba(255,255,255,.04)}
.ftue-title{font-size:18px;font-weight:600;letter-spacing:2px;margin-bottom:6px;color:#e8e4ff}
.ftue-text{font-size:12px;color:rgba(255,255,255,.4);line-height:1.6;text-align:center;margin-bottom:14px;max-width:260px}
.ftue-dots{display:flex;gap:6px;justify-content:center;margin-bottom:14px}
.ftue-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.08);transition:all .3s}
.ftue-dot.active{background:var(--accent);box-shadow:0 0 6px var(--accent);transform:scale(1.3)}
.ftue-btn{
  padding:12px 32px;border:1px solid rgba(123,111,255,.2);border-radius:12px;
  background:linear-gradient(135deg,rgba(123,111,255,.15),rgba(74,234,220,.1));
  color:rgba(255,255,255,.85);font-family:'Outfit',sans-serif;font-size:13px;
  font-weight:600;letter-spacing:3px;text-transform:uppercase;cursor:pointer;
  transition:all .15s;width:100%;margin-bottom:8px;
}
.ftue-btn:hover{background:linear-gradient(135deg,rgba(123,111,255,.25),rgba(74,234,220,.18));color:#fff;box-shadow:0 4px 20px rgba(123,111,255,.2)}
.ftue-skip{
  background:none;border:none;color:rgba(255,255,255,.2);font-family:'Space Mono',monospace;
  font-size:9px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:color .15s;padding:6px;
}
.ftue-skip:hover{color:rgba(255,255,255,.5)}

/* ═══ RESPONSIVE ═══ */
@media(max-width:480px){.hud-score{font-size:20px}.hud-combo{font-size:16px}.go-stats{gap:14px}.go-val{font-size:22px}}
::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(255,255,255,.06);border-radius:2px}