.game-layout{flex-direction:column;align-items:center;gap:1.5rem;width:100%;padding:2rem 0;display:flex}@media (width>=900px){.game-layout{flex-direction:row;justify-content:center;align-items:flex-start;gap:3rem}}.canvas-container{aspect-ratio:1;width:100%;max-width:540px;box-shadow:var(--shadow-lg), 0 0 20px #e5a93b26;background:#251b14;border:4px solid #3c2a1e;border-radius:16px;position:relative;overflow:hidden}canvas.board-canvas{cursor:pointer;width:100%;height:100%;display:block}.game-sidebar{flex-direction:column;gap:1.25rem;width:100%;max-width:360px;display:flex}.card-panel{background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;padding:1.25rem}.turn-banner{justify-content:space-between;align-items:center;gap:1rem;display:flex}.turn-badge{border-radius:20px;align-items:center;gap:.5rem;padding:.4rem .8rem;font-size:.9rem;font-weight:700;display:inline-flex}.turn-badge.tiger{color:var(--accent-tiger);background:#ff6b3533;border:1px solid #ff6b3566}.turn-badge.goat{color:var(--accent-goat);background:#4ecdc433;border:1px solid #4ecdc466}.stats-grid{grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem;display:grid}.stat-item{text-align:center;background:#00000040;border-radius:8px;flex-direction:column;align-items:center;padding:.75rem;display:flex}.stat-num{color:var(--accent-gold);font-size:1.5rem;font-weight:800}.stat-label{color:var(--text-muted);text-transform:uppercase;margin-top:.25rem;font-size:.75rem}.action-buttons{flex-direction:column;gap:.75rem;display:flex}.btn-primary{background:var(--accent-gold);color:#12141a;text-align:center;border-radius:8px;padding:.75rem 1.25rem;font-weight:700;transition:all .2s}.btn-primary:hover{box-shadow:0 4px 15px var(--accent-gold-glow);transform:translateY(-2px)}.btn-secondary{color:var(--text-main);text-align:center;border:1px solid var(--border-color);background:#ffffff14;border-radius:8px;padding:.75rem 1.25rem;font-weight:600;transition:background .2s}.btn-secondary:hover{background:#ffffff1f}.presence-banner-stack{flex-direction:column;gap:.75rem;width:100%;margin-top:1rem;display:flex}.presence-banner{border:1px solid #0000;border-radius:10px;align-items:center;gap:.75rem;padding:.85rem 1.25rem;font-size:.9rem;animation:.25s ease-out fadeIn;display:flex}.presence-banner .banner-icon{flex-shrink:0;font-size:1.15rem}.presence-banner .banner-content{flex-direction:column;flex-grow:1;gap:.15rem;display:flex}.presence-banner .banner-content strong{font-weight:700}.presence-banner .banner-content span{opacity:.9;font-size:.8rem}.presence-banner .banner-action-btn{color:#fff;cursor:pointer;background:#ffffff26;border:1px solid #fff3;border-radius:6px;padding:.4rem .8rem;font-size:.8rem;font-weight:600;transition:background .15s}.presence-banner .banner-action-btn:hover{background:#ffffff40}.presence-banner.info{color:var(--accent-goat);background:#4ecdc41f;border-color:#4ecdc459}.presence-banner.warning{color:#fa0;background:#ffaa0026;border-color:#ffaa0080}.presence-banner.warning.opponent-disconnect{background:#ffaa002e;border-color:#fa0;box-shadow:0 0 15px #fa03}.presence-banner.danger{color:var(--accent-tiger);background:#ff6b3526;border-color:#ff6b3580}.presence-banner.spectator{color:#a78bfa;background:#9370db26;border-color:#9370db73}.toast-container{z-index:1200;pointer-events:none;flex-direction:column;gap:.6rem;width:calc(100% - 3rem);max-width:380px;display:flex;position:fixed;top:1.5rem;right:1.5rem}.toast-card{pointer-events:auto;background:var(--bg-card);border:1px solid var(--border-color);box-shadow:var(--shadow-lg), 0 0 15px #0006;border-radius:8px;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.85rem;animation:.2s cubic-bezier(.16,1,.3,1) slideInRight;display:flex}.toast-card .toast-icon{font-size:1.1rem}.toast-card .toast-message{color:var(--text-main);flex-grow:1}.toast-card .toast-close-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:.2rem;font-size:.9rem;transition:color .15s}.toast-card .toast-close-btn:hover{color:#fff}.toast-card.toast-error{border-color:var(--accent-tiger);background:#231414f2}.toast-card.toast-warning{background:#231e14f2;border-color:#fa0}.toast-card.toast-success{border-color:var(--accent-goat);background:#14231ef2}.toast-card.toast-info{border-color:var(--accent-gold);background:#1e1c16f2}.player-matchup-section{border-top:1px solid var(--border-color);margin-top:1.25rem;padding-top:1rem}.matchup-grid{grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;display:grid}.matchup-card{background:#00000040;border:1px solid #0000;border-radius:8px;flex-direction:column;padding:.65rem .75rem;display:flex}.matchup-card.you{border-color:#e5a93b33}.matchup-card.opponent{border-color:#ffffff0d}.matchup-card.opponent.disconnected{background:#ffaa000d;border-color:#fa06}.matchup-card .matchup-role-tag{text-transform:uppercase;color:var(--text-muted);font-size:.7rem;font-weight:700}.matchup-card .matchup-username{color:var(--text-main);text-overflow:ellipsis;white-space:nowrap;margin-top:.2rem;font-size:.9rem;font-weight:600;overflow:hidden}.matchup-card .matchup-username .disconnect-alert{color:#fa0}.matchup-card .matchup-username .waiting-text{color:var(--text-muted);font-style:italic}.matchup-divider{color:var(--text-muted);font-size:.75rem;font-weight:800}.spectator-indicator{flex-direction:column;gap:.5rem;display:flex}.spectator-indicator .spectator-badge{color:#a78bfa;font-size:.8rem;font-weight:700}.spectator-indicator .matchup-players-row{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.spectator-indicator .matchup-players-row .player-chip{border-radius:4px;padding:.25rem .5rem;font-weight:600}.spectator-indicator .matchup-players-row .player-chip.tiger{color:var(--accent-tiger);background:#ff6b3526}.spectator-indicator .matchup-players-row .player-chip.goat{color:var(--accent-goat);background:#4ecdc426}.spectator-indicator .matchup-players-row .vs-separator{color:var(--text-muted);font-size:.75rem}.canvas-container.locked{opacity:.95}canvas.board-canvas.disabled-cursor{cursor:default}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}
