:root{
  --bg:#0b1020;
  --panel:#111a33;
  --text:#e8ecff;
  --muted:#aeb7e6;
  --accent:#7aa2ff;
  --danger:#ff6b6b;
  --board:#e6c89c;
  --line:rgba(0,0,0,.35);
  --shadow: 0 10px 30px rgba(0,0,0,.35);
  --radius:16px;
}
*{
  box-sizing:border-box;
}
body{
  margin:0;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, "PingFang SC", "Microsoft YaHei", Arial;
  background: radial-gradient(1200px 600px at 20% 10%, #1a2a5a 0%, rgba(26,42,90,0) 60%),
              radial-gradient(900px 500px at 90% 30%, #1d3b4d 0%, rgba(29,59,77,0) 55%),
              var(--bg);
  color:var(--text);
  min-height:100vh;
  display:flex;
  align-items:flex-start;
  justify-content:center;
  padding:12px;
}
.app{
  width:min(100%, 480px);
  display:grid;
  grid-template-columns: 1fr;
  gap:12px;
}
.topbar{
  display:flex;
  gap:8px;
  align-items:center;
  justify-content:space-between;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: var(--radius);
  padding:10px 10px;
  box-shadow: var(--shadow);
  backdrop-filter: blur(10px);
  flex-wrap:wrap;
}
.brand{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding-left:6px;
}
.brand .title{
  font-weight:800;
  letter-spacing:.5px;
  display:flex;
  align-items:center;
  gap:8px;
  font-size:16px;
}
.badge{
  font-size:11px;
  color:var(--muted);
  border:1px solid rgba(255,255,255,.12);
  padding:2px 6px;
  border-radius:999px;
  background: rgba(255,255,255,.04);
}
.brand .sub{
  font-size:11px;
  color:var(--muted);
}
.controls{
  display:flex;
  gap:6px;
  align-items:center;
  flex-wrap:wrap;
  justify-content:flex-end;
}
button, select{
  border:1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.06);
  color:var(--text);
  border-radius: 10px;
  padding:8px 10px;
  font-weight:600;
  cursor:pointer;
  transition:.15s ease;
  outline:none;
  font-size:13px;
}
button:hover, select:hover{
  transform: translateY(-1px);
  border-color: rgba(255,255,255,.22);
}
button:active{
  transform: translateY(0px);
}
button.primary{
  background: rgba(122,162,255,.18);
  border-color: rgba(122,162,255,.35);
}
button.danger{
  background: rgba(255,107,107,.15);
  border-color: rgba(255,107,107,.35);
}
button:disabled{
  opacity:.55;
  cursor:not-allowed;
  transform:none;
}
.main{
  display:grid;
  grid-template-columns: 1fr;
  gap:12px;
}
.boardWrap{
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: var(--radius);
  padding:10px;
  box-shadow: var(--shadow);
}
canvas{
  width:100%;
  height:auto;
  display:block;
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(230,200,156,.98), rgba(215,182,132,.98));
  border:1px solid rgba(0,0,0,.12);
  touch-action: manipulation;
}
.side{
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: var(--radius);
  padding:10px;
  box-shadow: var(--shadow);
  display:flex;
  flex-direction:column;
  gap:10px;
}
.card{
  border:1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.12);
  border-radius: 12px;
  padding:10px;
}
.row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  flex-wrap:wrap;
}
.status{
  font-size:13px;
  color:var(--muted);
  display:flex;
  gap:6px;
  align-items:center;
}
.dot{
  width:8px;
  height:8px;
  border-radius:50%;
  background: rgba(122,162,255,.9);
  box-shadow: 0 0 12px rgba(122,162,255,.55);
}
.dot.ai{
  background: rgba(255,200,107,.95);
  box-shadow: 0 0 12px rgba(255,200,107,.55);
}
.dot.over{
  background: rgba(255,107,107,.95);
  box-shadow: 0 0 12px rgba(255,107,107,.55);
}
.kvs{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:8px;
  margin-top:8px;
}
.kv{
  padding:8px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
}
.kv .k{
  font-size:11px;
  color:var(--muted);
}
.kv .v{
  margin-top:3px;
  font-size:14px;
  font-weight:800;
}
.small{
  font-size:11px;
  color: var(--muted);
}