/* NPLAY music dashboard 0.6.6. Standalone asset prevents stale global CSS. */
.nplay-dashboard{--np-line:color-mix(in srgb,currentColor 19%,transparent);--np-soft:color-mix(in srgb,currentColor 58%,transparent);--np-fill:color-mix(in srgb,currentColor 9%,transparent);margin:1.5rem 0 3rem;min-width:0}
.nplay-dashboard *{box-sizing:border-box}.nplay-title{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem}.nplay-title h1{margin:.15rem 0 .5rem}.nplay-title .lead{margin:.3rem 0 0}.nplay-live,.nplay-kicker{font-size:.7rem;letter-spacing:.13em;font-weight:600;color:var(--np-soft)}.nplay-live{white-space:nowrap;padding-bottom:.55rem}
.nplay-periods{display:flex;gap:.4rem;flex-wrap:wrap;margin:2rem 0 1.4rem}.nplay-periods a{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:inherit;border:1px solid var(--np-line);padding:.65rem 1.1rem;font-size:.83rem;min-height:42px;line-height:1.2}.nplay-periods a[aria-current=page]{background:var(--np-fill);border-color:currentColor;font-weight:700}.nplay-periods a:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.nplay-kpis{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:1px;background:var(--np-line);border:1px solid var(--np-line);margin-bottom:1.3rem}.nplay-kpi{display:flex;flex-direction:column;gap:.65rem;background:var(--bg,#101010);padding:1.35rem 1.5rem;min-width:0}.nplay-kpi>span{font-size:.7rem;letter-spacing:.12em;color:var(--np-soft);font-weight:650}.nplay-kpi strong{font-size:clamp(1.35rem,2.7vw,2.25rem);line-height:1.12;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.nplay-kpi strong em{font-style:normal;font-size:.9rem;color:var(--np-soft);font-weight:400}.nplay-kpi small{font-size:.78rem;color:var(--np-soft)}
.nplay-panel{border:1px solid var(--np-line);padding:1.5rem;min-width:0}.nplay-panel-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.5rem}.nplay-panel-head h2{font-size:1.2rem;margin:.3rem 0 0;line-height:1.3}.nplay-hint{font-size:.75rem;color:var(--np-soft);text-align:right}.nplay-chart-panel{margin-bottom:1.3rem}.nplay-chart{display:flex;align-items:stretch;gap:clamp(2px,.45vw,7px);height:190px;padding-top:1rem;border-bottom:1px solid var(--np-line)}.nplay-chart-day{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:.5rem}.nplay-chart-column{width:100%;flex:1;display:flex;align-items:flex-end;background:var(--np-fill);min-height:0}.nplay-chart-column span{width:100%;background:currentColor;opacity:.75;min-height:0}.nplay-chart-day time{font-size:.61rem;color:var(--np-soft);line-height:1;min-height:1em}.nplay-chart-foot{display:flex;justify-content:space-between;gap:1rem;color:var(--np-soft);font-size:.72rem;margin-top:1rem}
.nplay-leaderboards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.3rem}.nplay-board ol{padding:0;margin:0;list-style:none}.nplay-board li{margin:0 0 1.2rem}.nplay-board li:last-child{margin-bottom:0}.nplay-board-line{display:grid;grid-template-columns:1.7rem minmax(0,1fr) auto;gap:.55rem;align-items:baseline;font-size:.83rem}.nplay-rank{color:var(--np-soft);font-variant-numeric:tabular-nums;font-size:.7rem}.nplay-name{overflow-wrap:anywhere;min-width:0}.nplay-duration{font-size:.75rem;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--np-soft)}.nplay-meter{height:3px;background:var(--np-fill);margin:.55rem 0 0 2.25rem}.nplay-meter span{display:block;height:100%;background:currentColor;opacity:.65}.nplay-empty{color:var(--np-soft);font-size:.87rem;padding:2rem 0}.nplay-disclaimer{font-size:.77rem;color:var(--np-soft);margin:1.5rem 0 2rem;line-height:1.7}
@media(max-width:700px){.nplay-leaderboards{grid-template-columns:1fr}.nplay-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.nplay-kpi-primary{grid-column:1/-1}.nplay-live{display:none}.nplay-panel{padding:1.1rem}.nplay-kpi{padding:1.1rem}.nplay-chart{height:155px}.nplay-chart-day time{font-size:.53rem}.nplay-chart-foot{font-size:.64rem}}
@media(max-width:430px){.nplay-chart-day time{display:none}.nplay-chart{height:145px}.nplay-hint{font-size:.65rem}.nplay-periods a{flex:1;padding:.6rem .3rem}}

/* 0.6.7 refinements: actual-height bars, compact boards, readable explanations */
.nplay-dashboard .nplay-intro{max-width:66ch;color:var(--np-soft);font-size:.87rem;line-height:1.65;margin:-.4rem 0 1.45rem}
.nplay-dashboard .nplay-chart{align-items:stretch}
.nplay-dashboard .nplay-chart-day{position:relative;cursor:default;outline-offset:3px}
.nplay-dashboard .nplay-chart-column{background:transparent;position:relative;min-height:0}
.nplay-dashboard .nplay-chart-column::before{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--np-line)}
.nplay-dashboard .nplay-chart-column span{position:relative;z-index:1;opacity:.82;min-height:0}
.nplay-dashboard .nplay-chart-day:not(.has-listening) .nplay-chart-column span{display:none}
.nplay-dashboard .nplay-chart-day.has-listening .nplay-chart-column span{min-height:3px}
.nplay-dashboard .nplay-chart-day:focus-visible{outline:1px solid currentColor}
.nplay-dashboard .nplay-chart-day::after{content:attr(data-detail);position:absolute;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);white-space:nowrap;background:var(--bg,#101010);border:1px solid var(--np-line);padding:.35rem .5rem;font-size:.7rem;z-index:4;opacity:0;pointer-events:none}
.nplay-dashboard .nplay-chart-day:hover::after,.nplay-dashboard .nplay-chart-day:focus::after{opacity:1}
.nplay-dashboard .nplay-chart-help{font-size:.72rem;color:var(--np-soft);margin:.75rem 0 0}
.nplay-dashboard .nplay-leaderboards{row-gap:1.3rem;align-items:stretch}
.nplay-dashboard .nplay-leaderboards>.nplay-board{margin:0;align-self:stretch}
.nplay-dashboard .nplay-board .nplay-panel-head{margin-bottom:1.1rem}
.nplay-dashboard .nplay-board li{margin-bottom:1rem}
.nplay-dashboard .nplay-meter{height:2px}
.nplay-dashboard .nplay-explainer{border-top:1px solid var(--np-line);margin:2rem 0 0;padding:1.5rem 0 0;max-width:74ch}
.nplay-dashboard .nplay-explainer h2{font-size:1.12rem;margin:0 0 .8rem}
.nplay-dashboard .nplay-explainer p{font-size:.86rem;line-height:1.7;color:var(--np-soft);margin:0 0 .8rem}
.nplay-dashboard .nplay-disclaimer{margin:1.1rem 0 2rem}
@media(max-width:700px){.nplay-dashboard .nplay-chart-day::after{font-size:.62rem}.nplay-dashboard .nplay-chart-help{line-height:1.5}}

/* 0.6.8: make empty days visually empty, highlight the current day. */
.nplay-dashboard .nplay-chart-day.is-today time{color:inherit;font-weight:700}
.nplay-dashboard .nplay-chart-day.is-today .nplay-chart-column{border-bottom-color:currentColor}

/* 0.6.9: SVG geometry, no dependency on inherited flex bar styling. */
.nplay-dashboard .nplay-svg-wrap{width:100%;overflow:hidden}
.nplay-dashboard .nplay-svg{display:block;width:100%;height:180px;overflow:visible}
.nplay-dashboard .nplay-svg-axis{stroke:currentColor;stroke-opacity:.18;stroke-width:1}
.nplay-dashboard .nplay-svg-bar{fill:currentColor;fill-opacity:.82}
.nplay-dashboard .nplay-svg-bar.is-today{fill-opacity:1}
.nplay-dashboard .nplay-svg-empty{fill:currentColor;fill-opacity:.12}
.nplay-dashboard .nplay-svg-today{fill:currentColor;font-size:11px;font-weight:700;letter-spacing:1px}
@media(max-width:600px){.nplay-dashboard .nplay-svg{height:145px}}

/* 0.7.24: hour axis, responsive calendar, monochrome accessible chart */
.nplay-dashboard .nplay-svg{height:auto;aspect-ratio:900/218;max-height:218px;overflow:visible}
.nplay-dashboard .nplay-svg-grid{stroke:currentColor;stroke-opacity:.12;stroke-width:1;vector-effect:non-scaling-stroke}
.nplay-dashboard .nplay-svg-tick,.nplay-dashboard .nplay-svg-date{fill:var(--np-soft);font-size:12px;font-variant-numeric:tabular-nums}
.nplay-dashboard .nplay-svg-date.is-today{fill:currentColor;font-weight:700}
.nplay-dashboard .nplay-svg-hit{fill:transparent;cursor:crosshair;outline:none}
.nplay-dashboard .nplay-svg-hit:focus-visible{stroke:currentColor;stroke-width:1;stroke-dasharray:3 3}
.nplay-dashboard .nplay-svg-bar{pointer-events:none}
.nplay-dashboard .nplay-activity{border-top:1px solid var(--np-line);margin-top:1.5rem;padding-top:1.25rem}
.nplay-dashboard .nplay-activity-head{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1rem}
.nplay-dashboard .nplay-activity-head h3{font-size:1rem;margin:.3rem 0 0}
.nplay-dashboard .nplay-activity-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:5px}
.nplay-dashboard .nplay-activity-cell{display:block;aspect-ratio:2/1;min-height:9px;outline-offset:2px}
.nplay-dashboard .nplay-activity-cell:focus-visible{outline:2px solid currentColor}
.nplay-dashboard .level-0{background:color-mix(in srgb,currentColor 7%,transparent)}
.nplay-dashboard .level-1{background:color-mix(in srgb,currentColor 25%,transparent)}
.nplay-dashboard .level-2{background:color-mix(in srgb,currentColor 45%,transparent)}
.nplay-dashboard .level-3{background:color-mix(in srgb,currentColor 68%,transparent)}
.nplay-dashboard .level-4{background:color-mix(in srgb,currentColor 92%,transparent)}
.nplay-dashboard .nplay-activity-legend{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-top:.7rem;color:var(--np-soft);font-size:.7rem}
.nplay-dashboard .nplay-activity-legend i{width:11px;height:11px;display:block}
@media(max-width:600px){.nplay-dashboard .nplay-svg{height:auto;min-height:130px}.nplay-dashboard .nplay-chart-foot{flex-wrap:wrap}.nplay-dashboard .nplay-activity-grid{gap:3px}.nplay-dashboard .nplay-activity-cell{min-height:8px;aspect-ratio:1.5/1}}

/* 0.7.25: Swedish ISO-week activity calendar */
.nplay-dashboard .nplay-activity-help,.nplay-dashboard .nplay-activity-note{color:var(--np-soft);font-size:.78rem;line-height:1.55;margin:.5rem 0 1rem}
.nplay-dashboard .nplay-activity-note{margin:.75rem 0 0}
.nplay-dashboard .nplay-activity-scroll{overflow-x:auto;max-width:100%;padding-bottom:4px}
.nplay-dashboard .nplay-activity-calendar{min-width:420px}
.nplay-dashboard .nplay-activity-months,.nplay-dashboard .nplay-activity-weekdays,.nplay-dashboard .nplay-activity-grid{display:grid;grid-template-columns:38px repeat(12,minmax(0,1fr));column-gap:5px}
.nplay-dashboard .nplay-activity-months{margin-bottom:5px;color:var(--np-soft);font-size:.72rem}
.nplay-dashboard .nplay-activity-weekdays{margin-bottom:6px}
.nplay-dashboard .nplay-activity-weeknum{font-size:.62rem;color:var(--np-soft);text-align:center}
.nplay-dashboard .nplay-activity-grid{row-gap:5px}
.nplay-dashboard .nplay-activity-dayname{align-self:center;color:var(--np-soft);font-size:.72rem}
.nplay-dashboard .nplay-activity-cell{aspect-ratio:1.8/1;min-height:13px;position:relative;border-radius:2px}
.nplay-dashboard .nplay-activity-cell.is-today{outline:1px solid currentColor;outline-offset:2px}
.nplay-dashboard .nplay-activity-future{min-height:13px}
.nplay-dashboard .nplay-activity-cell:hover{outline:1px solid currentColor;outline-offset:1px}
@media(max-width:600px){.nplay-dashboard .nplay-activity-calendar{min-width:420px}.nplay-dashboard .nplay-activity-grid{gap:4px}.nplay-dashboard .nplay-activity-cell{min-height:14px;aspect-ratio:1.5/1}}

/* 0.7.28: album favorites and editorial context */
.nplay-favorites,.nplay-personal{margin:2rem 0;padding:clamp(1rem,3vw,1.7rem);border:1px solid var(--line,rgba(128,128,128,.24));border-radius:12px}
.nplay-favorites>p,.nplay-favorite-note{color:var(--muted,#999);font-size:.92rem;line-height:1.65}
.nplay-favorites-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:1.25rem 0}
.nplay-favorite{min-width:0}.nplay-cover{aspect-ratio:1;background:var(--surface2,#222);border:1px solid var(--line,rgba(128,128,128,.2));display:grid;place-items:center;border-radius:7px;color:var(--muted,#aaa);font-size:clamp(3rem,8vw,5rem)}
.nplay-favorite-info{padding:.8rem 0}.nplay-favorite h3{font-size:1rem;overflow-wrap:anywhere;margin:.35rem 0}.nplay-favorite p{font-size:.84rem;color:var(--muted,#aaa);line-height:1.5}.nplay-personal .prose{max-width:68ch}.nplay-personal h2{margin:.5rem 0 1.3rem}
@media(max-width:640px){.nplay-favorites-grid{grid-template-columns:1fr}.nplay-favorite{display:grid;grid-template-columns:104px minmax(0,1fr);gap:1rem;align-items:center}.nplay-cover{font-size:2.6rem}}

/* 0.7.29: clear calendar favorites and separate play/time/radio/podcast rankings */
.nplay-dashboard .nplay-favorites-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}
.nplay-dashboard .nplay-favorite-featured{grid-row:span 2}
.nplay-dashboard .nplay-favorite:not(.nplay-favorite-featured){display:grid;grid-template-columns:90px minmax(0,1fr);gap:1rem;align-items:center}
.nplay-dashboard .nplay-favorite:not(.nplay-favorite-featured) .nplay-cover{font-size:2.2rem}
.nplay-dashboard .nplay-period{font-size:.72rem!important;opacity:.8}
.nplay-dashboard .nplay-board-description{font-size:.76rem;color:var(--np-soft);line-height:1.55;margin:.25rem 0 1rem}
.nplay-dashboard .nplay-name{overflow-wrap:anywhere}
@media(max-width:700px){.nplay-dashboard .nplay-favorites-grid{grid-template-columns:1fr}.nplay-dashboard .nplay-favorite-featured{grid-row:auto}.nplay-dashboard .nplay-favorite:not(.nplay-favorite-featured){grid-template-columns:90px minmax(0,1fr)}}

/* 0.7.30: accessible album imagery, archives and top-list depth */
.nplay-cover{overflow:hidden;position:relative}.nplay-cover img{width:100%;height:100%;object-fit:cover;display:block;aspect-ratio:1}.nplay-cover img[hidden]{display:none}.nplay-cover-fallback{display:grid;place-items:center;width:100%;height:100%;min-height:90px}.nplay-cover-fallback[hidden]{display:none}
.nplay-top-filter,.nplay-archive-tabs{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin:1.4rem 0}.nplay-top-filter span{font-size:.82rem;color:var(--np-soft)}.nplay-top-filter a,.nplay-archive-tabs a{font-size:.8rem;text-decoration:none;color:inherit;padding:.5rem .8rem;border:1px solid var(--line,rgba(128,128,128,.3));border-radius:4px}.nplay-top-filter a[aria-current],.nplay-archive-tabs a[aria-current]{background:var(--np-fill,#282828);border-color:currentColor}
.nplay-archive{margin:1.6rem 0;padding:clamp(1rem,3vw,1.7rem);border:1px solid var(--line,rgba(128,128,128,.24));border-radius:12px}.nplay-archive>p{font-size:.86rem;line-height:1.6;color:var(--np-soft)}.nplay-archive-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.nplay-archive-item{border:1px solid var(--line,rgba(128,128,128,.24));padding:1rem;display:flex;flex-direction:column;gap:.55rem;min-width:0}.nplay-archive-item strong{font-size:.86rem;overflow-wrap:anywhere}.nplay-archive-item small{font-size:.75rem;color:var(--np-soft)}
@media(max-width:700px){.nplay-archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.nplay-dashboard .nplay-favorite-featured .nplay-cover{max-width:100%}}@media(max-width:400px){.nplay-archive-grid{grid-template-columns:1fr}}

/* 0.7.31: balanced, compact covers on all viewports */
.nplay-dashboard .nplay-favorites-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem;align-items:start}
.nplay-dashboard .nplay-favorite,.nplay-dashboard .nplay-favorite-featured,.nplay-dashboard .nplay-favorite:not(.nplay-favorite-featured){display:flex;flex-direction:column;gap:.6rem;grid-row:auto;align-items:flex-start;min-width:0}
.nplay-dashboard .nplay-favorite .nplay-cover{width:100%;max-width:150px;aspect-ratio:1;font-size:2.5rem;flex:none}
.nplay-dashboard .nplay-favorite .nplay-favorite-info{padding:0;min-width:0;width:100%}
.nplay-dashboard .nplay-favorite h3{font-size:.92rem;line-height:1.4;margin:.3rem 0;overflow-wrap:break-word}
.nplay-dashboard .nplay-cover-fallback{min-height:0;font-size:2rem}
@media(max-width:760px){.nplay-dashboard .nplay-favorites-grid{grid-template-columns:1fr;gap:1.2rem}.nplay-dashboard .nplay-favorite,.nplay-dashboard .nplay-favorite-featured,.nplay-dashboard .nplay-favorite:not(.nplay-favorite-featured){display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:1rem}.nplay-dashboard .nplay-favorite .nplay-cover{max-width:92px}.nplay-dashboard .nplay-favorite .nplay-favorite-info{padding:0}}

/* 0.7.32: one focused album with accessible server-rendered period navigation */
.nplay-dashboard .nplay-favorites-grid{display:block;margin:1rem 0}
.nplay-dashboard .nplay-favorite,.nplay-dashboard .nplay-favorite-featured{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:1.2rem;max-width:580px}
.nplay-dashboard .nplay-favorite .nplay-cover{width:112px;max-width:112px}
.nplay-dashboard .nplay-favorite .nplay-favorite-info{padding:0}
.nplay-album-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.2rem 0}
.nplay-album-tabs a{color:inherit;text-decoration:none;font-size:.85rem;padding:.55rem .9rem;border:1px solid var(--line,rgba(128,128,128,.3));border-radius:5px}
.nplay-album-tabs a[aria-current]{background:var(--np-fill,#282828);border-color:currentColor}
.nplay-album-tabs a:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.nplay-group-title{font-size:1.25rem;margin:2.2rem 0 .35rem}
.nplay-group-description{font-size:.85rem;color:var(--np-soft);line-height:1.6;margin:0 0 1rem}
.nplay-source-group{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
@media(max-width:600px){.nplay-dashboard .nplay-favorite,.nplay-dashboard .nplay-favorite-featured{grid-template-columns:88px minmax(0,1fr);gap:.85rem}.nplay-dashboard .nplay-favorite .nplay-cover{width:88px;max-width:88px}.nplay-source-group{grid-template-columns:1fr}}

/* Keep filter destinations visible below the sticky site header. */
#album-favorites-title,#nplay-archive-title,#nplay-top-filter{scroll-margin-top:110px}
