:root{--bg-primary: #1a1a2e;--bg-secondary: #16213e;--bg-card: #1e2a47;--bg-hover: #253559;--text-primary: #e0e0e0;--text-secondary: #8899aa;--text-muted: #556677;--radiant-color: #92d04e;--radiant-bg: rgba(146, 208, 78, .1);--dire-color: #e05050;--dire-bg: rgba(224, 80, 80, .1);--accent: #5b9bd5;--accent-hover: #4a8cc4;--gold: #daa520;--border: #2a3a5c;--font: "Segoe UI", system-ui, -apple-system, sans-serif;--accent-green: #4ade80;--accent-red: #f87171;--shadow-card: 0 2px 8px rgba(0,0,0,.3)}body.light-theme{--bg-primary: #eef1f6;--bg-secondary: #e0e5ee;--bg-card: #f5f7fa;--bg-tertiary: #e8ecf2;--bg-hover: #dde3ec;--text-primary: #1a202c;--text-secondary: #4a5568;--text-muted: #718096;--radiant-color: #38a169;--radiant-bg: rgba(56, 161, 105, .1);--dire-color: #c53030;--dire-bg: rgba(197, 48, 48, .1);--accent: #3182ce;--accent-hover: #2b6cb0;--gold: #b7791f;--border: #c0c9d8;--accent-green: #38a169;--accent-red: #c53030;--shadow-card: 0 2px 8px rgba(0,0,0,.1)}body.light-theme .season-selector{background:var(--bg-card);color:var(--text-primary);border-color:var(--border)}body.light-theme .steam-login-btn{background:var(--bg-card)!important;border-color:var(--border)!important;color:var(--text-primary)!important}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font);background:var(--bg-primary);color:var(--text-primary);min-height:100vh;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}.navbar{background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:.5rem 1.5rem;display:flex;align-items:center;gap:.75rem;flex-wrap:nowrap;min-height:52px;position:sticky;top:0;z-index:100}.upload-indicator{position:sticky;top:52px;z-index:99;display:flex;align-items:center;gap:.5rem;padding:.5rem 2rem;font-size:.85rem;cursor:pointer;transition:opacity .2s}.upload-indicator:hover{opacity:.85}.upload-indicator.processing{background:#5b9bd526;border-bottom:1px solid rgba(91,155,213,.3);color:var(--accent)}.upload-indicator.success{background:#92d04e26;border-bottom:1px solid rgba(146,208,78,.3);color:var(--radiant-color)}.upload-indicator.error{background:#e0505026;border-bottom:1px solid rgba(224,80,80,.3);color:var(--dire-color)}.indicator-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:currentColor;flex-shrink:0}.indicator-dot.pulsing{animation:pulse 1.5s ease-in-out infinite}.indicator-link{cursor:pointer;flex:1}.indicator-dismiss{background:none;border:none;color:currentColor;font-size:1.2rem;cursor:pointer;opacity:.6;padding:0 .25rem;line-height:1}.indicator-dismiss:hover{opacity:1}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.progress-section{margin-bottom:1.25rem}.progress-bar-container{width:100%;height:8px;background:var(--bg-secondary);border-radius:4px;overflow:hidden;border:1px solid var(--border)}.progress-bar-fill{height:100%;background:var(--accent);border-radius:4px;transition:width .3s ease}.progress-detail{display:flex;justify-content:space-between;align-items:center;margin-top:.4rem;font-size:.8rem;color:var(--text-secondary)}.progress-percent{font-weight:600;color:var(--accent)}.error-details{margin-top:.75rem}.error-details summary{cursor:pointer;font-size:.85rem;opacity:.8}.error-stack{margin-top:.5rem;padding:.75rem;background:#0000004d;border-radius:6px;font-size:.75rem;overflow-x:auto;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto;color:var(--text-secondary)}.nav-brand{font-size:1.1rem;font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:.5rem;flex-shrink:0;white-space:nowrap}.season-selector{background:var(--bg-tertiary, #1e293b);color:var(--text-primary);border:1px solid var(--border);border-radius:6px;padding:.3rem .6rem;font-size:.8rem;cursor:pointer;flex-shrink:0;max-width:160px}.season-selector:focus{outline:none;border-color:var(--accent)}.brand-icon{font-size:1.4rem}.nav-links{display:flex;gap:.15rem;flex-wrap:wrap;flex:1}.nav-link{padding:.45rem .7rem;border-radius:6px;color:var(--text-secondary);font-size:.85rem;font-weight:500;transition:all .15s;white-space:nowrap}.nav-link:hover{color:var(--text-primary);background:var(--bg-hover)}.nav-link.active{color:var(--accent);background:#5b9bd51a}.container{max-width:1200px;margin:0 auto;padding:2rem 1.5rem}.page-title{font-size:1.75rem;font-weight:700;margin-bottom:.5rem}.page-subtitle{color:var(--text-secondary);margin-bottom:1.5rem}.section-title{font-size:1.2rem;font-weight:600;margin:2rem 0 1rem;color:var(--text-secondary)}.loading{text-align:center;padding:4rem;color:var(--text-secondary);font-size:1.1rem}.empty-state,.error-state{text-align:center;padding:4rem 2rem;color:var(--text-secondary);background:var(--bg-card);border-radius:12px;border:1px solid var(--border)}.error-state{color:var(--dire-color)}.back-link{display:inline-block;margin-bottom:1.5rem;color:var(--text-secondary);font-size:.9rem}.back-link:hover{color:var(--text-primary)}.match-list{display:flex;flex-direction:column;gap:.75rem}.match-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem;display:block;color:var(--text-primary);transition:all .15s}.match-card:hover{background:var(--bg-hover);border-color:var(--accent);transform:translateY(-1px)}.match-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.match-id{font-weight:600;font-size:.95rem}.match-date{color:var(--text-secondary);font-size:.85rem}.match-card-body{display:flex;gap:1.5rem;align-items:center;font-size:.9rem}.match-winner{font-weight:600}.match-winner.radiant{color:var(--radiant-color)}.match-winner.dire{color:var(--dire-color)}.match-duration,.match-players{color:var(--text-secondary)}.match-card-footer{display:flex;gap:.75rem;margin-top:.5rem;align-items:center}.parse-badge{font-size:.75rem;background:#5b9bd526;color:var(--accent);padding:.15rem .5rem;border-radius:4px;font-weight:500}.patch-badge{font-size:.75rem;background:#eab30826;color:#eab308;padding:.15rem .5rem;border-radius:4px;font-weight:500}.season-badge{font-size:.75rem;background:#a855f726;color:#a855f7;padding:.15rem .5rem;border-radius:4px;font-weight:500}.lobby-name{font-size:.8rem;color:var(--text-muted)}.match-detail-header{margin-bottom:2rem}.match-detail-header h1{font-size:1.5rem;margin-bottom:.5rem}.match-meta{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;color:var(--text-secondary);font-size:.9rem}.match-result{font-weight:700;font-size:1rem}.match-result.radiant{color:var(--radiant-color)}.match-result.dire{color:var(--dire-color)}.team-section{margin-bottom:1.5rem}.team-header{padding:.75rem 1rem;border-radius:8px 8px 0 0;font-weight:600;font-size:.95rem;display:flex;justify-content:space-between;align-items:center}.team-header.radiant{background:var(--radiant-bg);color:var(--radiant-color);border:1px solid rgba(146,208,78,.2);border-bottom:none}.team-header.dire{background:var(--dire-bg);color:var(--dire-color);border:1px solid rgba(224,80,80,.2);border-bottom:none}.winner-badge{font-size:.75rem;background:#ffffff1a;padding:.2rem .6rem;border-radius:4px}.scoreboard-wrapper{overflow-x:auto;border-radius:0 0 8px 8px;border:1px solid var(--border)}.leaderboard-table .scoreboard-wrapper,section .scoreboard-wrapper{border-radius:8px}.scoreboard{width:100%;border-collapse:collapse;font-size:.88rem}.scoreboard thead{background:var(--bg-secondary)}.scoreboard th{padding:.6rem .75rem;text-align:left;color:var(--text-secondary);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;border-bottom:1px solid var(--border)}.scoreboard td{padding:.6rem .75rem;border-bottom:1px solid rgba(42,58,92,.5);white-space:nowrap}.scoreboard tbody tr:hover{background:var(--bg-hover)}.scoreboard tbody tr:last-child td{border-bottom:none}.col-stat{text-align:center;min-width:48px}th.col-stat{text-align:center}.col-player{min-width:140px}.col-hero{min-width:120px;color:var(--text-secondary)}.col-rank{text-align:center;min-width:40px;font-weight:600}.player-link{color:var(--accent);font-weight:500}.kills{color:var(--radiant-color)}.deaths{color:var(--dire-color)}.gpm{color:var(--gold)}.xpm{color:#9b7dd4}.nw{color:var(--gold)}.mmr{color:var(--accent);font-weight:700}.wins{color:var(--radiant-color)}.losses{color:var(--dire-color)}.items-row{display:flex;gap:2px;align-items:center;flex-wrap:nowrap}.item-icon{width:28px;height:20px;object-fit:cover;border-radius:2px;border:1px solid #333;background:#111}.item-icon.empty{width:28px;height:20px;background:#0a0a1a;border:1px solid #222;border-radius:2px}.player-badges{margin-left:6px;display:inline-flex;gap:3px;align-items:center}.player-badges .badge{font-size:.65rem;padding:1px 3px;border-radius:3px;font-weight:700;line-height:1}.badge.fb{background:#c0392b;color:#fff}.badge.fd{background:#555;color:#ccc}.aghs-indicators{display:inline-flex;gap:2px;margin-left:6px;vertical-align:middle}.aghs-icon{width:22px;height:16px;object-fit:cover;border-radius:2px;transition:opacity .2s}.aghs-icon.active{opacity:1;filter:none;border:1px solid #4fc3f7;box-shadow:0 0 4px #4fc3f780}.aghs-icon.inactive{opacity:.2;filter:grayscale(100%);border:1px solid #333}.expanded-stats-section{margin-top:2rem}.expanded-stats-section h3{margin-bottom:.75rem;color:var(--text-secondary);font-size:1rem;font-weight:600}.scoreboard.compact th,.scoreboard.compact td{padding:.4rem .5rem;font-size:.85rem}.col-items{min-width:180px}.skill-build{display:flex;gap:1px;flex-wrap:wrap}.skill-pip{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-size:.6rem;background:#2a3a5c;border-radius:2px;color:var(--text-secondary)}.rank-1 td:first-child{color:gold}.rank-2 td:first-child{color:silver}.rank-3 td:first-child{color:#cd7f32}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem;margin-bottom:1rem}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:1.25rem;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:96px}.stat-card.sm{padding:.75rem}.stat-value{font-size:1.75rem;font-weight:700;line-height:1.2}.stat-card.sm .stat-value{font-size:1.3rem}.stat-label{font-size:.8rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-top:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-form{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:2rem;max-width:600px}.form-group{margin-bottom:1.25rem}.form-group label{display:block;font-size:.9rem;font-weight:500;margin-bottom:.5rem;color:var(--text-secondary)}.form-input{width:100%;padding:.65rem .85rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);font-size:.95rem;font-family:var(--font);outline:none;transition:border-color .15s}.form-input:focus{border-color:var(--accent)}.drop-zone{border:2px dashed var(--border);border-radius:10px;padding:2rem;text-align:center;cursor:pointer;transition:all .15s;background:var(--bg-secondary)}.drop-zone:hover,.drop-zone.drag-over{border-color:var(--accent);background:#5b9bd50d}.drop-zone.has-file{border-color:var(--radiant-color);border-style:solid}.drop-text{color:var(--text-secondary)}.file-info{display:flex;flex-direction:column;gap:.25rem}.file-name{font-weight:600;color:var(--text-primary)}.file-size{font-size:.85rem;color:var(--text-secondary)}.file-input-hidden{display:none}.btn{padding:.5rem 1rem;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text-primary);font-size:.9rem;font-family:var(--font);cursor:pointer;transition:all .15s}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-sm{padding:.35rem .75rem;font-size:.85rem}.btn-upload{width:100%;padding:.75rem;font-size:1rem}.status-message{margin-top:1.5rem;padding:1rem 1.25rem;border-radius:10px;max-width:600px}.status-message.success{background:var(--radiant-bg);border:1px solid rgba(146,208,78,.3);color:var(--radiant-color)}.status-message.error{background:var(--dire-bg);border:1px solid rgba(224,80,80,.3);color:var(--dire-color)}.status-message.info{background:#5b9bd51a;border:1px solid rgba(91,155,213,.3);color:var(--accent)}.status-hint{font-size:.85rem;color:var(--text-secondary);margin-top:.25rem}.status-message .btn{margin-top:.75rem}.pagination{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:1.5rem}.page-info{color:var(--text-secondary);font-size:.9rem}@media (max-width: 900px){.navbar{flex-wrap:wrap;gap:.5rem;padding:.5rem 1rem}.nav-links{order:3;width:100%;display:flex;flex-wrap:wrap;gap:.25rem .5rem;padding-bottom:.25rem}.nav-link,.nav-brand{font-size:.82rem}}@media (max-width: 768px){.container{padding:1rem .75rem}.stats-grid{grid-template-columns:repeat(2,1fr);gap:.5rem}.match-card-body{flex-wrap:wrap;gap:.5rem}.upload-form{padding:1.25rem}.page-title{font-size:1.4rem}.section-title{font-size:1rem}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.scoreboard{min-width:560px}.leaderboard-table{min-width:480px}.match-card-header{flex-wrap:wrap;gap:.25rem}.stats-grid{grid-template-columns:repeat(2,1fr)}.tabs{gap:.25rem;flex-wrap:wrap}.tab-btn{font-size:.8rem;padding:6px 10px}.hero-icon-sm{width:24px;height:14px}.dropdown-menu{position:fixed;top:auto;left:0;right:0;width:100%;border-radius:0 0 8px 8px;max-height:60vh;overflow-y:auto}.recharts-responsive-container{min-height:160px}.col-hide-mobile{display:none}}@media (max-width: 480px){.stats-grid{grid-template-columns:1fr 1fr}.stat-card{padding:.75rem}.stat-value{font-size:1.5rem}.match-result-badge{font-size:.7rem;padding:2px 6px}.btn{font-size:.8rem;padding:6px 12px}}.stats-download-link{color:var(--accent);text-decoration:underline;cursor:pointer}.upload-queue{margin-top:1.5rem;max-width:600px}.queue-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.queue-header h3{font-size:1rem;font-weight:600}.queue-count.success{color:var(--radiant-color)}.queue-count.error{color:var(--dire-color)}.queue-list{display:flex;flex-direction:column;gap:.5rem}.queue-item{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.75rem 1rem}.queue-item.current{border-color:var(--accent)}.queue-item.success{border-color:#92d04e4d}.queue-item.error{border-color:#e050504d}.queue-item-header{display:flex;align-items:center;gap:.75rem}.queue-file-name{font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue-file-size{color:var(--text-secondary);font-size:.85rem;flex-shrink:0}.queue-status{font-size:.8rem;font-weight:600;padding:2px 8px;border-radius:4px;flex-shrink:0}.queue-status.pending{color:var(--text-muted)}.queue-status.uploading{color:var(--accent)}.queue-status.processing{color:#daa520}.queue-status.complete{color:var(--radiant-color)}.queue-status.error{color:var(--dire-color)}.queue-result{margin-top:.4rem;font-size:.85rem;color:var(--radiant-color)}.queue-error{margin-top:.4rem;font-size:.85rem;color:var(--dire-color)}.progress-section.compact{margin-top:.5rem}.progress-section.compact .progress-bar-container{height:4px}.progress-section.compact .progress-detail{font-size:.8rem;margin-top:.2rem}.position-label.editable{cursor:pointer;padding:2px 6px;border-radius:3px;font-size:.8rem;color:var(--text-secondary);transition:background .15s}.position-label.editable:hover{background:var(--bg-hover);color:var(--text-primary)}.position-select{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--accent);border-radius:3px;padding:2px 4px;font-size:.8rem;cursor:pointer}.backpack-separator{color:var(--text-muted);margin:0 2px;font-size:.7rem}.heatmap-container{overflow:auto;max-width:100%;max-height:85vh;margin-top:1rem;border:1px solid var(--border);border-radius:8px}.heatmap-table{border-collapse:collapse;font-size:.7rem}.heatmap-corner{position:sticky;left:0;top:0;z-index:3;background:var(--bg-secondary);min-width:100px}.heatmap-col-header{position:sticky;top:0;z-index:2;background:var(--bg-secondary);padding:0;height:80px;min-width:36px;max-width:36px;vertical-align:bottom}.heatmap-col-label{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;padding:4px 2px;font-size:.65rem;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;max-height:76px}.heatmap-row-header{position:sticky;left:0;z-index:1;background:var(--bg-secondary);padding:3px 8px;white-space:nowrap;font-size:.7rem;color:var(--text-primary);border-right:1px solid var(--border);min-width:100px;max-width:140px;overflow:hidden;text-overflow:ellipsis}.heatmap-cell{text-align:center;padding:2px;min-width:36px;max-width:36px;height:24px;font-size:.65rem;font-weight:600;border:1px solid rgba(255,255,255,.05);cursor:default;transition:opacity .1s}.heatmap-cell:hover{outline:2px solid #fff;outline-offset:-2px;z-index:1;position:relative}.heatmap-cell.diagonal{background:var(--bg-primary)}.heatmap-cell.empty{background:transparent}.synergy-floating-tooltip{position:fixed;transform:translate(-50%,-100%);background:var(--bg-card);border:1px solid var(--border);padding:.5rem .75rem;border-radius:6px;font-size:.85rem;color:var(--text-primary);pointer-events:none;z-index:1000;white-space:nowrap;box-shadow:0 4px 12px #00000080;line-height:1.4}.heatmap-legend{display:flex;align-items:center;gap:.5rem;margin-top:1rem;justify-content:center}.heatmap-legend .legend-label{font-size:.75rem;color:var(--text-secondary)}.heatmap-legend .legend-bar{display:flex;height:16px;border-radius:3px;overflow:hidden}.heatmap-legend .legend-bar div{width:30px;height:100%}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:9999}.modal-box{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:24px;min-width:320px;max-width:90vw;box-shadow:0 8px 32px #0009}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.modal-title{font-size:1.1rem;font-weight:600;color:var(--text-primary)}.modal-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;padding:2px 6px;border-radius:4px}.modal-close:hover{color:var(--text-primary);background:var(--bg-hover)}.admin-badge{background:#ffc83226;color:#ffc832;border:1px solid rgba(255,200,50,.3)}.admin-badge:hover{background:#ffc83240}.tournament-layout{display:grid;grid-template-columns:minmax(220px,280px) 1fr;gap:24px;margin-top:16px}@media (max-width: 768px){.tournament-layout{grid-template-columns:1fr}}@media (max-width: 600px){.hof-records-grid{grid-template-columns:1fr 1fr!important}.hof-career-table{min-width:520px}.benchmarks-table{min-width:580px}}
