:root{
  --bg:#11151c;
  --panel:#161b24;
  --panel-2:#1d2330;
  --line:#2a3142;
  --text:#dfe5ee;
  --text-dim:#8a93a6;
  --accent:#ff8a3d;
  --accent-dim:#7a4621;
  --danger:#ff5470;
  --mono:'JetBrains Mono','SFMono-Regular',Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-tap-highlight-color:transparent;user-select:none;}
#viewport{position:absolute;inset:0;z-index:0;}
#viewport canvas{display:block;width:100%;height:100%;touch-action:none;}
button{font-family:var(--sans);cursor:pointer;}
.hidden{display:none !important;}
.btn{
  background:var(--panel-2);
  color:var(--text);
  border:1px solid var(--line);
  border-radius:8px;
  padding:8px 12px;
  font-size:12px;
  font-weight:600;
  letter-spacing:.02em;
}
.btn:active{transform:translateY(1px);}
.btn:disabled{opacity:0.35;cursor:not-allowed;pointer-events:none;}
.btn-accent{background:var(--accent);color:#1a0e02;border-color:var(--accent);}
.btn-stop{position:absolute;top:12px;right:12px;background:var(--danger);color:#fff;border:none;z-index:20;pointer-events:auto;}
.empty-hint{color:var(--text-dim);font-size:12px;padding:10px 2px;}

#boot-error{
  position:fixed;inset:0;z-index:9999;
  display:flex;align-items:center;justify-content:center;
  background:rgba(8,9,13,0.92);
  padding:24px;
  user-select:text;
}
.boot-error-box{
  max-width:420px;
  background:var(--panel-2);
  border:1px solid var(--line);
  border-radius:12px;
  padding:22px;
  text-align:center;
}
.boot-error-box h2{margin:0 0 10px;font-size:18px;}
.boot-error-box p{margin:0 0 10px;font-size:13px;line-height:1.5;color:var(--text);white-space:pre-wrap;word-break:break-word;}
.boot-error-hint{color:var(--text-dim) !important;font-size:12px !important;}
.boot-error-box button{
  margin-top:6px;background:var(--accent);color:#1a0e02;
  border:none;border-radius:8px;padding:10px 18px;font-weight:700;font-size:13px;cursor:pointer;
}

/* ── Theme / Neon mode overrides ─────────────────────────────────── */
:root{
  --theme:#ff8a3d;          /* game accent — overridden by themeColor setting */
  --neon-glow:none;         /* overridden in neon mode */
}
body.neon-mode{
  --neon-glow: 0 0 8px var(--theme), 0 0 20px var(--theme);
}
/* Propagate theme colour to the --accent var at runtime via JS */
