:root{
  --bg:#0f1115; --panel:#171a21; --muted:#aab2c0;
  --border:#222733; --accent:#ffb86b; --ok:#9be4a3; --good:#82b0ff;
  --warn:#ffd66b; --bad:#ff7070; --best:#f5ff8a;
  --white:#f4f8ff; --black:#0f1115;
}

*{box-sizing:border-box}
html,body{height:100%;margin:0;overflow:hidden;background:var(--bg);color:#e8ecf2;font:14px/1.45 Inter,system-ui,Segoe UI,Arial}
code,pre,.mono{font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}
h1,h2,h3{margin:0 0 8px}
h1{font-size:18px}
h3{font-size:14px;color:#cdd6e5}

.hidden{display:none}

.topbar{
  position:sticky;top:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px;background:var(--panel);border-bottom:1px solid var(--border)
}
.top-actions{display:flex;gap:10px;align-items:center}
.api{color:#9aa6bc}
.btn{background:#2b313f;border:1px solid var(--border);color:#e8ecf2;padding:8px 12px;border-radius:8px;cursor:pointer}
.btn.primary{background:#415df0;border-color:#415df0}
.btn[disabled]{opacity:.6;cursor:default}

.layout{
  display:grid;grid-template-columns:280px 1fr 420px;gap:12px;
  height:calc(100vh - 70px);padding:12px;
}
.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px}

.left{display:flex;flex-direction:column;gap:16px;overflow:auto;min-height:0}
.players .row{display:flex;justify-content:space-between;color:#cbd5e0;margin-top:4px}
.players .name{font-weight:600;margin-bottom:6px}
.players .elo{color:#9aa6bc;margin-left:6px}
.headers{white-space:pre-wrap;color:#cbd5e0;border:1px dashed var(--border);padding:8px;border-radius:8px;background:#12151c}

.summary .pill{border:1px solid var(--border);border-radius:10px;padding:8px;margin-bottom:8px}
.summary .row{display:flex;gap:6px;align-items:center;margin-top:6px}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.row{display:flex;gap:8px;align-items:center}
.between{justify-content:space-between}

.center{display:flex;align-items:stretch;justify-content:center;height: 100%;}
.board-wrap{position:relative;display:flex;flex-direction:column;align-items:center;width:100%}
.board{width:100%;max-width:min(90vh, 720px);aspect-ratio:1;border-radius:8px}
.player-top,.player-bottom{ margin: 8px 0; text-align:center; font-weight:600; }
.player-top .name,.player-bottom .name{font-weight:600}
.controls{
  display:flex; justify-content:center; align-items:center;
  gap: 12px; margin-top: 10px;
}
.controls button{font-size:18px;padding:8px 10px;border-radius:6px;border:none;background:#2b313f;color:#e8ecf2;cursor:pointer}
#btnPlay{font-size:22px;padding:10px 16px;border-radius:999px}
.controls .spacer{flex:1}
.swap{display:flex;gap:6px;align-items:center;color:#cbd5e0}
.swap-label{margin-right:6px}
.swap input{display:none}
.swap .toggle{
  width:40px;height:20px;border-radius:999px;
  background:#2b313f;border:1px solid var(--border);
  position:relative;flex-shrink:0;
}
.swap .knob{
  position:absolute;top:2px;left:2px;
  width:16px;height:16px;border-radius:50%;
  background:#cbd5e0;transition:transform .2s ease;
}
.swap input:checked + .toggle .knob{transform:translateX(20px)}

.move-badge{
  position:absolute; top:10px; right:10px;
  background: #000a; border: 1px solid var(--border);
  padding: 10px 18px; border-radius: 999px;
  font-weight: 800; font-size: 16px; /* to & rõ hơn */
}

.right{display:flex;flex-direction:column;gap:12px;overflow:auto;min-height:0}
.eval-card .title{color:#cbd5e0}
.evalbar{width:120px;height:14px;border-radius:6px;border:1px solid var(--border);background:linear-gradient(90deg,#f4f8ff 50%, #0f1115 50%)}

.moves-card{display:flex;flex-direction:column;min-height:0}
.moves-header{color:#cbd5e0;margin-bottom:6px}
.moves{flex:1;overflow:auto;border:1px solid var(--border);border-radius:10px;padding:8px;background:#12151c}
.moves.two-col{display:grid;grid-template-columns:36px 1fr 1fr;gap:4px;align-items:center}
.moves .nr{color:#9aa6bc;text-align:right;padding-right:4px}
.moves .cell{ padding: 6px 8px; border-radius: 6px; cursor: pointer; }
.moves .cell:hover{ background: #262c3b; }
.moves .cell.active{ outline: 2px solid #5f76ff; }

.badge{display:inline-flex;gap:6px;align-items:center;padding:2px 6px;border-radius:999px;border:1px solid var(--border)}
.badge .b{width:10px;height:10px;border-radius:50%}
.tag{display:inline-flex;gap:6px;align-items:center}

.muted{color:#9aa6bc}

/* Modal */
.modal{position:fixed;inset:0;background:#0007;display:flex;align-items:center;justify-content:center}
.modal.hidden{display:none}
.modal-box{width:min(480px, 92vw);background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px}
.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}
.loading{margin-top:8px;color:#cbd5e0}
