.contribution-grid{display:flex;flex-direction:column;gap:var(--space-3)}.contribution-grid__tabs{display:flex;flex-wrap:wrap;gap:var(--space-1)}.contribution-grid__tab{background:var(--surface-raised);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);font-size:.8rem;cursor:pointer}.contribution-grid__tab[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:#fff}.contribution-grid__scroll{overflow-x:auto;padding-bottom:var(--space-1);padding-top:var(--space-4)}.contribution-grid__body{display:flex;gap:var(--space-1);width:max-content}.contribution-grid__weekdays{display:grid;grid-template-rows:repeat(7,12px);gap:3px;margin-right:var(--space-1);flex:none}.contribution-grid__weekday-label{font-size:.65rem;color:var(--muted);line-height:12px;height:12px}.contribution-grid__weeks{display:flex;gap:3px}.contribution-grid__week{display:grid;grid-template-rows:repeat(7,12px);gap:3px}.contribution-grid__cell{position:relative;width:12px;height:12px;border-radius:2px;border:none;padding:0;background:var(--ramp-0);cursor:default}.contribution-grid__cell--empty{background:transparent;cursor:default}.contribution-grid__cell--r0{background:var(--ramp-0)}.contribution-grid__cell--r1{background:var(--ramp-1)}.contribution-grid__cell--r2{background:var(--ramp-2)}.contribution-grid__cell--r3{background:var(--ramp-3)}.contribution-grid__cell--r4{background:var(--ramp-4)}.contribution-grid__cell:hover,.contribution-grid__cell:focus-visible{outline:1px solid var(--accent-strong);outline-offset:1px;z-index:2}.contribution-grid__tooltip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--surface-raised);border:1px solid var(--border);color:var(--text);font-size:.7rem;white-space:nowrap;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);box-shadow:0 4px 12px #0006;z-index:3;pointer-events:none}.contribution-grid__cell:hover .contribution-grid__tooltip,.contribution-grid__cell:focus-visible .contribution-grid__tooltip{display:block}.contribution-grid__legend{display:flex;align-items:center;gap:var(--space-1);font-size:.75rem;color:var(--muted)}.contribution-grid__legend-swatches{display:flex;gap:3px}.contribution-grid__legend-swatch{width:10px;height:10px;border-radius:2px}.genre-drift-chart__header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap}.genre-drift-chart__toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0}.genre-drift-chart__toggle button{background:var(--surface);border:none;padding:var(--space-1) var(--space-3);cursor:pointer;font-size:.85rem;color:var(--muted)}.genre-drift-chart__toggle button[aria-pressed=true]{background:var(--accent);color:#fff}.top-artists-chart__header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap}.top-artists-chart__selector{display:flex;align-items:center;gap:var(--space-2);font-size:.85rem;color:var(--muted);flex-shrink:0}.top-artists-chart__selector select{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);font-size:.85rem}.loyalty-bump-chart__chart{width:100%}.loyalty-bump-chart__tooltip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:var(--space-2) var(--space-3);font-size:.8rem;min-width:140px}.loyalty-bump-chart__tooltip-year{font-weight:600;margin-bottom:var(--space-1)}.loyalty-bump-chart__tooltip-row{display:flex;align-items:center;gap:var(--space-1);padding:2px 0}.loyalty-bump-chart__tooltip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.loyalty-bump-chart__tooltip-name{flex:1}.loyalty-bump-chart__tooltip-rank{color:var(--muted);margin-left:var(--space-2)}.played-shelved-chart__header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap}.played-shelved-chart__toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0}.played-shelved-chart__toggle button{background:var(--surface);border:none;padding:var(--space-1) var(--space-3);cursor:pointer;font-size:.85rem;color:var(--muted)}.played-shelved-chart__toggle button[aria-pressed=true]{background:var(--accent);color:#fff}.played-shelved-chart__chart{width:100%}.played-shelved-chart__tooltip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:var(--space-2) var(--space-3);font-size:.8rem;min-width:140px}.played-shelved-chart__tooltip-year{font-weight:600;margin-bottom:var(--space-1)}.played-shelved-chart__tooltip-row{display:flex;align-items:center;gap:var(--space-1);padding:2px 0}.played-shelved-chart__tooltip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.played-shelved-chart__tooltip-name{flex:1}.played-shelved-chart__tooltip-value{color:var(--muted);margin-left:var(--space-2)}:root{--bg: #0e0e11;--surface: #17171c;--surface-raised: #1d1d24;--text: #ececf1;--muted: #8b8b96;--border: #26262e;--accent: #8b5cf6;--accent-strong: #a78bfa;--ramp-0: #1d1b2e;--ramp-1: #382d63;--ramp-2: #5b3fa0;--ramp-3: #7c4fd6;--ramp-4: #8b5cf6;--genre-hiphop: #8b5cf6;--genre-rnb: #ec8fc4;--genre-alt-rock: #f5a35c;--genre-pop: #5cc9f5;--genre-electronic: #6ee7b7;--genre-other: #6b6b76;--radius-sm: 6px;--radius-md: 12px;--space-1: 4px;--space-2: 8px;--space-3: 16px;--space-4: 24px;--space-5: 40px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}a{color:var(--accent-strong)}:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}button,select{font-family:inherit;color:inherit}.app{max-width:1200px;margin:0 auto;padding:var(--space-4) var(--space-3) var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap}.header__titles h1{margin:0 0 var(--space-1);font-size:1.75rem;letter-spacing:-.01em}.header__titles p{margin:0;color:var(--muted);max-width:60ch}.lang-toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.lang-toggle button{background:var(--surface);border:none;padding:var(--space-2) var(--space-3);cursor:pointer;font-size:.85rem}.lang-toggle button[aria-pressed=true]{background:var(--accent);color:#fff}.stat-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-3)}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3)}.stat-tile__value{font-size:1.5rem;font-weight:600}.stat-tile__label{color:var(--muted);font-size:.85rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3)}.card__title{margin:0 0 var(--space-1);font-size:1.05rem}.card__caption{margin:0 0 var(--space-3);color:var(--muted);font-size:.85rem}.grid-row{grid-column:1 / -1}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);color:var(--muted);font-size:.8rem;border-top:1px solid var(--border);padding-top:var(--space-3)}@media (max-width: 800px){.two-col{grid-template-columns:1fr}}
