* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%); color: #e0e0e0; min-height: 100vh; } header { background: rgba(0, 0, 0, 0.4); padding: 16px 24px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; border-bottom: 2px solid #e94560; } header h1 { font-size: 1.5rem; color: #fff; text-shadow: 0 0 10px rgba(233, 69, 96, 0.5); } #status-bar { display: flex; align-items: center; gap: 16px; font-size: 0.85rem; color: #aaa; } #last-update, #refresh-timer { font-family: 'Courier New', monospace; font-size: 0.9rem; color: #4ade80; background: rgba(0, 0, 0, 0.4); padding: 4px 10px; border-radius: 6px; border: 1px solid rgba(74, 222, 128, 0.2); } #refresh-btn { background: #e94560; border: none; color: white; width: 36px; height: 36px; border-radius: 50%; cursor: pointer; font-size: 1.2rem; transition: transform 0.3s, background 0.3s; } #refresh-btn:hover { background: #ff6b6b; transform: rotate(180deg); } #main-content { display: flex; gap: 24px; padding: 24px; max-width: 1400px; margin: 0 auto; align-items: flex-start; } /* Board Section */ #board-section { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 12px; } .player-info { display: flex; align-items: center; gap: 12px; width: 100%; max-width: 500px; padding: 12px 16px; background: rgba(0, 0, 0, 0.3); border-radius: 12px; border: 2px solid transparent; transition: border-color 0.3s, box-shadow 0.3s; } .player-info.active { border-color: #e94560; box-shadow: 0 0 15px rgba(233, 69, 96, 0.3); } .player-avatar { font-size: 2rem; width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, 0.1); border-radius: 50%; flex-shrink: 0; } .player-details { flex: 1; display: flex; flex-direction: column; gap: 2px; } .player-name { font-weight: 600; font-size: 1.1rem; color: #fff; } .player-elo { font-size: 0.85rem; color: #aaa; } .player-clock { font-family: 'Courier New', monospace; font-size: 1.3rem; font-weight: bold; background: rgba(0, 0, 0, 0.5); padding: 6px 12px; border-radius: 8px; min-width: 100px; text-align: center; color: #4ade80; } #board { width: 100%; max-width: 500px; } #board [data-square].last-move-highlight { box-shadow: inset 0 0 3px 3px rgba(255, 200, 0, 0.7); } #pgn-panel { width: 100%; max-width: 500px; background: rgba(0, 0, 0, 0.3); border-radius: 12px; padding: 12px 16px; } .pgn-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; color: #e94560; font-weight: bold; font-size: 0.9rem; } #copy-pgn-btn { background: rgba(255, 255, 255, 0.1); border: none; color: #ccc; width: 32px; height: 32px; border-radius: 6px; cursor: pointer; font-size: 1rem; transition: background 0.2s; } #copy-pgn-btn:hover { background: rgba(255, 255, 255, 0.2); } #pgn-text { font-family: 'Courier New', monospace; font-size: 0.78rem; line-height: 1.5; color: #aaa; white-space: pre-wrap; word-break: break-all; max-height: 160px; overflow-y: auto; padding: 8px; background: rgba(0, 0, 0, 0.4); border-radius: 6px; -webkit-user-select: text; user-select: text; } /* Info Section */ #info-section { flex: 0 0 380px; display: flex; flex-direction: column; gap: 20px; } #game-info h2 { font-size: 1.3rem; color: #e94560; margin-bottom: 8px; } #result-info { font-size: 1.1rem; padding: 8px 12px; background: rgba(0, 0, 0, 0.3); border-radius: 8px; } #moves-panel, #all-games-panel, #standings-panel { background: rgba(0, 0, 0, 0.3); border-radius: 12px; padding: 16px; } #moves-panel h3, #all-games-panel h3, #standings-panel h3 { margin-bottom: 12px; color: #e94560; font-size: 1rem; } #standings-content { font-size: 0.9rem; line-height: 1.6; } #standings-content .standings-loading { color: #888; font-style: italic; } .standings-row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.05); } .standings-row:last-child { border-bottom: none; } .standings-label { color: #aaa; } .standings-value { color: #fff; font-weight: 600; } .standings-rank { font-size: 2rem; font-weight: bold; color: #e94560; text-align: center; padding: 8px 0; } .standings-rank-label { font-size: 0.8rem; color: #888; text-align: center; } .standings-header { text-align: center; margin-bottom: 8px; color: #ffd700; font-size: 0.85rem; } #moves-list { max-height: 300px; overflow-y: auto; font-family: 'Courier New', monospace; font-size: 0.95rem; line-height: 1.8; display: flex; flex-wrap: wrap; gap: 4px; } #moves-list .move-number { color: #888; font-weight: bold; } #moves-list .move { color: #e0e0e0; cursor: pointer; padding: 2px 6px; border-radius: 4px; transition: background 0.2s; } #moves-list .move:hover { background: rgba(233, 69, 96, 0.3); } #moves-list .move.current { background: #e94560; color: #fff; } #moves-list .lara-move { color: #ffd700; font-weight: bold; } #moves-list .opp-move { color: #aaa; } #all-games-list { display: flex; flex-direction: column; gap: 8px; } .game-entry { padding: 10px 12px; background: rgba(255, 255, 255, 0.05); border-radius: 8px; cursor: pointer; transition: background 0.2s; border-left: 3px solid transparent; } .game-entry:hover { background: rgba(255, 255, 255, 0.1); } .game-entry.active { border-left-color: #e94560; background: rgba(233, 69, 96, 0.15); } .game-entry .game-round { font-weight: bold; color: #e94560; font-size: 0.85rem; } .game-entry .game-players { font-size: 0.9rem; color: #ccc; margin-top: 2px; } .game-entry .game-result { font-size: 0.8rem; color: #888; margin-top: 2px; } /* Overlays */ #loading-overlay, #error-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(26, 26, 46, 0.95); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 1000; gap: 16px; } #loading-overlay p, #error-overlay p { font-size: 1.2rem; } #error-overlay button { padding: 10px 24px; background: #e94560; color: white; border: none; border-radius: 8px; cursor: pointer; font-size: 1rem; margin-top: 8px; } .spinner { width: 50px; height: 50px; border: 4px solid rgba(233, 69, 96, 0.3); border-top-color: #e94560; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Scrollbar */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.2); border-radius: 3px; } ::-webkit-scrollbar-thumb { background: #e94560; border-radius: 3px; } /* Responsive */ @media (max-width: 900px) { #main-content { flex-direction: column; align-items: center; } #info-section { flex: none; width: 100%; max-width: 500px; } header h1 { font-size: 1.2rem; } }