:root{--bg-color: #1a1a1a;--primary-text-color: #f0f0f0;--secondary-text-color: #a0a0a0;--header-bg-color: #242424;--timeline-bg-color: #1e1e1e;--timeline-header-bg: #2a2a2a;--border-color: #444444;--input-bg-color: #333333;--button-bg-color: #333333;--button-text-color: #f0f0f0;--scrollbar-bg: #2a2a2a;--scrollbar-thumb: #555555;--subtle-bg-color: rgba(255, 255, 255, .05);--hover-bg-color: rgba(255, 255, 255, .1);--honored-player-bg-color: rgba(255, 215, 0, .1);--bar-color: #e11837;--bar-hover-color: #ff3352;--button-active-bg-color: #e11837;--championship-gold: #ffd700;--runner-up-silver: #c0c0c0;--panel-width: 420px}[data-theme=light]{--bg-color: #f4f4f5;--primary-text-color: #18181b;--secondary-text-color: #71717a;--header-bg-color: #ffffff;--timeline-bg-color: #fafafa;--timeline-header-bg: #f4f4f5;--border-color: #e4e4e7;--input-bg-color: #e4e4e7;--button-bg-color: #e4e4e7;--button-text-color: #18181b;--scrollbar-bg: #e4e4e7;--scrollbar-thumb: #a1a1aa;--subtle-bg-color: rgba(0, 0, 0, .04);--hover-bg-color: rgba(0, 0, 0, .08);--honored-player-bg-color: rgba(255, 215, 0, .15)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--bg-color);color:var(--primary-text-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s,color .2s}#root{display:flex;flex-direction:column;min-height:100vh}.app-container{display:flex;flex-direction:column;height:100vh;padding:1rem}.app-header{padding:1rem 1.5rem;background-color:var(--header-bg-color);border-bottom:1px solid var(--border-color);border-radius:8px;margin-bottom:1rem;display:flex;flex-direction:column;gap:1rem}.header-top-row{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:1rem}.app-header h1{margin:0 0 .25rem;font-size:1.75rem;color:var(--primary-text-color)}.app-header p{margin:0;color:var(--secondary-text-color)}.header-actions{display:flex;align-items:center;gap:1rem;flex-shrink:0}.theme-toggle-button{display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border-color);color:var(--secondary-text-color);width:42px;height:42px;border-radius:50%;cursor:pointer;transition:color .2s,background-color .2s,border-color .2s}.theme-toggle-button:hover{color:var(--primary-text-color);background-color:var(--input-bg-color)}.theme-toggle-button svg{width:20px;height:20px}.view-switcher{display:inline-flex;background-color:var(--input-bg-color);border-radius:6px;padding:4px;border:1px solid var(--border-color)}.view-switcher button{padding:.5rem 1rem;border:1px solid transparent;background-color:transparent;color:var(--secondary-text-color);cursor:pointer;border-radius:4px;font-size:.9rem;font-weight:500;transition:background-color .2s,color .2s;white-space:nowrap}.view-switcher button.active{background-color:var(--button-active-bg-color);color:#fff;font-weight:700}.view-switcher button:not(.active):hover{background-color:var(--hover-bg-color);color:var(--primary-text-color)}.controls{display:flex;align-items:center;flex-wrap:wrap;gap:1rem}.controls input[type=search]{padding:.6rem 1rem;border-radius:6px;border:1px solid var(--border-color);background-color:var(--input-bg-color);color:var(--primary-text-color);font-size:1rem;min-width:280px;transition:box-shadow .2s,border-color .2s,background-color .2s,color .2s}.controls input[type=search]:focus{outline:none;border-color:var(--bar-color);box-shadow:0 0 0 2px var(--bar-color)}.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999;color:#fff}.loading-spinner{width:50px;height:50px;border:5px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:var(--bar-color);animation:spin 1s ease-in-out infinite;margin-bottom:1rem}@keyframes spin{to{transform:rotate(360deg)}}.sort-options{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;background-color:var(--input-bg-color);border:1px solid var(--border-color);border-radius:6px;padding:4px;margin-left:auto}.sort-label{font-size:.9rem;color:var(--secondary-text-color);margin-right:.5rem;padding-left:.5rem}.sort-options button{padding:.5rem 1rem;border:1px solid transparent;background-color:transparent;color:var(--button-text-color);cursor:pointer;border-radius:4px;font-size:.9rem;font-weight:500;transition:background-color .2s,color .2s,border-color .2s;display:flex;align-items:center;gap:.3em}.sort-options button.active{background-color:var(--button-active-bg-color);color:#fff}.sort-options button:not(.active):hover{background-color:var(--hover-bg-color)}.clear-all-button{background-color:transparent;color:var(--secondary-text-color);border:1px solid transparent}.clear-all-button:hover{color:#fff;background-color:var(--bar-hover-color);border-color:var(--bar-hover-color)}.timeline-container{flex-grow:1;overflow:auto;background-color:var(--timeline-bg-color);border:1px solid var(--border-color);border-radius:8px;padding:1rem;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-bg)}.main-content:not(.timeline-grid){padding:1rem}.timeline-container::-webkit-scrollbar{width:8px;height:8px}.timeline-container::-webkit-scrollbar-track{background:var(--scrollbar-bg)}.timeline-container::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:4px}.timeline-grid{display:flex;flex-direction:column;min-width:2300px;padding:0 1rem}.timeline-header-row,.player-row{display:grid;grid-template-columns:200px 70px 60px 1fr;align-items:center;gap:0}.timeline-header-row[data-show-rank=true],.player-row[data-show-rank=true]{grid-template-columns:50px 150px 70px 60px 1fr}.timeline-header-row{font-weight:700;padding:.5rem 0;position:sticky;top:-1rem;background-color:var(--timeline-header-bg);z-index:20;margin:0 -1rem;padding:.5rem 1rem}.rank-header,.player-name-header,.games-header,.id-header{font-size:.9rem;color:var(--secondary-text-color);padding:0 .5rem;display:flex;align-items:center;height:100%;gap:.3em}.clickable-header{cursor:pointer;transition:color .2s ease-in-out}.clickable-header:hover{color:var(--primary-text-color)}.rank-header,.player-rank,.player-name-header,.player-name,.games-header,.player-games,.id-header,.player-id{position:sticky;z-index:10;background-color:var(--timeline-header-bg)}.timeline-header-row[data-show-rank=true] .rank-header,.player-row[data-show-rank=true] .player-rank{left:0}.timeline-header-row[data-show-rank=true] .player-name-header,.player-row[data-show-rank=true] .player-name{left:50px}.timeline-header-row[data-show-rank=true] .games-header,.player-row[data-show-rank=true] .player-games{left:200px}.timeline-header-row[data-show-rank=true] .id-header,.player-row[data-show-rank=true] .player-id{left:270px}.timeline-header-row:not([data-show-rank=true]) .player-name-header,.player-row:not([data-show-rank=true]) .player-name{left:0}.timeline-header-row:not([data-show-rank=true]) .games-header,.player-row:not([data-show-rank=true]) .player-games{left:200px}.timeline-header-row:not([data-show-rank=true]) .id-header,.player-row:not([data-show-rank=true]) .player-id{left:270px}.rank-header,.games-header,.id-header{justify-content:center}.sort-icon{font-size:.8em;line-height:1;transition:transform .2s}.sort-options button .sort-icon{font-size:.7em}.years-header{display:grid;text-align:center}.year-label{font-size:.75rem;color:var(--secondary-text-color);position:relative;cursor:pointer;padding:4px 2px;border-radius:4px;transition:background-color .2s,color .2s;border-left:1px solid var(--border-color)}.year-label:hover:not(.active-filter){background-color:var(--hover-bg-color)}.year-label.active-filter,.stats-year.active-filter{background-color:var(--bar-color);color:#fff;font-weight:700}.year-label.active-filter .year-label-text{color:#fff;font-weight:700}.year-label.championship-header{border-bottom:2px solid var(--championship-gold)}.year-label.championship-header .year-label-text{color:var(--championship-gold);font-weight:700}.timeline-body{position:relative;z-index:1}.player-row{border-bottom:1px solid var(--border-color);transition:background-color .2s}.player-row:hover,.player-row:hover .player-rank,.player-row:hover .player-name,.player-row:hover .player-games,.player-row:hover .player-id{background-color:var(--timeline-header-bg)}.player-rank,.player-name,.player-games,.player-id{height:100%;display:flex;align-items:center;padding:.5rem;background:var(--timeline-bg-color);z-index:5;transition:background-color .2s}.player-rank,.player-games,.player-id{justify-content:center;font-weight:400;font-size:.9rem;color:var(--primary-text-color)}.player-name{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;border-radius:4px}.player-name.active,.player-row:hover .player-name.active{background-color:var(--bar-color)!important;color:#fff;font-weight:700}.player-bar-container{display:grid;height:100%}.year-cell{height:22px;margin:3px 0;background-color:transparent;border-radius:2px;transition:background-color .2s;border-left:1px solid var(--border-color);position:relative}.year-cell.active{background-color:var(--bar-color);display:flex;justify-content:center;align-items:center;overflow:hidden}.year-cell.active.championship-season{background-color:var(--championship-gold)}.player-row:hover .year-cell.active{background-color:var(--bar-hover-color)}.player-row:hover .year-cell.active.championship-season{background-color:#e6c300}.season-number{color:#fff;font-size:.7rem;font-weight:500;line-height:1}.year-cell.active.championship-season .season-number{font-size:.9rem;color:#000}.no-results{text-align:center;padding:3rem;color:var(--secondary-text-color)}.no-results p{margin:0}.stats-grid{display:flex;flex-direction:column;min-width:960px}.stats-header-row,.stats-row{display:grid;grid-template-columns:60px minmax(180px,1.5fr) 80px 80px repeat(5,1fr) minmax(200px,2fr)}.stats-header-row{font-weight:700;padding:.5rem 0;position:sticky;top:-1rem;margin:0 -1rem;padding:.5rem 1rem;background-color:var(--timeline-header-bg);z-index:20;border-bottom:1px solid var(--border-color)}.stats-header-row>div{font-size:.9rem;color:var(--secondary-text-color);padding:0 .5rem;display:flex;align-items:center;gap:.3em}.stats-header-row .active-sort-header{background-color:var(--button-active-bg-color);color:#fff;border-radius:4px;font-weight:700}.stats-header-row .active-sort-header:hover{color:#fff}.stats-rank-header{justify-content:center;position:sticky;left:0;background-color:var(--timeline-header-bg);z-index:22}.stats-player-header{position:sticky;left:60px;background-color:var(--timeline-header-bg);z-index:21}.stats-row{border-bottom:1px solid var(--border-color);transition:background-color .2s}.stats-row:hover,.stats-row:hover .stats-rank-cell,.stats-row:hover .stats-player{background-color:var(--timeline-header-bg)}.stats-cell{padding:.6rem .5rem;font-size:.9rem;display:flex;align-items:center;transition:background-color .2s}.stats-rank-cell{justify-content:center;position:sticky;left:0;z-index:6;background-color:var(--timeline-bg-color)}.stats-games-header,.stats-ppg-header,.stats-rpg-header,.stats-apg-header,.stats-bpg-header,.stats-spg-header,.stats-games,.stats-ppg,.stats-rpg,.stats-apg,.stats-bpg,.stats-spg,.stats-year-header,.stats-year{justify-content:center}.stats-player{position:sticky;left:60px;background:var(--timeline-bg-color);z-index:5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-weight:500}.stats-player.active-filter,.stats-row:hover .stats-player.active-filter{background-color:var(--bar-color);color:#fff;font-weight:700}.stats-year{cursor:pointer;border-radius:4px;margin:4px;padding:.2rem .4rem}.stats-awards{white-space:normal;font-size:.85rem;color:var(--secondary-text-color)}.seasons-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.season-card{background-color:var(--header-bg-color);border:1px solid var(--border-color);border-radius:8px;padding:1.25rem;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;position:relative;overflow:hidden}.season-card:hover{transform:translateY(-4px);box-shadow:0 4px 12px #0003;border-color:var(--bar-color)}.season-card.championship{border-left:4px solid var(--championship-gold)}.season-card.championship:before{content:"🏆";position:absolute;top:.75rem;right:1rem;font-size:1.5rem;opacity:.8}.season-card.runner-up{border-left:4px solid var(--runner-up-silver)}.season-card-year{font-size:1.5rem;font-weight:700;margin-bottom:.25rem;color:var(--primary-text-color)}.season-card-record{font-size:1rem;color:var(--secondary-text-color);margin-bottom:1rem}.season-card-finish{font-size:1.1rem;font-weight:500;color:var(--primary-text-color)}.season-card-result{font-size:.9rem;color:var(--secondary-text-color);margin-top:.25rem}.detail-panel-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;z-index:998;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.detail-panel-overlay.visible{opacity:1;visibility:visible}.detail-panel{position:fixed;top:0;right:0;width:var(--panel-width);max-width:90vw;height:100%;background-color:var(--header-bg-color);box-shadow:-5px 0 15px #0000004d;transform:translate(100%);transition:transform .3s ease-in-out,background-color .2s;z-index:999;display:flex;flex-direction:column}.detail-panel.visible{transform:translate(0)}.panel-close-button{background:none;border:none;color:var(--secondary-text-color);font-size:2rem;cursor:pointer;line-height:1;padding:0;transition:color .2s;z-index:10}.panel-close-button:hover{color:var(--primary-text-color)}.detail-panel .panel-header{align-items:flex-start}.panel-header{padding:1.5rem;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;gap:1rem;position:relative}.detail-panel>.panel-header>.panel-close-button{position:absolute;top:1rem;right:1rem}.panel-header-actions{display:flex;align-items:center;gap:.75rem}.panel-header-actions .panel-close-button{position:static}.panel-header h2{margin:0 0 .25rem;color:var(--primary-text-color)}.panel-header p{margin:0;color:var(--secondary-text-color);font-size:.9rem}.player-header-info{flex-grow:1}.player-header-subinfo{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:.5rem}.player-header-subinfo p{margin:0}.panel-content{padding:1.5rem;overflow-y:auto;flex-grow:1}.panel-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;text-align:center;margin-bottom:2rem}.panel-stats span{display:block;font-size:.8rem;color:var(--secondary-text-color);margin-bottom:.25rem}.panel-stats p{margin:0;font-size:1.5rem;font-weight:700;color:var(--primary-text-color)}.panel-content h3{margin-top:0;margin-bottom:1rem}.player-jerseys{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.player-jerseys span{font-size:.9rem;color:var(--secondary-text-color);margin-right:.25rem}.player-jerseys button{background:var(--button-bg-color);color:var(--button-text-color);border:1px solid var(--border-color);border-radius:4px;padding:.2rem .5rem;cursor:pointer;font-weight:700;font-size:.9rem;transition:background-color .2s,color .2s}.player-jerseys button:hover{background:var(--button-active-bg-color);color:#fff;border-color:var(--button-active-bg-color)}.section-divider{margin-top:1.5rem;padding-top:1.5rem;border-top:2px solid var(--bar-color)}.season-details-list{display:grid;grid-template-columns:auto 1fr;gap:.75rem 1.5rem;margin:0;padding:0}.season-details-list dt{font-weight:700;color:var(--secondary-text-color);font-size:.9rem}.season-details-list dd{margin:0;font-size:.9rem}.awards-list{list-style:none;padding:0;margin:0 0 1rem}.awards-list li{padding:.5rem;border-radius:4px;font-size:.9em}.awards-list li:nth-child(odd){background-color:var(--subtle-bg-color)}.year-link{cursor:pointer;text-decoration:none;color:inherit;display:inline-block}.year-link strong{text-decoration:underline;text-underline-offset:2px}.year-link:hover strong{color:var(--bar-color)}.support-staff-list{font-size:.9rem;color:var(--secondary-text-color);line-height:1.5;margin:0}.teammate-disclaimer{font-size:.8rem;font-style:italic;color:var(--secondary-text-color);margin:.5rem 0 1rem;padding:0 .5rem}.teammate-list{list-style:none;padding:0;margin:0}.teammate-list li{display:flex;justify-content:space-between;align-items:center;padding:.75rem .5rem;border-radius:4px;transition:background-color .2s}.teammate-list li:nth-child(odd){background-color:var(--subtle-bg-color)}.teammate-list li:hover{background-color:var(--hover-bg-color)}.teammate-list li.honored-player{background-color:var(--honored-player-bg-color)}.teammate-list li.honored-player .teammate-link{font-weight:700}.teammate-info{flex-grow:1}.teammate-link{color:var(--primary-text-color);text-decoration:underline;background:none;border:none;padding:0;font:inherit;cursor:pointer;display:inline;text-align:left}.teammate-link:hover{color:var(--bar-color);text-decoration:none}.teammate-id{color:var(--secondary-text-color);font-size:.85em;margin-left:.25rem}.teammate-seasons{color:var(--secondary-text-color);white-space:normal;margin-left:1rem;text-align:right;max-width:60%}.season-stats-container{display:flex;flex-direction:column}.season-stats-header,.season-stats-row{display:grid;grid-template-columns:1.5fr 45px repeat(6,1fr);gap:.5rem;text-align:right;padding:.5rem}.season-stats-header{color:var(--secondary-text-color);font-size:.7rem;text-transform:uppercase;font-weight:500;border-bottom:1px solid var(--border-color);margin-bottom:.25rem}.season-stats-row{font-size:.9rem;border-radius:4px;transition:background-color .2s}.season-stats-row:nth-child(odd){background-color:var(--subtle-bg-color)}.season-stats-row:hover{background-color:var(--hover-bg-color)}.season-stats-header .stat-year,.season-stats-row .stat-year{text-align:left;font-weight:700}.season-stats-header div:nth-child(2),.season-stats-row div:nth-child(2){text-align:center}.panel-footer{padding:1rem 1.5rem;margin-top:auto;border-top:1px solid var(--border-color);background-color:var(--header-bg-color);display:flex;justify-content:space-between;align-items:center}.view-stats-button{padding:.6rem 1rem;font-size:.9rem;font-weight:700;color:#fff;background-color:var(--bar-color);border:none;border-radius:6px;cursor:pointer;text-align:center;transition:background-color .2s;white-space:nowrap;flex-shrink:0}.view-stats-button:hover{background-color:var(--bar-hover-color)}.season-nav-button{padding:.6rem 1.2rem;border:1px solid var(--border-color);background-color:var(--button-bg-color);color:var(--button-text-color);cursor:pointer;border-radius:6px;font-size:.9rem;font-weight:500;transition:background-color .2s,color .2s,border-color .2s}.season-nav-button:not(:disabled):hover{background-color:var(--hover-bg-color);border-color:var(--primary-text-color);color:var(--primary-text-color)}.season-nav-button:disabled{opacity:.4;cursor:not-allowed}.jersey-modal-content h3{margin-bottom:1.5rem}.retired-jerseys-container{margin-bottom:1rem}.retired-jerseys-container h3{text-align:center;color:var(--secondary-text-color);font-size:1rem;margin-bottom:1rem}.jersey-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:.75rem}.jersey-number-btn{background-color:var(--button-bg-color);color:var(--button-text-color);border:1px solid var(--border-color);aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700;border-radius:8px;cursor:pointer;transition:background-color .2s,transform .2s,border-color .2s}.retired-jersey-btn{background-color:transparent;border:2px solid var(--bar-color);color:var(--primary-text-color)}.jersey-number-btn:hover,.jersey-number-btn:focus-visible{background-color:var(--button-active-bg-color);color:#fff;transform:translateY(-2px);border-color:var(--button-active-bg-color);outline:none}.retired-jersey-btn:hover,.retired-jersey-btn:focus-visible{border-width:2px}.jersey-number-btn:focus-visible{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--bar-hover-color)}.modal-back-button{background:none;border:none;color:var(--secondary-text-color);cursor:pointer;font-size:.9rem;padding:0 0 1rem;transition:color .2s}.modal-back-button:hover{color:var(--primary-text-color)}.jersey-legend{margin-top:1.5rem;padding-top:1rem;text-align:center;color:var(--secondary-text-color);font-size:.9rem;border-top:1px solid var(--border-color)}.app-footer{padding:1rem 1.5rem;text-align:center;flex-shrink:0}.app-footer p{margin:0;font-size:.9rem;color:var(--secondary-text-color)}@media(max-width:900px){.controls{flex-direction:column;align-items:stretch}.sort-options{margin-left:0;width:100%;justify-content:space-between}}@media(max-width:768px){.app-container{padding:.5rem}.app-header{padding:.75rem}.app-header h1{font-size:1.5rem}.view-switcher button{padding:.5rem .75rem}.timeline-grid{padding:0}.timeline-header-row{top:-.5rem;margin:0;padding:.5rem}.timeline-header-row,.player-row{grid-template-columns:120px 50px 40px 1fr}.timeline-header-row[data-show-rank=true],.player-row[data-show-rank=true]{grid-template-columns:40px 120px 50px 40px 1fr}.player-name{font-size:.8rem}.rank-header,.player-rank,.player-name-header,.player-name,.games-header,.player-games,.id-header,.player-id,.stats-rank-header,.stats-rank-cell,.stats-player-header,.stats-player{position:static!important;left:auto!important}}@media(max-width:600px){.header-top-row{flex-direction:column;align-items:stretch}.view-switcher{flex-wrap:wrap}}
