.lobby{padding:0;margin-bottom:0}.lobby-inner{max-width:720px;margin:0 auto;padding:56px 40px;display:flex;flex-direction:column;gap:32px}.lobby-title{font-size:clamp(2.5rem,6vw,4rem);font-weight:800;margin:0;letter-spacing:.04em}.lobby-sub{font-size:15px;line-height:1.7;margin:0}.accent{color:var(--glow)}.lobby-modes{display:grid;grid-template-columns:1fr 1fr;gap:16px}.mode-card{display:flex;flex-direction:column;gap:10px;padding:24px}.mode-icon{font-size:28px}.mode-card h2{margin:0;font-size:18px}.mode-card p{margin:0;font-size:13px;line-height:1.5}.online-actions{display:flex;flex-direction:column;gap:8px}.join-row{display:flex;gap:8px}.join-row input{flex:1;font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em}.rules-row{display:flex;flex-wrap:wrap;gap:10px 24px;font-size:13px;line-height:1.5;border-top:1px solid rgba(255,255,255,.08);padding-top:20px}.rule strong{color:var(--text)}.game-header{display:flex;justify-content:space-between;align-items:center;padding:12px 0 16px;gap:16px}.game-status-wrap{display:flex;align-items:center;gap:14px}.game-status{font-size:14px;color:var(--muted)}.timer{font-size:18px;font-weight:700;color:var(--glow);min-width:44px;transition:color .3s}.timer.warn{color:var(--warn)}.timer.danger{color:var(--bad);animation:pulse .5s infinite alternate}@keyframes pulse{to{opacity:.5}}.game-layout{display:grid;grid-template-columns:200px 1fr 200px;gap:16px;align-items:start}.player-panel{border-radius:var(--radius2);background:linear-gradient(180deg,#0b132ab3,#070a148c);border:1px solid rgba(255,255,255,.08);padding:16px;display:flex;flex-direction:column;gap:14px;transition:border-color .3s,box-shadow .3s}.player-panel.active{border-color:#49d9ff4d;box-shadow:0 0 24px #49d9ff14}#panel-p2.active{border-color:#b56bff4d;box-shadow:0 0 24px #b56bff14}.player-panel.inactive{opacity:.55}.player-header{display:flex;align-items:center;gap:10px}.player-color{width:12px;height:12px;border-radius:50%;flex-shrink:0}.p1-bg{background:var(--glow);box-shadow:0 0 8px #49d9ff99}.p2-bg{background:var(--glow2);box-shadow:0 0 8px #b56bff99}.p1-text{color:var(--glow)}.p2-text{color:var(--glow2)}.player-name{font-size:14px;font-weight:600;letter-spacing:.06em}.player-role{font-size:11px}.player-score-wrap{text-align:center}.score-label{font-size:11px;margin-bottom:2px}.player-score{font-size:48px;font-weight:800;font-family:var(--mono);line-height:1;color:var(--text);transition:transform .15s}.player-score.bump{transform:scale(1.25)}.shapes-label{font-size:11px;letter-spacing:.1em;text-transform:uppercase}.shape-options{display:flex;flex-direction:column;gap:8px}.shape-card{border-radius:12px;border:1px solid rgba(255,255,255,.08);background:#0003;padding:10px;cursor:pointer;transition:border-color .15s,background .15s,transform .08s;display:flex;align-items:center;justify-content:center;min-height:60px}.shape-card:hover:not(.dimmed){border-color:#ffffff2e;background:#ffffff0a}.shape-card:active:not(.dimmed){transform:scale(.97)}.shape-card.selected.p1-card{border-color:#49d9ff80;background:#49d9ff1a;box-shadow:0 0 16px #49d9ff26}.shape-card.selected.p2-card{border-color:#b56bff80;background:#b56bff1a;box-shadow:0 0 16px #b56bff26}.shape-card.dimmed{cursor:default;opacity:.45}.shape-preview{display:grid;gap:2px}.shape-dot{width:18px;height:18px;border-radius:4px;background:#ffffff0d;border:1px solid rgba(255,255,255,.06)}.p1-card .shape-dot.filled{background:#49d9ff59;border-color:#49d9ff99}.p2-card .shape-dot.filled{background:#b56bff59;border-color:#b56bff99}.col-tracker,.row-tracker{display:flex;flex-direction:column;gap:6px}.tracker-label{font-size:10px;letter-spacing:.08em;text-transform:uppercase}.tracker-dots{display:flex;flex-wrap:wrap;gap:4px}.tracker-dot{width:14px;height:14px;border-radius:3px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;font-family:var(--mono);font-size:8px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:background .3s,border-color .3s}.tracker-dot.scored-p1{background:#49d9ff4d;border-color:#49d9ff99;color:var(--glow)}.tracker-dot.scored-p2{background:#b56bff4d;border-color:#b56bff99;color:var(--glow2)}.board-wrap{display:flex;flex-direction:column;gap:4px}.col-index{display:grid;grid-template-columns:repeat(9,52px);gap:3px;padding-left:20px}.col-index-cell{width:52px;text-align:center;font-size:10px;transition:color .3s}.col-index-cell.scored{color:var(--glow);font-weight:700}.board-row-wrap{display:flex;gap:4px}.row-index{display:grid;grid-template-rows:repeat(9,52px);gap:3px}.row-index-cell{width:20px;height:52px;display:flex;align-items:center;justify-content:flex-end;font-size:10px;padding-right:4px;transition:color .3s}.row-index-cell.scored{color:var(--glow2);font-weight:700}.board{display:grid;grid-template-columns:repeat(9,52px);grid-template-rows:repeat(9,52px);gap:3px}.cell{width:52px;height:52px;border-radius:6px;background:#ffffff12;border:1px solid rgba(255,255,255,.14);transition:background .12s,border-color .12s;position:relative}.cell.p1{background:#49d9ff38;border-color:#49d9ff73}.cell.p2{background:#b56bff38;border-color:#b56bff73}.cell.scored-col{border-color:#49d9ff40}.cell.scored-row{border-color:#b56bff40}.cell.preview-p1{background:#49d9ff4d;border-color:#49d9ffb3;cursor:crosshair}.cell.preview-p2{background:#b56bff4d;border-color:#b56bffb3;cursor:crosshair}.cell.preview-invalid{background:#ff5a7a33;border-color:#ff5a7a80;cursor:not-allowed}@keyframes flashScore{0%{background:#fc69;border-color:#ffcc66e6;transform:scale(1.06)}to{background:inherit;border-color:inherit;transform:scale(1)}}.cell.flash{animation:flashScore .5s ease forwards}@keyframes placePop{0%{transform:scale(.7);opacity:.6}60%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}.cell.placed{animation:placePop .22s ease forwards}.gameover-overlay{position:fixed;inset:0;background:#05070ecc;backdrop-filter:blur(8px);z-index:200;display:flex;align-items:center;justify-content:center}.gameover-box{padding:48px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:20px;max-width:400px}.gameover-title{font-size:32px;font-weight:800}.gameover-scores{display:flex;gap:32px;font-size:20px;font-family:var(--mono)}.gameover-scores span{font-size:14px}@media(max-width:860px){.game-layout{grid-template-columns:1fr}.board-wrap{overflow-x:auto}.lobby-modes{grid-template-columns:1fr}}
