@font-face{font-family:Fraunces;font-weight:600;font-style:normal;src:url(/fonts/fraunces-600.woff2)format("woff2");font-display:swap}@font-face{font-family:Fraunces;font-weight:900;font-style:normal;src:url(/fonts/fraunces-900.woff2)format("woff2");font-display:swap}@font-face{font-family:Fraunces;font-weight:500;font-style:italic;src:url(/fonts/fraunces-500-italic.woff2)format("woff2");font-display:swap}@font-face{font-family:Manrope;font-weight:400;src:url(/fonts/manrope-400.woff2)format("woff2");font-display:swap}@font-face{font-family:Manrope;font-weight:500;src:url(/fonts/manrope-500.woff2)format("woff2");font-display:swap}@font-face{font-family:Manrope;font-weight:600;src:url(/fonts/manrope-600.woff2)format("woff2");font-display:swap}@font-face{font-family:Manrope;font-weight:700;src:url(/fonts/manrope-700.woff2)format("woff2");font-display:swap}@font-face{font-family:Space Mono;font-weight:400;src:url(/fonts/space-mono-400.woff2)format("woff2");font-display:swap}@font-face{font-family:Space Mono;font-weight:700;src:url(/fonts/space-mono-700.woff2)format("woff2");font-display:swap}:root{--color-bg:#16130f;--color-bg-gradient:linear-gradient(135deg, #1d1712 0%, #16130f 65%);--color-surface:#ffffff0a;--color-surface-solid:#1e1914;--color-surface-alt:#ffffff0d;--color-surface-hover:#ffffff12;--color-glass:#ffffff08;--color-glass-border:#ffffff14;--color-text:#f4f1ea;--color-text-secondary:#c9c2b6;--color-text-muted:#9c9282;--color-border:#ffffff14;--color-border-accent:#9c2b2e59;--color-primary:#9c2b2e;--color-primary-hover:#c8464a;--color-primary-glow:#9c2b2e2e;--color-accent:#f59e0b;--color-accent-secondary:#ec4899;--color-success:#22c55e;--color-error:#ef4444;--color-warning:#f59e0b;--gradient-primary:linear-gradient(135deg, #9c2b2e 0%, #c8464a 100%);--gradient-accent:linear-gradient(135deg, #f59e0b 0%, #ef4444 100%);--gradient-subtle:linear-gradient(135deg, #9c2b2e1a 0%, #c8464a0d 100%);--gradient-card:linear-gradient(135deg, #ffffff0d 0%, #ffffff05 100%);--font-family:"Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-display:"Fraunces", Georgia, "Times New Roman", serif;--font-family-mono:"Space Mono", "SF Mono", Consolas, "Courier New", monospace;--font-size-xs:12px;--font-size-sm:14px;--font-size-base:15px;--font-size-lg:16px;--font-size-xl:18px;--font-size-2xl:24px;--font-size-3xl:36px;--font-size-4xl:48px;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:24px;--spacing-2xl:32px;--spacing-3xl:48px;--spacing-4xl:64px;--chart-height:500px;--container-max-width:1280px;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 12px 32px #00000080;--shadow-glow:0 0 30px #9c2b2e1f;--shadow-glow-accent:0 0 30px #c8464a1f;--transition-fast:.15s ease-out;--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:9999px;--blur-sm:8px;--blur-md:16px;--blur-lg:32px;--a11y-scale:1}:root.a11y-large{--a11y-scale:1.25;--font-size-xs:14px;--font-size-sm:16px;--font-size-base:18px;--font-size-lg:20px;--font-size-xl:22px;--font-size-2xl:30px;--font-size-3xl:44px;--font-size-4xl:56px}:root.a11y-contrast{--color-bg:#000;--color-bg-gradient:linear-gradient(135deg, #000 0%, #0a0a0a 50%, #000 100%);--color-surface:#ffffff1a;--color-surface-solid:#1a1a1a;--color-surface-alt:#ffffff1f;--color-surface-hover:#ffffff26;--color-glass:#ffffff0f;--color-glass-border:#ffffff26;--color-text:#fff;--color-text-secondary:#fff;--color-text-muted:#e5ded1;--color-border:#ffffff26;--color-border-accent:#c8464a73;--color-primary:#e0555a;--color-primary-hover:#f47b7f}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}body:before{content:"";background:var(--color-bg-gradient);z-index:-2;position:fixed;inset:0}body:after{content:"";z-index:-1;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");position:fixed;inset:0}#root{width:100%;min-height:100vh}.app{flex-direction:column;width:100%;min-height:100vh;display:flex}h1{font-family:var(--font-family-display);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);margin-bottom:var(--spacing-lg);letter-spacing:-.01em;color:var(--color-text);line-height:1.1}h2{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-md);letter-spacing:-.01em;color:var(--color-text)}h3{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-md)}h4,h5,h6{font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-sm)}p{margin-bottom:var(--spacing-md);color:var(--color-text-secondary);line-height:1.7}a{color:var(--color-primary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary-hover)}button{font-family:inherit;font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);background:var(--gradient-primary);color:#fff;font-weight:var(--font-weight-medium);letter-spacing:.01em;border:none}button:hover:not(:disabled){box-shadow:0 4px 20px var(--color-primary-glow);transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font-family:inherit;font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);transition:all var(--transition-fast);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm))}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-glow);outline:none}input:disabled,select:disabled{background:var(--color-surface);opacity:.5;cursor:not-allowed}.container{max-width:var(--container-max-width);padding:0 var(--spacing-lg);margin:0 auto}.artist-search{min-height:100vh;padding:var(--spacing-3xl) var(--spacing-lg);background:var(--color-bg);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.artist-search:before{content:"";background:radial-gradient(circle, var(--color-primary-glow) 0%, transparent 65%);pointer-events:none;border-radius:50%;width:900px;height:700px;position:absolute;top:-280px;left:50%;transform:translate(-50%)}.search-container{width:100%;max-width:640px;color:var(--color-text);z-index:1;position:relative}.search-eyebrow{font-family:var(--font-family-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--color-primary-hover);text-align:center;margin-bottom:var(--spacing-lg);font-size:12px}.search-eyebrow b{font-weight:700}.search-title{font-family:var(--font-family-display);letter-spacing:-.01em;color:var(--color-text);text-align:center;margin-bottom:var(--spacing-lg);text-wrap:balance;-webkit-text-fill-color:currentColor;background:0 0;font-size:58px;font-weight:900;line-height:.95}.search-subtitle{text-align:center;color:var(--color-text-secondary);font-size:var(--font-size-lg);max-width:44ch;margin:0 auto var(--spacing-2xl);line-height:1.6}.search-form{gap:var(--spacing-md);margin-bottom:var(--spacing-xl);display:flex}.search-input{padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-lg);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);background:#ffffff0d;flex:1}.search-input::placeholder{color:var(--color-text-muted)}.search-button{padding:var(--spacing-md) var(--spacing-2xl);font-size:var(--font-size-lg);white-space:nowrap;border-radius:var(--radius-md)}.disambiguation-modal{-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));z-index:1000;padding:var(--spacing-lg);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.disambiguation-content{background:var(--color-surface-solid);border:1px solid var(--color-glass-border);padding:var(--spacing-2xl);border-radius:var(--radius-xl);width:100%;max-width:500px;max-height:80vh;color:var(--color-text);box-shadow:var(--shadow-lg);overflow-y:auto}.disambiguation-content h2{margin-bottom:var(--spacing-md)}.matches-list{margin:var(--spacing-xl) 0}.match-item{width:100%;padding:var(--spacing-lg);margin-bottom:var(--spacing-md);border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-md);text-align:left;cursor:pointer;transition:all var(--transition-fast);color:var(--color-text)}.match-item:hover{background:var(--color-surface-hover);border-color:var(--color-primary);box-shadow:0 0 20px var(--color-primary-glow)}.match-header{margin-bottom:var(--spacing-sm);justify-content:space-between;align-items:baseline;display:flex}.match-name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-lg)}.match-confidence{font-size:var(--font-size-sm);color:var(--color-success);font-weight:var(--font-weight-semibold)}.match-area{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.match-disambiguation{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--spacing-xs);font-style:italic}.disambiguation-close{width:100%;margin-top:var(--spacing-lg);background:var(--color-surface-alt);color:var(--color-text-secondary)}.loading-progress{min-height:100vh;padding:var(--spacing-lg);background:var(--color-bg);flex-direction:column;justify-content:center;align-items:center;display:flex}.loading-container{text-align:center;width:100%;max-width:500px}.loading-title{margin-bottom:var(--spacing-lg)}.loading-subtitle{color:var(--color-text-secondary);margin-bottom:var(--spacing-2xl)}.progress-section{margin-bottom:var(--spacing-2xl)}.progress-bar{background:var(--color-surface);border-radius:var(--radius-full);width:100%;height:6px;margin-bottom:var(--spacing-md);overflow:hidden}.progress-fill{background:var(--gradient-primary);height:100%;transition:width var(--transition-base);border-radius:var(--radius-full);box-shadow:0 0 12px var(--color-primary-glow)}.progress-text{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text)}.loading-status{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.loading-spinner{justify-content:center;align-items:center;height:100px;display:flex}.spinner{border:3px solid var(--color-surface-alt);border-top-color:var(--color-primary);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dashboard-container{flex-direction:column;flex:1;display:flex}.dashboard-nav{padding:var(--spacing-lg);background:var(--color-surface);border-bottom:1px solid var(--color-border);-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));z-index:100;justify-content:space-between;align-items:center;gap:var(--spacing-lg);flex-wrap:wrap;display:flex;position:sticky;top:0}.nav-brand{white-space:nowrap;align-items:baseline;gap:12px;display:flex}.nav-brand .wordmark{font-family:var(--font-family-mono);letter-spacing:.14em;color:var(--color-text-secondary);font-size:12.5px}.nav-brand .wordmark b{color:var(--color-primary-hover);font-weight:700}.nav-brand .tagline{font-family:var(--font-family-display);color:var(--color-text-muted);font-size:12.5px;font-style:italic;font-weight:500}@media (width<=680px){.nav-brand .tagline{display:none}}.back-button{background:var(--color-surface-alt);color:var(--color-text-secondary);padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-sm);border:1px solid var(--color-border)}.back-button:hover{background:var(--color-surface-hover);color:var(--color-text);border-color:var(--color-primary)}.dashboard{padding:var(--spacing-3xl) var(--spacing-xl);max-width:var(--container-max-width);width:100%;margin:0 auto}.dashboard-header{margin-bottom:var(--spacing-4xl);text-align:left;position:relative}.dashboard-header h1{font-family:var(--font-family-display);letter-spacing:-.01em;margin-bottom:var(--spacing-xl);color:var(--color-text);font-size:64px;font-weight:900;line-height:.92}@keyframes heroFadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.hero-fade-1,.hero-fade-2,.hero-fade-3{animation:.7s cubic-bezier(.2,.8,.2,1) both heroFadeUp}.hero-fade-1{animation-delay:50ms}.hero-fade-2{animation-delay:.18s}.hero-fade-3{animation-delay:.34s}@media (prefers-reduced-motion:reduce){.hero-fade-1,.hero-fade-2,.hero-fade-3{animation:none}}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(16px)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.reveal{transition:none}}.dashboard-stats{gap:var(--spacing-lg);margin-bottom:var(--spacing-2xl);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.stat{background:var(--gradient-card);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));padding:var(--spacing-xl);border-radius:var(--radius-lg);border:1px solid var(--color-glass-border);transition:all var(--transition-base);position:relative;overflow:hidden}.stat:before{content:"";background:var(--gradient-subtle);opacity:0;transition:opacity var(--transition-base);position:absolute;inset:0}.stat:hover:before{opacity:1}.stat:hover{border-color:var(--color-border-accent);box-shadow:var(--shadow-glow);transform:translateY(-2px)}.stat-value{font-family:var(--font-family-mono);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text);font-variant-numeric:tabular-nums;margin-bottom:var(--spacing-xs);position:relative}.stat-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:1px;font-weight:var(--font-weight-medium);position:relative}.dashboard-content{gap:var(--spacing-4xl);flex-direction:column;display:flex}.chart-section-wrapper{gap:var(--spacing-lg);flex-direction:column;display:flex}.narrative{padding:var(--spacing-lg) var(--spacing-xl);background:var(--color-surface);border-left:3px solid var(--color-primary);border-radius:0 var(--radius-md) var(--radius-md) 0;font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.8}.narrative p{margin-bottom:0}.error-banner{-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));z-index:2000;padding:var(--spacing-lg);background:#000000b3;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.error-content{background:var(--color-surface-solid);padding:var(--spacing-2xl);border-radius:var(--radius-xl);text-align:center;max-width:400px;color:var(--color-text);border:1px solid #ef44444d;box-shadow:0 0 40px #ef44441a}.error-content h3{color:var(--color-error)}.error-content p{color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.error-dismiss{background:var(--color-error);width:100%}.error-dismiss:hover{background:#dc2626;box-shadow:0 4px 20px #ef44444d}.unplayed-songs-section{margin-top:var(--spacing-2xl)}.unplayed-songs-panel{background:var(--color-surface);padding:var(--spacing-xl);border-radius:var(--radius-lg);border:1px solid var(--color-border)}.unplayed-title{margin-bottom:var(--spacing-lg)}.unplayed-songs-list{gap:var(--spacing-sm);flex-direction:column;display:flex}.unplayed-song-item{gap:var(--spacing-lg);padding:var(--spacing-md);background:var(--color-surface-alt);border-radius:var(--radius-md);border:1px solid var(--color-border);transition:all var(--transition-fast);align-items:center;display:flex}.unplayed-song-item:hover{border-color:var(--color-border-accent);background:var(--color-surface-hover)}.unplayed-album-art{border-radius:var(--radius-sm);object-fit:cover;width:48px;height:48px}.unplayed-song-info{flex:1;min-width:0}.unplayed-song-name{font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-xs);color:var(--color-text)}.unplayed-album-name{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.unplayed-preview{max-width:200px;height:30px}.unplayed-expand-btn{width:100%;margin-top:var(--spacing-lg);background:var(--color-surface-alt);color:var(--color-text-secondary);border:1px solid var(--color-border)}.unplayed-expand-btn:hover{background:var(--color-surface-hover);color:var(--color-text);border-color:var(--color-primary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-surface-alt);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}::selection{background:var(--color-primary);color:#fff}@media (width<=768px){.dashboard{padding:var(--spacing-lg) var(--spacing-md)}.dashboard-header{margin-bottom:var(--spacing-2xl)}.dashboard-header h1{font-size:var(--font-size-2xl)}.dashboard-stats{gap:var(--spacing-md);grid-template-columns:repeat(2,1fr)}.stat{padding:var(--spacing-md)}.stat-value{font-size:var(--font-size-2xl)}.dashboard-nav{padding:var(--spacing-md)}.dashboard-content{gap:var(--spacing-2xl)}.artist-search{padding:var(--spacing-xl) var(--spacing-md)}.search-container{padding:var(--spacing-xl)}.search-title{font-size:40px}.search-form{flex-direction:column}.narrative{padding:var(--spacing-md);font-size:var(--font-size-sm)}h1{font-size:var(--font-size-2xl)}h2{font-size:var(--font-size-xl)}.chart-section-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<=480px){.dashboard{padding:var(--spacing-md) var(--spacing-sm)}.dashboard-header h1{font-size:var(--font-size-xl)}.dashboard-stats{gap:var(--spacing-sm);grid-template-columns:1fr 1fr}.stat{padding:var(--spacing-sm) var(--spacing-md)}.stat-value{font-size:var(--font-size-xl)}.stat-label{font-size:9px}.back-button{font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-md)}.search-container{padding:var(--spacing-lg) var(--spacing-md);border-radius:var(--radius-lg)}.search-input{font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-md)}.search-button{font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-lg)}.disambiguation-content{padding:var(--spacing-lg);max-height:90vh}.match-item{padding:var(--spacing-md)}.match-name{font-size:var(--font-size-base)}.unplayed-song-item{padding:var(--spacing-sm);flex-wrap:wrap}.unplayed-album-art{width:36px;height:36px}.unplayed-preview{order:2;width:100%}.narrative{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-xs);line-height:1.6}.chart-section-wrapper>div{min-width:0;overflow-x:auto}}.chart-container{gap:var(--spacing-md);flex-direction:column;display:flex}.chart-section{gap:var(--spacing-md);border-top:1px solid var(--color-border);padding-top:var(--spacing-lg);transition:border-color var(--transition-base);flex-direction:column;display:flex}.chart-section:hover{border-color:var(--color-primary)}.chart-header{gap:var(--spacing-sm);flex-direction:column;display:flex}.chart-title{font-family:var(--font-family);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text);letter-spacing:-.005em;margin:0}.chart-description{font-size:var(--font-size-sm);color:var(--color-text-muted);max-width:62ch;margin:0}.chart-wrapper{background:0 0;border:none;border-radius:0;min-height:300px;padding:0;position:relative;overflow:hidden}.chart-loading{height:300px;color:var(--color-text-muted);font-size:var(--font-size-lg);justify-content:center;align-items:center;display:flex}.chart-skeleton{background:linear-gradient(90deg, var(--color-surface) 0%, var(--color-surface-alt) 50%, var(--color-surface) 100%);border-radius:var(--radius-md);background-size:200% 100%;width:100%;height:300px;animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,to{background-position:200% 0}50%{background-position:0 0}}.skeleton-pulse{border-radius:var(--radius-md);width:100%;height:100%}svg{width:100%;height:auto;overflow:visible}svg text{font-family:var(--font-family);font-size:var(--font-size-sm);fill:var(--color-text-secondary)}svg .axis,svg .axis-left,svg .axis-right{font-size:var(--font-size-xs)}.bar{stroke:none;transition:opacity var(--transition-fast)}.bar:hover{filter:brightness(1.15);opacity:1!important}.dot{stroke:none;transition:r var(--transition-fast), opacity var(--transition-fast)}.dot:hover{r:6px}.line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.area{opacity:.6;transition:opacity var(--transition-fast)}.area:hover{opacity:.85}.axis{font-size:var(--font-size-xs)}.axis-label{font-size:var(--font-size-xs);fill:var(--color-text-muted)}.chart-tooltip{padding:var(--spacing-md) var(--spacing-lg);-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));color:var(--color-text);border-radius:var(--radius-md);font-size:var(--font-size-sm);pointer-events:none;z-index:1000;box-shadow:var(--shadow-lg);border:1px solid var(--color-glass-border);white-space:normal;word-wrap:break-word;background:#141420f2;max-width:280px;position:absolute}.chart-tooltip div{margin-bottom:4px;line-height:1.4}.chart-tooltip div:last-child{margin-bottom:0}.chart-tooltip strong{font-weight:var(--font-weight-semibold);color:var(--color-text)}.year-display{fill:var(--color-text)}.play-button{transition:all var(--transition-fast)}.play-button:hover{opacity:.8}.feature-controls{gap:var(--spacing-lg);padding:var(--spacing-lg);background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);flex-wrap:wrap;align-items:center;display:flex}.feature-controls label{font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--color-text-secondary)}.feature-controls select{min-width:150px}@media (width<=768px){.chart-title{font-size:var(--font-size-xl)}svg text{font-size:var(--font-size-xs)}.chart-wrapper{min-height:250px;padding:var(--spacing-md);-webkit-overflow-scrolling:touch;overflow-x:auto}.chart-tooltip{font-size:var(--font-size-xs);padding:var(--spacing-sm);max-width:220px}.chart-legend{gap:var(--spacing-sm);padding:var(--spacing-md);font-size:var(--font-size-xs)}.feature-controls{gap:var(--spacing-sm);padding:var(--spacing-md)}}@media (width<=480px){.chart-wrapper{min-height:180px;padding:var(--spacing-sm);border-radius:var(--radius-md)}.chart-title{font-size:var(--font-size-lg)}.chart-description{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:11px;display:-webkit-box;overflow:hidden}svg text{font-size:11px}.feature-controls{flex-direction:column;align-items:stretch}.feature-controls select{width:100%}.chart-legend{gap:var(--spacing-xs);padding:var(--spacing-sm);font-size:11px}.legend-color{width:10px;height:10px}.chart-tooltip{max-width:180px;font-size:11px}}.charts-grid{gap:var(--spacing-2xl);grid-template-columns:1fr;display:grid}.charts-grid-2col{gap:var(--spacing-2xl);grid-template-columns:repeat(auto-fit,minmax(500px,1fr));display:grid}@media (width<=1024px){.charts-grid-2col{grid-template-columns:1fr}}.chart-legend{gap:var(--spacing-lg);padding:var(--spacing-lg);background:var(--color-surface);border-radius:var(--radius-md);font-size:var(--font-size-sm);border:1px solid var(--color-border);flex-wrap:wrap;display:flex}.legend-item{align-items:center;gap:var(--spacing-sm);display:flex}.legend-color{border-radius:var(--radius-sm);flex-shrink:0;width:14px;height:14px}.axis text,.tick text{font-size:var(--font-size-xs);fill:var(--color-text-muted)}.axis line,.axis path,.tick line{stroke:var(--color-border)}.domain{stroke:var(--color-border)!important}.label{font-size:var(--font-size-xs);pointer-events:none}.zoom-area{cursor:grab}.zoom-area.zoomed{cursor:grabbing}path,rect,circle,line{transition:fill var(--transition-fast), opacity var(--transition-fast)}.song-click-hint{color:var(--color-primary);opacity:.65;align-items:center;gap:5px;margin-top:4px;font-size:11px;animation:3s ease-in-out hintPulse;display:inline-flex}.song-click-hint:before{content:"↗";font-size:13px;font-weight:700}@keyframes hintPulse{0%,to{opacity:.65}50%{opacity:1}}@media print{.chart-wrapper{page-break-inside:avoid;box-shadow:none;border:none}.chart-tooltip{display:none}svg{max-width:100%;height:auto}}
