:root{ --bg:#0b0f14; --card:#111827; --txt:#e5e7eb; --mut:#94a3b8; --line:#1f2937; }
*{ box-sizing:border-box; }
body{ margin:0; font-family: system-ui,-apple-system,"Segoe UI",Roboto,"Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif; background:var(--bg); color:var(--txt); }
a{ color:inherit; text-decoration:none; }
.app{ max-width: 720px; margin:0 auto; padding-bottom:78px; }
.topbar{ position:sticky; top:0; z-index:10; background:rgba(11,15,20,.92); border-bottom:1px solid var(--line); padding:12px 14px; display:flex; align-items:center; justify-content:space-between; }
.logo{ font-weight:700; letter-spacing:.5px; }
.main{ padding:12px 12px 0; }
h1{ font-size:20px; margin:8px 0 12px; }
h2{ font-size:16px; margin:0 0 10px; color:#cbd5e1; }
.card{ background:var(--card); border:1px solid var(--line); border-radius:12px; padding:12px; margin:10px 0; }
.row{ display:flex; gap:10px; align-items:center; justify-content:space-between; }
.muted{ color:var(--mut); font-size:12px; }
.grid2{ display:grid; grid-template-columns:1fr 1fr; gap:6px 10px; font-size:14px; }
.btn{ display:inline-flex; align-items:center; justify-content:center; padding:10px 12px; border-radius:10px; border:1px solid #334155; background:#0f172a; color:#e2e8f0; font-weight:700; }
.btn.ghost{ background:transparent; }
.btn.danger{ background:#2a0f12; border-color:#7f1d1d; }
.err{ background:#2a0f12; border:1px solid #7f1d1d; color:#fecaca; padding:10px; border-radius:10px; }
.ok{ background:#08211a; border:1px solid #14532d; color:#bbf7d0; padding:10px; border-radius:10px; }
.inline{ display:inline-block; margin-right:8px; margin-top:6px; }
label{ display:block; margin:10px 0 6px; color:#cbd5e1; font-size:13px; }
input, select{ width:100%; padding:10px 12px; border-radius:10px; border:1px solid #334155; background:#0b1220; color:#e5e7eb; }
hr{ border:none; border-top:1px solid var(--line); margin:10px 0; }
.bottomnav{ position:fixed; left:0; right:0; bottom:0; z-index:20; background:rgba(11,15,20,.95); border-top:1px solid var(--line); display:flex; justify-content:space-around; padding:10px 6px; gap:6px; }
.bottomnav a{ flex:1; text-align:center; color:#cbd5e1; font-size:11px; padding:8px 0; border-radius:10px; border:1px solid rgba(51,65,85,.25); background:rgba(15,23,42,.15); }
.log{ max-height:280px; overflow:auto; border:1px solid var(--line); border-radius:10px; padding:8px; background:#0b1220; }
.logline{ font-size:12px; color:#d1d5db; padding:4px 0; border-bottom:1px dashed rgba(148,163,184,.15); }
.code{ white-space:pre-wrap; background:#0b1220; border:1px solid var(--line); border-radius:10px; padding:10px; color:#cbd5e1; }
.rar{ display:inline-flex; padding:2px 8px; border-radius:999px; font-size:12px; border:1px solid #334155; margin-right:6px; }
.rar.N{ opacity:.8; }
.rar.R{ border-color:#38bdf8; }
.rar.SR{ border-color:#a78bfa; }
.rar.SSR{ border-color:#f59e0b; }
.rar.UR{ border-color:#f43f5e; }
.kv{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.badge{ font-size:11px; padding:2px 8px; border-radius:999px; border:1px solid rgba(148,163,184,.35); color:#cbd5e1; }
.tbl{ width:100%; border-collapse:collapse; }
.tbl th,.tbl td{ border-bottom:1px solid rgba(31,41,55,.8); padding:8px 6px; font-size:13px; text-align:left; }
.tbl th{ color:#cbd5e1; font-weight:700; }
@media (max-width: 360px){
  .grid2{ grid-template-columns:1fr; }
  .row{ align-items:flex-start; }
  .bottomnav a{ font-size:10px; }
}

.canvas-wrap{ width:100%; height: calc(100vh - 190px); border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#0b0f14; }
#game{ width:100%; height:100%; touch-action:none; display:block; }
.hud{ display:flex; gap:10px; flex-wrap:wrap; }
.hud .pill{ border:1px solid rgba(148,163,184,.25); background:rgba(15,23,42,.25); border-radius:999px; padding:6px 10px; font-size:12px; color:#e2e8f0; }

.controls{
  position: fixed;
  right: 14px;
  bottom: 96px;
  display:flex;
  flex-direction:column;
  gap:10px;
  z-index: 30;
}
.cbtn{
  width: 110px;
  height: 46px;
  border-radius: 14px;
  border:1px solid rgba(148,163,184,.25);
  background: rgba(15,23,42,.35);
  color: #e2e8f0;
  font-weight: 700;
}
.cbtn.primary{
  background: rgba(14,165,233,.35);
  border-color: rgba(14,165,233,.55);
}
.cbtn:disabled{
  opacity:.45;
}


.toast{
  position: fixed;
  left: 50%;
  top: 92px;
  transform: translateX(-50%);
  padding: 10px 14px;
  border-radius: 999px;
  border:1px solid rgba(148,163,184,.35);
  background: rgba(2,6,23,.75);
  color:#e2e8f0;
  font-weight: 900;
  letter-spacing: .04em;
  z-index: 60;
  backdrop-filter: blur(6px);
}
.toast.freeze{ border-color: rgba(96,165,250,.75); background: rgba(30,64,175,.35); }
.toast.poison{ border-color: rgba(34,197,94,.75); background: rgba(20,83,45,.35); }
.toast.defdown{ border-color: rgba(248,113,113,.75); background: rgba(127,29,29,.35); }
.toast.error{ border-color: rgba(248,113,113,.85); background: rgba(127,29,29,.55); }

.overlay{
  position: fixed;
  inset: 0;
  display:flex;
  align-items:flex-start;
  justify-content:center;
  padding-top: 90px;
  z-index: 55;
  background: transparent;
  pointer-events: none;
}

.overlay-box{
  width: min(92vw, 560px);
  padding: 16px 18px;
  pointer-events: none;
  border-radius: 18px;
  border:1px solid rgba(148,163,184,.25);
  background: rgba(15,23,42,.55);
  text-align:center;
  box-shadow: 0 18px 60px rgba(0,0,0,.35);
}
.overlay-title{
  font-size: 34px;
  font-weight: 1000;
  letter-spacing: .06em;
}
.overlay-sub{
  margin-top: 6px;
  color: rgba(226,232,240,.9);
  font-weight: 700;
}
