:root{
  --bg0:#0a0e1a; --bg1:#131a2e; --panel:rgba(20,28,48,0.72);
  --line:rgba(120,160,255,0.14); --txt:#cdd8ff; --accent:#5ad1ff;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"Segoe UI",system-ui,sans-serif;color:var(--txt);
  background:
    radial-gradient(1200px 800px at 20% -10%, #1a2547 0%, transparent 60%),
    radial-gradient(1000px 700px at 110% 110%, #241a47 0%, transparent 55%),
    linear-gradient(160deg,var(--bg0),var(--bg1));
  min-height:100%;display:flex;align-items:center;justify-content:center;
  padding:16px;overflow:hidden;
}
.stage{
  display:flex;gap:clamp(12px,2vw,34px);align-items:center;
  filter:drop-shadow(0 30px 60px rgba(0,0,0,0.55));
}
.title{
  font-weight:800;letter-spacing:3px;font-size:clamp(12px,1.5vh,15px);text-transform:uppercase;
  color:var(--accent);margin-bottom:10px;opacity:.85;
}
.panel{
  background:var(--panel);border:1px solid var(--line);border-radius:16px;
  padding:16px;backdrop-filter:blur(8px);
}
.side{width:var(--side,180px);display:flex;flex-direction:column;gap:clamp(10px,1.7vh,20px)}
.stat{font-variant-numeric:tabular-nums}
.stat .label{font-size:clamp(10px,1.3vh,13px);letter-spacing:2px;text-transform:uppercase;opacity:.55}
.stat .value{font-size:clamp(26px,3.6vh,44px);font-weight:800;color:#fff;line-height:1.1}
.mini{display:flex;flex-direction:column;align-items:center;gap:8px}
canvas{display:block}
#board{
  border-radius:14px;border:1px solid var(--line);
  background:rgba(7,11,22,0.6);box-shadow:inset 0 0 60px rgba(0,0,0,0.6);
}
.keys{font-size:clamp(11px,1.5vh,14px);line-height:1.95;opacity:.7}
.keys b{display:inline-block;min-width:54px;color:var(--accent)}
.combo{
  font-size:12px;letter-spacing:1px;text-transform:uppercase;
  color:#ffd86b;min-height:16px;font-weight:700;
}
.overlay{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  flex-direction:column;gap:14px;background:rgba(6,9,18,.6);backdrop-filter:blur(3px);
  border-radius:14px;text-align:center;
}
.overlay h1{font-size:30px;letter-spacing:2px;color:#fff}
.overlay p{opacity:.8;font-size:13px}
.modehint{font-size:12px;opacity:.6;max-width:300px;line-height:1.5;min-height:34px}

/* mode selector (side panel) */
.seg{display:flex;gap:6px}
.seg-btn{
  flex:1;padding:8px 6px;border-radius:10px;
  border:1px solid var(--line);background:rgba(255,255,255,0.03);
  color:var(--txt);font-family:inherit;font-size:12px;font-weight:700;letter-spacing:.5px;
  cursor:pointer;opacity:.65;transition:opacity .15s ease,border-color .15s ease,background .15s ease;
}
.seg-btn:hover{opacity:1;border-color:rgba(120,160,255,0.3)}
.seg-btn.active{
  background:linear-gradient(180deg,rgba(90,209,255,.25),rgba(90,209,255,.08));
  border-color:var(--accent);color:#eaf6ff;opacity:1;
}
.modenote{font-size:11px;line-height:1.45;opacity:.5;margin-top:8px;min-height:30px}
.mode.locked{opacity:.7}
.mode.locked .seg{pointer-events:none}
.mode.locked .seg-btn{cursor:not-allowed}
.mode.locked .seg-btn:not(.active){opacity:.4}
.btn{
  margin-top:6px;padding:10px 22px;border-radius:30px;border:1px solid var(--accent);
  background:linear-gradient(180deg,rgba(90,209,255,.25),rgba(90,209,255,.08));
  color:#eaf6ff;font-weight:700;letter-spacing:1px;cursor:pointer;font-size:13px;
}
.btn:hover{background:linear-gradient(180deg,rgba(90,209,255,.4),rgba(90,209,255,.15))}
.boardwrap{position:relative}
