/* Artist detail page (new layout). Shared components come from albums.css (loaded
   alongside this via pageStyles); only the genuinely new artist-only content types
   live here. Story cards use .artist-storycard (not .artist-card) to avoid colliding
   with the artists-list card in global.css. */

.artist-answer {
	margin: 0 auto 3.5rem; max-width: 1200px; padding: 0 1.5rem;
}
.artist-answer__box {
	position: relative; overflow: hidden; border-radius: 16px; padding: 1.9rem 2.1rem;
	border: 1px solid transparent;
	background:
		linear-gradient(var(--album-surface), var(--album-surface)) padding-box,
		linear-gradient(135deg, rgba(176,123,252,0.5), rgba(86,176,255,0.5)) border-box;
}
.artist-answer__box::before { content:''; position:absolute; inset:0; background: radial-gradient(ellipse 45% 90% at 0% 50%, rgba(176,123,252,0.08), transparent); pointer-events:none; }
.artist-answer__q { position:relative; font-size: clamp(1.2rem,3vw,1.5rem); font-weight: 800; letter-spacing:-0.02em; color: var(--album-text); margin:0 0 0.7rem; line-height:1.25; }
.artist-answer__q i { color: var(--album-cyan); margin-right: 0.55rem; }
.artist-answer__a { position:relative; font-size: 1.04rem; line-height: 1.75; color: var(--album-text); margin:0; }
.artist-answer__a b { color:#fff; }

/* ── Hero fact row (labelled): Active / Origin / Albums / Tracks under the name ── */
.artist-hero-facts { display:flex; flex-wrap:wrap; gap:1.1rem 2.4rem; margin:0.5rem 0 1.15rem; }
.artist-hero-fact { display:flex; flex-direction:column; gap:0.2rem; }
.artist-hero-fact__label { font-size:0.6rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:var(--album-dim); }
.artist-hero-fact__value { font-size:1rem; font-weight:700; color:var(--album-text); }

/* Diamond placed in the middle of the Authorship Breakdown (prototype placement) */
.artist-breakdown { grid-template-columns: 1fr 230px 1fr; }
@media (max-width:860px) { .artist-breakdown { grid-template-columns:1fr; } }

/* ── Unified authorship bar: 3-way split (sole/co/outside) + bracket marking the "any credit" total ── */
.artist-authorship { position:relative; padding-top:46px; margin-top:1.25rem; }
.artist-authorship__bracket { position:absolute; z-index:0; top:22px; left:0; padding:1px 0 8px; background:rgba(61,220,132,0.08); border:2px solid rgba(61,220,132,0.55); border-bottom:none; border-radius:7px 7px 0 0; box-sizing:border-box; display:flex; align-items:center; justify-content:center; }
.artist-authorship__bracket::before { content:''; position:absolute; top:0; left:50%; transform:translateX(-50%) translateY(-100%); width:2px; height:8px; background:rgba(61,220,132,0.55); }
.artist-authorship__bracket-label { position:absolute; left:50%; bottom:calc(100% + 10px); white-space:nowrap; font-size:0.72rem; font-weight:700; font-family:var(--album-font-mono); color:var(--album-high); }
/* Wide bracket (authorship ~50%+): the inline left is computed so the label
   centers in the card here rather than overflowing off the right edge. */
.artist-authorship__bracket-label--card { transform:translateX(-50%); }

/* Top row: Authorship Breakdown (40%) + Role Fingerprint (60%) side by side on XXL, stacked below */
.artist-toprow { display:grid; grid-template-columns:1fr; gap:1rem 2rem; }
.artist-toprow__col { min-width:0; display:flex; flex-direction:column; }
.artist-toprow__col > .album-panel, .artist-toprow__col > .artist-radar-wrap { flex:1; }
@media (min-width:1400px) { .artist-toprow { grid-template-columns:2fr 3fr; align-items:stretch; } }
@media (max-width:600px) { .artist-radar-wrap { grid-template-columns:1fr; } .artist-radar-wrap .artist-radar { width:100%; max-width:260px; margin:0 auto; } }
.artist-authorship__bar { position:relative; z-index:1; display:flex; height:46px; border-radius:8px; overflow:hidden; gap:2px; background:var(--album-surface-2); border:1px solid var(--album-border); }
.artist-authorship__seg { display:flex; align-items:center; justify-content:center; height:100%; min-width:3px; font-family:var(--album-font-mono); font-weight:800; font-size:0.95rem; color:#06140c; }
.artist-authorship__seg--sole { background:linear-gradient(135deg,#3ddc84,#2bb56b); }
.artist-authorship__seg--co { background:linear-gradient(135deg,#ffd23f,#e0a800); }
.artist-authorship__seg--out { background:repeating-linear-gradient(45deg,#2a3647,#2a3647 5px,#222d3c 5px,#222d3c 10px); color:var(--album-dim); }
/* Rare case: a sliver too narrow to legibly hold its own "%" label — hide the
   in-bar number (it only renders clipped and half over a neighbour). The exact
   figure sits right below in the legend rows. */
.artist-authorship__seg--tiny { font-size:0; }
.artist-authorship__bracket-pct { font-size:0.8rem; font-weight:800; font-family:var(--album-font-mono); color:var(--album-high); }
/* Authorship legend: compact rows */
.artist-legend-rows { display:flex; flex-direction:column; margin-top:0.6rem; }
.artist-legend-rows__row { display:grid; grid-template-columns:0.9rem minmax(0,1fr) auto 2.6rem; align-items:center; gap:0.7rem; padding:0.2rem 0.25rem; border-bottom:1px solid var(--album-border); }
.artist-legend-rows__row:last-child { border-bottom:none; }
.artist-legend-rows__row:nth-child(1) { --li-ac:#3ddc84; }
.artist-legend-rows__row:nth-child(2) { --li-ac:#ffd23f; }
.artist-legend-rows__row:nth-child(3) { --li-ac:#7c8ca3; }
.artist-legend-rows__dot { width:9px; height:9px; border-radius:2px; }
.artist-legend-rows__nm { font-size:0.72rem; color:var(--album-dim); }
.artist-legend-rows__ct { font-family:var(--album-font-mono); font-size:0.76rem; color:var(--album-dim); font-weight:700; }
.artist-legend-rows__ct span { color:var(--album-border-lit); font-weight:400; font-size:0.64rem; margin-left:0.2rem; }
.artist-legend-rows__pct { font-family:var(--album-font-mono); font-size:0.78rem; font-weight:800; color:var(--li-ac); text-align:right; }
.album-panel:has(.artist-authorship) .album-panel__title { margin-bottom:0.05rem; }

/* ── Career authorship trajectory ── */
.artist-trajectory-wrap { background: var(--album-surface); border:1px solid var(--album-border); border-radius:14px; padding: 1.75rem 1.75rem 1.25rem; }
.artist-trajectory-lead { font-size:0.86rem; color:var(--album-dim); line-height:1.6; margin:0 0 1.5rem; max-width:760px; }
.artist-trajectory-lead b { color: var(--album-text); }
.artist-trajectory__scroll { overflow-x:auto; overflow-y:hidden; padding-bottom:0.35rem; scrollbar-width:thin; scrollbar-color:var(--album-border-lit) transparent; }
.artist-trajectory__scroll::-webkit-scrollbar { height:7px; }
.artist-trajectory__scroll::-webkit-scrollbar-track { background:transparent; }
.artist-trajectory__scroll::-webkit-scrollbar-thumb { background:var(--album-border-lit); border-radius:99px; }
.artist-trajectory__scroll::-webkit-scrollbar-thumb:hover { background:var(--album-mid); }
/* Columns are FIXED-WIDTH (flex:0 0), never flex-grow and never a %-basis: grow/%-basis
   inside this width:max-content scroll strip triggers a Chromium repaint bug where bars
   scrolled in from off-screen never paint. justify-content:space-evenly distributes the
   min-width:100% free space so short discographies still spread across the full width. */
.artist-trajectory { display:flex; align-items:flex-end; justify-content:space-evenly; gap:0.5rem; height:210px; margin-top:1.85rem; border-bottom:1px solid var(--album-border); position:relative; width:max-content; min-width:100%; }
.artist-trajectory__avg { position:absolute; left:0; right:0; border-top:1px dashed rgba(255,210,63,0.5); pointer-events:none; }
.artist-trajectory__avg span { position:absolute; left:0; top:-0.82rem; z-index:5; white-space:nowrap; font-size:0.62rem; font-weight:700; font-family:var(--album-font-mono); color:var(--album-mid); background:var(--album-surface-2); border:1px solid rgba(255,210,63,0.4); padding:0.08rem 0.45rem; border-radius:4px; }
.artist-trajectory__col { flex:0 0 56px; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; min-width:0; }
/* Entrance: bars rise + values fade in, staggered per column via --d. Gated behind the
   .artist-trajectory--in class (added by artist-page.js when the strip scrolls into view)
   so a below-the-fold trajectory animates when you reach it, not silently on page load.
   Bars are fully visible without the class, so if JS never runs they still render. */
@keyframes trajRise { from { transform:scaleY(0); } to { transform:scaleY(1); } }
@keyframes trajFade { from { opacity:0; } to { opacity:1; } }
.artist-trajectory__val { font-size:0.66rem; font-family:var(--album-font-mono); font-weight:700; margin-bottom:0.3rem; }
.artist-trajectory__bar { width:100%; max-width:40px; min-height:3px; border-radius:5px 5px 0 0; position:relative; transform-origin:bottom; transition:filter 0.15s; }
.artist-trajectory--in .artist-trajectory__val { animation:trajFade 0.4s ease both; animation-delay:var(--d,0ms); }
.artist-trajectory--in .artist-trajectory__bar { animation:trajRise 0.7s cubic-bezier(0.22,1,0.36,1) both; animation-delay:var(--d,0ms); }
.artist-trajectory__bar:hover { filter:brightness(1.25); }
.artist-trajectory__bar--high { background:linear-gradient(180deg,var(--album-high),#2bb56b); box-shadow:0 0 14px rgba(61,220,132,0.3); }
.artist-trajectory__bar--mid  { background:linear-gradient(180deg,var(--album-mid),#e0a800);  box-shadow:0 0 14px rgba(255,210,63,0.3); }
.artist-trajectory__bar--low  { background:linear-gradient(180deg,var(--album-low),#d64d4d);  box-shadow:0 0 14px rgba(255,107,107,0.3); }
.artist-trajectory__bar--none { background:repeating-linear-gradient(45deg,#2a3647,#2a3647 4px,#222d3c 4px,#222d3c 8px); }
.artist-trajectory__lbls { display:flex; justify-content:space-evenly; gap:0.5rem; margin-top:0.5rem; width:max-content; min-width:100%; }
.artist-trajectory__lbl { flex:0 0 56px; text-align:center; min-width:0; }
.artist-trajectory__yr { font-size:0.6rem; font-family:var(--album-font-mono); color:var(--album-dim); }
.artist-trajectory__nm { font-size:0.58rem; color:var(--album-border-lit); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:block; }

/* ── Member Credit Breakdown (per-member share of tracks, by role) ── */
.member-cred__lead { font-size:0.86rem; color:var(--album-dim); line-height:1.6; margin:0 0 1.25rem; max-width:820px; }
.member-cred__wrap { overflow-x:auto; border:1px solid var(--album-border); border-radius:14px; background:var(--album-surface); }
.member-cred { width:100%; border-collapse:collapse; min-width:760px; }
.member-cred thead th { text-align:left; font-size:0.66rem; letter-spacing:0.09em; text-transform:uppercase; font-weight:700; color:var(--album-dim); padding:0.9rem 1.25rem; background:var(--album-surface-2); border-bottom:1px solid var(--album-border); }
.member-cred tbody td { padding:1rem 1.25rem; border-bottom:1px solid var(--album-border); vertical-align:middle; }
.member-cred tbody tr:last-child td { border-bottom:none; }
.member-cred tbody tr:hover td { background:rgba(255,255,255,0.02); }
.member-cred__name { font-weight:700; color:var(--album-text); white-space:nowrap; }
.member-cred__period { font-family:var(--album-font-mono); font-size:0.8rem; color:var(--album-dim); white-space:nowrap; }
/* Former / deceased members are de-emphasised with a uniform fade so the
   current line-up reads as primary. */
.member-cred--former td { opacity:0.4; }
.member-cred--former .member-cred__fill { box-shadow:none; }
.member-cred__tag { display:inline-flex; align-items:center; justify-content:center; font-size:0.58rem; font-weight:700; text-transform:uppercase; letter-spacing:0.05em; color:var(--album-dim); background:var(--album-surface-2); border:1px solid var(--album-border); border-radius:999px; padding:0.16rem 0.5rem 0.08rem; vertical-align:middle; }
.member-cred__tag--died { color:var(--album-low); border-color:rgba(255,107,107,0.4); }
.member-cred__cell { display:flex; flex-direction:column; gap:0.4rem; min-width:96px; }
.member-cred__pct { font-family:var(--album-font-mono); font-weight:700; font-size:0.8rem; color:var(--album-text); }
.member-cred__bar { height:7px; border-radius:4px; background:var(--album-surface-2); overflow:hidden; }
.member-cred__fill { height:100%; border-radius:4px; transition:width 0.7s cubic-bezier(0.22,1,0.36,1); }
.member-cred__fill--high { background:linear-gradient(90deg,#2bb56b,#3ddc84); box-shadow:0 0 6px rgba(61,220,132,0.3); }
.member-cred__fill--mid { background:linear-gradient(90deg,#e0a800,#ffd23f); box-shadow:0 0 6px rgba(255,210,63,0.3); }
.member-cred__fill--low { background:linear-gradient(90deg,#d64d4d,#ff6b6b); box-shadow:0 0 6px rgba(255,107,107,0.3); }
/* Career eras strip: width scales with track count, colour with authorship level */
.artist-eras { display:flex; gap:0.5rem; margin-top:0.85rem; }
.artist-era { font-size:0.62rem; font-weight:700; letter-spacing:0.05em; text-transform:uppercase; padding:0.35rem 0.6rem; border-radius:5px; text-align:center; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; border:1px solid; }
.artist-era--high { background:rgba(61,220,132,0.07); border-color:rgba(61,220,132,0.28); color:var(--album-high); }
.artist-era--mid  { background:rgba(255,210,63,0.07); border-color:rgba(255,210,63,0.28); color:var(--album-mid); }
.artist-era--low  { background:rgba(255,107,107,0.08); border-color:rgba(255,107,107,0.25); color:var(--album-low); }
.artist-era--none { background:rgba(124,140,163,0.08); border-color:rgba(124,140,163,0.25); color:var(--album-border-lit); }

/* ── Who really wrote the hits ── */
.artist-hits { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0.6rem; }
@media (max-width:900px) { .artist-hits { grid-template-columns:1fr; } }
.artist-hit { display:grid; grid-template-columns: minmax(190px, 250px) minmax(0, 1fr) auto; gap:1.5rem; align-items:center; padding:0.9rem 1.2rem; border-radius:10px; background:var(--album-surface); border:1px solid var(--album-border); border-left:3px solid var(--album-border-lit); }
.artist-hit--self { border-left-color: var(--album-high); }
.artist-hit--co   { border-left-color: var(--album-mid); }
.artist-hit--out  { border-left-color: var(--album-low); }
.artist-hit__song { font-weight:700; color:var(--album-text); font-size:0.95rem; }
.artist-hit__album { font-size:0.74rem; color:var(--album-dim); margin-top:0.15rem; }
.artist-hit__writers { font-size:0.84rem; color:var(--album-dim); text-align:left; }
.artist-hit__writers b { color:var(--album-text); font-weight:600; }
/* padding biased down (0.33/0.23, same total) to optically centre the ALL-CAPS text,
   which otherwise rides high because caps leave the descender space below them empty. */
.artist-hit__verdict { display:inline-flex; align-items:center; justify-content:center; font-size:0.66rem; font-weight:800; letter-spacing:0.04em; text-transform:uppercase; padding:0.33rem 0.7rem 0.23rem; border-radius:20px; white-space:nowrap; text-align:center; }
.artist-hit__verdict--self { background:rgba(61,220,132,0.12); border:1px solid rgba(61,220,132,0.4); color:var(--album-high); }
.artist-hit__verdict--co   { background:rgba(255,210,63,0.12); border:1px solid rgba(255,210,63,0.4); color:var(--album-mid); }
.artist-hit__verdict--out  { background:rgba(255,107,107,0.12); border:1px solid rgba(255,107,107,0.4); color:var(--album-low); }
@media (max-width:700px) { .artist-hit { grid-template-columns:1fr auto; } .artist-hit__writers { grid-column:1 / -1; } }

/* ── Discography with cover art ── */
.artist-discography { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:0.85rem; }
.artist-album { display:flex; gap:0.9rem; background:var(--album-surface); border:1px solid var(--album-border); border-radius:11px; padding:0.85rem; transition:border-color 0.2s,box-shadow 0.2s,transform 0.2s; }
.artist-album:hover { border-color:rgba(176,123,252,0.4); box-shadow:0 6px 22px rgba(176,123,252,0.12); transform:translateY(-2px); }
.artist-album__cover { width:64px; height:64px; border-radius:8px; flex-shrink:0; object-fit:cover; background:var(--album-surface-2); border:1px solid var(--album-border); }
.artist-album__cover--ph { display:flex; align-items:center; justify-content:center; color:var(--album-border-lit); font-size:1.4rem; }
.artist-album__body { min-width:0; flex:1; display:flex; flex-direction:column; }
.artist-album__top { display:flex; justify-content:space-between; align-items:center; gap:0.5rem; }
.artist-album__year { font-size:0.7rem; font-family:var(--album-font-mono); color:var(--album-dim); }
.artist-album__title { font-size:0.92rem; font-weight:700; color:var(--album-text); margin:0.15rem 0 0; line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.artist-album__label { font-size:0.74rem; color:var(--album-dim); margin:0.1rem 0 0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.artist-album__foot { margin-top:auto; padding-top:0.45rem; font-size:0.68rem; font-family:var(--album-font-mono); color:var(--album-dim); }

/* ── Shared filter pills (discography + hits toggle) ── */
.artist-filters { display:flex; flex-wrap:wrap; gap:0.5rem; margin-bottom:1.3rem; }
.artist-filter { display:inline-flex; align-items:center; justify-content:center; padding:0.32rem 0.9rem; border-radius:20px; font-size:0.78rem; font-weight:600; cursor:pointer; border:1px solid var(--album-border); background:transparent; color:var(--album-dim); transition:all 0.15s; font-family:inherit; }
.artist-filter:hover { border-color:rgba(176,123,252,0.4); color:var(--album-purple); }
.artist-filter--on { background:rgba(176,123,252,0.12); border-color:rgba(176,123,252,0.45); color:var(--album-purple); box-shadow:0 0 8px rgba(176,123,252,0.15); }
.artist-hidden { display:none !important; }
.artist-empty { margin:0.2rem 0 0; padding:1.6rem; text-align:center; color:var(--album-dim); font-size:0.9rem; border:1px dashed var(--album-border); border-radius:10px; background:var(--album-surface); }
.artist-empty[hidden] { display:none; }

/* ── Role fingerprint (radar) ── */
.artist-radar-wrap { display:grid; grid-template-columns:280px 1fr; gap:2rem; align-items:center; background:var(--album-surface); border:1px solid var(--album-border); border-radius:14px; padding:1.75rem 2rem; }
.artist-radar { width:280px; height:280px; overflow:visible; position:relative; z-index:1; }
.artist-radar__poly { fill:rgba(176,123,252,0.2); stroke:var(--album-purple); stroke-width:2; filter:drop-shadow(0 0 8px rgba(176,123,252,0.4)); transform-box:fill-box; transform-origin:center; transition:transform 0.9s cubic-bezier(0.34,1.4,0.5,1), opacity 0.6s; }
.artist-radar__grid { fill:none; stroke:var(--album-border); stroke-width:1; }
.artist-radar__axis { stroke:var(--album-border); stroke-width:1; }
.artist-radar__dot { fill:#fff; stroke:var(--album-purple); stroke-width:2; }
.artist-radar__lbl { fill:var(--album-text); font-size:8px; font-weight:700; font-family:inherit; text-transform:uppercase; }
.artist-radar__num { fill:var(--album-purple); font-size:9px; font-weight:700; font-family:var(--album-font-mono); }

/* ── Authorship Story: unified card family in a 66/33 + 33/66 grid ── */
.artist-story { display:flex; flex-direction:column; gap:1.5rem; }
.artist-story__row { display:grid; gap:1.5rem; align-items:stretch; }
.artist-story__row--a { grid-template-columns:2fr 1fr; }
.artist-story__row--b { grid-template-columns:1fr 2fr; }
@media (max-width:860px) { .artist-story__row { grid-template-columns:1fr; } }

.artist-storycard { display:flex; flex-direction:column; min-width:0; background:var(--album-surface); border:1px solid var(--album-border); border-left:3px solid var(--accent,var(--album-purple)); border-radius:12px; padding:1.4rem 1.6rem; }
.artist-storycard__label { display:flex; align-items:center; gap:0.55rem; font-size:0.7rem; font-weight:700; text-transform:uppercase; letter-spacing:0.1em; color:var(--accent,var(--album-purple)); margin:0 0 0.95rem; }
.artist-storycard__label i { font-size:0.85rem; }
.artist-storycard__text { font-size:0.95rem; line-height:1.7; color:var(--album-dim); margin:0; }
.artist-storycard__text b { color:var(--album-text); }
.artist-storycard--insight { --accent:var(--album-mid); }
.artist-storycard--facts { --accent:var(--album-cyan); }
.artist-storycard--fingerprint { --accent:var(--album-purple); justify-content:center; }
.artist-storycard--story { --accent:var(--album-blue); }

.artist-facts__list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:0.85rem; }
.artist-facts__row { display:flex; flex-direction:column; gap:0.18rem; min-width:0; }
.artist-facts__k { font-size:0.64rem; text-transform:uppercase; letter-spacing:0.06em; color:var(--album-dim); }
.artist-facts__v { font-size:0.92rem; color:var(--album-text); font-weight:600; line-height:1.35; }
.artist-facts__v b { color:var(--album-cyan); font-family:var(--album-font-mono); font-weight:700; }

/* ── Decade heat-strip ── */
.artist-heat { display:flex; gap:0.5rem; flex-wrap:wrap; }
.artist-heat__cell { flex:1; min-width:110px; border-radius:11px; padding:1.2rem 0.75rem; text-align:center; border:1px solid var(--album-border); transition:transform 0.2s; }
.artist-heat__cell:hover { transform:translateY(-3px); }
.artist-heat__cell--high { background:rgba(61,220,132,0.1); border-color:rgba(61,220,132,0.35); }
.artist-heat__cell--mid  { background:rgba(255,210,63,0.1); border-color:rgba(255,210,63,0.35); }
.artist-heat__cell--low  { background:rgba(255,107,107,0.1); border-color:rgba(255,107,107,0.35); }
.artist-heat__cell--none { background:rgba(124,140,163,0.08); border-color:rgba(124,140,163,0.28); }
.artist-heat__pct { font-size:1.7rem; font-weight:900; letter-spacing:-0.03em; line-height:1; }
.artist-heat__cell--high .artist-heat__pct { color:var(--album-high); }
.artist-heat__cell--mid .artist-heat__pct { color:var(--album-mid); }
.artist-heat__cell--low .artist-heat__pct { color:var(--album-low); }
.artist-heat__cell--none .artist-heat__pct { color:var(--album-border-lit); }
.artist-heat__dec { font-size:0.82rem; font-weight:700; color:var(--album-text); margin-top:0.4rem; }
.artist-heat__sub { font-size:0.66rem; color:var(--album-dim); margin-top:0.15rem; }

/* ── Collaborator network ── */
.artist-network { position:relative; height:380px; margin-top:0.5rem; background:radial-gradient(ellipse 60% 60% at center, rgba(176,123,252,0.06), transparent 70%); }
.artist-network__lines { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.artist-network__node, .artist-network__sat { position:absolute; transform:translate(-50%,-50%); display:flex; flex-direction:column; align-items:center; justify-content:center; border-radius:50%; text-align:center; text-decoration:none; }
.artist-network__node { width:104px; height:104px; background:var(--album-aurora); color:#06121a; box-shadow:0 0 34px rgba(176,123,252,0.5); z-index:3; }
.artist-network__node b { font-size:0.82rem; line-height:1.05; }
.artist-network__node span { font-size:0.58rem; font-family:var(--album-font-mono); opacity:0.8; }
.artist-network__sat { background:var(--album-surface-2); border:1px solid var(--album-border-lit); color:var(--album-text); z-index:2; transition:transform 0.25s cubic-bezier(0.34,1.4,0.5,1), box-shadow 0.2s, border-color 0.2s; }
.artist-network__sat:hover { transform:translate(-50%,-50%) scale(1.1); box-shadow:0 0 24px rgba(86,176,255,0.4); border-color:var(--album-blue); z-index:4; }
.artist-network__sat b { font-size:0.82rem; line-height:1; }
.artist-network__sat span { font-size:0.58rem; font-family:var(--album-font-mono); color:var(--album-cyan); margin-top:2px; }
.artist-network__cap { text-align:center; font-size:0.76rem; color:var(--album-dim); margin-top:0.75rem; }

/* ── Authorship spectrum ── */
.artist-spectrum { background:var(--album-surface); border:1px solid var(--album-border); border-radius:14px; padding:2.75rem 2.25rem 1.6rem; }
.artist-spectrum__head { display:flex; gap:2.5rem; align-items:flex-start; justify-content:space-between; margin-bottom:7.5rem; }
.artist-spectrum__lead { font-size:0.86rem; color:var(--album-dim); line-height:1.6; margin:0; max-width:760px; }
.artist-spectrum__key { flex-shrink:0; width:250px; border:1px solid var(--album-border); border-radius:10px; padding:0.9rem 1.05rem; background:var(--album-surface-2); }
.artist-spectrum__key-row { display:flex; align-items:center; gap:0.6rem; font-size:0.78rem; color:var(--album-text); margin-bottom:0.55rem; }
.artist-spectrum__key-pin { width:12px; height:12px; border-radius:50%; background:#fff; border:2px solid var(--album-mid); box-shadow:0 0 8px rgba(255,210,63,0.7); flex-shrink:0; }
.artist-spectrum__key-dot { width:10px; height:10px; border-radius:50%; background:#cdd9e5; flex-shrink:0; margin:1px; }
.artist-spectrum__key-note { font-size:0.68rem; color:var(--album-border-lit); margin:0.35rem 0 0; line-height:1.45; }
@media (max-width:860px) { .artist-spectrum__head { flex-direction:column; gap:1.25rem; margin-bottom:6rem; } .artist-spectrum__key { width:100%; } }
.artist-spectrum__lead b { color:var(--album-text); }
.artist-spectrum__track { position:relative; height:12px; border-radius:6px; background:linear-gradient(90deg,#ff6b6b 0%,#ffd23f 50%,#3ddc84 100%); box-shadow:inset 0 0 0 1px rgba(0,0,0,0.2); }
/* reference artists: a dot on the track, a stem rising (or dropping) to a tiered label */
.artist-spectrum__mark { position:absolute; top:50%; width:0; height:0; z-index:2; }
.artist-spectrum__mark-dot { position:absolute; left:0; top:0; transform:translate(-50%,-50%); width:10px; height:10px; border-radius:50%; background:#cdd9e5; border:2px solid var(--album-surface); }
.artist-spectrum__mark-stem { position:absolute; left:0; bottom:0; transform:translateX(-50%); width:1.5px; height:var(--stem,16px); background:rgba(205,217,229,0.32); }
.artist-spectrum__mark-lbl { position:absolute; left:0; bottom:calc(var(--stem,16px) + 4px); transform:translateX(-50%); white-space:nowrap; text-align:center; font-size:0.6rem; color:var(--album-dim); line-height:1.25; }
.artist-spectrum__mark-lbl b { display:block; font-family:var(--album-font-mono); font-weight:800; font-size:0.64rem; color:#cdd9e5; }
.artist-spectrum__mark--l .artist-spectrum__mark-lbl { transform:translateX(-4px); text-align:left; }
.artist-spectrum__mark--r .artist-spectrum__mark-lbl { transform:translateX(calc(-100% + 4px)); text-align:right; }
.artist-spectrum__mark--t0 { --stem:16px; }
.artist-spectrum__mark--t1 { --stem:42px; }
.artist-spectrum__mark--t2 { --stem:66px; }
.artist-spectrum__mark--t3 { --stem:90px; }
.artist-spectrum__mark--down .artist-spectrum__mark-stem { bottom:auto; top:0; }
.artist-spectrum__mark--down .artist-spectrum__mark-lbl { bottom:auto; top:calc(var(--stem,16px) + 4px); }
a.artist-spectrum__mark-lbl { text-decoration:none; transition:color 0.15s; }
a.artist-spectrum__mark-lbl:hover { color:var(--album-text); }
a.artist-spectrum__mark-lbl:hover b { color:var(--album-purple); }
.artist-spectrum__pin { position:absolute; top:50%; transform:translate(-50%,-50%); transition:left 1s cubic-bezier(0.22,1,0.36,1); z-index:2; }
.artist-spectrum__dot { width:18px; height:18px; border-radius:50%; background:#fff; border:3px solid var(--album-mid); box-shadow:0 0 16px rgba(255,210,63,0.85); }
.artist-spectrum__bubble { position:absolute; bottom:calc(100% + 11px); left:50%; transform:translateX(-50%); background:var(--album-surface-2); border:1px solid var(--album-mid); color:var(--album-mid); font-family:var(--album-font-mono); font-weight:800; font-size:0.9rem; line-height:1.15; text-align:center; padding:0.35rem 0.7rem; border-radius:9px; white-space:nowrap; box-shadow:0 6px 18px rgba(0,0,0,0.45); }
.artist-spectrum__bubble::after { content:''; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:6px solid transparent; border-top-color:var(--album-mid); }
.artist-spectrum__bubble small { display:block; font-weight:600; font-size:0.58rem; color:var(--album-dim); letter-spacing:0.05em; text-transform:uppercase; margin-top:0.1rem; }
.artist-spectrum__ticks { display:flex; justify-content:space-between; margin-top:6rem; }
.artist-spectrum__tick { font-size:0.68rem; font-family:var(--album-font-mono); color:var(--album-dim); flex:1; text-align:center; }
.artist-spectrum__tick:first-child { text-align:left; }
.artist-spectrum__tick:last-child { text-align:right; }
.artist-spectrum__tick b { display:block; font-family:var(--font-sans,inherit); color:var(--album-text); font-weight:700; font-size:0.78rem; margin-bottom:0.2rem; }

/* gauge sweep + reduced-motion guard */
@property --val { syntax:'<number>'; inherits:false; initial-value:0; }
.album-gauge { transition:--val 1.1s cubic-bezier(0.22,1,0.36,1); }
@media (prefers-reduced-motion: reduce) {
	.album-gauge, .artist-trajectory__bar, .artist-spectrum__pin, .artist-trajectory__val { transition:none !important; }
	.artist-trajectory__bar, .artist-trajectory__val { animation:none !important; }
}
@media (max-width:700px) {
	.artist-trajectory__nm { display:none; }
	.artist-spectrum { padding:2.5rem 1.4rem 1.4rem; }
	/* peer labels would overlap on a narrow track: keep the dots, drop the labels/stems */
	.artist-spectrum__mark-lbl, .artist-spectrum__mark-stem { display:none; }
	.artist-spectrum__head { margin-bottom:2.5rem; }
	.artist-spectrum__ticks { margin-top:2.5rem; }
}
