:root{
  --bg:#08080f;
  --panel:#12121f;
  --ink:#e8e8f5;
  --dim:#8a8aa0;
  --magenta:#ff4ecd;
  --cyan:#4ee6ff;
  --border:#2a2a44;
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{
  background:
    radial-gradient(circle at 50% 0%, #1a1030 0%, var(--bg) 60%),
    var(--bg);
  color:var(--ink);
  font-family:'Bricolage Grotesque',system-ui,sans-serif;
  min-height:100vh;
  -webkit-tap-highlight-color:transparent;
  overflow-x:hidden;
}
#app{max-width:900px;margin:0 auto;padding:16px 14px 40px;display:flex;flex-direction:column;align-items:center;gap:14px;}

#topbar{text-align:center;margin-top:6px;}
#topbar h1{
  font-weight:800;font-size:clamp(22px,5vw,34px);
  letter-spacing:-0.02em;
  background:linear-gradient(90deg,var(--magenta),var(--cyan));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
#topbar h1 .dim{-webkit-text-fill-color:var(--dim);font-weight:200;}
.subtitle{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--dim);margin-top:4px;}

#stage{width:100%;display:flex;justify-content:center;}
#crt{
  position:relative;
  padding:14px;
  border-radius:16px;
  background:linear-gradient(160deg,#1c1c30,#0c0c16);
  box-shadow:0 0 0 2px var(--border), 0 20px 50px rgba(0,0,0,.6),
             inset 0 0 40px rgba(0,0,0,.5);
}
#canvas{
  display:block;
  image-rendering:pixelated;
  image-rendering:crisp-edges;
  background:#000;
  border-radius:4px;
  box-shadow:0 0 24px rgba(78,230,255,.15);
}
#scanlines{
  position:absolute;inset:14px;border-radius:4px;pointer-events:none;
  background:repeating-linear-gradient(
    to bottom, rgba(0,0,0,0) 0px, rgba(0,0,0,0) 2px, rgba(0,0,0,.14) 3px);
  mix-blend-mode:multiply;
}
#dropZone{
  position:absolute;inset:14px;border-radius:6px;
  display:flex;align-items:center;justify-content:center;
  border:2px dashed rgba(255,78,205,.4);
  background:rgba(8,8,20,.55);
  backdrop-filter:blur(2px);
  cursor:pointer;transition:.2s;
}
#dropZone.loaded{display:none;}
#dropZone.drag-over{border-color:var(--cyan);background:rgba(78,230,255,.12);}
.dz-inner{text-align:center;padding:10px;}
.dz-icon{font-size:34px;}
.dz-title{font-weight:800;margin-top:6px;font-size:14px;color:var(--ink);}
.dz-sub{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--dim);margin-top:4px;}
#pickBtn{
  margin-top:10px;background:var(--magenta);color:#0a0a12;border:none;
  padding:6px 14px;border-radius:20px;font-weight:800;cursor:pointer;font-size:12px;
}
#pickBtn:hover{background:var(--cyan);}

#controlbar{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;
}
.ctl{
  background:var(--panel);color:var(--ink);border:1px solid var(--border);
  padding:8px 14px;border-radius:10px;font-family:'JetBrains Mono',monospace;
  font-size:13px;cursor:pointer;transition:.15s;
}
.ctl:hover{border-color:var(--magenta);color:var(--magenta);}
.ctl.ghost{background:transparent;}
.scale-wrap{
  font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--dim);
  display:flex;align-items:center;gap:6px;
}
.scale-wrap select{
  background:var(--panel);color:var(--ink);border:1px solid var(--border);
  border-radius:8px;padding:6px 8px;font-family:inherit;
}
.badge{
  font-family:'JetBrains Mono',monospace;font-size:11px;
  background:#0d1a1a;color:var(--cyan);border:1px solid #1c3a3a;
  padding:6px 10px;border-radius:8px;
}
#modeBadge{color:var(--magenta);background:#1a0d18;border-color:#3a1c34;}

#dpadArea{
  display:flex;justify-content:space-between;width:100%;max-width:420px;
  margin-top:6px;
}
.dpad{position:relative;width:130px;height:130px;}
.pad{
  position:absolute;width:44px;height:44px;border-radius:10px;
  background:var(--panel);border:1px solid var(--border);color:var(--ink);
  font-size:16px;cursor:pointer;user-select:none;
}
.pad.active{background:var(--magenta);color:#0a0a12;}
.pad.up{top:0;left:43px;}
.pad.down{bottom:0;left:43px;}
.pad.left{top:43px;left:0;}
.pad.right{top:43px;right:0;}
.faces{display:flex;align-items:center;gap:16px;}
.face{
  width:60px;height:60px;border-radius:50%;
  background:radial-gradient(circle at 35% 30%, #2a2a44, #14141f);
  border:1px solid var(--border);color:var(--cyan);font-weight:800;font-size:20px;
  cursor:pointer;user-select:none;
}
.face.active{background:var(--cyan);color:#0a0a12;}

#helpPanel{
  width:100%;max-width:420px;background:var(--panel);
  border:1px solid var(--border);border-radius:12px;padding:16px;
}
#helpPanel.hidden{display:none;}
#helpPanel h3{font-size:14px;margin-bottom:8px;color:var(--cyan);}
#helpPanel ul{list-style:none;font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--dim);}
#helpPanel li{padding:3px 0;}
#helpPanel li b{color:var(--ink);}
.hint{font-size:11px;color:var(--dim);margin-top:8px;}

#statusbar{
  width:100%;margin-top:10px;padding-top:12px;border-top:1px solid var(--border);
  display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center;
  font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--dim);
}
#statusbar a{color:var(--magenta);text-decoration:none;}
#statusbar a:hover{text-decoration:underline;}

@media (max-width:520px){
  #dpadArea{max-width:100%;}
  .ctl{padding:7px 10px;font-size:12px;}
}
@media (min-width:640px){
  /* hide touch pad on larger screens where keyboard is primary */
  #dpadArea{opacity:.75;}
}
</parameter>
</invoke>