:root{
  --bg:#0a0a12;
  --panel:#15151f;
  --accent:#ff3b3b;
  --accent2:#3bd6ff;
  --ink:#e8e8f0;
  --dim:#7a7a92;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:
    radial-gradient(circle at 20% 0%, #1a1030 0%, transparent 45%),
    radial-gradient(circle at 90% 100%, #101a2a 0%, transparent 50%),
    var(--bg);
  color:var(--ink);
  font-family:'Space Grotesk',system-ui,sans-serif;
  min-height:100vh;
  display:flex;justify-content:center;
}
#app{
  max-width:640px;width:100%;padding:18px 16px 40px;
  display:flex;flex-direction:column;align-items:center;gap:16px;
}
header{text-align:center;}
h1{
  font-family:'VT323',monospace;
  font-size:clamp(40px,10vw,68px);
  margin:0;letter-spacing:2px;line-height:.9;
  color:var(--accent);
  text-shadow:0 0 12px rgba(255,59,59,.5), 3px 3px 0 #4a0a0a;
}
.sub{margin:4px 0 0;color:var(--dim);font-size:13px;font-weight:300;}

#stage{width:100%;display:flex;justify-content:center;}
#bezel{
  position:relative;
  background:linear-gradient(160deg,#2a2a38,#14141c);
  border-radius:18px;padding:16px;
  box-shadow:0 12px 40px rgba(0,0,0,.6), inset 0 2px 4px rgba(255,255,255,.05);
  border:1px solid #33333f;
  transition:box-shadow .2s;
}
#bezel.drag{box-shadow:0 0 0 3px var(--accent2), 0 12px 40px rgba(0,0,0,.6);}
#canvas{
  display:block;
  width:min(88vw,512px);height:auto;
  aspect-ratio:256/192;
  image-rendering:pixelated;image-rendering:crisp-edges;
  background:#101018;border-radius:6px;
  box-shadow:inset 0 0 30px rgba(0,0,0,.7);
}
#scanlines{
  display:none;
  position:absolute;inset:16px;border-radius:6px;pointer-events:none;
  background:repeating-linear-gradient(to bottom,rgba(0,0,0,.28) 0 1px,transparent 1px 3px);
}
#dropmsg{
  position:absolute;inset:16px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;pointer-events:none;
  font-family:'VT323',monospace;font-size:28px;color:var(--accent2);
  text-shadow:0 0 8px rgba(59,214,255,.6);text-align:center;
}
#dropmsg span{font-size:16px;color:var(--dim);margin-top:8px;}
#bezel:not(.empty) #dropmsg{display:none;}

#controls{
  display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;
}
.btn{
  font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:14px;
  background:var(--panel);color:var(--ink);
  border:1px solid #2e2e3c;border-radius:8px;
  padding:9px 14px;cursor:pointer;transition:.15s;
}
.btn:hover:not(:disabled){border-color:var(--accent2);transform:translateY(-1px);}
.btn:active:not(:disabled){transform:translateY(0);}
.btn:disabled{opacity:.35;cursor:not-allowed;}
.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent);}
.btn.accent:hover{box-shadow:0 0 14px rgba(255,59,59,.5);}
.btn.active{border-color:var(--accent2);color:var(--accent2);}
select.btn{appearance:none;-webkit-appearance:none;}
.fps{font-family:'VT323',monospace;font-size:20px;color:var(--dim);min-width:70px;text-align:center;}

/* touch controls — only on small screens */
#touchpad{display:none;width:100%;justify-content:space-between;
  padding:0 10px;user-select:none;-webkit-user-select:none;touch-action:none;}
.dpad{position:relative;width:150px;height:150px;}
.tb{
  position:absolute;width:48px;height:48px;border-radius:10px;
  background:var(--panel);color:var(--ink);border:1px solid #2e2e3c;
  font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;
}
.tb.press{background:var(--accent2);color:#0a0a12;}
.up{top:0;left:51px;}.down{bottom:0;left:51px;}
.left{top:51px;left:0;}.right{top:51px;right:0;}
.acts{display:flex;gap:16px;align-items:center;}
.ab{position:relative;width:60px;height:60px;border-radius:50%;
  background:var(--accent);color:#fff;border:none;font-size:22px;}
.ab.press{background:#fff;color:var(--accent);}

#info{width:100%;background:var(--panel);border:1px solid #2e2e3c;border-radius:10px;padding:6px 14px;}
#info summary{cursor:pointer;font-weight:700;padding:6px 0;color:var(--accent2);}
.infogrid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:10px 0;}
.infogrid h3{margin:0 0 6px;font-size:13px;color:var(--dim);text-transform:uppercase;letter-spacing:1px;}
.infogrid p{margin:0;font-size:13px;color:var(--ink);line-height:1.5;}
#dbg{font-family:'VT323',monospace;font-size:16px;color:var(--accent2);margin:0;white-space:pre-wrap;}

#status{
  font-family:'VT323',monospace;font-size:18px;color:var(--dim);
  text-align:center;margin:0;min-height:22px;
}

footer{
  margin-top:8px;text-align:center;font-size:12px;color:var(--dim);
  display:flex;flex-direction:column;gap:6px;
}
footer a{color:var(--accent);text-decoration:none;font-weight:700;}
footer a:hover{text-decoration:underline;}

@media (max-width:600px){
  #touchpad{display:flex;}
  .infogrid{grid-template-columns:1fr;}
}