/* ========== CHARTMETRIC — Artist Intelligence ========== */
.cm-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);margin-bottom:20px}
@media(max-width:768px){.cm-kpi-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.cm-kpi-grid{grid-template-columns:1fr}}
.cm-kpi-card{padding:var(--space-4) var(--space-4);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--divider);text-align:center;transition:box-shadow var(--duration-base) var(--ease)}
.cm-kpi-card:hover{box-shadow:var(--shadow-sm)}
.cm-kpi-label{font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;letter-spacing:0.5px;text-transform:uppercase;color:var(--text-faint);margin-bottom:4px}
.cm-kpi-value{font-family:var(--font-mono);font-size:var(--text-xl);font-weight:700;color:var(--text)}
.cm-kpi-sub{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}
.cm-kpi-card[data-accent]{border-top:2px solid var(--indigo)}

.cm-platform-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-3);margin-bottom:20px}
.cm-platform-card{padding:var(--space-4) var(--space-4);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--divider);border-left:3px solid var(--indigo);transition:box-shadow var(--duration-base) var(--ease)}
.cm-platform-card:hover{box-shadow:var(--shadow-sm)}
/* Platform-specific brand colors removed — the cards sprayed Spotify green, Instagram pink, TikTok teal, YouTube coral, Twitter blue, Deezer orange, etc. which looked "cheap" against the Porsche / old-money palette. All platforms now use --indigo (British Racing Green) for the accent. */
.cm-platform-name{font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:10px}
.cm-platform-value{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:700;color:var(--text)}
.cm-platform-rank{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);margin-top:2px}
/* Multi-metric platform card grid (new) */
.cm-platform-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(85px,1fr));gap:var(--space-3) var(--space-4);margin-bottom:8px}
.cm-platform-metric{min-width:0}
.cm-platform-metric-label{font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;color:var(--text-faint);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-platform-metric-value{font-family:var(--font-mono);font-size:var(--text-md);font-weight:700;color:var(--text);line-height:1.1}
.cm-platform-metric-rank{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);margin-top:1px}
.cm-platform-delta{font-family:var(--font-mono);font-size:var(--text-xs);margin-top:2px}
.cm-platform-delta.up{color:var(--emerald)}
.cm-platform-delta.down{color:var(--coral)}
.cm-sparkline{margin-top:8px}
.cm-sparkline svg{width:100%;height:30px}

.cm-cities-list{display:flex;flex-direction:column;gap:var(--space-2)}
.cm-city-row{display:flex;align-items:center;gap:var(--space-3)}
.cm-city-flag{font-size:var(--text-md);flex-shrink:0;width:24px;text-align:center}
/* Fixed 140px name column (was flex:1) so bars start tight against short city names like "Chicago" instead of floating far to the right. The bar takes all remaining space. */
.cm-city-name{font-family:var(--font-body);font-size:var(--text-base);font-weight:600;color:var(--text);flex:0 0 140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-city-bar{flex:1;height:16px;background:var(--surface-offset);border-radius:var(--radius-sm);overflow:hidden}
.cm-city-bar-fill{height:100%;background:var(--indigo);border-radius:var(--radius-sm);transition:width var(--duration-slow) var(--ease)}
.cm-city-count{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);width:70px;text-align:right;flex-shrink:0}
.cm-cities-expand-btn{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:0.5px;color:var(--indigo);background:none;border:none;padding:var(--space-3) 0 var(--space-1);cursor:pointer;text-align:left;text-transform:uppercase}
.cm-cities-expand-btn:hover{text-decoration:underline}

.cm-tag-pills{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:12px}
.cm-tag-pill{display:inline-block;font-family:var(--font-body);font-size:var(--text-sm);padding:var(--space-1) var(--space-3);border-radius:var(--radius-lg);background:var(--surface-offset);color:var(--text-muted);border:1px solid var(--divider);cursor:pointer;transition:all var(--duration-base) var(--ease)}
a.cm-tag-pill:hover{border-color:var(--indigo);color:var(--indigo);background:var(--indigo-soft)}
.cm-tag-pill.primary{background:var(--indigo-soft);color:var(--indigo);border-color:var(--indigo);font-weight:600}
.cm-tag-pill.mood{background:var(--amber-soft);color:var(--amber);border-color:transparent}
a.cm-tag-pill.mood:hover{background:var(--amber);color:#fff}
.cm-career-badge{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-lg);background:var(--emerald-soft);color:var(--emerald);font-family:var(--font-body);font-size:var(--text-sm);font-weight:600;border:1px solid transparent}

.cm-bio-text{font-family:var(--font-body);font-size:var(--text-base);color:var(--text);line-height:1.6;margin-bottom:14px;white-space:pre-line}
.cm-bio-label{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-muted);font-weight:600}
.cm-bio-meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-3) var(--space-5);padding-top:var(--space-3);border-top:1px solid var(--divider)}
.cm-bio-meta-row{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}
.cm-bio-meta-label{font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;letter-spacing:0.5px;text-transform:uppercase;color:var(--text-faint)}
.cm-bio-meta-value{font-family:var(--font-body);font-size:var(--text-base);color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.cm-loading{padding:var(--space-8);text-align:center;color:var(--text-muted);font-size:var(--text-base);font-family:var(--font-body)}

/* ── CPP Trend Chart ── */
.cm-cpp-card{padding:var(--space-5);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--divider);margin-bottom:20px}
.cm-cpp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.cm-cpp-score{font-family:var(--font-mono);font-size:var(--text-xl);font-weight:700;color:var(--text)}
.cm-cpp-trend{font-family:var(--font-body);font-size:var(--text-base);font-weight:600;display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-lg)}
.cm-cpp-trend.up{color:var(--emerald);background:var(--emerald-soft)}
.cm-cpp-trend.down{color:var(--coral);background:var(--coral-soft)}
.cm-cpp-trend.flat{color:var(--text-muted);background:var(--surface-offset)}
.cm-cpp-chart-wrap{height:200px;position:relative}

/* ── Discography (Tracks) ── */
.cm-track-list{display:flex;flex-direction:column;gap:var(--space-1)}
.cm-track-row{padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--divider);border-radius:var(--radius-sm);display:flex;align-items:center;gap:var(--space-3);transition:background var(--duration-fast) var(--ease);cursor:pointer}
.cm-track-row:hover{background:var(--surface-2)}
.cm-track-name{font-family:var(--font-body);font-size:var(--text-base);font-weight:600;color:var(--text);flex:1}
.cm-track-isrc{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);flex-shrink:0}
.cm-track-expand-btn{font-family:var(--font-body);font-size:var(--text-sm);color:var(--indigo);cursor:pointer;background:none;border:1px solid var(--indigo);border-radius:var(--radius-lg);padding:var(--space-1) var(--space-3);transition:all var(--duration-fast) var(--ease);flex-shrink:0}
.cm-track-expand-btn:hover{background:var(--indigo);color:white}
.cm-track-details{padding:var(--space-3) var(--space-4);background:var(--surface-2);border:1px solid var(--divider);border-top:none;border-radius:0 0 var(--radius-sm) var(--radius-sm);display:none}
.cm-track-details.open{display:block}
.cm-track-meta{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-bottom:8px}
.cm-track-meta-item{font-family:var(--font-body);font-size:var(--text-base);color:var(--text-muted)}
.cm-track-meta-item span{font-family:var(--font-mono);color:var(--text);font-weight:600}

/* ── Albums ── */
.cm-album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-3);margin-bottom:20px}
.cm-album-card{padding:var(--space-4);border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--divider);transition:box-shadow var(--duration-base) var(--ease)}
.cm-album-card:hover{box-shadow:var(--shadow-sm)}
.cm-album-name{font-family:var(--font-body);font-size:var(--text-md);font-weight:700;color:var(--text);margin-bottom:4px}
.cm-album-date{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted)}
.cm-album-type{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-faint);text-transform:uppercase;letter-spacing:0.5px;margin-top:4px}

/* ── Spotify Charts ── */
.cm-charts-controls{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center;margin-bottom:16px}
.cm-charts-toggle{display:flex;border:1px solid var(--divider);border-radius:var(--radius-sm);overflow:hidden}
.cm-charts-toggle button{font-family:var(--font-body);font-size:var(--text-base);padding:var(--space-2) var(--space-4);background:var(--surface);color:var(--text-muted);border:none;cursor:pointer;transition:all var(--duration-fast) var(--ease)}
.cm-charts-toggle button.active{background:var(--indigo);color:white;font-weight:600}
.cm-charts-select{font-family:var(--font-body);font-size:var(--text-base);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--divider);background:var(--surface);color:var(--text);outline:none}
.cm-charts-table{width:100%;border-collapse:collapse}
.cm-charts-table th{font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;color:var(--text-faint);text-transform:uppercase;letter-spacing:0.5px;text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--divider)}
.cm-charts-table td{font-family:var(--font-body);font-size:var(--text-base);color:var(--text);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--divider)}
.cm-charts-table td:first-child{font-family:var(--font-mono);font-weight:700;width:50px}
.cm-charts-table tr.cm-chart-highlight{background:var(--emerald-soft)}
.cm-charts-table td.cm-chart-streams{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);text-align:right}

/* ── Genre Landscape ── */
.cm-genre-pills-wrap{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:16px}
.cm-genre-browse-btn{font-family:var(--font-body);font-size:var(--text-base);color:var(--indigo);background:none;border:1px solid var(--indigo);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-4);cursor:pointer;transition:all var(--duration-fast) var(--ease)}
.cm-genre-browse-btn:hover{background:var(--indigo);color:white}
.cm-genre-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;pointer-events:none;transition:opacity var(--duration-base) var(--ease)}
.cm-genre-modal.open{opacity:1;pointer-events:auto}
.cm-genre-modal-inner{background:var(--surface);border-radius:var(--radius-sm);width:90%;max-width:500px;max-height:70vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}
.cm-genre-modal-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--divider);display:flex;align-items:center;gap:var(--space-3)}
.cm-genre-modal-header input{flex:1;font-family:var(--font-body);font-size:var(--text-base);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--divider);background:var(--surface-2);color:var(--text);outline:none}
.cm-genre-modal-close{background:none;border:none;font-size:var(--text-lg);color:var(--text-muted);cursor:pointer;padding:var(--space-1) var(--space-2)}
.cm-genre-modal-list{flex:1;overflow-y:auto;padding:var(--space-3) var(--space-5)}
.cm-genre-modal-item{font-family:var(--font-body);font-size:var(--text-base);color:var(--text);padding:var(--space-2) 0;border-bottom:1px solid var(--divider)}

/* ── Platform Trend Expand ── */
.cm-platform-card{position:relative}
.cm-platform-trend-btn{font-family:var(--font-body);font-size:var(--text-xs);color:var(--indigo);cursor:pointer;background:none;border:none;padding:var(--space-1) 0;margin-top:4px;text-decoration:underline}
.cm-platform-trend-panel{display:none;margin-top:10px;padding:var(--space-3);background:var(--surface-2);border-radius:var(--radius-sm);border:1px solid var(--divider)}
.cm-platform-trend-panel.open{display:block}
.cm-platform-trend-chart{height:120px;position:relative}

/* ── Wikipedia platform color ── */
/* Per-platform brand colors (Wikipedia grey, Apple red, Genius yellow, Facebook blue, Snap yellow, etc.) removed for visual consistency — all platform cards use --indigo set above. */

/* ── Milestones Timeline ── */
.cm-milestone-list{display:flex;flex-direction:column;gap:0}
.cm-milestone-item{display:flex;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--divider)}
.cm-milestone-item:last-child{border-bottom:none}
.cm-milestone-date{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);flex-shrink:0;width:90px;padding-top:var(--space-1)}
.cm-milestone-body{flex:1}
.cm-milestone-summary{font-family:var(--font-body);font-size:var(--text-base);color:var(--text);line-height:1.5}
.cm-milestone-track{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-faint);margin-top:2px}
.cm-milestone-footer{display:flex;align-items:center;gap:var(--space-2);margin-top:6px}
.cm-milestone-platform{font-family:var(--font-body);font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius);background:var(--surface-offset);color:var(--text-muted);text-transform:uppercase;letter-spacing:0.3px}
.cm-milestone-stars{font-size:var(--text-base);color:var(--amber);letter-spacing:1px}

/* ── Noteworthy Insights (Pass 3 Tier 1) ── */
.cm-noteworthy-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:var(--space-3);margin-bottom:20px}
@media(max-width:640px){.cm-noteworthy-list{grid-template-columns:1fr}}
.cm-noteworthy-card{background:var(--surface);border:1px solid var(--divider);border-radius:var(--radius-sm);padding:var(--space-4) var(--space-5);border-left:3px solid var(--amber);transition:box-shadow var(--duration-base) var(--ease)}
.cm-noteworthy-card:hover{box-shadow:var(--shadow-sm)}
.cm-noteworthy-card.positive{border-left-color:var(--emerald)}
.cm-noteworthy-card.negative{border-left-color:var(--coral)}
.cm-noteworthy-card.neutral{border-left-color:var(--indigo)}
.cm-noteworthy-title{font-family:var(--font-body);font-size:var(--text-base);font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:6px;display:flex;align-items:center;gap:var(--space-2)}
.cm-noteworthy-platform{font-family:var(--font-mono);font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius);background:var(--surface-offset);color:var(--text-faint);letter-spacing:0.5px}
.cm-noteworthy-insight{font-family:var(--font-body);font-size:var(--text-base);color:var(--text);line-height:1.55;margin-bottom:6px}
.cm-noteworthy-date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);margin-top:6px}
.cm-noteworthy-metric{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:700;color:var(--indigo)}

/* ── Similar Artists Carousel (Pass 3 Tier 1) ── */
.cm-similar-carousel{display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-2);scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:var(--divider) transparent}
.cm-similar-carousel::-webkit-scrollbar{height:6px}
.cm-similar-carousel::-webkit-scrollbar-track{background:transparent}
.cm-similar-carousel::-webkit-scrollbar-thumb{background:var(--divider);border-radius:var(--radius-sm)}
.cm-similar-card{flex:0 0 180px;scroll-snap-align:start;background:var(--surface);border:1px solid var(--divider);border-radius:var(--radius-sm);padding:var(--space-4);transition:all var(--duration-base) var(--ease);cursor:pointer;position:relative;overflow:hidden}
.cm-similar-card:hover{box-shadow:var(--shadow-md);border-color:var(--indigo);transform:translateY(-2px)}
.cm-similar-img{width:100%;aspect-ratio:1;border-radius:var(--radius-sm);background:var(--surface-offset) center/cover no-repeat;margin-bottom:10px;overflow:hidden;position:relative}
.cm-similar-img img{width:100%;height:100%;object-fit:cover;display:block}
.cm-similar-img-placeholder{width:100%;height:100%;background:linear-gradient(135deg,var(--indigo-soft),var(--surface-offset));display:flex;align-items:center;justify-content:center;font-family:var(--font-body);font-size:var(--text-xl);font-weight:700;color:var(--indigo)}
.cm-similar-name{font-family:var(--font-body);font-size:var(--text-base);font-weight:700;color:var(--text);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-similar-meta{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}
.cm-similar-stats{display:flex;gap:var(--space-2);align-items:center;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint)}
.cm-similar-stat-followers{font-weight:700;color:var(--indigo)}
.cm-similar-flag{position:absolute;top:10px;right:10px;font-size:var(--text-md);z-index:1;background:rgba(255,255,255,0.9);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-1)}

/* ── Top Tracks on TikTok (Pass 3 Tier 1) ── */
.cm-tt-tracks-list{display:flex;flex-direction:column;gap:0}
.cm-tt-track-row{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--divider)}
.cm-tt-track-row:last-child{border-bottom:none}
.cm-tt-track-row:hover{background:var(--surface-offset)}
.cm-tt-track-rank{font-family:var(--font-mono);font-size:var(--text-md);font-weight:700;color:var(--text-faint);width:32px;text-align:center;flex-shrink:0}
.cm-tt-track-art{width:48px;height:48px;border-radius:var(--radius-sm);background:var(--surface-offset) center/cover no-repeat;flex-shrink:0;overflow:hidden}
.cm-tt-track-art img{width:100%;height:100%;object-fit:cover;display:block}
.cm-tt-track-info{flex:1;min-width:0}
.cm-tt-track-name{font-family:var(--font-body);font-size:var(--text-base);font-weight:700;color:var(--text);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-tt-track-tags{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-tt-track-stats{display:flex;gap:var(--space-5);align-items:center;flex-shrink:0}
.cm-tt-track-stat{text-align:right}
.cm-tt-track-stat-value{font-family:var(--font-mono);font-size:var(--text-base);font-weight:700;color:var(--text)}
.cm-tt-track-stat-label{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-faint);text-transform:uppercase;letter-spacing:0.5px}
.cm-tt-track-link{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--indigo);text-decoration:none;padding:var(--space-1) var(--space-3);border:1px solid var(--indigo);border-radius:var(--radius);transition:all var(--duration-fast) var(--ease);flex-shrink:0}
.cm-tt-track-link:hover{background:var(--indigo);color:white}

/* ── Latest News Grid (Pass 3 Tier 1) ── */
.cm-news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3);margin-bottom:20px}
.cm-news-card{background:var(--surface);border:1px solid var(--divider);border-radius:var(--radius-sm);padding:var(--space-4) var(--space-5);transition:all var(--duration-base) var(--ease);cursor:pointer;text-decoration:none;color:inherit;display:flex;flex-direction:column}
.cm-news-card:hover{box-shadow:var(--shadow-md);border-color:var(--indigo);transform:translateY(-1px)}
.cm-news-source-row{display:flex;align-items:center;gap:var(--space-2);margin-bottom:10px}
.cm-news-source-favicon{width:16px;height:16px;flex-shrink:0}
.cm-news-source-name{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-news-date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint)}
.cm-news-headline{font-family:var(--font-body);font-size:var(--text-md);font-weight:700;color:var(--text);line-height:1.35;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cm-news-excerpt{font-family:var(--font-body);font-size:var(--text-base);color:var(--text-muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1}
.cm-news-empty{grid-column:1/-1;padding:var(--space-8);text-align:center;font-family:var(--font-body);font-size:var(--text-base);color:var(--text-faint);background:var(--surface);border:1px dashed var(--divider);border-radius:var(--radius-sm)}

/* ── Audience Breakdown (Pass 3 Tier 2) ── */
.cm-audience-tabs{display:flex;gap:var(--space-1);margin-bottom:12px;border:1px solid var(--divider);background:var(--surface);border-radius:var(--radius-sm);padding:var(--space-1);width:fit-content}
.cm-audience-tab{font-family:var(--font-body);font-size:var(--text-base);font-weight:600;padding:var(--space-2) var(--space-4);background:none;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration-fast) var(--ease)}
.cm-audience-tab:hover{color:var(--text)}
.cm-audience-tab.active{background:var(--indigo);color:white}
.cm-audience-header{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--divider);margin-bottom:16px}
.cm-audience-stat{display:flex;flex-direction:column;gap:var(--space-1)}
.cm-audience-stat-label{font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;letter-spacing:0.5px;text-transform:uppercase;color:var(--text-faint)}
.cm-audience-stat-value{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:700;color:var(--text);line-height:1.1}
.cm-audience-stat-sub{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted)}
.cm-audience-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:var(--space-5);align-items:start}
@media(max-width:900px){.cm-audience-grid{grid-template-columns:1fr}}
.cm-audience-col-title{font-family:var(--font-body);font-size:var(--text-xs);font-weight:700;letter-spacing:0.8px;text-transform:uppercase;color:var(--text-muted);margin-bottom:10px;padding-bottom:var(--space-2);border-bottom:1px solid var(--divider)}

.cm-audience-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0}
.cm-audience-row-flag{font-size:var(--text-md);width:20px;flex-shrink:0;text-align:center}
.cm-audience-row-name{font-family:var(--font-body);font-size:var(--text-base);color:var(--text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-audience-row-bar{flex:1.5;height:6px;background:var(--surface-offset);border-radius:var(--radius-sm);overflow:hidden}
.cm-audience-row-bar-fill{height:100%;background:var(--indigo);border-radius:var(--radius-sm);transition:width var(--duration-slow) var(--ease)}
.cm-audience-row-pct{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);flex-shrink:0;width:40px;text-align:right}

/* Gender per age breakdown — horizontal stacked bar */
.cm-audience-gender-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:6px}
.cm-audience-gender-age{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);width:40px;flex-shrink:0}
.cm-audience-gender-bars{flex:1;display:flex;height:16px;background:var(--surface-offset);border-radius:var(--radius-sm);overflow:hidden;position:relative}
.cm-audience-gender-male{background:var(--indigo);height:100%}
.cm-audience-gender-female{background:var(--coral);height:100%}
.cm-audience-gender-pct{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);width:60px;flex-shrink:0;text-align:right;display:flex;gap:var(--space-2);justify-content:flex-end}
.cm-audience-gender-legend{display:flex;gap:var(--space-4);justify-content:center;margin-top:10px;font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted)}
.cm-audience-gender-legend-dot{display:inline-block;width:10px;height:10px;border-radius:var(--radius-sm);vertical-align:middle;margin-right:4px}
.cm-audience-empty{padding:var(--space-5);text-align:center;font-family:var(--font-body);font-size:var(--text-base);color:var(--text-faint)}

/* ── Live Events (Pass 3 Tier 2) ── */
.cm-events-tabs{display:flex;gap:var(--space-1);margin-bottom:14px;border:1px solid var(--divider);background:var(--surface-offset);border-radius:var(--radius-sm);padding:var(--space-1);width:fit-content}
.cm-events-tab{font-family:var(--font-body);font-size:var(--text-base);font-weight:600;padding:var(--space-2) var(--space-4);background:none;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration-fast) var(--ease)}
.cm-events-tab:hover{color:var(--text)}
.cm-events-tab.active{background:var(--indigo);color:white}
.cm-events-list{display:flex;flex-direction:column;gap:0}
.cm-event-item{display:flex;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--divider);align-items:flex-start}
.cm-event-item:last-child{border-bottom:none}
.cm-event-date{flex-shrink:0;width:80px;text-align:center;padding-top:var(--space-1)}
.cm-event-date-day{font-family:var(--font-mono);font-size:var(--text-xl);font-weight:700;color:var(--indigo);line-height:1}
.cm-event-date-month{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);letter-spacing:0.5px;text-transform:uppercase;margin-top:2px}
.cm-event-date-year{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);margin-top:1px}
.cm-event-body{flex:1;min-width:0}
.cm-event-name{font-family:var(--font-body);font-size:var(--text-base);font-weight:700;color:var(--text);line-height:1.4}
.cm-event-venue{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-muted);margin-top:2px}
.cm-event-meta{display:flex;align-items:center;gap:var(--space-2);margin-top:6px;flex-wrap:wrap}
.cm-event-type{font-family:var(--font-mono);font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius);background:var(--surface-offset);color:var(--text-muted);text-transform:uppercase;letter-spacing:0.3px}
.cm-event-headliner{font-family:var(--font-mono);font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius);background:var(--amber-soft);color:var(--amber);text-transform:uppercase;letter-spacing:0.3px;font-weight:700}
.cm-event-flag{font-size:var(--text-md)}
.cm-event-empty{padding:var(--space-6);text-align:center;font-family:var(--font-body);font-size:var(--text-base);color:var(--text-faint)}

/* ── Playlists Featuring Artist (Pass 3 Tier 3) ── */
.cm-playlists-list{display:flex;flex-direction:column;gap:0}
.cm-source-badge{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-faint);font-weight:600;letter-spacing:0.3px;padding:var(--space-1) 0}
@media(max-width:900px){.cat-cm-hide-mobile{display:none}}
.cm-playlist-group{margin-bottom:18px}
.cm-playlist-group:last-child{margin-bottom:0}
.cm-playlist-group-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) 0 var(--space-3);border-bottom:1px solid var(--divider);margin-bottom:8px}
.cm-playlist-group-name{font-family:var(--font-body);font-size:var(--text-sm);font-weight:700;letter-spacing:0.8px;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;gap:var(--space-2)}
.cm-playlist-group-dot{width:8px;height:8px;border-radius:var(--radius-full);display:inline-block}
.cm-playlist-group-count{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint)}
.cm-playlist-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid rgba(0,0,0,0.04);cursor:pointer;transition:background var(--duration-fast) var(--ease);border-radius:var(--radius-sm);padding-left:var(--space-2);padding-right:var(--space-2);margin:0 -8px}
.cm-playlist-row:hover{background:var(--surface-offset)}
.cm-playlist-row:last-child{border-bottom:none}
.cm-playlist-name{flex:1;font-family:var(--font-body);font-size:var(--text-base);font-weight:600;color:var(--text);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-playlist-editorial-badge{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;padding:var(--space-1) var(--space-2);border-radius:var(--radius);background:var(--indigo-soft);color:var(--indigo);text-transform:uppercase;letter-spacing:0.3px;flex-shrink:0}
.cm-playlist-followers{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);flex-shrink:0;min-width:70px;text-align:right}
.cm-playlist-added{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);flex-shrink:0;min-width:70px;text-align:right}
.cm-playlist-empty{padding:var(--space-6);text-align:center;font-family:var(--font-body);font-size:var(--text-base);color:var(--text-faint)}

/* ── RIAA Awards (Pass 3 Tier 3) ── */
.cm-riaa-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-3)}
.cm-riaa-badge{background:var(--surface);border:1px solid var(--divider);border-radius:var(--radius-sm);padding:var(--space-4) var(--space-4);display:flex;gap:var(--space-3);align-items:center;border-left:3px solid var(--amber)}
.cm-riaa-badge.gold{border-left-color:var(--amber)}
.cm-riaa-badge.platinum{border-left-color:#9FA1A4}
.cm-riaa-badge.multi-platinum{border-left-color:#6EACDA}
.cm-riaa-badge.diamond{border-left-color:var(--indigo)}
.cm-riaa-icon{font-size:var(--text-xl);flex-shrink:0}
.cm-riaa-body{flex:1;min-width:0}
.cm-riaa-title{font-family:var(--font-body);font-size:var(--text-base);font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-riaa-cert{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;letter-spacing:0.8px;text-transform:uppercase;color:var(--amber);margin-top:2px}
.cm-riaa-cert.gold{color:var(--amber)}
.cm-riaa-cert.platinum{color:var(--text-muted)}
.cm-riaa-cert.multi-platinum{color:#4A88BB}
.cm-riaa-cert.diamond{color:var(--indigo)}
.cm-riaa-date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);margin-top:2px}
.cm-riaa-empty{grid-column:1/-1;padding:var(--space-6);text-align:center;font-family:var(--font-body);font-size:var(--text-base);color:var(--text-faint)}

/* ── Career Progression (Pass 3 Tier 3) ── */
.cm-career-summary{display:flex;gap:var(--space-5);margin-bottom:16px;padding-bottom:var(--space-4);border-bottom:1px solid var(--divider);flex-wrap:wrap}
.cm-career-stat{display:flex;flex-direction:column;gap:var(--space-1)}
.cm-career-stat-label{font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;letter-spacing:0.5px;text-transform:uppercase;color:var(--text-faint)}
.cm-career-stat-value{font-family:var(--font-body);font-size:var(--text-md);font-weight:700;color:var(--text);text-transform:capitalize}
.cm-career-stat-score{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted)}
.cm-career-stat-value.accelerating,.cm-career-stat-value.rising{color:var(--emerald)}
.cm-career-stat-value.declining,.cm-career-stat-value.cooling{color:var(--coral)}
.cm-career-chart-wrap{position:relative;height:180px;width:100%}

/* ── Enhanced City Listener Table ── */
.cm-city-affinity{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);width:50px;text-align:right;flex-shrink:0}
.cm-city-pop{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);width:60px;text-align:right;flex-shrink:0}

/* ── Album Detail Expand ── */
.cm-album-card{cursor:pointer;transition:box-shadow var(--duration-base) var(--ease), border-color var(--duration-base) var(--ease)}
.cm-album-card.expanded{border-color:var(--indigo);box-shadow:var(--shadow-sm)}
.cm-album-detail{display:none;margin-top:12px;padding-top:var(--space-3);border-top:1px solid var(--divider)}
.cm-album-card.expanded .cm-album-detail{display:block}
.cm-album-detail-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:8px}
.cm-album-art{width:60px;height:60px;border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0}
.cm-album-detail-meta{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-muted);line-height:1.6}
.cm-album-detail-meta span{font-family:var(--font-mono);color:var(--text);font-weight:600}
.cm-album-release-badge{font-family:var(--font-body);font-size:var(--text-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius);background:var(--indigo-soft);color:var(--indigo);text-transform:uppercase;letter-spacing:0.3px;font-weight:600;display:inline-block;margin-top:4px}

/* ── Chart Source Selector ── */
.cm-chart-source-toggle{display:flex;border:1px solid var(--divider);border-radius:var(--radius-sm);overflow:hidden;margin-right:auto}
.cm-chart-source-toggle button{font-family:var(--font-body);font-size:var(--text-base);padding:var(--space-2) var(--space-4);background:var(--surface);color:var(--text-muted);border:none;cursor:pointer;transition:all var(--duration-fast) var(--ease)}
.cm-chart-source-toggle button.active{background:var(--indigo);color:white;font-weight:600}

