:root{
  --bg:#0f1220; --panel:#171a2e; --panel2:#1f2440; --text:#e9ecf8; --muted:#9aa3c7;
  --accent:#ff7ac6; --accent2:#7ad7ff; --good:#8be28b; --bad:#ff7a85;
  --light:#eadfc7; --dark:#6a4a32; --sel:#f6e26b; --hint:rgba(255,255,255,.35);
  --last:rgba(246,226,107,.55);
}
*{box-sizing:border-box}
html,body{margin:0;background:radial-gradient(1200px 800px at 10% -10%,#2a1a44 0,#0f1220 60%) fixed;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}
a{color:var(--accent2);text-decoration:none}
button{cursor:pointer;background:var(--panel2);color:var(--text);border:1px solid #2c3257;border-radius:10px;padding:.55rem .9rem;font-weight:600}
button:hover{background:#2a3060}
button.primary{background:linear-gradient(135deg,var(--accent),#b35ffb);border:none}
button.danger{background:#3b1f29;border-color:#5a2a36}
button.tiny{padding:.2rem .5rem;font-size:.8rem}
input{background:var(--panel2);border:1px solid #2c3257;color:var(--text);border-radius:10px;padding:.55rem .8rem;font:inherit}
input::placeholder{color:#7a82ad}
.hidden{display:none!important}
.muted{color:var(--muted)}
.err{color:var(--bad);min-height:1.2em}

#app{max-width:1200px;margin:0 auto;padding:1rem}
.top{display:flex;align-items:baseline;gap:1rem;padding:.6rem .2rem 1rem}
.brand{font-size:1.4rem;font-weight:700;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}
.sub{color:var(--muted)}

.card{background:var(--panel);border:1px solid #262b50;border-radius:16px;padding:1.4rem;max-width:560px;margin:2rem auto}
.card h1{margin:.2rem 0 .4rem}
.card label{display:flex;flex-direction:column;gap:.35rem;margin:1rem 0}
.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-top:.6rem}
.row .or{color:var(--muted);padding:0 .2rem}

#game{display:grid;grid-template-columns:minmax(320px,1fr) 360px;gap:1.2rem;align-items:start}
@media (max-width:900px){ #game{grid-template-columns:1fr} }

.board-wrap{background:var(--panel);border:1px solid #262b50;border-radius:16px;padding:1rem}
.players{display:flex;justify-content:space-between;padding:.4rem .2rem;color:var(--muted)}
.player{display:flex;align-items:center;gap:.5rem;font-weight:600;color:var(--text)}
.dot{width:.8rem;height:.8rem;border-radius:50%}
.dot.white{background:#f3ead3;box-shadow:0 0 0 1px #000 inset}
.dot.black{background:#222;box-shadow:0 0 0 1px #444 inset}
.tag{font-size:.75rem;color:var(--muted);padding:.1rem .45rem;border:1px solid #2c3257;border-radius:999px}

.board{
  --sq: min(64px, calc((100vw - 2.5rem) / 8));
  width:calc(var(--sq) * 8);
  height:calc(var(--sq) * 8);
  display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);
  border-radius:10px;overflow:hidden;margin:.4rem auto;
  box-shadow:0 10px 30px rgba(0,0,0,.4);
  user-select:none;-webkit-user-select:none;touch-action:manipulation;
  position:relative;
}
@media (min-width:900px){ .board{ --sq: 64px; } }

.sq{display:flex;align-items:center;justify-content:center;position:relative;font-size:calc(var(--sq) * .78);line-height:1}
.sq.light{background:var(--light)}
.sq.dark{background:var(--dark)}
.sq .coord{position:absolute;font-size:.62rem;color:rgba(0,0,0,.45);font-weight:700}
.sq.light.dark-text .coord{color:rgba(0,0,0,.55)}
.sq .coord.file{bottom:2px;right:4px}
.sq .coord.rank{top:2px;left:4px}
.sq.selected{outline:3px solid var(--sel);outline-offset:-3px}
.sq.last{background-color:var(--last)!important}
.sq.check{box-shadow:inset 0 0 0 4px #ff5050}
.sq .piece{cursor:grab}
.sq.target::after{content:"";position:absolute;width:30%;height:30%;border-radius:50%;background:var(--hint)}
.sq.target.capture::after{width:88%;height:88%;background:transparent;border:5px solid var(--hint);border-radius:50%}

.piece{filter:drop-shadow(0 1px 0 rgba(0,0,0,.45))}
.piece.w{color:#fbfaf2;text-shadow:0 0 2px #000, 0 1px 0 #000}
.piece.b{color:#1a1a1a;text-shadow:0 0 2px #fff8, 0 1px 0 #fff6}

.actions{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center;margin-top:.6rem}

.sidebar{display:flex;flex-direction:column;gap:.9rem}
.sidebar .info, .sidebar .movelist-wrap, .sidebar .chat-wrap{background:var(--panel);border:1px solid #262b50;border-radius:14px;padding:.8rem 1rem}
.sidebar h3{margin:.2rem 0 .5rem;font-size:.95rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.status{margin-top:.4rem;font-weight:600;color:var(--accent2)}
.movelist{margin:0;padding-left:1.4rem;max-height:200px;overflow:auto;font-variant-numeric:tabular-nums}
.movelist li{padding:.1rem 0}
.chat{height:180px;overflow:auto;background:#0e1124;border-radius:10px;padding:.5rem;border:1px solid #20254a;font-size:.92rem}
.chat .msg{margin:.15rem 0}
.chat .sys{color:var(--muted);font-style:italic}
.chat .me{color:var(--accent)}
#chatForm{display:flex;gap:.4rem;margin-top:.5rem}
#chatForm input{flex:1}

.modal{position:fixed;inset:0;background:rgba(8,10,20,.7);display:flex;align-items:center;justify-content:center;z-index:50}
.modal-card{background:var(--panel);border:1px solid #2c3257;border-radius:14px;padding:1rem 1.2rem;min-width:280px}
.promo-options{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.6rem}
.promo-options button{font-size:1.1rem}

.flipped .sq{transform:rotate(180deg)}
.flipped .board{transform:rotate(180deg)}

.invite{background:#2a1f4a;border:1px solid #5a3a8a;color:#ffe9fb;border-radius:12px;padding:.7rem .9rem;margin:.4rem 0 .8rem;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;font-size:.92rem}
.invite code{background:#0e1124;padding:.25rem .5rem;border-radius:8px;font-size:.82rem;word-break:break-all}
.invite .solo{display:flex;align-items:center;gap:.35rem;margin-left:auto;color:var(--muted)}
.invite .solo input{margin:0}
