:root {
  --bg:#0f1115; --panel:#121623; --tile:#2a3246;
  --accent:#4da3ff; --text:#e7edf7; --muted:#9fb0cc;
}
*{box-sizing:border-box}
html,body{height:100%;overflow-x:hidden}
body{margin:0;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,"Noto Sans JP","ヒラギノ角ゴ ProN",sans-serif}
header{position:sticky;top:0;z-index:5;background:var(--panel);border-bottom:1px solid #22283a;padding:12px 16px;display:flex;align-items:center;gap:12px}
header h1{margin:0;font-weight:700;letter-spacing:.02em;font-size:1.2rem}
header .sub{opacity:.75;font-size:.9em;margin-left:.3rem}
.back{color:var(--muted);text-decoration:none;margin-right:.5rem}
.hubHeader{justify-content:space-between}
.authBox{display:flex;gap:8px;align-items:center}
.authBox button{padding:8px 12px;border-radius:8px;border:0;cursor:pointer;background:var(--accent);color:#0b1424;font-weight:700}
.authBox .secondary{background:#334; color: var(--text)}
.authBox #signOut:disabled{opacity:.5;cursor:not-allowed}
#userInfo{opacity:.85}

section, .panel, .cardGrid, .roomList{max-width:min(96vw,960px);margin:12px auto;padding:12px}
.panel{background:var(--panel);border:1px solid #22283a;border-radius:12px}
.muted{color:var(--muted)}

.cardGrid{display:grid;grid-template-columns:repeat(1,1fr);gap:12px}
@media(min-width:560px){.cardGrid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:900px){.cardGrid{grid-template-columns:repeat(3,1fr)}}
.card{background:var(--panel);border:1px solid #22283a;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px}
.card h3{margin:0}
.card p{margin:.2rem 0 .6rem;opacity:.85}
.card .actions{margin-top:auto;display:flex;gap:8px}
.card .actions a, .card .actions button{flex:1;text-align:center;text-decoration:none;padding:10px;border-radius:8px;border:0;background:var(--accent);color:#0b1424;font-weight:700}
.card .actions .secondary{background:#334;color:var(--text)}

.roomList{display:grid;grid-template-columns:1fr;gap:10px}
.room{display:flex;gap:10px;justify-content:space-between;align-items:center;background:#0b1424;border:1px solid #22283a;border-radius:10px;padding:10px}
.room .meta{display:flex;flex-direction:column;font-size:.95rem}
.room .name{font-weight:700}
.room .badges{display:flex;gap:6px;flex-wrap:wrap}
.badge{padding:2px 6px;border-radius:999px;background:#223048;color:#cfe0ff;font-size:.75rem}
a.btn, button.btn{display:inline-block;padding:8px 12px;border-radius:8px;border:0;background:var(--accent);color:#0b1424;font-weight:700;text-decoration:none}

#controls .grid2{display:grid;grid-template-columns:1fr;gap:10px}
#controls .right{text-align:right}
@media(min-width:720px){#controls .grid2{grid-template-columns:1fr auto}}

#boardSection{display:flex;justify-content:center}
#gameBoard{width:min(94vw,520px);background:#0b1424;border:1px solid #22283a;border-radius:12px;padding:clamp(6px,2.5vw,12px);display:grid;grid-template-columns:repeat(8,1fr);gap:clamp(2px,1.2vw,6px)}
.cell{width:100%;aspect-ratio:1/1;background:var(--tile);border-radius:6px;position:relative;cursor:pointer;transition:transform .06s}
.cell:hover{transform:translateY(-1px)}
.cell.black::after,.cell.white::after{content:"";position:absolute;inset:7%;border-radius:50%;box-shadow:inset 0 0 8px rgba(0,0,0,.6)}
.cell.black::after{background:#000}.cell.white::after{background:#fff}

#chatSection{background:var(--panel);border:1px solid #22283a;border-radius:12px;overflow:hidden}
#chatArea{height:32vh;min-height:140px;max-height:360px;overflow-y:auto;padding:12px;line-height:1.5}
.chatInputRow{display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px;background:#0b1424;border-top:1px solid #22283a}
.chatInputRow input{padding:10px;border-radius:8px;border:1px solid #2a3246;background:#0b1424;color:var(--text)}
.chatInputRow button{padding:10px 14px;border:0;border-radius:8px;background:var(--accent);color:#0b1424;font-weight:700}
.error{color:#ff9ea3}
.inline{display:inline-flex;gap:.5rem;align-items:center}
.right>select,.right>button,.right>label{margin-left:8px}
