html{font-size:16px}body{min-height:100vh;background:#1c1c1f;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}#root{min-height:100vh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#1c1c1f}::-webkit-scrollbar-thumb{background:#424254;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#5383e8}::selection{background:#5383e84d}a{color:#5383e8;text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}:root{--bg-primary: #1c1c1f;--bg-secondary: #282830;--bg-card: #31313c;--bg-hover: #3d3d4a;--text-primary: #fff;--text-secondary: #9e9eb1;--text-muted: #656579;--accent: #5383e8;--accent-hover: #4171d6;--blue-team: #5383e8;--red-team: #e84057;--win: #5383e8;--loss: #e84057;--kills: #e84057;--deaths: #9e9eb1;--assists: #9aa4af;--border: #424254;--shadow: 0 1px 3px rgba(0, 0, 0, .2)}*{box-sizing:border-box;margin:0;padding:0}.app{min-height:100vh;background:var(--bg-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--text-primary);line-height:1.5}.app-header{background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:1rem 0}.header-content{max-width:1200px;margin:0 auto;padding:0 1rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem}.app-title{font-size:1.25rem;font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:.5rem}.title-accent{color:var(--accent)}.app-subtitle{font-size:.8rem;color:var(--text-muted);display:none}.seed-button{font-size:.75rem;padding:.4rem .75rem;border:1px solid var(--border);border-radius:4px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s}.seed-button:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.seed-button:disabled{opacity:.5;cursor:not-allowed}.app-main{max-width:1200px;margin:0 auto;padding:1.5rem 1rem;display:flex;flex-direction:column;gap:1.5rem}.section-title{font-size:.875rem;font-weight:600;color:var(--text-primary);margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem}.title-icon{font-size:1rem}.player-stats-container{background:var(--bg-secondary);border-radius:4px;padding:1rem;overflow:hidden}.table-wrapper{overflow-x:auto}.player-stats-table{width:100%;border-collapse:collapse;font-size:.875rem}.player-stats-table thead{background:var(--bg-card)}.player-stats-table th{padding:.75rem 1rem;text-align:left;font-weight:600;font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;border-bottom:1px solid var(--border)}.player-stats-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}.player-stats-table th.sortable:hover{color:var(--text-primary)}.player-stats-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border)}.player-row{transition:background .15s;cursor:pointer}.player-row:hover{background:var(--bg-hover)}.player-row:last-child td{border-bottom:none}.rank-col{width:40px;text-align:center}.rank{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:.75rem;font-weight:600;color:var(--text-secondary)}.rank-1{color:gold}.rank-2{color:silver}.rank-3{color:#cd7f32}.player-name{font-weight:600;color:var(--text-primary)}.stat-col{text-align:center;font-weight:500;font-variant-numeric:tabular-nums}.stat-col.kills{color:var(--kills)}.stat-col.deaths{color:var(--deaths)}.stat-col.assists{color:var(--text-primary)}.stat-col.kda{color:var(--accent)}.stat-col.games{color:var(--text-secondary)}.stat-col.wins{color:var(--win)}.stat-col.losses{color:var(--loss)}.winrate-badge{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600}.winrate-badge.positive{background:#5383e826;color:var(--win)}.winrate-badge.negative{background:#e8405726;color:var(--loss)}.recent-games-container{background:var(--bg-secondary);border-radius:4px;padding:1rem}.games-list{display:flex;flex-direction:column;gap:.5rem}.game-card{background:var(--bg-card);border-radius:4px;overflow:hidden;border:1px solid var(--border)}.game-card.expanded{border-color:var(--accent)}.game-card-main{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;cursor:pointer;transition:background .15s}.game-card-main:hover{background:var(--bg-hover)}.game-result{padding:.35rem .6rem;border-radius:3px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em;min-width:70px;text-align:center}.game-result.blue{background:#5383e826;color:var(--blue-team)}.game-result.red{background:#e8405726;color:var(--red-team)}.game-score{display:flex;align-items:center;gap:.35rem;font-weight:700;font-size:1rem;min-width:60px;justify-content:center}.game-score .score{font-variant-numeric:tabular-nums}.game-score .score.blue{color:var(--blue-team)}.game-score .score.red{color:var(--red-team)}.game-score .score.winner{font-weight:800}.game-score .score-divider{color:var(--text-muted);font-weight:400}.game-teams-preview{flex:1;display:flex;align-items:center;gap:.75rem;min-width:0}.team-roster{display:flex;flex-wrap:wrap;gap:.35rem;flex:1;min-width:0}.team-roster.blue{justify-content:flex-end}.team-roster.red{justify-content:flex-start}.roster-player{font-size:.75rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px}.team-roster.blue .roster-player{color:var(--blue-team)}.team-roster.red .roster-player{color:var(--red-team)}.game-teams-preview .vs{font-size:.65rem;color:var(--text-muted);text-transform:uppercase;font-weight:600}.game-meta-info{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem;min-width:90px}.game-meta-info .game-duration{font-size:.75rem;color:var(--text-primary);font-weight:500}.game-meta-info .game-date{font-size:.65rem;color:var(--text-muted)}.expand-toggle{background:none;border:none;padding:.5rem;color:var(--text-muted);cursor:pointer;transition:color .15s}.expand-toggle:hover{color:var(--text-primary)}.expand-icon{display:block;font-size:.6rem;transition:transform .2s}.expand-icon.open{transform:rotate(180deg)}.game-card-details{border-top:1px solid var(--border);padding:1rem;background:var(--bg-secondary)}.teams-detail{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.team-detail{background:var(--bg-card);border-radius:4px;overflow:hidden}.team-detail.winner{box-shadow:inset 0 2px 0 var(--win)}.team-detail.blue.winner{box-shadow:inset 0 2px 0 var(--blue-team)}.team-detail.red.winner{box-shadow:inset 0 2px 0 var(--red-team)}.team-detail-header{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;background:var(--bg-hover);border-bottom:1px solid var(--border)}.team-detail-header .team-name{font-size:.75rem;font-weight:600;text-transform:uppercase}.team-detail.blue .team-name{color:var(--blue-team)}.team-detail.red .team-name{color:var(--red-team)}.team-detail-header .win-badge{font-size:.6rem;padding:.15rem .35rem;border-radius:2px;background:#5383e833;color:var(--win);font-weight:600;text-transform:uppercase}.team-detail-header .team-total-kills{margin-left:auto;font-size:.7rem;color:var(--text-muted)}.team-detail-players{padding:.25rem 0}.player-stat-row{display:flex;align-items:center;gap:.75rem;padding:.4rem .75rem;transition:background .15s}.player-stat-row:hover{background:var(--bg-hover)}.player-identity{flex:1;display:flex;align-items:center;gap:.4rem;min-width:0}.player-identity .champion{font-size:.65rem;padding:.1rem .3rem;background:var(--bg-primary);border-radius:2px;color:var(--text-muted);white-space:nowrap}.player-identity .name{font-size:.8rem;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-kda{display:flex;align-items:center;gap:.15rem;font-size:.8rem;font-weight:500}.player-kda .k{color:var(--kills)}.player-kda .d{color:var(--deaths)}.player-kda .a{color:var(--text-primary)}.player-kda .sep{color:var(--text-muted);font-weight:400}.player-kda .kda-value{margin-left:.5rem;font-size:.7rem;color:var(--text-muted)}.player-stat-row .player-damage{font-size:.7rem;color:var(--text-muted);min-width:55px;text-align:right}@media(max-width:768px){.game-card-main{flex-wrap:wrap;gap:.5rem}.game-teams-preview{order:5;width:100%;flex-direction:column;gap:.25rem}.team-roster{justify-content:center!important}.teams-detail{grid-template-columns:1fr}}.games-actions{display:flex;justify-content:center;gap:.75rem;margin-top:1rem}.expand-button,.load-more-button{font-size:.8rem;font-weight:500;padding:.5rem 1rem;border:1px solid var(--border);border-radius:4px;background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .15s}.expand-button:hover,.load-more-button:hover{background:var(--bg-hover);color:var(--text-primary)}.load-more-button:disabled{opacity:.5;cursor:not-allowed}.empty-state,.loading-state{text-align:center;padding:2rem;color:var(--text-muted);font-size:.875rem}.loading-state{display:flex;flex-direction:column;align-items:center;gap:.75rem}.loader{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:var(--bg-secondary);border-radius:4px;width:100%;max-width:800px;max-height:85vh;overflow-y:auto;position:relative}.modal-close{position:absolute;top:.75rem;right:.75rem;width:28px;height:28px;border:none;background:var(--bg-card);color:var(--text-secondary);font-size:1.25rem;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.modal-close:hover{background:var(--bg-hover);color:var(--text-primary)}.modal-header{padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.modal-header h2{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.game-meta{display:flex;gap:1rem;color:var(--text-muted);font-size:.75rem}.modal-body{padding:1rem 1.25rem}.teams-container{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:640px){.teams-container{grid-template-columns:1fr}}.team-section{background:var(--bg-card);border-radius:4px;overflow:hidden}.team-section.winner{border-top:2px solid var(--win)}.team-section.loser{border-top:2px solid var(--border)}.team-section.team-blue.winner{border-top-color:var(--blue-team)}.team-section.team-red.winner{border-top-color:var(--red-team)}.team-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--bg-hover)}.team-header h3{font-size:.8rem;font-weight:600}.team-section.team-blue .team-header h3{color:var(--blue-team)}.team-section.team-red .team-header h3{color:var(--red-team)}.victory-badge,.defeat-badge{font-size:.65rem;padding:.15rem .4rem;border-radius:2px;font-weight:600;text-transform:uppercase}.victory-badge{background:#5383e833;color:var(--win)}.defeat-badge{background:#e8405733;color:var(--loss)}.team-kills{margin-left:auto;font-size:.75rem;color:var(--text-muted)}.team-players{padding:.25rem 0}.player-detail-row{display:grid;grid-template-columns:1fr auto auto;gap:.75rem;align-items:center;padding:.5rem 1rem;transition:background .15s}.player-detail-row:hover{background:var(--bg-hover)}.player-info{display:flex;align-items:center;gap:.5rem;min-width:0}.player-champion{font-size:.7rem;padding:.15rem .4rem;background:var(--bg-primary);border-radius:2px;color:var(--text-muted);white-space:nowrap}.player-detail-row .player-name{font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-stats-detail{display:flex;align-items:center;gap:.75rem}.kda-display{font-size:.8rem;font-weight:500;display:flex;align-items:center;gap:.15rem}.kda-display .kills{color:var(--kills)}.kda-display .deaths{color:var(--deaths)}.kda-display .assists{color:var(--text-primary)}.kda-display .separator{color:var(--text-muted)}.kda-ratio{font-size:.7rem;color:var(--text-muted)}.player-damage{font-size:.7rem;color:var(--text-muted);text-align:right;min-width:70px}.app-footer{text-align:center;padding:1.5rem 1rem;color:var(--text-muted);font-size:.75rem;border-top:1px solid var(--border);margin-top:2rem}@media(max-width:768px){.game-card{flex-direction:column;align-items:flex-start}.game-card-body{width:100%;justify-content:center}.game-card-footer{width:100%;justify-content:center;margin-left:0}.player-detail-row{grid-template-columns:1fr;gap:.25rem;text-align:left}.player-stats-detail{justify-content:flex-start}.player-damage{text-align:left}}.sync-hint{margin-top:.75rem;color:#b4bfd2;font-size:.92rem}
