:root {
  color-scheme: dark;
  --site-header-clearance: 97px;
  --foreground-content-opacity: .8;
  --bg: #120900;
  --bg-elevated: #1b0f03;
  --menu-bg: #1b0f03;
  --surface: rgba(50, 29, 9, 0.86);
  --surface-strong: #2a1705;
  --surface-soft: rgba(255, 198, 80, 0.055);
  --line: rgba(255, 190, 76, 0.16);
  --line-strong: rgba(255, 206, 117, 0.3);
  --text: #fff8eb;
  --muted: #d6c0a2;
  --dim: #9b7c58;
  --accent: #ff7a18;
  --accent-soft: rgba(255, 122, 24, 0.16);
  --gold: #ffd45c;
  --gold-soft: rgba(255, 212, 92, 0.14);
  --performance-stamp: #ff9a27;
  --performance-stamp-soft: rgba(255, 154, 39, .13);
  --cover-stamp: #ffe45d;
  --cover-stamp-soft: rgba(255, 228, 93, .12);
  --mention-stamp: #c9bba5;
  --mention-stamp-soft: rgba(201, 187, 165, .1);
  --xixi-strong: #ad72ff;
  --xixi-text: #eadbff;
  --xixi-soft: rgba(164, 91, 255, .17);
  --xixi-line: rgba(187, 126, 255, .5);
  --zhaozhao-strong: #ff5964;
  --zhaozhao-text: #ffdadd;
  --zhaozhao-soft: rgba(255, 62, 81, .16);
  --zhaozhao-line: rgba(255, 104, 116, .5);
  --focus: #ffe08a;
  --shadow: 0 24px 70px rgba(26, 10, 0, 0.46);
  --body-background:
    radial-gradient(circle at 13% -8%, rgba(255, 212, 92, 0.22), transparent 32rem),
    radial-gradient(circle at 92% 5%, rgba(255, 122, 24, 0.2), transparent 30rem),
    linear-gradient(135deg, #160a01 0%, var(--bg) 48%, #211002 100%);
  --grid-color: rgba(255, 198, 80, .035);
  --workspace-bg: linear-gradient(145deg, rgba(54, 30, 7, .95), rgba(24, 12, 2, .96));
  --search-bg: rgba(18, 8, 0, .66);
  --select-bg: #211103;
  --card-bg: linear-gradient(148deg, rgba(52, 29, 7, .86), rgba(24, 12, 2, .9));
  --card-shadow: 0 8px 26px rgba(0, 0, 0, .13);
  --card-hover-shadow: 0 15px 36px rgba(30, 11, 0, .34);
  --card-summary: #d8c4a7;
  --badge-text: #ffe8a3;
  --tag-text: #d1b995;
  --active-chip-text: #fff8eb;
  --dialog-backdrop: rgba(3, 3, 9, .76);
  --dialog-close-bg: rgba(42, 23, 5, .92);
  --highlight-text: #fff1d4;
  --content-text: #ddc9ac;
  --source-text: #e2cfb3;
  --source-bg: rgba(255, 255, 255, .035);
  --source-line: rgba(255, 255, 255, .055);
  --lyrics-text: #ead9bf;
  --detail-text: #eddec8;
  --facet-text: #f3d9ad;
  --input-text: #fff8eb;
  --input-placeholder: #c1a37e;
  --input-caret: #ffd45c;
  --focus-contrast: #281200;
  --skeleton-low: rgba(255, 255, 255, .035);
  --skeleton-high: rgba(255, 255, 255, .09);
  --footer-bg: linear-gradient(135deg, rgba(57, 24, 73, .94), rgba(78, 22, 41, .92));
  --footer-border: rgba(223, 174, 255, .24);
  --footer-text: #d9c4df;
  --footer-link: #f2dafa;
  --radius-sm: 10px;
  --radius-md: 18px;
  --radius-lg: 28px;
  font-family: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;
}

html[data-theme="day"] {
  color-scheme: light;
  --bg: #fff7e2;
  --bg-elevated: #fffaf0;
  --menu-bg: #fffaf0;
  --surface: rgba(255, 250, 238, .9);
  --surface-strong: #fff5da;
  --surface-soft: rgba(204, 95, 0, .07);
  --line: rgba(126, 67, 13, .18);
  --line-strong: rgba(173, 84, 0, .32);
  --text: #3a1a06;
  --muted: #6f4d2f;
  --dim: #76563b;
  --accent: #b84300;
  --accent-soft: rgba(217, 87, 0, .12);
  --gold: #8b4b00;
  --gold-soft: rgba(218, 139, 0, .12);
  --performance-stamp: #a94000;
  --performance-stamp-soft: rgba(201, 83, 0, .1);
  --cover-stamp: #795b00;
  --cover-stamp-soft: rgba(184, 139, 0, .1);
  --mention-stamp: #6d6256;
  --mention-stamp-soft: rgba(109, 98, 86, .08);
  --xixi-strong: #7125a8;
  --xixi-text: #5f188f;
  --xixi-soft: rgba(120, 39, 174, .1);
  --xixi-line: rgba(113, 37, 168, .4);
  --zhaozhao-strong: #b31d32;
  --zhaozhao-text: #911125;
  --zhaozhao-soft: rgba(190, 29, 51, .1);
  --zhaozhao-line: rgba(179, 29, 50, .4);
  --focus: #9a3100;
  --shadow: 0 24px 65px rgba(147, 80, 20, .14);
  --body-background:
    radial-gradient(circle at 13% -8%, rgba(255, 202, 66, .58), transparent 31rem),
    radial-gradient(circle at 92% 5%, rgba(255, 137, 36, .28), transparent 29rem),
    linear-gradient(135deg, #fff9e9 0%, var(--bg) 48%, #ffedc1 100%);
  --grid-color: rgba(145, 78, 12, .055);
  --workspace-bg: linear-gradient(145deg, rgba(255, 252, 241, .96), rgba(255, 238, 201, .93));
  --search-bg: rgba(255, 255, 255, .74);
  --select-bg: #fffaf0;
  --card-bg: linear-gradient(148deg, rgba(255, 253, 245, .96), rgba(255, 241, 212, .9));
  --card-shadow: 0 8px 26px rgba(121, 66, 13, .08);
  --card-hover-shadow: 0 15px 36px rgba(134, 70, 9, .17);
  --card-summary: #65462c;
  --badge-text: #814900;
  --tag-text: #715133;
  --active-chip-text: #3c1d06;
  --dialog-backdrop: rgba(50, 26, 7, .48);
  --dialog-close-bg: rgba(255, 248, 231, .94);
  --highlight-text: #4a2408;
  --content-text: #63452d;
  --source-text: #583a25;
  --source-bg: rgba(122, 69, 17, .045);
  --source-line: rgba(122, 69, 17, .11);
  --lyrics-text: #54371f;
  --detail-text: #5b3c24;
  --facet-text: #743f0e;
  --input-text: #3a1a06;
  --input-placeholder: #7b5637;
  --input-caret: #b84300;
  --focus-contrast: #fff8eb;
  --skeleton-low: rgba(107, 55, 8, .045);
  --skeleton-high: rgba(107, 55, 8, .12);
  --footer-bg: linear-gradient(135deg, rgba(244, 226, 255, .97), rgba(255, 221, 230, .96));
  --footer-border: rgba(118, 42, 137, .2);
  --footer-text: #66415f;
  --footer-link: #51204f;
}

/* 動態背景啟用時，讓畫面穿透主要介面層；前景選單與輸入元件仍保留足夠遮罩。 */
html:not([data-background="static"]) {
  --bg-elevated: rgba(27, 15, 3, .84);
  --surface: rgba(50, 29, 9, .68);
  --workspace-bg: linear-gradient(145deg, rgba(54, 30, 7, .7), rgba(24, 12, 2, .76));
  --search-bg: rgba(18, 8, 0, .52);
  --select-bg: rgba(33, 17, 3, .84);
  --card-bg: linear-gradient(148deg, rgba(52, 29, 7, .68), rgba(24, 12, 2, .74));
  --dialog-close-bg: rgba(42, 23, 5, .82);
}

html[data-theme="day"]:not([data-background="static"]) {
  --bg-elevated: rgba(255, 250, 240, .87);
  --surface: rgba(255, 250, 238, .76);
  --workspace-bg: linear-gradient(145deg, rgba(255, 252, 241, .74), rgba(255, 238, 201, .69));
  --search-bg: rgba(255, 255, 255, .64);
  --select-bg: rgba(255, 250, 240, .86);
  --card-bg: linear-gradient(148deg, rgba(255, 253, 245, .78), rgba(255, 241, 212, .68));
  --dialog-close-bg: rgba(255, 248, 231, .86);
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  position: relative;
  isolation: isolate;
  min-width: 320px;
  min-height: 100vh;
  margin: 0;
  color: var(--text);
  background: var(--body-background);
}

body::before {
  position: fixed;
  top: var(--site-header-clearance);
  right: 0;
  bottom: 0;
  left: 0;
  z-index: -1;
  pointer-events: none;
  content: "";
  opacity: 0.26;
  background-image:
    linear-gradient(var(--grid-color) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-color) 1px, transparent 1px);
  background-size: 52px 52px;
  mask-image: linear-gradient(to bottom, black, transparent 70%);
}

body::after {
  position: fixed;
  top: var(--site-header-clearance);
  right: -22%;
  bottom: -22%;
  left: -22%;
  z-index: -3;
  pointer-events: none;
  content: "";
  opacity: 0;
  background:
    radial-gradient(circle at 18% 28%, rgba(164, 91, 255, .27), transparent 28%),
    radial-gradient(circle at 79% 24%, rgba(255, 62, 81, .22), transparent 27%),
    radial-gradient(circle at 52% 76%, rgba(255, 212, 92, .22), transparent 32%),
    radial-gradient(circle at 72% 68%, rgba(255, 122, 24, .2), transparent 26%);
  filter: blur(18px);
  transform: translate3d(-3%, -2%, 0) scale(1.04) rotate(-2deg);
  transition: opacity 320ms ease;
}

html[data-theme="day"] body::after {
  background:
    radial-gradient(circle at 18% 28%, rgba(120, 39, 174, .18), transparent 28%),
    radial-gradient(circle at 79% 24%, rgba(190, 29, 51, .16), transparent 27%),
    radial-gradient(circle at 52% 76%, rgba(218, 139, 0, .22), transparent 32%),
    radial-gradient(circle at 72% 68%, rgba(217, 87, 0, .17), transparent 26%);
}

html[data-background="aurora"] body::after,
html[data-background="hybrid"] body::after {
  opacity: .82;
  animation: ambient-aurora 22s ease-in-out infinite alternate;
}

.ambient-canvas {
  position: fixed;
  top: var(--site-header-clearance);
  right: 0;
  bottom: 0;
  left: 0;
  z-index: -2;
  display: block;
  width: 100%;
  height: calc(100% - var(--site-header-clearance));
  pointer-events: none;
  opacity: 0;
  transition: opacity 280ms ease;
}

html[data-background="stars"] .ambient-canvas,
html[data-background="hybrid"] .ambient-canvas,
html[data-background="lines"] .ambient-canvas,
html[data-background="danmaku"] .ambient-canvas {
  opacity: 1;
}

.polaroid-wall {
  position: fixed;
  top: var(--site-header-clearance);
  right: 0;
  bottom: 0;
  left: 0;
  z-index: -2;
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  filter: saturate(.82) contrast(.94);
  transition: opacity 360ms ease;
}

.polaroid-wall[hidden] {
  display: none;
}

html[data-background="polaroid"] .polaroid-wall {
  opacity: .43;
}

html:not([data-theme="day"])[data-background="polaroid"] .polaroid-wall {
  opacity: .3;
  filter: saturate(.72) brightness(.72) contrast(.92);
}

.polaroid-photo {
  position: absolute;
  top: var(--polaroid-top);
  left: var(--polaroid-left);
  width: var(--polaroid-width);
  padding: 8px 8px 25px;
  margin: 0;
  background: #fff9eb;
  border: 1px solid rgba(102, 69, 36, .18);
  border-radius: 3px;
  box-shadow: 0 14px 28px rgba(32, 15, 2, .28), 0 2px 5px rgba(32, 15, 2, .18);
  transform: translate(-50%, -50%) rotate(var(--polaroid-rotation)) scale(1);
  transform-origin: 50% 16%;
  transition: opacity 900ms ease-out, transform 1100ms cubic-bezier(.16, .84, .24, 1);
  transition-delay: var(--polaroid-delay, 0ms);
  will-change: transform, opacity;
}

.polaroid-photo::before {
  position: absolute;
  top: -8px;
  left: 50%;
  width: 42%;
  height: 16px;
  content: "";
  background: rgba(255, 221, 154, .66);
  border: 1px solid rgba(125, 85, 34, .14);
  box-shadow: 0 2px 4px rgba(67, 37, 7, .1);
  transform: translateX(-50%) rotate(-1.5deg);
}

.polaroid-photo img {
  display: block;
  width: 100%;
  height: auto;
  background: rgba(97, 64, 29, .13);
  border-radius: 1px;
}

.polaroid-photo.is-entering {
  opacity: 0;
  transform: translate(-50%, -68%) rotate(var(--polaroid-entry-rotation, var(--polaroid-rotation))) scale(1.08);
}

.polaroid-photo.is-pending {
  visibility: hidden;
  opacity: 0;
}

.polaroid-photo.is-leaving,
.polaroid-photo.is-unavailable {
  opacity: 0;
  transform: translate(-50%, -44%) rotate(var(--polaroid-rotation)) scale(.86);
}

.background-only-exit {
  position: fixed;
  inset: 0;
  z-index: 10000;
  width: 100%;
  height: 100%;
  padding: 0;
  background: transparent;
  border: 0;
  cursor: zoom-out;
}

.background-only-exit[hidden] {
  display: none;
}

.background-only-exit:focus {
  outline: none;
  box-shadow: none;
}

body.is-background-only {
  height: 100dvh;
  overflow: hidden;
}

body.is-background-only > :not(#ambientCanvas):not(#polaroidWall):not(#miniPlayer):not(#backgroundOnlyExit) {
  display: none !important;
}

body.is-background-only > #miniPlayer {
  opacity: 0 !important;
  pointer-events: none !important;
  transform: translateY(calc(100% + 180px)) !important;
  transition: none !important;
}

@keyframes ambient-aurora {
  0% {
    transform: translate3d(-4%, -3%, 0) scale(1.03) rotate(-2deg);
  }
  50% {
    transform: translate3d(4%, 2%, 0) scale(1.1) rotate(2deg);
  }
  100% {
    transform: translate3d(-1%, 5%, 0) scale(1.06) rotate(-1deg);
  }
}

button,
input,
select {
  font: inherit;
}

button,
select {
  cursor: pointer;
}

button:focus-visible,
input:focus-visible,
select:focus-visible,
a:focus-visible,
summary:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 100;
  padding: 10px 14px;
  color: var(--focus-contrast);
  background: var(--focus);
  border-radius: 8px;
  transform: translateY(-160%);
  transition: transform 160ms ease;
}

.skip-link:focus {
  transform: translateY(0);
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.site-header,
main,
footer {
  width: min(1220px, calc(100% - 40px));
  margin-inline: auto;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 60;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  background: var(--menu-bg);
  border: 1px solid var(--line);
  border-top: 0;
  border-radius: 0 0 22px 22px;
  box-shadow: 0 10px 32px rgba(24, 10, 0, .14);
  -webkit-backdrop-filter: blur(18px) saturate(1.08);
  backdrop-filter: blur(18px) saturate(1.08);
}

.brand-logo {
  display: grid;
  place-items: center;
  width: 64px;
  height: 64px;
  border-radius: 18px;
  filter: drop-shadow(0 8px 16px rgba(99, 39, 0, .18));
}

.brand-logo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.brand-copy {
  min-width: 0;
}

.eyebrow {
  margin: 0 0 4px;
  color: var(--gold);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .18em;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1 {
  margin-bottom: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(22px, 3vw, 31px);
  font-weight: 600;
  letter-spacing: .06em;
  color: transparent;
  background: linear-gradient(100deg, #fff1bd 0%, var(--gold) 48%, #ff9d3f 100%);
  background-clip: text;
  -webkit-background-clip: text;
}

html[data-theme="day"] h1 {
  background: linear-gradient(100deg, #512306 0%, #9c5100 48%, #d95700 100%);
  background-clip: text;
  -webkit-background-clip: text;
}

.brand-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0 .32em;
  line-height: 1.35;
}

.brand-breadcrumb .brand-root,
.brand-breadcrumb .brand-current {
  white-space: nowrap;
}

.brand-breadcrumb .brand-separator {
  color: var(--muted);
}

.brand-breadcrumb .brand-current {
  color: var(--text);
}

.header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.header-nav-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 44px;
  padding: 0 14px;
  color: var(--text);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .04em;
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.header-nav-link:hover {
  color: var(--highlight-text);
  background: var(--gold-soft);
  border-color: rgba(255, 154, 39, .52);
  transform: translateY(-1px);
}

.header-nav-link svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.archive-meta {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  white-space: nowrap;
}

.archive-meta strong {
  color: var(--text);
  font-size: 18px;
}

.options-menu {
  position: relative;
}

.options-menu > summary {
  list-style: none;
}

.options-menu > summary::-webkit-details-marker,
.site-info-details > summary::-webkit-details-marker {
  display: none;
}

.options-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 94px;
  min-height: 44px;
  padding: 0 14px;
  color: var(--text);
  background: var(--surface-soft);
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  cursor: pointer;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.options-toggle:hover,
.options-menu[open] > .options-toggle {
  background: var(--gold-soft);
  border-color: rgba(255, 154, 39, .52);
  transform: translateY(-1px);
}

.options-toggle svg,
.option-segmented svg,
.option-action svg,
.site-info-details svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.options-toggle-label {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
}

.options-chevron {
  color: var(--dim);
  transition: transform 180ms ease;
}

.options-menu[open] .options-chevron {
  transform: rotate(180deg);
}

.options-panel {
  position: absolute;
  top: calc(100% + 11px);
  right: 0;
  z-index: 40;
  width: min(360px, calc(100vw - 24px));
  max-height: min(680px, calc(100dvh - 92px));
  padding: 20px;
  overflow-y: auto;
  color: var(--text);
  background: var(--menu-bg);
  border: 1px solid var(--line-strong);
  border-radius: 20px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .34);
}

.options-panel-header {
  padding: 0 2px 17px;
  border-bottom: 1px solid var(--line);
}

.options-panel-header h2 {
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 22px;
  font-weight: 600;
  letter-spacing: .04em;
}

.option-group {
  padding: 17px 2px;
  border-bottom: 1px solid var(--line);
}

.option-group-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 11px;
}

.option-group-heading > span {
  color: var(--text);
  font-size: 14px;
  font-weight: 700;
}

.option-group-heading small {
  color: var(--dim);
  font-size: 12px;
}

.option-segmented {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
  padding: 5px;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 13px;
}

.option-segmented button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 40px;
  color: var(--muted);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 9px;
}

.option-segmented button:hover {
  color: var(--text);
  background: var(--surface-soft);
}

.option-segmented button.is-active {
  color: var(--active-chip-text);
  font-weight: 700;
  background: linear-gradient(135deg, rgba(255, 212, 92, .22), rgba(255, 122, 24, .24));
  border-color: rgba(255, 195, 82, .44);
}

.background-picker {
  position: relative;
}

.background-picker > summary::-webkit-details-marker {
  display: none;
}

.background-picker-toggle {
  display: grid;
  grid-template-columns: 31px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 44px;
  padding: 6px 12px 6px 7px;
  color: var(--text);
  font-weight: 700;
  background: var(--select-bg);
  border: 1px solid var(--line);
  border-radius: 11px;
  cursor: pointer;
  list-style: none;
  transition: background 160ms ease, border-color 160ms ease, border-radius 160ms ease;
}

.background-picker-toggle:hover,
.background-picker[open] > .background-picker-toggle {
  background: var(--surface-soft);
  border-color: var(--line-strong);
}

.background-picker[open] > .background-picker-toggle {
  border-radius: 11px 11px 7px 7px;
}

.background-picker-chevron {
  color: var(--dim);
  font-size: 16px;
  line-height: 1;
  transition: transform 160ms ease;
}

.background-picker[open] .background-picker-chevron {
  transform: rotate(180deg);
}

.background-picker-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  left: 0;
  z-index: 8;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
  padding: 8px;
  background: var(--menu-bg);
  border: 1px solid var(--line-strong);
  border-radius: 13px;
  box-shadow: 0 16px 34px rgba(0, 0, 0, .3);
}

.background-picker-option {
  display: grid;
  grid-template-columns: 31px minmax(0, 1fr);
  align-items: center;
  gap: 8px;
  min-height: 43px;
  padding: 5px 9px 5px 6px;
  color: var(--muted);
  text-align: left;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 10px;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.background-picker-option:hover {
  color: var(--text);
  border-color: var(--line-strong);
  transform: translateY(-1px);
}

.background-picker-option.is-active {
  color: var(--text);
  font-weight: 700;
  background: linear-gradient(135deg, rgba(255, 212, 92, .14), rgba(255, 122, 24, .14));
  border-color: rgba(255, 154, 39, .56);
}

.background-swatch {
  display: block;
  width: 31px;
  height: 31px;
  overflow: hidden;
  background-color: var(--select-bg);
  border: 1px solid var(--line);
  border-radius: 8px;
}

.swatch-static {
  background:
    radial-gradient(circle at 28% 18%, rgba(255, 212, 92, .7), transparent 42%),
    linear-gradient(145deg, #3c1c04, #160a01);
}

.swatch-aurora {
  background:
    radial-gradient(circle at 25% 30%, rgba(181, 114, 255, .95), transparent 46%),
    radial-gradient(circle at 75% 35%, rgba(255, 72, 89, .85), transparent 44%),
    linear-gradient(145deg, #3b1b04, #f07a18);
}

.swatch-stars {
  background:
    radial-gradient(circle at 24% 28%, #ffe08a 0 1px, transparent 2px),
    radial-gradient(circle at 70% 24%, #d5b2ff 0 1px, transparent 2px),
    radial-gradient(circle at 58% 72%, #ff9ca4 0 1px, transparent 2px),
    radial-gradient(circle at 30% 78%, #fff2c2 0 1px, transparent 2px),
    #1b0f03;
}

.swatch-hybrid {
  background:
    radial-gradient(circle at 25% 25%, #fff2c2 0 1px, transparent 2px),
    radial-gradient(circle at 72% 68%, #d5b2ff 0 1px, transparent 2px),
    radial-gradient(circle at 25% 55%, rgba(181, 114, 255, .9), transparent 42%),
    radial-gradient(circle at 76% 38%, rgba(255, 72, 89, .78), transparent 42%),
    linear-gradient(145deg, #3b1b04, #e4660b);
}

.swatch-lines {
  background:
    repeating-linear-gradient(165deg, transparent 0 5px, rgba(213, 178, 255, .8) 6px, transparent 7px 11px),
    repeating-linear-gradient(18deg, transparent 0 8px, rgba(255, 104, 116, .62) 9px, transparent 10px 15px),
    #241103;
}

.swatch-danmaku {
  background:
    linear-gradient(90deg, transparent 0 8%, rgba(213, 178, 255, .92) 8% 62%, transparent 62% 100%) 0 6px / 100% 2px no-repeat,
    linear-gradient(90deg, transparent 0 26%, rgba(255, 104, 116, .86) 26% 92%, transparent 92% 100%) 0 15px / 100% 2px no-repeat,
    linear-gradient(90deg, transparent 0 4%, rgba(255, 212, 92, .9) 4% 74%, transparent 74% 100%) 0 24px / 100% 2px no-repeat,
    #241103;
}

.swatch-polaroid {
  background:
    linear-gradient(156deg, transparent 0 13%, #fff4d9 14% 53%, transparent 54%) 1px 2px / 23px 25px no-repeat,
    linear-gradient(18deg, transparent 0 25%, #fff8e9 26% 70%, transparent 71%) 9px 5px / 23px 25px no-repeat,
    linear-gradient(145deg, #63244e, #e78250);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18);
}

html[data-theme="day"] .background-swatch {
  filter: saturate(.9) brightness(1.16);
}

.option-note {
  margin: 10px 1px 0;
  color: var(--dim);
  font-size: 11px;
  line-height: 1.55;
}

.foreground-transparency-control {
  display: grid;
  gap: 11px;
  padding: 14px 12px;
  border-bottom: 1px solid var(--line);
}

.foreground-transparency-heading {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  align-items: center;
  gap: 11px;
}

.foreground-transparency-heading svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.foreground-transparency-heading > span {
  display: grid;
  gap: 3px;
}

.foreground-transparency-heading strong {
  font-size: 14px;
}

.foreground-transparency-heading small {
  color: var(--dim);
  font-size: 12px;
}

.foreground-transparency-inputs {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 78px;
  align-items: center;
  gap: 11px;
}

.foreground-transparency-inputs input[type="range"] {
  width: 100%;
  accent-color: var(--gold);
}

.foreground-transparency-inputs label {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px;
  min-height: 40px;
  padding: 0 9px;
  color: var(--muted);
  background: var(--select-bg);
  border: 1px solid var(--line);
  border-radius: 10px;
}

.foreground-transparency-inputs input[type="number"] {
  width: 100%;
  min-width: 0;
  padding: 0;
  color: var(--input-text);
  text-align: right;
  background: transparent;
  border: 0;
  outline: 0;
}

:where(
  #siteViewRoot > :not(script),
  body > :not(#siteViewRoot):not(#ambientCanvas):not(#polaroidWall):not(#backgroundOnlyExit):not(script)
) {
  opacity: var(--foreground-content-opacity);
  transition: opacity 160ms ease;
}

.option-action,
.site-info-details > summary {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  align-items: center;
  gap: 11px;
  min-height: 58px;
  padding: 11px 12px;
  color: var(--text);
  text-decoration: none;
  border-bottom: 1px solid var(--line);
}

.option-action-button {
  width: 100%;
  font: inherit;
  text-align: left;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--line);
}

.option-action:hover,
.site-info-details > summary:hover {
  background: var(--surface-soft);
}

.option-action > span:nth-child(2) {
  display: grid;
  gap: 3px;
}

.option-action strong {
  font-size: 14px;
}

.option-action small {
  color: var(--dim);
  font-size: 12px;
}

.option-action > span:last-child {
  color: var(--gold);
  font-size: 18px;
}

.site-info-details > summary {
  grid-template-columns: minmax(0, 1fr) auto;
  border-bottom: 0;
  cursor: pointer;
  font-size: 14px;
  font-weight: 700;
}

.site-info-details > summary svg {
  color: var(--dim);
  transition: transform 180ms ease;
}

.site-info-details[open] > summary svg {
  transform: rotate(90deg);
}

.site-info-content {
  padding: 2px 12px 12px;
}

.site-info-content dl {
  display: grid;
  gap: 10px;
  margin: 0;
}

.site-info-content dl > div {
  display: grid;
  grid-template-columns: 78px minmax(0, 1fr);
  gap: 10px;
  font-size: 12px;
  line-height: 1.55;
}

.site-info-content dt {
  color: var(--dim);
}

.site-info-content dd {
  margin: 0;
  color: var(--content-text);
}

.search-workspace {
  position: relative;
  padding: clamp(18px, 3vw, 30px);
  overflow: hidden;
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
  backdrop-filter: blur(8px) saturate(1.05);
}

.search-workspace::after {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 2px;
  content: "";
  background: linear-gradient(90deg, transparent, var(--gold), var(--accent), transparent);
  opacity: .85;
}

.search-shell {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-height: 62px;
  padding: 0 18px;
  background: var(--search-bg);
  border: 1px solid var(--line-strong);
  -webkit-backdrop-filter: blur(10px) saturate(1.06);
  backdrop-filter: blur(10px) saturate(1.06);
  border-radius: 16px;
  transition: border-color 180ms ease, box-shadow 180ms ease;
}

.search-shell:focus-within {
  border-color: rgba(255, 190, 76, .78);
  box-shadow: 0 0 0 4px rgba(255, 190, 76, .1);
}

.search-shell svg,
.dialog-close svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
}

.search-shell svg {
  color: var(--gold);
}

.search-shell input {
  width: 100%;
  min-width: 0;
  padding: 17px 0;
  color: var(--input-text);
  -webkit-text-fill-color: var(--input-text);
  caret-color: var(--input-caret);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.55;
  background: transparent;
  border: 0;
  outline: 0;
}

.search-shell input::placeholder {
  color: var(--input-placeholder);
  -webkit-text-fill-color: var(--input-placeholder);
  font-weight: 400;
  opacity: 1;
}

.search-shell input::-webkit-search-cancel-button {
  appearance: none;
  -webkit-appearance: none;
}

.clear-search {
  display: grid;
  width: 40px;
  min-height: 40px;
  padding: 0;
  place-items: center;
  color: var(--muted);
  font-size: 26px;
  line-height: 1;
  background: transparent;
  border: 0;
  border-radius: 8px;
  visibility: hidden;
}

.clear-search.is-visible {
  visibility: visible;
}

.filter-stack {
  display: grid;
  gap: 18px;
  margin-top: 22px;
}

.advanced-filters {
  overflow: hidden;
  background: color-mix(in srgb, var(--surface-soft) 74%, transparent);
  border: 1px solid var(--line);
  border-radius: 16px;
  transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease;
}

.advanced-filters[open],
.advanced-filters.has-active-filters {
  border-color: var(--line-strong);
}

.advanced-filters[open] {
  background: color-mix(in srgb, var(--surface-soft) 88%, transparent);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--gold) 12%, transparent);
}

.advanced-filters-toggle {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-height: 52px;
  padding: 10px 15px;
  color: var(--text);
  cursor: pointer;
  list-style: none;
}

.advanced-filters-toggle::-webkit-details-marker {
  display: none;
}

.advanced-filters-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
}

.advanced-filters-label svg,
.advanced-filters-chevron {
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.advanced-filters-label svg {
  color: var(--gold);
}

.advanced-filters-summary {
  min-width: 0;
  overflow: hidden;
  color: var(--dim);
  font-size: 12px;
  font-weight: 650;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.advanced-filters.has-active-filters .advanced-filters-summary {
  color: var(--gold);
}

.advanced-filters-chevron {
  color: var(--muted);
  transition: transform 160ms ease;
}

.advanced-filters[open] .advanced-filters-chevron {
  transform: rotate(180deg);
}

.advanced-filters-panel {
  display: grid;
  gap: 18px;
  padding: 18px 15px 15px;
  border-top: 1px solid var(--line);
}

.filter-block {
  display: grid;
  grid-template-columns: 78px minmax(0, 1fr);
  align-items: center;
  gap: 12px;
}

.filter-label,
.select-filters label > span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
}

.chip-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.filter-chip,
.reset-button,
.empty-state button {
  min-height: 42px;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  transition: color 160ms ease, border-color 160ms ease, background 160ms ease, transform 160ms ease;
}

.filter-chip {
  padding: 0 15px;
  font-size: 14px;
}

.filter-chip:hover,
.reset-button:hover,
.empty-state button:hover {
  color: var(--text);
  border-color: var(--line-strong);
}

.filter-chip.is-active {
  color: var(--active-chip-text);
  background: linear-gradient(135deg, rgba(255, 212, 92, .24), rgba(255, 122, 24, .28));
  border-color: rgba(255, 195, 82, .56);
}

.favorite-filter > span {
  margin-right: 4px;
  color: #f05c6b;
}

.favorite-filter.is-active {
  color: var(--zhaozhao-text);
  background: var(--zhaozhao-soft);
  border-color: var(--zhaozhao-line);
}

.personal-filter-note {
  align-self: center;
  color: var(--dim);
  font-size: 12px;
}

.filter-chip[data-performer="希希"] {
  color: var(--xixi-text);
  background: var(--xixi-soft);
  border-color: var(--xixi-line);
}

.filter-chip[data-performer="希希"]:hover,
.filter-chip[data-performer="希希"].is-active {
  color: var(--xixi-text);
  background: linear-gradient(135deg, var(--xixi-soft), rgba(164, 91, 255, .28));
  border-color: var(--xixi-strong);
}

.filter-chip[data-performer="朝朝"] {
  color: var(--zhaozhao-text);
  background: var(--zhaozhao-soft);
  border-color: var(--zhaozhao-line);
}

.filter-chip[data-performer="朝朝"]:hover,
.filter-chip[data-performer="朝朝"].is-active {
  color: var(--zhaozhao-text);
  background: linear-gradient(135deg, var(--zhaozhao-soft), rgba(255, 62, 81, .27));
  border-color: var(--zhaozhao-strong);
}

.filter-chip[data-performer="希希朝朝"] {
  color: var(--badge-text);
  background: linear-gradient(135deg, var(--gold-soft), var(--accent-soft));
  border-color: rgba(255, 195, 82, .42);
}

.filter-chip[data-performer="希希朝朝"]:hover,
.filter-chip[data-performer="希希朝朝"].is-active {
  color: var(--active-chip-text);
  background: linear-gradient(135deg, rgba(255, 212, 92, .3), rgba(255, 122, 24, .34));
  border-color: rgba(255, 154, 39, .68);
}

.select-filters {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  column-gap: 14px;
  row-gap: 14px;
  align-items: end;
}

.select-filters label {
  display: grid;
  min-width: 0;
  gap: 7px;
}

.select-filters select {
  width: 100%;
  min-height: 44px;
  padding: 0 36px 0 13px;
  color: var(--text);
  background: var(--select-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.select-filters select:disabled {
  color: var(--dim);
  cursor: not-allowed;
  opacity: .68;
}

.reset-button {
  grid-column: 4;
  grid-row: 2;
  width: 100%;
  min-width: 98px;
  padding: 0 15px;
  border-radius: var(--radius-sm);
}

.playlist-panel {
  width: min(350px, calc(100vw - 24px));
}

.playlist-menu-links {
  display: grid;
  gap: 9px;
  padding-top: 14px;
}

.playlist-link {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) 38px;
  gap: 12px;
  align-items: center;
  min-height: 76px;
  padding: 10px 13px;
  color: var(--text);
  text-decoration: none;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 15px;
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.playlist-link:hover,
.playlist-link:focus-visible {
  transform: translateY(-2px);
  box-shadow: var(--card-hover-shadow);
}

.playlist-spotify:hover,
.playlist-spotify:focus-visible {
  border-color: rgba(29, 185, 84, .62);
}

.playlist-youtube:hover,
.playlist-youtube:focus-visible {
  border-color: rgba(255, 45, 45, .64);
}

.playlist-platform-icon,
.playlist-play {
  display: grid;
  place-items: center;
  border-radius: 50%;
}

.playlist-platform-icon {
  width: 48px;
  height: 48px;
}

.playlist-platform-icon svg,
.playlist-play svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.playlist-spotify .playlist-platform-icon {
  color: #082e18;
  background: #1ed760;
}

.playlist-spotify .playlist-platform-icon svg circle {
  fill: currentColor;
  stroke: none;
}

.playlist-spotify .playlist-platform-icon svg path {
  stroke: #1ed760;
}

.playlist-youtube .playlist-platform-icon {
  color: #fff;
  background: #ff2d2d;
}

.playlist-youtube .playlist-platform-icon svg circle:first-child {
  fill: #fff;
  stroke: none;
}

.playlist-youtube .playlist-platform-icon svg circle:nth-child(2) {
  fill: #ff2d2d;
  stroke: none;
}

.playlist-youtube .playlist-platform-icon svg path {
  fill: #fff;
  stroke: none;
}

.playlist-copy {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.playlist-copy small {
  overflow: hidden;
  color: var(--dim);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.playlist-copy strong {
  overflow: hidden;
  font-size: 15px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.playlist-play {
  width: 38px;
  height: 38px;
  color: var(--active-chip-text);
  background: linear-gradient(135deg, var(--gold), var(--accent));
}

.playlist-play svg {
  fill: currentColor;
  stroke: none;
}

.results-section {
  padding-top: 42px;
}

.results-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
  padding: 0 2px 17px;
  border-bottom: 1px solid var(--line);
}

.results-heading h2 {
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(22px, 3vw, 28px);
  font-weight: 600;
  letter-spacing: .05em;
}

.result-count {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
}

.song-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  padding-top: 18px;
}

.song-card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 210px;
  padding: 18px 19px;
  overflow: hidden;
  color: var(--text);
  text-align: left;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  box-shadow: var(--card-shadow);
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.song-card:not(.skeleton-card):hover {
  border-color: rgba(255, 190, 76, .46);
  box-shadow: var(--card-hover-shadow);
  transform: translateY(-3px);
}

.song-card-hitarea {
  position: absolute;
  z-index: 1;
  inset: 0;
  background: transparent;
  border: 0;
  border-radius: inherit;
}

.song-card-hitarea:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: -4px;
}

.song-card > .card-topline,
.song-card > h3,
.song-card > .song-artist,
.song-card > .song-summary,
.song-card > .tag-row,
.song-card > .performance-stamps {
  position: relative;
  z-index: 2;
  pointer-events: none;
}

.song-card::before {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 3px;
  content: "";
  background: linear-gradient(to bottom, var(--muted), var(--dim));
  opacity: .28;
}

.song-card.performer-xixi::before {
  background: linear-gradient(to bottom, #d5b2ff, var(--xixi-strong));
  opacity: .92;
}

.song-card.performer-zhaozhao::before {
  background: linear-gradient(to bottom, #ff9ca4, var(--zhaozhao-strong));
  opacity: .92;
}

.song-card.performer-duo::before {
  background: linear-gradient(to bottom, var(--gold), var(--accent));
  opacity: .9;
}

.song-card.performer-xixi:hover {
  border-color: var(--xixi-line);
  box-shadow: var(--card-hover-shadow), 0 0 0 1px var(--xixi-soft);
}

.song-card.performer-zhaozhao:hover {
  border-color: var(--zhaozhao-line);
  box-shadow: var(--card-hover-shadow), 0 0 0 1px var(--zhaozhao-soft);
}

.song-card.performer-duo:hover {
  border-color: rgba(255, 154, 39, .58);
  box-shadow: var(--card-hover-shadow), 0 0 0 1px var(--gold-soft);
}

.card-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: var(--dim);
  font-size: 12px;
  letter-spacing: .05em;
}

.performer-badge {
  padding: 5px 9px;
  color: var(--tag-text);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
}

.song-card.performer-xixi .performer-badge,
.quick-facet.performer-xixi {
  color: var(--xixi-text);
  background: var(--xixi-soft);
  border-color: var(--xixi-line);
}

.song-card.performer-zhaozhao .performer-badge,
.quick-facet.performer-zhaozhao {
  color: var(--zhaozhao-text);
  background: var(--zhaozhao-soft);
  border-color: var(--zhaozhao-line);
}

.song-card.performer-duo .performer-badge,
.quick-facet.performer-duo {
  color: var(--badge-text);
  background: linear-gradient(135deg, var(--gold-soft), var(--accent-soft));
  border-color: rgba(255, 195, 82, .42);
}

.song-card h3 {
  margin: 15px 0 4px;
  overflow-wrap: anywhere;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: .03em;
}

.song-artist {
  margin-bottom: 9px;
  color: var(--muted);
  font-size: 14px;
}

.song-summary {
  display: -webkit-box;
  min-height: 42px;
  margin-bottom: 12px;
  overflow: hidden;
  color: var(--card-summary);
  font-size: 14px;
  line-height: 1.55;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.tag-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.performance-stamps {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.performance-stamp {
  display: inline-flex;
  min-height: 24px;
  align-items: center;
  justify-content: center;
  padding: 2px 8px;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: .06em;
  white-space: nowrap;
  border: 2px solid currentColor;
  border-radius: 6px 4px 7px 5px;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, currentColor 34%, transparent);
  transform: rotate(-.7deg);
}

.performance-stamp.is-performance {
  color: var(--performance-stamp);
  background: var(--performance-stamp-soft);
}

.performance-stamp.is-cover {
  color: var(--cover-stamp);
  background: var(--cover-stamp-soft);
  transform: rotate(.7deg);
}

.performance-stamp.is-mention {
  color: var(--mention-stamp);
  background: var(--mention-stamp-soft);
  transform: none;
}

.song-card > .performance-stamps {
  margin: -2px 0 10px;
}

.performance-stamps.is-dialog {
  margin: -10px 0 18px;
}

.performance-stamps.is-dialog .performance-stamp {
  min-height: 32px;
  padding: 4px 11px;
  font-size: 14px;
}

.performance-stamps.is-source {
  gap: 4px;
}

.performance-stamps.is-source .performance-stamp {
  min-height: 21px;
  padding: 2px 6px;
  font-size: 11px;
  letter-spacing: .02em;
  border-width: 1px;
  border-radius: 5px 3px 5px 4px;
}

.song-preferences {
  position: relative;
  z-index: 3;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  pointer-events: none;
}

.song-preferences button {
  pointer-events: auto;
}

.song-preferences.is-card {
  padding-top: 10px;
  margin-top: auto;
  border-top: 1px solid var(--line);
}

.song-preferences.is-card .rating-label,
.song-preferences.is-card .rating-value {
  display: none;
}

.song-preferences.is-dialog {
  padding: 14px;
  margin: 20px 0;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 14px;
}

.favorite-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 34px;
  padding: 0 12px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.favorite-button:hover,
.favorite-button:focus-visible {
  color: var(--text);
  border-color: var(--zhaozhao-line);
  transform: translateY(-1px);
}

.favorite-button.is-active {
  color: var(--zhaozhao-text);
  background: var(--zhaozhao-soft);
  border-color: var(--zhaozhao-line);
}

.song-share-button,
.song-play-next-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 34px;
  padding: 0 12px;
  color: var(--facet-text);
  font-size: 13px;
  font-weight: 800;
  background: linear-gradient(135deg, var(--gold-soft), rgba(255, 122, 24, .1));
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.song-share-button:hover,
.song-share-button:focus-visible,
.song-share-button.is-copied {
  color: var(--text);
  background: linear-gradient(135deg, rgba(255, 212, 92, .2), rgba(255, 122, 24, .18));
  border-color: rgba(255, 190, 76, .52);
  transform: translateY(-1px);
}

.song-share-button svg,
.song-play-next-button svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.song-play-next-button {
  color: var(--gold);
  background: var(--surface-strong);
}

.song-play-next-button:hover:not(:disabled),
.song-play-next-button:focus-visible {
  color: var(--text);
  background: var(--gold-soft);
  border-color: rgba(255, 190, 76, .52);
  transform: translateY(-1px);
}

.song-play-next-button:disabled {
  color: var(--dim);
  cursor: not-allowed;
  opacity: .48;
}

.favorite-icon {
  color: #f05c6b;
  font-size: 17px;
  line-height: 1;
}

.rating-control,
.rating-stars {
  display: inline-flex;
  align-items: center;
}

.rating-control {
  gap: 8px;
}

.rating-label,
.rating-value {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
}

.rating-stars {
  gap: 1px;
}

.rating-star {
  display: grid;
  width: 24px;
  height: 28px;
  padding: 0;
  place-items: center;
  color: var(--dim);
  font-size: 19px;
  line-height: 1;
  background: transparent;
  border: 0;
  border-radius: 7px;
  transition: color 140ms ease, background 140ms ease, transform 140ms ease;
}

.rating-star:hover,
.rating-star:focus-visible {
  color: var(--gold);
  background: var(--gold-soft);
  transform: scale(1.08);
}

.rating-star.is-filled {
  color: var(--gold);
  text-shadow: 0 2px 10px rgba(255, 180, 44, .24);
}

.rating-star[aria-checked="true"] {
  color: var(--focus);
  background: var(--gold-soft);
  box-shadow: inset 0 0 0 1px var(--line-strong);
}

html[data-theme="day"] .rating-star {
  color: #b3a18f;
}

html[data-theme="day"] .rating-star.is-filled {
  color: #a13f00;
  text-shadow: none;
}

html[data-theme="day"] .rating-star:hover,
html[data-theme="day"] .rating-star:focus-visible {
  color: #842d00;
  background: rgba(204, 95, 0, .13);
}

html[data-theme="day"] .rating-star[aria-checked="true"] {
  color: #6f2100;
  background: #ffe1aa;
  box-shadow: inset 0 0 0 2px #a44200;
}

.rating-compact {
  display: none;
}

.rating-value[hidden],
.rating-compact[hidden] {
  display: none !important;
}

html[data-view="compact"] .song-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 11px;
}

html[data-view="compact"] .song-card {
  display: grid;
  grid-template-areas:
    "title performer personal"
    "artist meta personal";
  grid-template-columns: minmax(0, 1fr) 90px 32px;
  grid-template-rows: 21px 17px;
  column-gap: 8px;
  row-gap: 3px;
  min-height: 61px;
  padding: 9px 14px 9px 16px;
}

html[data-view="compact"] .song-card.has-performance-status {
  grid-template-areas:
    "title performer status personal"
    "artist meta status personal";
  grid-template-columns: minmax(0, 1fr) 68px 54px 30px;
  column-gap: 4px;
}

html[data-view="compact"] .song-card > .performance-stamps.is-card {
  display: none;
}

html[data-view="compact"] .song-card.has-performance-status > .performance-stamps.is-card {
  display: grid;
  grid-area: status;
  align-self: center;
  gap: 2px;
  margin: 0;
}

html[data-view="compact"] .performance-stamps.is-card .performance-stamp {
  min-height: 18px;
  padding: 1px 3px;
  font-size: 11px;
  letter-spacing: 0;
  border-width: 1px;
  border-radius: 4px 3px 4px 3px;
}

html[data-view="compact"] .card-topline {
  display: contents;
}

html[data-view="compact"] .card-topline > span:first-child {
  grid-area: meta;
  align-self: center;
  justify-self: stretch;
  width: 100%;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: 0;
  text-align: center;
  white-space: nowrap;
}

html[data-view="compact"] .performer-badge {
  grid-area: performer;
  align-self: center;
  justify-self: stretch;
  width: 100%;
  max-width: none;
  padding: 3px 6px;
  overflow: hidden;
  font-size: 12px;
  line-height: 1.15;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

html[data-view="compact"] .song-card h3 {
  grid-area: title;
  align-self: center;
  min-width: 0;
  margin: 0;
  overflow: hidden;
  font-size: 16px;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}

html[data-view="compact"] .song-artist {
  grid-area: artist;
  align-self: center;
  min-width: 0;
  margin: 0;
  overflow: hidden;
  font-size: 12px;
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}

html[data-view="compact"] .song-summary,
html[data-view="compact"] .tag-row {
  display: none;
}

html[data-view="compact"] .song-preferences.is-card {
  display: grid;
  grid-area: personal;
  grid-template-rows: 30px 13px;
  align-self: center;
  justify-items: center;
  gap: 0;
  padding: 0;
  margin: 0;
  border: 0;
}

html[data-view="compact"] .song-preferences.is-card .favorite-button {
  width: 30px;
  min-height: 30px;
  padding: 0;
}

html[data-view="compact"] .song-preferences.is-card .favorite-button [data-favorite-label],
html[data-view="compact"] .song-preferences.is-card .rating-control {
  display: none;
}

html[data-view="compact"] .song-preferences.is-card .rating-compact {
  display: block;
  color: var(--gold);
  font-size: 11px;
  font-weight: 800;
  line-height: 1;
}

.mini-tag {
  max-width: 100%;
  padding: 5px 8px;
  overflow: hidden;
  color: var(--tag-text);
  font-size: 12px;
  line-height: 1;
  text-overflow: ellipsis;
  white-space: nowrap;
  background: var(--surface-soft);
  border-radius: 7px;
}

.empty-state {
  padding: 70px 20px;
  color: var(--muted);
  text-align: center;
  background: rgba(255,255,255,.025);
  border: 1px dashed var(--line-strong);
  border-radius: var(--radius-md);
  margin-top: 18px;
}

.empty-state p {
  margin-bottom: 18px;
  color: var(--text);
  font-size: 18px;
}

.empty-state button {
  padding: 0 20px;
}

.pagination {
  display: grid;
  justify-items: center;
  gap: 17px;
  padding: 24px;
  margin-top: 28px;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
}

.pagination[hidden] {
  display: none;
}

.pagination-main,
.page-numbers,
.pagination-options,
.page-size-control,
.page-jump-form {
  display: flex;
  align-items: center;
}

.pagination-main {
  justify-content: center;
  gap: 8px;
  width: 100%;
}

.page-numbers {
  justify-content: center;
  gap: 6px;
  min-width: 0;
}

.page-nav-button,
.page-number,
.page-jump-form button,
.show-all-button {
  min-width: 42px;
  min-height: 42px;
  padding: 0 12px;
  color: var(--muted);
  background: var(--select-bg);
  border: 1px solid var(--line);
  border-radius: 10px;
  transition: color 160ms ease, border-color 160ms ease, background 160ms ease, transform 160ms ease;
}

.page-nav-button:hover:not(:disabled),
.page-number:hover:not(:disabled),
.page-jump-form button:hover,
.show-all-button:hover {
  color: var(--text);
  border-color: var(--line-strong);
  transform: translateY(-1px);
}

.page-nav-button:disabled,
.page-number:disabled {
  cursor: not-allowed;
  opacity: .42;
}

.page-number.is-active,
.show-all-button.is-active {
  color: var(--active-chip-text);
  font-weight: 800;
  background: linear-gradient(135deg, rgba(255, 212, 92, .25), rgba(255, 122, 24, .29));
  border-color: rgba(255, 195, 82, .58);
}

.page-ellipsis,
.all-pages-indicator {
  display: grid;
  min-width: 28px;
  min-height: 42px;
  place-items: center;
  color: var(--dim);
}

.all-pages-indicator {
  min-width: 92px;
  color: var(--text);
  font-weight: 700;
}

.pagination-options {
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px 16px;
  color: var(--muted);
  font-size: 14px;
}

.page-size-control,
.page-jump-form {
  gap: 7px;
}

.page-size-control select,
.page-jump-form input {
  height: 42px;
  color: var(--text);
  background: var(--select-bg);
  border: 1px solid var(--line);
  border-radius: 10px;
}

.page-size-control select {
  min-width: 74px;
  padding: 0 30px 0 12px;
}

.page-jump-form input {
  width: 70px;
  padding: 0 9px;
  text-align: center;
}

.page-jump-form input:disabled {
  cursor: not-allowed;
  opacity: .5;
}

.page-jump-form button,
.show-all-button {
  min-width: auto;
  padding-inline: 15px;
}

.pagination-status {
  margin: -4px 0 0;
  color: var(--dim);
  font-size: 13px;
}

footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: 20px;
  padding: 28px;
  margin-top: 42px;
  margin-bottom: 24px;
  color: var(--footer-text);
  font-size: 12px;
  background: var(--footer-bg);
  border: 1px solid var(--footer-border);
  border-radius: 20px;
  box-shadow: 0 14px 38px rgba(21, 5, 28, .18);
  -webkit-backdrop-filter: blur(16px) saturate(1.08);
  backdrop-filter: blur(16px) saturate(1.08);
}

footer p {
  margin: 0;
}

footer a {
  color: var(--footer-link);
  text-underline-offset: 3px;
}

footer a:hover {
  color: var(--text);
}

.site-release-meta {
  flex-basis: 100%;
  color: var(--footer-link);
  font-variant-numeric: tabular-nums;
}

.site-release-meta strong {
  color: var(--gold);
}

.visitor-counter strong {
  color: var(--gold);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}

.visitor-today {
  padding: 5px 10px;
  color: var(--footer-link);
  font-weight: 800;
  background: color-mix(in srgb, var(--gold) 11%, transparent);
  border: 1px solid color-mix(in srgb, var(--gold) 24%, transparent);
  border-radius: 999px;
  font-variant-numeric: tabular-nums;
}

.has-mini-player footer {
  margin-bottom: 128px;
}

@media (min-width: 621px) {
  footer {
    /* Reserve the fixed back-to-top control's lower-right footprint. */
    padding-right: 148px;
  }
}

.back-to-top {
  position: fixed;
  right: max(20px, env(safe-area-inset-right));
  bottom: max(20px, env(safe-area-inset-bottom));
  z-index: 35;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 48px;
  padding: 0 16px;
  color: var(--active-chip-text);
  font-size: 13px;
  font-weight: 800;
  background: linear-gradient(135deg, var(--gold), var(--accent));
  border: 1px solid rgba(255, 224, 138, .58);
  border-radius: 999px;
  box-shadow: 0 13px 34px rgba(43, 16, 0, .34);
  transition: transform 160ms ease, box-shadow 160ms ease;
}

.back-to-top[hidden] {
  display: none;
}

.back-to-top:hover {
  transform: translateY(-2px);
  box-shadow: 0 16px 38px rgba(43, 16, 0, .42);
}

.back-to-top svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.events-main {
  padding: 12px 0 58px;
}

.events-portal,
.event-detail-article {
  padding: clamp(22px, 4vw, 46px);
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
  backdrop-filter: blur(8px) saturate(1.05);
}

.events-heading,
.event-section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 28px;
}

.events-heading {
  padding-bottom: 25px;
  border-bottom: 1px solid var(--line);
}

.events-heading h2,
.event-detail-heading h2,
.event-section-heading h3 {
  margin-bottom: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-weight: 600;
  letter-spacing: .035em;
}

.events-heading h2 {
  font-size: clamp(30px, 5vw, 46px);
}

.events-heading > p,
.event-section-heading > p {
  max-width: 520px;
  margin: 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.7;
  text-align: right;
}

.event-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 26px;
}

.event-card {
  min-width: 0;
}

.event-card-button {
  position: relative;
  display: grid;
  grid-template-columns: 116px minmax(0, 1fr) 28px;
  align-items: stretch;
  width: 100%;
  min-height: 238px;
  padding: 0;
  overflow: hidden;
  color: var(--text);
  text-align: left;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 22px;
  box-shadow: var(--card-shadow);
  cursor: pointer;
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.event-card-button::before {
  position: absolute;
  inset: 0 0 auto 0;
  height: 4px;
  content: "";
  background: linear-gradient(90deg, var(--xixi-strong), var(--accent), var(--gold), var(--zhaozhao-strong));
}

.event-card-button:hover {
  border-color: var(--line-strong);
  box-shadow: var(--card-hover-shadow);
  transform: translateY(-4px);
}

.event-ticket-date {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 24px 16px;
  color: var(--text);
  background: linear-gradient(155deg, var(--gold-soft), var(--accent-soft));
  border-right: 1px dashed var(--line-strong);
}

.event-ticket-date small {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .18em;
}

.event-ticket-date strong {
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 31px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: -.035em;
}

.event-card-copy {
  display: flex;
  min-width: 0;
  padding: 26px 20px;
  flex-direction: column;
  align-items: flex-start;
}

.event-card-kicker {
  color: var(--gold);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .12em;
}

.event-card-title {
  margin-top: 15px;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(20px, 2.5vw, 27px);
  font-weight: 600;
  line-height: 1.28;
}

.event-card-edition {
  margin-top: 5px;
  color: var(--muted);
  font-size: 15px;
}

.event-card-count {
  margin-top: 18px;
  color: var(--muted);
  font-size: 13px;
}

.event-card-count b {
  margin-right: 3px;
  color: var(--text);
  font-size: 19px;
}

.event-video-count {
  display: inline-flex;
  align-items: center;
  min-height: 27px;
  padding: 0 10px;
  margin-top: 9px;
  color: var(--highlight-text);
  font-size: 12px;
  font-weight: 800;
  background: linear-gradient(135deg, var(--xixi-soft), var(--zhaozhao-soft));
  border: 1px solid var(--line);
  border-radius: 999px;
}

.event-card-arrow {
  align-self: start;
  padding-top: 25px;
  color: var(--dim);
  font-size: 20px;
}

.event-composition {
  display: block;
  width: 100%;
  margin-top: auto;
  padding-top: 17px;
}

.composition-track {
  display: flex;
  width: 100%;
  height: 6px;
  overflow: hidden;
  background: var(--surface-soft);
  border-radius: 999px;
}

.composition-track span {
  display: block;
  min-width: 3px;
}

.composition-duo {
  background: linear-gradient(90deg, var(--accent), var(--gold));
}

.composition-xixi {
  background: var(--xixi-strong);
}

.composition-zhaozhao {
  background: var(--zhaozhao-strong);
}

.composition-other {
  background: var(--dim);
}

.composition-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  margin-top: 9px;
  color: var(--dim);
  font-size: 12px;
  font-weight: 700;
}

.legend-duo::before,
.legend-xixi::before,
.legend-zhaozhao::before,
.legend-other::before {
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 5px;
  content: "";
  border-radius: 50%;
}

.legend-duo::before { background: var(--accent); }
.legend-xixi::before { background: var(--xixi-strong); }
.legend-zhaozhao::before { background: var(--zhaozhao-strong); }
.legend-other::before { background: var(--dim); }

.event-data-note {
  margin: 22px 2px 0;
  color: var(--dim);
  font-size: 13px;
  line-height: 1.7;
}

.event-detail {
  width: 100%;
}

.event-back-button {
  min-height: 44px;
  padding: 0 16px;
  margin: 0 0 14px;
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  background: var(--surface);
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  cursor: pointer;
}

.event-back-button:hover {
  background: var(--gold-soft);
}

.event-detail-hero {
  position: relative;
  display: grid;
  grid-template-columns: 160px minmax(0, 1fr);
  gap: clamp(24px, 4vw, 48px);
  align-items: center;
  padding-bottom: 36px;
  border-bottom: 1px solid var(--line);
}

.event-detail-date {
  display: flex;
  aspect-ratio: 1;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: var(--text);
  background:
    linear-gradient(var(--card-bg), var(--card-bg)) padding-box,
    linear-gradient(145deg, var(--xixi-strong), var(--gold), var(--zhaozhao-strong)) border-box;
  border: 2px solid transparent;
  border-radius: 50%;
  box-shadow: inset 0 0 0 8px var(--surface-soft);
}

.event-detail-date small {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .2em;
}

.event-detail-date strong {
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 42px;
  font-weight: 600;
  line-height: 1.1;
}

.event-detail-heading h2 {
  font-size: clamp(30px, 5vw, 50px);
  line-height: 1.2;
}

.event-detail-edition {
  margin: 8px 0 0;
  color: var(--gold);
  font-size: 16px;
  font-weight: 800;
}

.event-detail-description {
  max-width: 760px;
  margin: 16px 0 0;
  color: var(--content-text);
  font-size: 16px;
  line-height: 1.8;
}

.event-facts {
  padding: 30px 0;
  border-bottom: 1px solid var(--line);
}

.event-facts-heading {
  margin-bottom: 17px;
}

.event-fact-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}

.event-fact-grid > div {
  min-width: 0;
  padding: 15px 17px;
  background: linear-gradient(145deg, var(--surface-soft), var(--source-bg));
  border: 1px solid var(--source-line);
  border-radius: 14px;
}

.event-fact-grid dt {
  margin-bottom: 6px;
  color: var(--dim);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
}

.event-fact-grid dd {
  margin: 0;
  color: var(--content-text);
  font-size: 14px;
  font-weight: 750;
  line-height: 1.65;
}

.event-source-block {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px 18px;
  align-items: start;
  margin-top: 16px;
}

.event-source-block > strong {
  padding-top: 10px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.3;
}

.event-source-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.event-source-links a {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1px 10px;
  min-width: min(100%, 210px);
  padding: 9px 12px;
  color: var(--source-text);
  text-decoration: none;
  background: var(--source-bg);
  border: 1px solid var(--source-line);
  border-radius: 11px;
  transition: border-color .18s ease, transform .18s ease, background .18s ease;
}

.event-source-links a:hover,
.event-source-links a:focus-visible {
  background: var(--gold-soft);
  border-color: var(--line-strong);
  transform: translateY(-1px);
}

.event-source-links a span {
  overflow: hidden;
  font-size: 13px;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.event-source-links a small {
  grid-column: 1;
  color: var(--dim);
  font-size: 11px;
}

.event-source-links a b {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  font-size: 14px;
}

.event-stats {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 1px;
  padding: 1px;
  margin: 26px 0 0;
  overflow: hidden;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 16px;
}

.event-stats > div {
  min-width: 0;
  padding: 17px;
  background: var(--bg-elevated);
}

.event-stats dt {
  margin-bottom: 7px;
  color: var(--dim);
  font-size: 12px;
  font-weight: 700;
}

.event-stats dd {
  margin: 0;
  color: var(--text);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 28px;
  font-weight: 600;
  line-height: 1.2;
}

.event-stats dd small {
  margin-left: 4px;
  color: var(--muted);
  font-family: inherit;
  font-size: 13px;
}

.event-stats .event-stat-languages {
  overflow: hidden;
  font-family: inherit;
  font-size: 14px;
  line-height: 1.5;
  text-overflow: ellipsis;
}

.event-detail-article > .event-composition {
  padding: 20px 3px 0;
}

.event-videos {
  padding: 34px 0 30px;
  border-bottom: 1px solid var(--line);
}

.event-video-heading {
  margin-bottom: 18px;
}

.event-video-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.event-video-grid.is-single {
  grid-template-columns: minmax(0, 900px);
}

.event-video-card {
  min-width: 0;
  overflow: hidden;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: var(--card-shadow);
}

.event-video-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background:
    radial-gradient(circle at 25% 30%, var(--xixi-soft), transparent 42%),
    radial-gradient(circle at 78% 70%, var(--zhaozhao-soft), transparent 40%),
    var(--surface-strong);
}

.event-video-frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.event-video-caption {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 16px 17px;
}

.event-video-caption > div {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.event-video-caption span {
  color: var(--gold);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .06em;
}

.event-video-caption strong {
  color: var(--text);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.45;
}

.event-video-current {
  color: var(--muted);
  font-size: 12px;
  font-weight: 650;
  line-height: 1.45;
}

.event-video-caption a {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 40px;
  padding: 0 13px;
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid var(--line-strong);
  border-radius: 999px;
}

.event-video-caption a:hover {
  color: var(--highlight-text);
  background: var(--gold-soft);
}

.event-video-caption a span {
  color: inherit;
  font-size: inherit;
  letter-spacing: 0;
}

.event-video-parts {
  border-top: 1px solid var(--line);
}

.event-video-parts summary {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 48px;
  padding: 0 17px;
  color: var(--text);
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
  list-style: none;
  background: var(--surface-soft);
}

.event-video-parts summary::-webkit-details-marker {
  display: none;
}

.event-video-parts summary b {
  margin-left: auto;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.event-video-parts summary::after {
  width: 20px;
  color: var(--gold);
  font-size: 18px;
  font-weight: 500;
  line-height: 1;
  text-align: center;
  content: "+";
}

.event-video-parts[open] summary::after {
  content: "−";
}

.event-video-part-list {
  display: grid;
  gap: 7px;
  max-height: 360px;
  padding: 10px;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-color: var(--line-strong) transparent;
}

.event-video-grid.is-single .event-video-part-list {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.event-video-part {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  min-height: 44px;
  padding: 7px 10px;
  color: var(--muted);
  text-align: left;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 10px;
  transition: color 160ms ease, border-color 160ms ease, background 160ms ease;
}

.event-video-part > span {
  color: var(--gold);
  font-size: 12px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}

.event-video-part strong {
  min-width: 0;
  overflow: hidden;
  color: inherit;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.event-video-part time {
  color: var(--dim);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}

.event-video-part:hover,
.event-video-part:focus-visible {
  color: var(--text);
  background: var(--surface-soft);
  border-color: var(--line-strong);
}

.event-video-part.is-active {
  color: var(--active-chip-text);
  background: linear-gradient(135deg, rgba(255, 212, 92, .2), rgba(255, 122, 24, .22));
  border-color: rgba(255, 195, 82, .52);
}

.event-setlist {
  padding-top: 40px;
}

.event-section-heading {
  align-items: end;
  margin-bottom: 18px;
}

.event-section-heading h3 {
  font-size: clamp(24px, 4vw, 34px);
}

.event-section-heading > p {
  font-size: 13px;
}

.event-song-list {
  display: grid;
  gap: 9px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.event-song-item {
  overflow: hidden;
  background: var(--source-bg);
  border: 1px solid var(--source-line);
  border-left: 4px solid var(--line-strong);
  border-radius: 13px;
}

.event-song-item.performer-xixi { border-left-color: var(--xixi-strong); }
.event-song-item.performer-zhaozhao { border-left-color: var(--zhaozhao-strong); }
.event-song-item.performer-duo { border-left-color: var(--accent); }

.event-song-item a {
  display: grid;
  grid-template-columns: 62px minmax(0, 1fr) auto 22px;
  gap: 13px;
  align-items: center;
  min-height: 76px;
  padding: 12px 17px;
  color: var(--text);
  text-decoration: none;
  transition: background 150ms ease, transform 150ms ease;
}

.event-song-item a:hover {
  background: var(--surface-soft);
}

.event-song-index {
  color: var(--dim);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .06em;
}

.event-song-copy {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.event-song-copy strong {
  overflow: hidden;
  font-size: 17px;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.event-song-copy small {
  overflow: hidden;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.event-song-arrow {
  color: var(--dim);
}

.event-progress-note {
  padding: 21px 23px;
  margin-top: 24px;
  color: var(--content-text);
  background: linear-gradient(135deg, var(--xixi-soft), var(--zhaozhao-soft), var(--gold-soft));
  border: 1px solid var(--line);
  border-radius: 16px;
}

.event-progress-note strong {
  display: block;
  margin-bottom: 7px;
  color: var(--text);
  font-size: 15px;
}

.event-progress-note p {
  margin: 0;
  font-size: 14px;
  line-height: 1.7;
}

.event-empty {
  grid-column: 1 / -1;
  padding: 40px 20px;
  color: var(--muted);
  text-align: center;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 18px;
}

.event-empty p {
  margin-bottom: 5px;
  color: var(--text);
  font-size: 17px;
}

.stats-main {
  padding: 12px 0 58px;
}

.stats-hero {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 28px;
  padding: clamp(22px, 4vw, 42px);
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
  backdrop-filter: blur(8px) saturate(1.05);
}

.stats-hero h2 {
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(30px, 5vw, 52px);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .04em;
}

.stats-hero > p {
  width: min(420px, 100%);
  margin: 0;
  color: var(--content-text);
  font-size: 14px;
  line-height: 1.75;
  text-align: right;
}

.stats-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.stat-number-card {
  position: relative;
  min-width: 0;
  min-height: 138px;
  padding: 22px;
  overflow: hidden;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 20px;
  box-shadow: var(--card-shadow);
}

.stat-number-card::after {
  position: absolute;
  right: -28px;
  bottom: -42px;
  width: 108px;
  height: 108px;
  content: "";
  background: var(--gold-soft);
  border-radius: 50%;
  filter: blur(2px);
}

.stat-number-2::after { background: var(--zhaozhao-soft); }
.stat-number-3::after { background: var(--xixi-soft); }
.stat-number-4::after { background: var(--accent-soft); }

.stat-number-card small {
  display: block;
  margin-bottom: 14px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .08em;
}

.stat-number-card strong {
  position: relative;
  z-index: 1;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(34px, 5vw, 48px);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.stat-number-card > span {
  position: relative;
  z-index: 1;
  margin-left: 7px;
  color: var(--dim);
  font-size: 13px;
}

.stats-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 16px;
}

.stats-layout-featured {
  grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr);
}

.stats-panel {
  min-width: 0;
  padding: clamp(20px, 3vw, 30px);
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: 22px;
  box-shadow: var(--card-shadow);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
  backdrop-filter: blur(8px) saturate(1.05);
}

.stats-panel-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
  padding-bottom: 19px;
  margin-bottom: 22px;
  border-bottom: 1px solid var(--line);
}

.stats-panel-heading h3 {
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(23px, 3vw, 30px);
  font-weight: 600;
}

.stats-panel-heading > p {
  max-width: 250px;
  margin: 0;
  color: var(--dim);
  font-size: 12px;
  line-height: 1.55;
  text-align: right;
}

.stats-heading-actions {
  display: grid;
  justify-items: end;
  gap: 9px;
}

.stats-heading-actions > p {
  max-width: 280px;
  margin: 0;
  color: var(--dim);
  font-size: 12px;
  line-height: 1.55;
  text-align: right;
}

.stat-limit-control {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--dim);
  font-size: 12px;
  font-weight: 750;
}

.stat-limit-control select {
  min-height: 34px;
  padding: 5px 27px 5px 10px;
  color: var(--text);
  font: inherit;
  background: var(--card-bg);
  border: 1px solid var(--line-strong);
  border-radius: 9px;
}

.stat-limit-control select:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
}

.visitor-stats-panel {
  margin-top: 16px;
  overflow: hidden;
}

.visitor-overview {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.visitor-overview > article {
  min-width: 0;
  padding: 18px;
  background: linear-gradient(145deg, var(--surface-soft), var(--gold-soft));
  border: 1px solid var(--line);
  border-radius: 16px;
}

.visitor-overview > article:nth-child(2) {
  background: linear-gradient(145deg, var(--surface-soft), var(--accent-soft));
}

.visitor-overview > article:nth-child(3) {
  background: linear-gradient(145deg, var(--surface-soft), var(--xixi-soft));
}

.visitor-overview > article:nth-child(4) {
  background: linear-gradient(145deg, var(--surface-soft), var(--zhaozhao-soft));
}

.visitor-overview small {
  display: block;
  margin-bottom: 10px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.visitor-overview strong {
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(28px, 4vw, 40px);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.visitor-overview span {
  margin-left: 5px;
  color: var(--dim);
  font-size: 12px;
}

.visitor-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(190px, .8fr) minmax(190px, .8fr);
  gap: 12px;
  margin-top: 18px;
}

.visitor-detail-grid > section {
  min-width: 0;
  padding: 17px;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 16px;
}

.visitor-detail-grid h4 {
  margin: 0 0 15px;
  color: var(--text);
  font-size: 15px;
}

.visitor-detail-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 15px;
}

.visitor-detail-heading h4 {
  margin: 0;
}

.stat-limit-control.compact {
  gap: 5px;
  font-size: 11px;
}

.stat-limit-control.compact select {
  min-height: 30px;
  padding-top: 3px;
  padding-bottom: 3px;
}

.visitor-daily-chart {
  display: flex;
  min-height: 184px;
  gap: 7px;
  align-items: end;
  overflow-x: auto;
  scrollbar-color: var(--line-strong) transparent;
}

.visitor-day {
  display: grid;
  grid-template-rows: 24px 116px 20px;
  flex: 1 0 34px;
  min-width: 34px;
  gap: 4px;
  text-align: center;
}

.visitor-day b,
.visitor-day small {
  color: var(--dim);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
}

.visitor-day b {
  align-self: end;
}

.visitor-day i {
  width: min(22px, 70%);
  height: var(--visitor-bar);
  min-height: 8px;
  margin-inline: auto;
  align-self: end;
  background: linear-gradient(to top, var(--accent), var(--gold));
  border-radius: 7px 7px 3px 3px;
  box-shadow: 0 5px 18px rgba(255, 145, 28, .18);
}

.visitor-ranking {
  display: grid;
  gap: 7px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.visitor-ranking a {
  display: flex;
  min-height: 38px;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 10px;
  color: var(--text);
  text-decoration: none;
  background: var(--card-bg);
  border: 1px solid transparent;
  border-radius: 10px;
}

.visitor-ranking a:hover,
.visitor-ranking a:focus-visible {
  border-color: var(--line-strong);
  transform: translateX(2px);
}

.visitor-ranking span {
  min-width: 0;
  overflow: hidden;
  font-size: 13px;
  font-weight: 750;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.visitor-ranking strong {
  flex: 0 0 auto;
  color: var(--gold);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}

.visitor-empty {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--dim);
  font-size: 13px;
  line-height: 1.7;
}

.visitor-privacy-note {
  margin: 16px 2px 0;
  color: var(--dim);
  font-size: 12px;
  line-height: 1.7;
}

.visitor-privacy-note a {
  color: var(--muted);
  text-underline-offset: 3px;
}

.terms-section {
  scroll-margin-top: 118px;
}

.terms-section.is-target-flash {
  animation: terms-target-flash 1.6s ease-out;
}

@keyframes terms-target-flash {
  0%, 100% {
    background-color: transparent;
    box-shadow: 0 0 0 0 transparent;
  }
  22%, 58% {
    background-color: var(--gold-soft);
    box-shadow: 0 0 0 9px var(--gold-soft), inset 3px 0 0 var(--gold);
  }
}

@media (prefers-reduced-motion: reduce) {
  .terms-section.is-target-flash {
    animation: none;
    background-color: var(--gold-soft);
    box-shadow: 0 0 0 9px var(--gold-soft), inset 3px 0 0 var(--gold);
  }
}

.performer-chart {
  display: grid;
  grid-template-columns: minmax(190px, .78fr) minmax(230px, 1.22fr);
  gap: clamp(22px, 4vw, 42px);
  align-items: center;
}

.performer-donut {
  display: grid;
  width: min(240px, 100%);
  aspect-ratio: 1;
  padding: 22px;
  margin-inline: auto;
  place-items: center;
  background: var(--performer-ring);
  border-radius: 50%;
  box-shadow: 0 16px 40px rgba(0, 0, 0, .18);
}

.performer-donut > div {
  display: grid;
  width: 100%;
  height: 100%;
  place-content: center;
  text-align: center;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 50%;
}

.performer-donut strong {
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(35px, 5vw, 48px);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.performer-donut span {
  margin-top: 8px;
  color: var(--muted);
  font-size: 12px;
}

.performer-legend {
  display: grid;
  gap: 8px;
}

.performer-stat-link {
  display: grid;
  grid-template-columns: 11px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  min-height: 52px;
  padding: 8px 10px;
  color: var(--text);
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid transparent;
  border-radius: 13px;
  transition: border-color 160ms ease, transform 160ms ease, background 160ms ease;
}

.performer-stat-link:hover,
.performer-stat-link:focus-visible {
  background: var(--gold-soft);
  border-color: var(--line-strong);
  transform: translateX(3px);
}

.performer-stat-dot {
  width: 9px;
  height: 28px;
  background: var(--stat-color);
  border-radius: 999px;
}

.performer-stat-link > span:nth-child(2) {
  display: grid;
  gap: 2px;
}

.performer-stat-link strong {
  font-size: 14px;
}

.performer-stat-link small {
  color: var(--dim);
  font-size: 12px;
}

.performer-stat-link > b {
  color: var(--muted);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}

.bar-chart {
  display: grid;
  gap: 13px;
}

.stat-bar-link {
  display: grid;
  gap: 7px;
  color: var(--text);
  text-decoration: none;
}

.stat-bar-label {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  font-size: 14px;
}

.stat-bar-label b {
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}

.stat-bar-track,
.mood-group-button > i,
.mood-term-link > i {
  display: block;
  height: 9px;
  overflow: hidden;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
}

.stat-bar-track i,
.mood-group-button > i > span,
.mood-term-link > i > span {
  display: block;
  width: var(--bar-width);
  height: 100%;
  background: linear-gradient(90deg, var(--gold), var(--accent));
  border-radius: inherit;
  transition: width 240ms ease, filter 160ms ease;
}

.stat-bar-link:hover .stat-bar-track i,
.stat-bar-link:focus-visible .stat-bar-track i {
  filter: brightness(1.2);
}

.source-stats-panel {
  margin-top: 16px;
}

.source-overview {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 18px;
}

.source-overview > article {
  min-width: 0;
  padding: 17px 18px;
  background: linear-gradient(145deg, var(--surface-soft), var(--gold-soft));
  border: 1px solid var(--line);
  border-radius: 15px;
}

.source-overview > article:nth-child(2) {
  background: linear-gradient(145deg, var(--surface-soft), var(--accent-soft));
}

.source-overview > article:nth-child(3) {
  background: linear-gradient(145deg, var(--surface-soft), var(--xixi-soft));
}

.source-overview small {
  display: block;
  margin-bottom: 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.source-overview strong {
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(25px, 4vw, 34px);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.source-overview span {
  margin-left: 5px;
  color: var(--dim);
  font-size: 12px;
}

.source-ranking {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.source-ranking a {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr) auto 18px;
  gap: 10px;
  align-items: center;
  min-height: 66px;
  padding: 9px 11px;
  color: var(--text);
  text-decoration: none;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 14px;
  transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.source-ranking a:hover,
.source-ranking a:focus-visible {
  border-color: var(--line-strong);
  box-shadow: var(--card-hover-shadow);
  transform: translateY(-2px);
}

.source-rank {
  color: var(--dim);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 16px;
  text-align: center;
}

.source-record-copy {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.source-record-copy time {
  color: var(--dim);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}

.source-record-copy strong {
  overflow: hidden;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-record-timestamp-count {
  color: var(--accent);
  font-size: 10px;
  font-weight: 800;
}

.source-record-count {
  display: flex;
  align-items: baseline;
  gap: 3px;
  color: var(--gold);
  white-space: nowrap;
}

.source-record-count strong {
  font-size: 17px;
  font-variant-numeric: tabular-nums;
}

.source-record-count small,
.source-record-arrow {
  color: var(--dim);
  font-size: 11px;
}

.mood-stats-panel,
.ranking-panel {
  margin-top: 16px;
}

.mood-group-chart {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
}

.mood-group-button {
  display: grid;
  gap: 12px;
  min-height: 84px;
  padding: 14px;
  color: var(--text);
  text-align: left;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 15px;
  transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.mood-group-button:hover,
.mood-group-button:focus-visible,
.mood-group-button.is-active {
  border-color: var(--line-strong);
  box-shadow: var(--card-shadow);
  transform: translateY(-2px);
}

.mood-group-button.is-active {
  background: linear-gradient(135deg, var(--gold-soft), var(--accent-soft));
}

.mood-group-button > span,
.mood-term-link > span {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}

.mood-group-button strong {
  font-size: 14px;
}

.mood-group-button b,
.mood-term-link b {
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.mood-detail {
  padding: 22px;
  margin-top: 14px;
  background: linear-gradient(145deg, var(--surface-soft), var(--source-bg));
  border: 1px solid var(--line-strong);
  border-radius: 17px;
}

.mood-detail > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}

.mood-detail small {
  color: var(--dim);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
}

.mood-detail h4 {
  margin: 3px 0 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 23px;
  font-weight: 600;
}

.mood-detail > header > a,
.personal-filter-link,
.personal-empty a {
  color: var(--gold);
  font-size: 13px;
  font-weight: 800;
  text-decoration: none;
}

.mood-term-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.mood-term-link {
  display: grid;
  gap: 9px;
  min-width: 0;
  padding: 11px;
  color: var(--text);
  text-decoration: none;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 12px;
}

.mood-term-link:hover,
.mood-term-link:focus-visible {
  border-color: var(--line-strong);
}

.mood-term-link strong {
  overflow: hidden;
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mood-term-link > i {
  height: 6px;
}

.mood-term-link > i > span {
  background: linear-gradient(90deg, var(--xixi-strong), var(--zhaozhao-strong));
}

.top-song-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.top-song-link {
  position: relative;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto 20px;
  gap: 11px;
  align-items: center;
  min-height: 78px;
  padding: 11px 13px;
  overflow: hidden;
  color: var(--text);
  text-decoration: none;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 15px;
  transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.top-song-link::before {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 3px;
  content: "";
  background: var(--dim);
}

.top-song-link.performer-xixi::before { background: var(--xixi-strong); }
.top-song-link.performer-zhaozhao::before { background: var(--zhaozhao-strong); }
.top-song-link.performer-duo::before { background: linear-gradient(var(--gold), var(--accent)); }

.top-song-link:hover,
.top-song-link:focus-visible {
  border-color: var(--line-strong);
  box-shadow: var(--card-hover-shadow);
  transform: translateY(-2px);
}

.top-song-rank {
  color: var(--dim);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 19px;
  text-align: center;
}

.top-song-copy {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.top-song-copy strong,
.top-song-copy small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.top-song-copy strong { font-size: 15px; }
.top-song-copy small { color: var(--muted); font-size: 12px; }

.top-song-count {
  display: grid;
  text-align: right;
}

.top-song-count strong {
  color: var(--gold);
  font-size: 20px;
  font-variant-numeric: tabular-nums;
}

.top-song-count small { color: var(--dim); font-size: 11px; }
.top-song-arrow { color: var(--dim); }

.personal-stat-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.personal-stat-grid article {
  min-height: 95px;
  padding: 15px;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 14px;
}

.personal-stat-grid small {
  display: block;
  margin-bottom: 10px;
  color: var(--dim);
  font-size: 12px;
}

.personal-stat-grid strong {
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 29px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.personal-stat-grid span {
  margin-left: 5px;
  color: var(--muted);
  font-size: 12px;
}

.personal-insight,
.personal-empty {
  padding: 17px;
  margin-top: 10px;
  color: var(--content-text);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 14px;
}

.personal-insight p,
.personal-empty p {
  margin-bottom: 11px;
  font-size: 14px;
  line-height: 1.6;
}

.personal-top-rated {
  display: grid;
  gap: 6px;
  padding: 13px 0;
  margin-bottom: 12px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.personal-top-rated > small {
  margin-bottom: 2px;
  color: var(--dim);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
}

.personal-top-rated a {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: var(--text);
  font-size: 13px;
  text-decoration: none;
}

.personal-top-rated b {
  color: var(--gold);
  font-size: 11px;
  letter-spacing: 0;
  white-space: nowrap;
}

.personal-empty span {
  display: block;
  margin-bottom: 14px;
  color: var(--dim);
  font-size: 12px;
  line-height: 1.65;
}

.stats-data-note {
  margin: 18px 3px 0;
  color: var(--dim);
  font-size: 12px;
  line-height: 1.65;
}

.stats-error {
  margin-top: 18px;
}

.stats-error a {
  color: var(--gold);
}

.missing-main {
  padding: 12px 0 58px;
}

.missing-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: clamp(24px, 5vw, 68px);
  align-items: center;
  padding: clamp(24px, 4vw, 44px);
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
  backdrop-filter: blur(8px) saturate(1.05);
}

.missing-hero h2 {
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(31px, 5vw, 52px);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .04em;
}

.missing-hero > div:first-child > p:last-child {
  max-width: 650px;
  margin: 13px 0 0;
  color: var(--content-text);
  font-size: 14px;
  line-height: 1.75;
}

.missing-hero-count {
  position: relative;
  display: grid;
  width: 176px;
  min-height: 138px;
  padding: 22px;
  overflow: hidden;
  place-content: center;
  text-align: center;
  background: linear-gradient(145deg, var(--gold-soft), var(--accent-soft));
  border: 1px solid var(--line-strong);
  border-radius: 22px;
}

.missing-hero-count::after {
  position: absolute;
  right: -22px;
  bottom: -40px;
  width: 105px;
  height: 105px;
  content: "";
  background: linear-gradient(135deg, var(--xixi-soft), var(--zhaozhao-soft));
  border-radius: 50%;
}

.missing-hero-count strong {
  position: relative;
  z-index: 1;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 45px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.missing-count-value {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 5px;
}

.missing-count-value span {
  color: var(--text);
  font-size: 17px;
  font-weight: 800;
}

.missing-hero-count > span {
  position: relative;
  z-index: 1;
  margin-top: 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.missing-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.missing-summary-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  min-height: 92px;
  padding: 17px 19px;
  color: var(--text);
  text-align: left;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 17px;
  box-shadow: var(--card-shadow);
  transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.missing-summary-card:hover,
.missing-summary-card:focus-visible,
.missing-summary-card.is-active {
  border-color: var(--line-strong);
  box-shadow: var(--card-hover-shadow);
  transform: translateY(-2px);
}

.missing-summary-card.is-active {
  background: linear-gradient(135deg, var(--gold-soft), var(--accent-soft));
}

.missing-summary-card.is-complete {
  opacity: .74;
}

.missing-summary-card > span {
  display: grid;
  min-width: 0;
  gap: 5px;
}

.missing-summary-card strong {
  font-size: 15px;
}

.missing-summary-card small {
  overflow: hidden;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.missing-summary-card > b {
  color: var(--gold);
  font-size: 14px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.missing-summary-card.is-complete > b {
  color: var(--muted);
  font-size: 12px;
}

.missing-workspace {
  padding: clamp(22px, 4vw, 36px);
  margin-top: 16px;
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
  backdrop-filter: blur(8px) saturate(1.05);
}

.missing-workspace-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid var(--line);
}

.missing-workspace-heading h3 {
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(24px, 3vw, 31px);
  font-weight: 600;
}

.missing-workspace-heading > p {
  max-width: 370px;
  margin: 0;
  color: var(--dim);
  font-size: 12px;
  line-height: 1.65;
  text-align: right;
}

.missing-categories {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  padding: 18px 0;
}

.missing-category {
  display: inline-flex;
  align-items: center;
  min-height: 39px;
  gap: 8px;
  padding: 7px 12px;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  transition: color 150ms ease, background 150ms ease, border-color 150ms ease;
}

.missing-category:hover,
.missing-category:focus-visible,
.missing-category.is-active {
  color: var(--text);
  background: var(--gold-soft);
  border-color: var(--line-strong);
}

.missing-category b {
  min-width: 24px;
  padding: 2px 7px;
  color: var(--gold);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  text-align: center;
  background: var(--source-bg);
  border-radius: 999px;
}

.missing-toolbar {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) auto minmax(165px, auto);
  gap: 10px;
  align-items: center;
}

.missing-search {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  gap: 9px;
  align-items: center;
  min-height: 50px;
  padding: 0 14px;
  background: var(--search-bg);
  border: 1px solid var(--line);
  border-radius: 14px;
}

.missing-search:focus-within {
  border-color: var(--line-strong);
  box-shadow: 0 0 0 3px var(--gold-soft);
}

.missing-search svg {
  fill: none;
  stroke: var(--dim);
  stroke-width: 1.7;
  stroke-linecap: round;
}

.missing-search input {
  min-width: 0;
  height: 46px;
  padding: 0;
  color: var(--input-text);
  caret-color: var(--input-caret);
  background: transparent;
  border: 0;
  outline: 0;
}

.missing-search input::placeholder {
  color: var(--input-placeholder);
  opacity: 1;
}

.missing-search input::-webkit-search-cancel-button {
  display: none;
}

.missing-search button {
  width: 30px;
  height: 30px;
  padding: 0;
  color: var(--muted);
  font-size: 23px;
  line-height: 1;
  background: transparent;
  border: 0;
  border-radius: 50%;
}

.missing-search button:hover {
  color: var(--text);
  background: var(--surface-soft);
}

.missing-sort-label {
  color: var(--dim);
  font-size: 12px;
  font-weight: 800;
}

.missing-toolbar select {
  min-height: 50px;
  padding: 0 36px 0 13px;
  color: var(--input-text);
  background: var(--select-bg);
  border: 1px solid var(--line);
  border-radius: 13px;
}

.missing-status {
  margin: 17px 2px 11px;
  color: var(--muted);
  font-size: 13px;
}

.missing-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.missing-card {
  position: relative;
  display: grid;
  grid-template-rows: auto auto 1fr auto;
  gap: 13px;
  min-width: 0;
  min-height: 226px;
  padding: 17px 18px 15px;
  overflow: hidden;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 17px;
  box-shadow: var(--card-shadow);
  transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.missing-card::before {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 4px;
  content: "";
  background: var(--dim);
}

.missing-card.performer-xixi::before { background: var(--xixi-strong); }
.missing-card.performer-zhaozhao::before { background: var(--zhaozhao-strong); }
.missing-card.performer-duo::before { background: linear-gradient(var(--gold), var(--accent)); }

.missing-card:hover {
  border-color: var(--line-strong);
  box-shadow: var(--card-hover-shadow);
  transform: translateY(-2px);
}

.missing-card > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.missing-song-id {
  color: var(--dim);
  font-size: 12px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  letter-spacing: .08em;
}

.missing-card .performer-badge {
  font-size: 11px;
}

.missing-card-copy {
  min-width: 0;
}

.missing-card-copy h4 {
  overflow: hidden;
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.missing-card-copy p {
  overflow: hidden;
  margin: 5px 0 0;
  color: var(--muted);
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.missing-issue-list {
  display: flex;
  flex-wrap: wrap;
  align-content: start;
  gap: 6px;
}

.missing-issue-chip {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 4px 9px;
  color: var(--tag-text);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.35;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
}

.missing-issue-chip.is-focused {
  color: var(--badge-text);
  background: var(--gold-soft);
  border-color: var(--line-strong);
}

.missing-card-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 7px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.missing-card-actions a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 39px;
  gap: 8px;
  padding: 7px 10px;
  color: var(--text);
  font-size: 12px;
  font-weight: 800;
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 11px;
}

.missing-card-actions a:hover,
.missing-card-actions a:focus-visible {
  background: var(--gold-soft);
  border-color: var(--line-strong);
}

.missing-card-actions .missing-report-link {
  color: var(--gold);
}

.missing-empty {
  display: grid;
  min-height: 180px;
  margin-top: 11px;
  place-content: center;
  text-align: center;
  background: var(--surface-soft);
  border: 1px dashed var(--line-strong);
  border-radius: 17px;
}

.missing-empty[hidden] {
  display: none;
}

.missing-empty strong {
  font-size: 17px;
}

.missing-empty span {
  margin-top: 7px;
  color: var(--muted);
  font-size: 12px;
}

.missing-load-more {
  display: block;
  min-width: 210px;
  min-height: 45px;
  padding: 9px 18px;
  margin: 17px auto 0;
  color: var(--text);
  font-size: 13px;
  font-weight: 800;
  background: var(--surface-soft);
  border: 1px solid var(--line-strong);
  border-radius: 999px;
}

.missing-load-more:hover {
  background: var(--gold-soft);
}

.missing-load-more[hidden] {
  display: none;
}

.terms-main {
  padding: 12px 0 52px;
}

.terms-card {
  width: min(860px, 100%);
  padding: clamp(26px, 5vw, 58px);
  margin-inline: auto;
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  -webkit-backdrop-filter: blur(8px) saturate(1.05);
  backdrop-filter: blur(8px) saturate(1.05);
}

.terms-heading {
  padding-bottom: 24px;
  margin-bottom: 30px;
  border-bottom: 1px solid var(--line);
}

.terms-heading h2 {
  margin-bottom: 10px;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(30px, 6vw, 46px);
  font-weight: 600;
  letter-spacing: .04em;
}

.terms-updated {
  margin: 0;
  color: var(--dim);
  font-size: 14px;
}

.terms-intro {
  margin-bottom: 30px;
  color: var(--content-text);
  font-size: 17px;
  line-height: 1.85;
}

.terms-toc {
  padding: 20px;
  margin: 0 0 34px;
  background: var(--surface-soft);
  border: 1px solid var(--line-strong);
  border-radius: 20px;
}

.terms-toc-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
  padding-bottom: 15px;
  margin-bottom: 14px;
  border-bottom: 1px solid var(--line);
}

.terms-toc-heading .eyebrow {
  margin-bottom: 4px;
}

.terms-toc-heading h3 {
  margin: 0;
  color: var(--text);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 22px;
  font-weight: 650;
}

.terms-toc-heading > p {
  margin: 0 0 2px;
  color: var(--dim);
  font-size: 13px;
  font-weight: 700;
}

.terms-toc ol {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.terms-toc a {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 46px;
  padding: 8px 12px 8px 9px;
  color: var(--content-text);
  font-size: 14px;
  font-weight: 750;
  line-height: 1.45;
  text-decoration: none;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 13px;
}

.terms-toc a > span {
  display: inline-flex;
  flex: 0 0 28px;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  color: var(--gold);
  font-size: 12px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
  background: var(--gold-soft);
  border: 1px solid var(--line-strong);
  border-radius: 50%;
}

.terms-toc a:hover,
.terms-toc a:focus-visible {
  color: var(--text);
  background: var(--gold-soft);
  border-color: var(--gold);
}

.terms-section + .terms-section {
  padding-top: 24px;
  margin-top: 24px;
  border-top: 1px solid var(--line);
}

.terms-section h3 {
  margin-bottom: 12px;
  color: var(--text);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 21px;
  font-weight: 600;
}

.terms-section p,
.terms-section li {
  color: var(--content-text);
  font-size: 16px;
  line-height: 1.85;
}

.terms-section p:last-child {
  margin-bottom: 0;
}

.terms-section ul {
  display: grid;
  gap: 7px;
  padding-left: 1.4em;
  margin: 0;
}

.terms-section a {
  color: var(--gold);
  font-weight: 700;
  text-underline-offset: 3px;
}

.terms-section a:hover,
.terms-section a:focus-visible {
  color: var(--text);
}

.terms-back-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 16px;
  color: var(--text);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid var(--line-strong);
  border-radius: 999px;
}

.terms-back-link:hover {
  background: var(--gold-soft);
}

.updates-main {
  display: grid;
  gap: 18px;
  padding: 12px 0 52px;
}

.updates-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: clamp(24px, 5vw, 72px);
  align-items: end;
  padding: clamp(28px, 5vw, 54px);
  overflow: hidden;
  background:
    radial-gradient(circle at 92% 12%, rgba(255, 197, 72, .2), transparent 32%),
    linear-gradient(135deg, var(--workspace-bg), var(--surface-soft));
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}

.updates-hero h2 {
  margin: 6px 0 14px;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(32px, 6vw, 52px);
  font-weight: 600;
  letter-spacing: .04em;
}

.updates-hero > div > p:last-child {
  max-width: 720px;
  margin: 0;
  color: var(--content-text);
  font-size: 16px;
  line-height: 1.8;
}

.updates-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(105px, 1fr));
  gap: 9px;
  margin: 0;
}

.updates-summary div {
  min-width: 112px;
  padding: 15px 16px;
  text-align: center;
  background: var(--surface-strong);
  border: 1px solid var(--line);
  border-radius: 15px;
}

.updates-summary dt {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.updates-summary dd {
  margin: 5px 0 0;
  color: var(--gold);
  font-size: 18px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
}

.updates-jump,
.updates-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 12px 14px;
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: 16px;
}

.updates-jump span {
  margin-right: 3px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.updates-jump a {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 14px;
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
}

.updates-jump a:hover,
.updates-jump a:focus-visible {
  color: var(--gold);
  border-color: var(--line-strong);
}

.updates-legend {
  justify-content: flex-end;
  padding-block: 10px;
}

.update-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 58px;
  min-height: 28px;
  padding: 4px 10px;
  font-size: 12px;
  font-weight: 900;
  line-height: 1;
  border: 1px solid transparent;
  border-radius: 999px;
}

.tag-feature {
  color: #3d1b00;
  background: #ffd27a;
  border-color: #c87400;
}

.tag-data {
  color: #2d0d4b;
  background: #d7b7ff;
  border-color: #7c3bb1;
}

.tag-interface {
  color: #4e0816;
  background: #ffb4c1;
  border-color: #be3450;
}

.tag-fix {
  color: #05394d;
  background: #a9e5fa;
  border-color: #2181a4;
}

.tag-privacy {
  color: #0b3a1c;
  background: #bceec8;
  border-color: #2c8f4d;
}

.updates-timeline {
  display: grid;
  gap: 22px;
}

.updates-day {
  overflow: hidden;
  scroll-margin-top: 90px;
  background: var(--workspace-bg);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-soft);
}

.updates-day-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 24px;
  background: linear-gradient(135deg, rgba(255, 202, 82, .12), rgba(145, 70, 207, .08));
  border-bottom: 1px solid var(--line);
}

.updates-day-heading time {
  color: var(--text);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(23px, 4vw, 30px);
  font-weight: 600;
}

.updates-day-heading > span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  white-space: nowrap;
}

.updates-list {
  padding: 0;
  margin: 0;
  list-style: none;
}

.updates-list li {
  position: relative;
  display: grid;
  grid-template-columns: 72px 52px 48px minmax(0, 1fr);
  gap: 13px;
  align-items: start;
  padding: 18px 24px;
}

.updates-list li + li {
  border-top: 1px solid var(--line);
}

.updates-list li::before {
  position: absolute;
  top: 24px;
  left: 15px;
  width: 5px;
  height: 5px;
  content: "";
  background: var(--gold);
  border-radius: 50%;
  box-shadow: 0 0 0 4px rgba(255, 187, 56, .1);
}

.updates-list p {
  margin: 0;
  color: var(--content-text);
  font-size: 15px;
  line-height: 1.75;
}

.update-time {
  align-self: center;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 28px;
  white-space: nowrap;
}

.update-version {
  align-self: center;
  justify-self: start;
  min-width: 42px;
  padding: 4px 8px;
  color: var(--text);
  font-size: 12px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
  line-height: 18px;
  text-align: center;
  background: color-mix(in srgb, var(--gold) 18%, var(--panel));
  border: 1px solid color-mix(in srgb, var(--gold) 42%, var(--line));
  border-radius: 999px;
  white-space: nowrap;
}

#siteViewRoot {
  display: contents;
}

body.is-route-loading #siteViewRoot {
  pointer-events: none;
  opacity: .72;
}

.route-announcer {
  position: fixed;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.updates-list strong {
  margin-right: .55em;
  color: var(--text);
  font-size: 16px;
}

.tutorial-dialog {
  position: fixed;
  inset: 0;
  width: 100vw;
  max-width: none;
  height: 100dvh;
  max-height: none;
  padding: 0;
  margin: 0;
  overflow: hidden;
  color: var(--text);
  background: var(--dialog-backdrop);
  border: 0;
  transition: background 180ms ease;
}

.tutorial-dialog.has-target {
  background: transparent;
}

.tutorial-dialog::backdrop {
  background: transparent;
}

.tutorial-spotlight {
  position: fixed;
  z-index: 1;
  pointer-events: none;
  border: 2px solid var(--gold);
  border-radius: 20px;
  box-shadow:
    0 0 0 4px rgba(255, 190, 76, .2),
    0 0 0 120vmax var(--dialog-backdrop);
  transition: top 220ms ease, left 220ms ease, width 220ms ease, height 220ms ease;
}

.tutorial-card {
  position: fixed;
  z-index: 2;
  width: min(430px, calc(100vw - 24px));
  max-height: calc(100dvh - 24px);
  padding: 24px;
  overflow-y: auto;
  visibility: hidden;
  background: var(--bg-elevated);
  border: 1px solid var(--line-strong);
  border-radius: 22px;
  box-shadow: 0 28px 90px rgba(0, 0, 0, .5);
  -webkit-backdrop-filter: blur(20px) saturate(1.08);
  backdrop-filter: blur(20px) saturate(1.08);
}

.tutorial-card.is-centered {
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.tutorial-close {
  position: absolute;
  top: 14px;
  right: 14px;
  display: grid;
  width: 40px;
  height: 40px;
  padding: 0;
  place-items: center;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 50%;
}

.tutorial-close:hover,
.tutorial-close:focus-visible {
  color: var(--text);
  border-color: var(--line-strong);
}

.tutorial-close svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
}

.tutorial-progress-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 48px;
  padding-right: 35px;
  margin-bottom: 10px;
}

.tutorial-kicker,
.tutorial-count {
  margin: 0;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .12em;
}

.tutorial-kicker {
  color: var(--accent);
}

.tutorial-count {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.tutorial-dots {
  display: flex;
  gap: 6px;
  margin-bottom: 20px;
}

.tutorial-dots span {
  width: 22px;
  height: 4px;
  background: var(--line-strong);
  border-radius: 999px;
  transition: width 180ms ease, background 180ms ease;
}

.tutorial-dots span.is-active {
  width: 36px;
  background: linear-gradient(90deg, var(--gold), var(--accent));
}

.tutorial-card h2 {
  padding-right: 20px;
  margin-bottom: 12px;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(24px, 4vw, 30px);
  font-weight: 600;
  line-height: 1.35;
}

.tutorial-description {
  margin-bottom: 24px;
  color: var(--content-text);
  font-size: 16px;
  line-height: 1.75;
}

.tutorial-actions,
.tutorial-actions > div {
  display: flex;
  align-items: center;
  gap: 8px;
}

.tutorial-actions {
  justify-content: space-between;
}

.tutorial-actions button {
  min-height: 43px;
  padding: 0 15px;
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  border-radius: 999px;
}

.tutorial-skip,
.tutorial-previous {
  background: var(--surface-soft);
  border: 1px solid var(--line);
}

.tutorial-skip {
  color: var(--muted) !important;
}

.tutorial-next {
  color: var(--focus-contrast) !important;
  background: linear-gradient(135deg, var(--gold), var(--accent));
  border: 1px solid transparent;
  box-shadow: 0 9px 24px rgba(255, 122, 24, .2);
}

.tutorial-actions button:hover,
.tutorial-actions button:focus-visible {
  transform: translateY(-1px);
}

.song-dialog {
  width: min(720px, calc(100% - 26px));
  max-height: min(880px, calc(100dvh - 34px));
  padding: 0;
  overflow: hidden;
  color: var(--text);
  background: var(--bg-elevated);
  border: 1px solid var(--line-strong);
  border-radius: 24px;
  box-shadow: 0 30px 100px rgba(0,0,0,.62);
}

.song-dialog::backdrop {
  background: var(--dialog-backdrop);
  backdrop-filter: blur(7px);
}

.playback-queue-dialog {
  width: min(590px, calc(100% - 26px));
  max-height: min(760px, calc(100dvh - 34px));
  padding: 0;
  overflow: hidden;
  color: var(--text);
  background: var(--bg-elevated);
  border: 1px solid var(--line-strong);
  border-radius: 24px;
  box-shadow: 0 30px 100px rgba(0, 0, 0, .62);
}

.playback-queue-dialog::backdrop {
  background: var(--dialog-backdrop);
  backdrop-filter: blur(7px);
}

.song-context-menu {
  position: fixed;
  z-index: 90;
  inset: auto;
  display: grid;
  width: min(246px, calc(100vw - 16px));
  padding: 7px;
  margin: 0;
  color: var(--text);
  background: color-mix(in srgb, var(--bg-elevated) 96%, transparent);
  border: 1px solid var(--line-strong);
  border-radius: 15px;
  box-shadow: 0 20px 58px rgba(15, 4, 0, .42);
  backdrop-filter: blur(18px) saturate(1.08);
}

.song-context-menu[hidden] {
  display: none;
}

.song-context-title {
  min-width: 0;
  padding: 8px 10px 9px;
  margin: 0 0 4px;
  overflow: hidden;
  color: var(--gold);
  border-bottom: 1px solid var(--line);
  font-size: 12px;
  font-weight: 850;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.song-context-menu > button {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 42px;
  padding: 7px 10px;
  color: var(--text);
  text-align: left;
  background: transparent;
  border: 0;
  border-radius: 9px;
  font-size: 14px;
  font-weight: 750;
}

.song-context-menu > button:hover:not(:disabled),
.song-context-menu > button:focus-visible {
  color: var(--gold);
  background: var(--gold-soft);
}

.song-context-menu > button:disabled {
  color: var(--dim);
  cursor: not-allowed;
  opacity: .46;
}

.song-context-menu > button svg {
  width: 19px;
  height: 19px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.song-card,
.recommendation-item,
.playback-queue-song {
  -webkit-touch-callout: none;
}

.playback-queue-shell {
  display: grid;
  max-height: min(760px, calc(100dvh - 34px));
  grid-template-rows: auto auto auto minmax(0, 1fr);
  padding: clamp(22px, 4vw, 34px);
}

.playback-queue-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.playback-queue-header h2 {
  margin: 3px 0 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(28px, 5vw, 38px);
  font-weight: 600;
  letter-spacing: .04em;
}

.playback-queue-close {
  display: grid;
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  padding: 0;
  place-items: center;
  color: var(--muted);
  background: var(--dialog-close-bg);
  border: 1px solid var(--line);
  border-radius: 50%;
}

.playback-queue-close:hover,
.playback-queue-close:focus-visible {
  color: var(--gold);
  background: var(--gold-soft);
  border-color: var(--line-strong);
}

.playback-queue-close svg,
.playback-queue-remove svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2;
}

.playback-queue-description {
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}

.playback-queue-summary {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 2px 11px;
  color: var(--muted);
  border-bottom: 1px solid var(--line);
  font-size: 12px;
}

.playback-queue-summary strong {
  color: var(--gold);
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}

.playback-queue-list {
  display: grid;
  gap: 7px;
  min-height: 0;
  padding: 10px 3px 2px 0;
  margin: 0;
  overflow-y: auto;
  list-style: none;
  overscroll-behavior: contain;
  scrollbar-color: var(--line-strong) transparent;
}

.playback-queue-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 42px;
  gap: 7px;
  align-items: stretch;
}

.playback-queue-song {
  display: grid;
  grid-template-columns: 31px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  min-width: 0;
  min-height: 62px;
  padding: 9px 12px;
  color: var(--text);
  text-align: left;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 13px;
  transition: color 150ms ease, background 150ms ease, border-color 150ms ease, transform 150ms ease;
}

.playback-queue-song:hover:not(:disabled),
.playback-queue-song:focus-visible {
  color: var(--gold);
  background: var(--gold-soft);
  border-color: var(--line-strong);
  transform: translateX(2px);
}

.playback-queue-item.is-current .playback-queue-song {
  color: var(--text);
  background: linear-gradient(135deg, var(--gold-soft), var(--accent-soft));
  border-color: var(--line-strong);
  cursor: default;
  opacity: 1;
}

.playback-queue-index {
  color: var(--dim);
  font-size: 12px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.playback-queue-song-copy {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.playback-queue-song-copy strong,
.playback-queue-song-copy small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.playback-queue-song-copy strong {
  color: inherit;
  font-size: 14px;
}

.playback-queue-song-copy small {
  color: var(--muted);
  font-size: 11px;
}

.playback-queue-current,
.playback-queue-play-icon {
  color: var(--gold);
  font-size: 11px;
  font-weight: 850;
  white-space: nowrap;
}

.playback-queue-remove {
  display: grid;
  width: 42px;
  min-height: 42px;
  padding: 0;
  place-items: center;
  color: #ff8c9d;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 12px;
}

.playback-queue-remove:hover:not(:disabled),
.playback-queue-remove:focus-visible {
  background: var(--zhaozhao-soft);
  border-color: var(--zhaozhao-line);
}

.playback-queue-remove:disabled {
  color: var(--dim);
  cursor: not-allowed;
  opacity: .35;
}

.playback-queue-remove svg {
  width: 19px;
  height: 19px;
}

.playback-queue-empty {
  padding: 42px 18px;
  margin: 18px 0 0;
  color: var(--muted);
  text-align: center;
  background: var(--surface-soft);
  border: 1px dashed var(--line-strong);
  border-radius: 15px;
}

.dialog-shell {
  position: relative;
  max-height: min(880px, calc(100dvh - 34px));
  padding: clamp(24px, 5vw, 46px);
  overflow-y: auto;
}

.dialog-top-actions {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 8px;
  float: right;
  margin: -8px -8px 0 16px;
}

.dialog-close,
.song-tutorial-button {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  color: var(--muted);
  background: var(--dialog-close-bg);
  border: 1px solid var(--line);
  border-radius: 50%;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.dialog-close:hover,
.dialog-close:focus-visible,
.song-tutorial-button:hover,
.song-tutorial-button:focus-visible {
  color: var(--gold);
  background: var(--gold-soft);
  border-color: var(--line-strong);
  transform: translateY(-1px);
}

.song-tutorial-button svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.dialog-index {
  margin-bottom: 12px;
  color: var(--accent);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
}

.dialog-title {
  margin: 0 0 8px;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(30px, 6vw, 46px);
  font-weight: 600;
  line-height: 1.22;
  letter-spacing: .04em;
}

.dialog-title.song-title-scroll-viewport {
  max-width: calc(100% - 116px);
}

.dialog-artist {
  margin-bottom: 24px;
  color: var(--muted);
  font-size: 16px;
}

.inline-facet {
  min-height: 34px;
  padding: 4px 9px;
  color: var(--facet-text);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 8px;
  text-decoration: underline;
  text-decoration-color: rgba(255, 190, 76, .46);
  text-underline-offset: 4px;
}

.inline-facet:hover {
  color: var(--gold);
  background: var(--gold-soft);
  border-color: rgba(255, 190, 76, .28);
}

.dialog-quick-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding-bottom: 26px;
}

.dialog-quick-meta > .mini-tag {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
}

.dialog-song-navigation {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  padding: 10px;
  margin-bottom: 18px;
  background: linear-gradient(135deg, rgba(255, 212, 92, .08), rgba(255, 122, 24, .06));
  border: 1px solid var(--line);
  border-radius: 15px;
}

.dialog-song-nav-button {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  min-height: 44px;
  padding: 8px 12px;
  color: var(--text);
  background: var(--surface-strong);
  border: 1px solid var(--line);
  border-radius: 11px;
  font-size: 14px;
  font-weight: 700;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.dialog-song-nav-button.is-next {
  justify-content: flex-end;
}

.dialog-song-nav-copy {
  display: grid;
  min-width: 0;
  line-height: 1.2;
  text-align: left;
}

.dialog-song-nav-button.is-next .dialog-song-nav-copy {
  text-align: right;
}

.dialog-song-nav-copy > span,
.dialog-song-nav-copy > strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dialog-song-nav-copy > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.dialog-song-nav-copy > strong {
  margin-top: 3px;
  color: inherit;
  font-size: 13px;
}

.dialog-song-nav-button:hover:not(:disabled),
.dialog-song-nav-button:focus-visible {
  color: var(--gold);
  background: var(--gold-soft);
  border-color: var(--line-strong);
  transform: translateY(-1px);
}

.dialog-song-nav-button:disabled {
  cursor: not-allowed;
  opacity: .34;
}

.dialog-song-nav-button svg {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2;
}

.dialog-song-position {
  display: grid;
  min-width: 72px;
  color: var(--muted);
  line-height: 1.2;
  text-align: center;
}

.dialog-song-position strong {
  color: var(--text);
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}

.dialog-song-position small {
  margin-top: 3px;
  color: var(--dim);
  font-size: 12px;
}

.dialog-queue-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 28px;
  padding: 4px 8px;
  margin-top: 6px;
  color: var(--gold);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
}

.dialog-queue-button:hover,
.dialog-queue-button:focus-visible {
  background: var(--gold-soft);
  border-color: var(--line-strong);
}

.dialog-queue-button svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

button.quick-facet {
  min-height: 32px;
  border: 1px solid rgba(255, 190, 76, .14);
  cursor: pointer;
}

button.quick-facet:hover {
  color: var(--text);
  background: rgba(255, 190, 76, .14);
  border-color: rgba(255, 190, 76, .36);
}

button.quick-facet.performer-xixi:hover {
  color: var(--xixi-text);
  background: linear-gradient(135deg, var(--xixi-soft), rgba(164, 91, 255, .28));
  border-color: var(--xixi-strong);
}

button.quick-facet.performer-zhaozhao:hover {
  color: var(--zhaozhao-text);
  background: linear-gradient(135deg, var(--zhaozhao-soft), rgba(255, 62, 81, .27));
  border-color: var(--zhaozhao-strong);
}

button.quick-facet.performer-duo:hover {
  color: var(--active-chip-text);
  background: linear-gradient(135deg, rgba(255, 212, 92, .3), rgba(255, 122, 24, .34));
  border-color: rgba(255, 154, 39, .68);
}

.dialog-summary {
  position: relative;
  padding: 24px 24px 24px 28px;
  margin-bottom: 28px;
  color: var(--highlight-text);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 18px;
  line-height: 1.9;
  background: linear-gradient(135deg, rgba(255, 212, 92, .1), rgba(255, 122, 24, .09));
  border: 1px solid var(--line);
  border-radius: 15px;
}

.dialog-summary::before {
  position: absolute;
  top: 18px;
  bottom: 18px;
  left: 0;
  width: 3px;
  content: "";
  background: var(--accent);
  border-radius: 0 3px 3px 0;
}

.youtube-player-section {
  margin: 24px 0 28px;
  overflow: hidden;
  background: rgba(0, 0, 0, .24);
  border: 1px solid var(--line);
  border-radius: 16px;
  box-shadow: 0 14px 34px rgba(0, 0, 0, .16);
}

.youtube-player-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 16px;
  background: linear-gradient(135deg, rgba(255, 0, 51, .13), rgba(255, 122, 24, .08));
  border-bottom: 1px solid var(--line);
}

.youtube-player-heading > div {
  min-width: 0;
}

.youtube-player-heading span {
  display: block;
  margin-bottom: 3px;
  color: #ff526e;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
}

.youtube-player-heading h3 {
  margin: 0;
  overflow: hidden;
  color: var(--text);
  font-size: 15px;
  line-height: 1.45;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.youtube-player-heading a {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
}

.youtube-player-heading a:hover {
  color: var(--gold);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.youtube-player-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

.background-playback-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 38px;
  padding: 7px 11px;
  color: var(--muted);
  background: var(--surface-strong);
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  font-size: 13px;
  font-weight: 800;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.background-playback-button:hover,
.background-playback-button:focus-visible {
  color: var(--text);
  transform: translateY(-1px);
}

.background-playback-button.is-active {
  color: var(--focus-contrast);
  background: linear-gradient(135deg, var(--gold), var(--accent));
  border-color: transparent;
}

.background-playback-button svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.background-playback-choice .youtube-player-heading h3 b {
  color: var(--gold);
  font-weight: 800;
}

.background-playback-choice-body {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 18px 16px;
  background: linear-gradient(135deg, rgba(255, 212, 92, .08), rgba(255, 122, 24, .06));
}

.background-playback-choice-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  color: var(--focus-contrast);
  background: linear-gradient(135deg, var(--gold), var(--accent));
  border-radius: 50%;
  box-shadow: 0 9px 24px rgba(255, 122, 24, .22);
}

.background-playback-choice-icon svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.background-playback-choice-body strong {
  display: block;
  margin-bottom: 3px;
  color: var(--text);
  font-size: 16px;
  line-height: 1.45;
}

.background-playback-choice-body p {
  margin: 0;
  color: var(--content-text);
  font-size: 14px;
  line-height: 1.65;
}

.switch-playback-button {
  min-height: 44px;
  padding: 9px 16px;
  color: var(--focus-contrast);
  background: linear-gradient(135deg, var(--gold), var(--accent));
  border: 1px solid transparent;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 900;
  white-space: nowrap;
  box-shadow: 0 9px 24px rgba(255, 122, 24, .2);
  transition: transform 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
}

.switch-playback-button:hover:not(:disabled),
.switch-playback-button:focus-visible {
  transform: translateY(-1px);
  box-shadow: 0 12px 28px rgba(255, 122, 24, .27);
}

.switch-playback-button:disabled {
  cursor: not-allowed;
  opacity: .48;
}

.background-playback-choice .playback-mode-control {
  border-top: 1px solid var(--line);
  border-bottom: 0;
}

.playback-mode-control {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
  padding: 10px 12px;
  background: var(--surface-soft);
  border-bottom: 1px solid var(--line);
}

.playback-mode-button {
  min-height: 40px;
  padding: 7px 10px;
  color: var(--muted);
  background: var(--surface-strong);
  border: 1px solid var(--line);
  border-radius: 10px;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

.playback-mode-button:hover,
.playback-mode-button:focus-visible {
  color: var(--text);
  border-color: var(--line-strong);
  transform: translateY(-1px);
}

.playback-mode-button.is-active {
  color: var(--focus-contrast);
  background: linear-gradient(135deg, var(--gold), var(--accent));
  border-color: transparent;
  box-shadow: 0 7px 18px rgba(255, 122, 24, .18);
}

.youtube-player-frame {
  aspect-ratio: 16 / 9;
  background: #000;
}

.youtube-player-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.mini-player {
  position: fixed;
  right: max(18px, env(safe-area-inset-right));
  bottom: max(18px, env(safe-area-inset-bottom));
  left: max(18px, env(safe-area-inset-left));
  z-index: 36;
  display: grid;
  grid-template-columns: 142px minmax(150px, 1fr) auto;
  gap: 14px;
  align-items: center;
  width: min(890px, calc(100vw - 36px));
  padding: 10px;
  margin: 0 auto;
  color: var(--text);
  background: color-mix(in srgb, var(--surface-strong) 94%, #140600 6%);
  border: 1px solid var(--line-strong);
  border-radius: 18px;
  box-shadow: 0 18px 55px rgba(20, 6, 0, .46);
  backdrop-filter: blur(20px);
}

.mini-player[hidden] {
  display: none;
}

.mini-player-media {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #000;
  border-radius: 11px;
}

.mini-player-media .youtube-player-frame {
  width: 100%;
  height: 100%;
}

.mini-player-media iframe {
  pointer-events: none;
}

.mini-player-song {
  display: grid;
  min-width: 0;
  padding: 5px 0;
  color: inherit;
  text-align: left;
  background: transparent;
  border: 0;
}

.mini-player-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  margin-bottom: 1px;
}

.mini-player-song .mini-player-meta > span {
  flex: 0 0 auto;
  padding: 2px 7px;
  color: var(--gold);
  background: color-mix(in srgb, var(--gold) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--gold) 28%, transparent);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 900;
  line-height: 1.25;
}

.mini-player-meta #miniPlayerStatus {
  min-width: 0;
  margin: 0 0 0 1px;
}

.mini-player-song strong,
.mini-player-song span,
.mini-player-song small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mini-player-song strong {
  display: block;
  width: 100%;
  text-overflow: clip;
  font-size: 16px;
  line-height: 1.45;
}

.song-title-scroll-viewport {
  display: block;
  min-width: 0;
  max-width: 100%;
  overflow: hidden !important;
  text-overflow: clip !important;
  white-space: nowrap !important;
}

.song-title-scroll-track {
  display: inline-flex !important;
  align-items: baseline;
  gap: 36px;
  min-width: max-content;
  max-width: none !important;
  overflow: visible !important;
  padding: 0 !important;
  margin: 0 !important;
  color: inherit !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  line-height: inherit !important;
  text-overflow: clip !important;
  white-space: nowrap !important;
  will-change: transform;
}

.song-title-scroll-copy {
  display: block !important;
  flex: 0 0 auto;
  max-width: none !important;
  overflow: visible !important;
  padding: 0 !important;
  margin: 0 !important;
  color: inherit !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  line-height: inherit !important;
  text-overflow: clip !important;
  white-space: nowrap !important;
}

.is-title-scrolling > .song-title-scroll-track {
  animation: song-title-scroll-left var(--song-title-scroll-duration, 8s) linear infinite;
}

@keyframes song-title-scroll-left {
  from { transform: translateX(0); }
  to { transform: translateX(calc(var(--song-title-scroll-distance, 0px) * -1)); }
}

.mini-player-song span {
  color: var(--content-text);
  font-size: 13px;
  line-height: 1.45;
}

.mini-player-song small {
  margin-top: 2px;
  color: var(--gold);
  font-size: 12px;
  font-weight: 800;
  line-height: 1.4;
}

.mini-player-song .mini-player-next {
  color: var(--content-text);
  font-weight: 700;
}

.mini-player-song .mini-player-next span {
  color: var(--gold);
  font-size: inherit;
  font-weight: 900;
}

.mini-player-controls {
  display: flex;
  align-items: center;
  gap: 6px;
}

.mini-player-controls button,
.mini-player-controls a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  padding: 0;
  color: var(--text);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 12px;
  font-size: 12px;
  font-weight: 900;
  text-decoration: none;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.mini-player-controls button:hover:not(:disabled),
.mini-player-controls button:focus-visible,
.mini-player-controls a:hover,
.mini-player-controls a:focus-visible {
  color: var(--gold);
  border-color: var(--line-strong);
  transform: translateY(-1px);
}

.mini-player-controls button:disabled {
  cursor: not-allowed;
  opacity: .38;
}

.mini-player-controls .is-primary {
  color: var(--focus-contrast);
  background: linear-gradient(135deg, var(--gold), var(--accent));
  border-color: transparent;
}

.mini-player-controls .is-close {
  color: #ff8c9d;
}

.mini-player-controls .mini-player-queue-button {
  color: var(--gold);
}

.mini-player-controls .mini-player-mode {
  flex-direction: column;
  width: 48px;
  color: var(--gold);
  font-size: 11px;
  line-height: 1.08;
  letter-spacing: .04em;
}

.mini-player-controls .mini-player-mode span {
  display: block;
}

.mini-player-controls svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.has-mini-player .back-to-top {
  bottom: calc(max(18px, env(safe-area-inset-bottom)) + 112px);
}

.detail-section {
  padding: 20px 0;
  border-top: 1px solid var(--line);
}

.detail-section h3 {
  margin-bottom: 13px;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: .12em;
}

.detail-section p {
  margin-bottom: 0;
  color: var(--content-text);
  font-size: 15px;
  line-height: 1.75;
  overflow-wrap: anywhere;
}

.related-event-links {
  display: grid;
  gap: 9px;
}

.related-event-links a {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr) auto;
  align-items: center;
  gap: 13px;
  padding: 13px 14px;
  color: var(--source-text);
  background: linear-gradient(135deg, var(--source-bg), var(--gold-soft));
  border: 1px solid var(--source-line);
  border-radius: 12px;
  transition: color 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.related-event-links a:hover,
.related-event-links a:focus-visible {
  color: var(--text);
  border-color: rgba(255, 190, 76, .38);
  transform: translateX(2px);
}

.related-event-links time {
  color: var(--accent);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}

.related-event-links a > span {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.related-event-links strong {
  overflow: hidden;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.related-event-links small {
  color: var(--muted);
  font-size: 12px;
}

.related-event-links b {
  display: inline-flex;
  gap: 6px;
  color: var(--gold);
  font-size: 12px;
  white-space: nowrap;
}

.related-video-links {
  display: grid;
  gap: 9px;
}

.related-video-links a {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  align-items: center;
  gap: 13px;
  min-height: 72px;
  padding: 12px 14px;
  color: var(--source-text);
  text-decoration: none;
  background: linear-gradient(135deg, rgba(251, 114, 153, .1), rgba(0, 174, 236, .08));
  border: 1px solid color-mix(in srgb, var(--line) 70%, #fb7299 30%);
  border-radius: 12px;
  transition: color 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.related-video-links a:hover,
.related-video-links a:focus-visible {
  color: var(--text);
  border-color: rgba(251, 114, 153, .48);
  transform: translateX(2px);
}

.related-video-platform {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  color: #fff;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: -.03em;
  background: linear-gradient(135deg, #fb7299, #00aeec);
  border-radius: 12px;
  box-shadow: 0 7px 18px rgba(251, 114, 153, .2);
}

.related-video-links a > span:nth-child(2) {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.related-video-links strong {
  display: -webkit-box;
  overflow: hidden;
  font-size: 14px;
  line-height: 1.45;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.related-video-links small {
  color: var(--muted);
  font-size: 12px;
}

.related-video-links b {
  display: inline-flex;
  gap: 5px;
  color: #d9547c;
  font-size: 12px;
  white-space: nowrap;
}

.smart-recommendations-section {
  padding-bottom: 4px;
}

.recommendation-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 13px;
}

.recommendation-heading h3 {
  margin-bottom: 0;
}

.recommendation-heading p {
  color: var(--dim);
  font-size: 12px;
  line-height: 1.5;
}

.recommendation-heading > div {
  display: grid;
  gap: 4px;
}

.recommendation-heading > button {
  flex: 0 0 auto;
  min-height: 34px;
  padding: 0 11px;
  color: var(--facet-text);
  font-size: 12px;
  font-weight: 800;
  background: var(--gold-soft);
  border: 1px solid var(--line-strong);
  border-radius: 999px;
}

.recommendation-heading > button:hover,
.recommendation-heading > button:focus-visible {
  color: var(--text);
  border-color: rgba(255, 190, 76, .46);
  transform: translateY(-1px);
}

.recommendation-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}

.recommendation-item {
  position: relative;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) 18px;
  align-items: center;
  gap: 10px;
  min-height: 118px;
  padding: 13px;
  overflow: hidden;
  color: var(--source-text);
  text-align: left;
  background: linear-gradient(145deg, var(--surface-soft), var(--source-bg));
  border: 1px solid var(--line);
  border-radius: 14px;
  transition: color 160ms ease, border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.recommendation-item::before {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 3px;
  content: "";
  background: var(--accent);
}

.recommendation-item.performer-xixi::before { background: var(--xixi-strong); }
.recommendation-item.performer-zhaozhao::before { background: var(--zhaozhao-strong); }
.recommendation-item.performer-duo::before { background: linear-gradient(var(--gold), var(--accent)); }

.recommendation-item:hover,
.recommendation-item:focus-visible {
  color: var(--text);
  border-color: rgba(255, 190, 76, .38);
  box-shadow: 0 10px 26px rgba(0, 0, 0, .12);
  transform: translateY(-2px);
}

.recommendation-index {
  color: var(--accent);
  font-size: 11px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  letter-spacing: .04em;
}

.recommendation-copy {
  display: grid;
  gap: 5px;
  min-width: 0;
}

.recommendation-copy strong {
  overflow: hidden;
  color: var(--text);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 16px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.recommendation-copy small {
  overflow: hidden;
  color: var(--muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.recommendation-reasons {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.recommendation-reasons > span {
  max-width: 100%;
  padding: 3px 6px;
  overflow: hidden;
  color: var(--tag-text);
  font-size: 11px;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
  background: var(--gold-soft);
  border-radius: 999px;
}

.recommendation-arrow {
  color: var(--gold);
  font-size: 17px;
  opacity: .72;
}

.source-list {
  display: grid;
  gap: 8px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.source-list > li {
  min-width: 0;
}

.source-item {
  display: grid;
  grid-template-columns: 12px minmax(0, 1fr) 20px;
  align-items: start;
  gap: 12px;
  width: 100%;
  padding: 12px 14px;
  color: var(--source-text);
  text-align: left;
  font-size: 14px;
  line-height: 1.6;
  background: var(--source-bg);
  border: 1px solid var(--source-line);
  border-radius: 10px;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.source-item.has-date {
  grid-template-columns: 104px minmax(0, 1fr) 20px;
}

.source-item:hover {
  color: var(--text);
  background: rgba(255, 190, 76, .09);
  border-color: rgba(255, 190, 76, .3);
  transform: translateX(2px);
}

.source-item time {
  color: var(--accent);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  letter-spacing: .03em;
}

.source-item-copy {
  display: flex;
  min-width: 0;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 8px;
}

.source-dot {
  width: 6px;
  height: 6px;
  margin-top: .55em;
  background: var(--gold);
  border-radius: 50%;
  box-shadow: 0 0 0 4px var(--gold-soft);
}

.source-search-arrow {
  color: var(--gold);
  font-size: 17px;
  line-height: 1.25;
  opacity: .72;
}

.lyrics-empty p {
  color: var(--dim);
}

.lyrics-section details {
  overflow: hidden;
  background: linear-gradient(135deg, rgba(255, 212, 92, .09), rgba(255, 122, 24, .06));
  border: 1px solid var(--line);
  border-radius: 14px;
}

.lyrics-section summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  min-height: 58px;
  padding: 0 18px;
  color: var(--text);
  font-size: 15px;
  font-weight: 700;
  list-style: none;
  cursor: pointer;
}

.lyrics-section summary::-webkit-details-marker {
  display: none;
}

.lyrics-section summary::after {
  content: "+";
  color: var(--gold);
  font-size: 22px;
  font-weight: 400;
}

.lyrics-section details[open] summary::after {
  content: "−";
}

.lyrics-section summary small {
  margin-left: auto;
  color: var(--dim);
  font-size: 12px;
  font-weight: 400;
}

.lyrics-copy {
  padding: 22px 18px 26px;
  color: var(--lyrics-text);
  font-size: 15px;
  line-height: 2;
  border-top: 1px solid var(--line);
}

.lyrics-note {
  padding: 14px 18px;
  color: var(--dim) !important;
  font-size: 12px !important;
  border-top: 1px solid var(--line);
}

.lyrics-note a {
  color: var(--gold);
  font-weight: 600;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  overflow-wrap: anywhere;
}

.lyrics-note a:hover {
  color: var(--text);
}

.detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin: 26px 0 0;
  overflow: hidden;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 15px;
}

.detail-grid > div {
  min-width: 0;
  padding: 17px;
  background: var(--surface-strong);
}

.detail-grid dt {
  margin-bottom: 8px;
  color: var(--dim);
  font-size: 12px;
}

.detail-grid dd {
  margin: 0;
  color: var(--detail-text);
  font-size: 14px;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.facet-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.facet-button {
  min-height: 34px;
  padding: 5px 10px;
  color: var(--facet-text);
  background: rgba(255, 190, 76, .07);
  border: 1px solid rgba(255, 190, 76, .18);
  border-radius: 999px;
  line-height: 1.35;
  text-align: left;
  transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.facet-button:hover {
  color: var(--text);
  background: linear-gradient(135deg, rgba(255, 212, 92, .18), rgba(255, 122, 24, .16));
  border-color: rgba(255, 190, 76, .42);
  transform: translateY(-1px);
}

.music-actions {
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}

.music-actions h3 {
  margin-bottom: 14px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .08em;
}

.platform-links {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}

.platform-link {
  display: grid;
  width: 52px;
  height: 52px;
  place-items: center;
  color: #fff;
  text-decoration: none;
  background: var(--platform-color, var(--surface-strong));
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 15px;
  box-shadow: 0 8px 22px rgba(0, 0, 0, .13);
  transition: transform 160ms ease, filter 160ms ease, box-shadow 160ms ease;
}

.platform-link:hover {
  filter: brightness(1.08);
  box-shadow: 0 11px 24px rgba(0, 0, 0, .2);
  transform: translateY(-2px);
}

.platform-link svg {
  width: 28px;
  height: 28px;
  fill: currentColor;
  stroke: none;
}

.platform-youtube-music svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
}

.platform-youtube-music .icon-fill {
  fill: currentColor;
  stroke: none;
}

.platform-spotify { --platform-color: #1db954; }
.platform-youtube-music { --platform-color: #ff0033; }
.platform-kkbox { --platform-color: #129db8; }
.platform-apple-music { --platform-color: #fa2d48; }
.platform-netease { --platform-color: #d43c33; }

.platform-monogram,
.platform-note {
  color: inherit;
  font-family: Arial, sans-serif;
  font-size: 24px;
  font-weight: 900;
  line-height: 1;
}

.platform-note {
  font-size: 31px;
}

.song-report-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 52px;
  padding: 0 16px;
  margin-top: 14px;
  color: var(--text);
  font-size: 14px;
  text-decoration: none;
  background: linear-gradient(135deg, rgba(255, 212, 92, .12), rgba(255, 122, 24, .1));
  border: 1px solid var(--line);
  border-radius: 12px;
}

.song-report-link:hover {
  background: linear-gradient(135deg, rgba(255, 212, 92, .2), rgba(255, 122, 24, .17));
  border-color: rgba(255, 190, 76, .54);
}

.song-report-link span:last-child {
  color: var(--gold);
  font-size: 18px;
}

.easter-egg-dialog {
  width: min(620px, calc(100% - 28px));
  max-height: calc(100dvh - 28px);
  padding: 0;
  overflow: hidden;
  color: #fff8f0;
  background: transparent;
  border: 0;
  border-radius: 28px;
  box-shadow: 0 36px 120px rgba(5, 0, 12, .72);
}

.easter-egg-dialog::backdrop {
  background: rgba(7, 0, 12, .78);
  backdrop-filter: blur(10px);
}

.easter-egg-scene {
  position: relative;
  isolation: isolate;
  display: grid;
  min-height: 520px;
  padding: 56px clamp(26px, 7vw, 62px) 44px;
  place-content: center;
  text-align: center;
  background:
    radial-gradient(circle at 18% 18%, rgba(172, 82, 255, .58), transparent 34%),
    radial-gradient(circle at 82% 22%, rgba(255, 50, 77, .58), transparent 35%),
    radial-gradient(circle at 50% 88%, rgba(255, 173, 37, .44), transparent 36%),
    linear-gradient(145deg, #160526, #26040f 52%, #2b1600);
  border: 1px solid rgba(255, 220, 142, .26);
  border-radius: inherit;
}

.easter-egg-scene::before {
  position: absolute;
  inset: 18px;
  z-index: -1;
  content: "";
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 20px;
  box-shadow: inset 0 0 60px rgba(255, 188, 76, .08);
}

.easter-egg-dialog[open] .easter-egg-scene {
  animation: easter-egg-reveal 520ms cubic-bezier(.2, .8, .2, 1) both;
}

.easter-egg-close {
  position: absolute;
  top: 22px;
  right: 22px;
  z-index: 3;
  display: grid;
  width: 42px;
  height: 42px;
  padding: 0;
  place-items: center;
  color: rgba(255, 255, 255, .76);
  background: rgba(17, 3, 20, .42);
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 50%;
  backdrop-filter: blur(8px);
}

.easter-egg-close:hover,
.easter-egg-close:focus-visible {
  color: #fff;
  background: rgba(255, 255, 255, .12);
}

.easter-egg-close svg {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-width: 1.8;
}

.easter-egg-kicker {
  margin: 0 0 12px;
  color: #ffd978;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .22em;
}

.easter-egg-scene h2 {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: .04em;
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(70px, 18vw, 112px);
  font-weight: 700;
  line-height: .98;
  letter-spacing: -.08em;
  filter: drop-shadow(0 12px 28px rgba(0, 0, 0, .35));
}

.easter-egg-scene h2 span:first-child {
  color: #c794ff;
  text-shadow: 0 0 28px rgba(174, 94, 255, .64);
}

.easter-egg-scene h2 span:nth-child(2) {
  color: #ff7e8d;
  text-shadow: 0 0 28px rgba(255, 62, 81, .62);
}

.easter-egg-scene h2 b {
  margin-left: .13em;
  color: #ffd45c;
  font-family: inherit;
  font-size: .43em;
  letter-spacing: -.04em;
  text-shadow: 0 0 26px rgba(255, 184, 52, .78);
  animation: easter-egg-glow 2.4s ease-in-out infinite;
}

.easter-egg-quote {
  min-height: 3.5em;
  margin: 30px 0 8px;
  color: #fffaf3;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(18px, 4vw, 23px);
  font-weight: 600;
  line-height: 1.75;
  text-wrap: balance;
}

.easter-egg-caption {
  margin: 0;
  color: rgba(255, 241, 222, .68);
  font-size: 14px;
  line-height: 1.7;
}

.easter-egg-actions {
  display: flex;
  justify-content: center;
  gap: 10px;
  margin-top: 28px;
}

.easter-egg-actions button {
  min-height: 46px;
  padding: 0 17px;
  color: #fff8ef;
  font-size: 14px;
  font-weight: 800;
  border-radius: 999px;
}

.easter-egg-secondary {
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .2);
}

.easter-egg-primary {
  background: linear-gradient(135deg, #9a4ee8, #df344e 52%, #e98718);
  border: 1px solid rgba(255, 224, 157, .46);
  box-shadow: 0 10px 28px rgba(126, 13, 70, .36);
}

.easter-egg-actions button:hover,
.easter-egg-actions button:focus-visible {
  filter: brightness(1.12);
  transform: translateY(-1px);
}

.easter-egg-sparks {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}

.easter-egg-sparks span {
  position: absolute;
  color: rgba(255, 232, 177, .72);
  font-size: 17px;
  animation: easter-egg-float 4.8s ease-in-out infinite;
}

.easter-egg-sparks span:nth-child(1) { top: 14%; left: 10%; animation-delay: -.4s; }
.easter-egg-sparks span:nth-child(2) { top: 28%; left: 18%; color: rgba(210, 164, 255, .7); animation-delay: -2.1s; }
.easter-egg-sparks span:nth-child(3) { top: 66%; left: 8%; animation-delay: -3.4s; }
.easter-egg-sparks span:nth-child(4) { top: 82%; left: 24%; color: rgba(255, 125, 143, .72); animation-delay: -1.2s; }
.easter-egg-sparks span:nth-child(5) { top: 12%; left: 44%; animation-delay: -2.8s; }
.easter-egg-sparks span:nth-child(6) { top: 78%; left: 48%; color: rgba(255, 206, 102, .74); animation-delay: -.8s; }
.easter-egg-sparks span:nth-child(7) { top: 18%; right: 24%; color: rgba(255, 125, 143, .7); animation-delay: -3.1s; }
.easter-egg-sparks span:nth-child(8) { top: 40%; right: 9%; animation-delay: -1.5s; }
.easter-egg-sparks span:nth-child(9) { top: 70%; right: 14%; color: rgba(210, 164, 255, .72); animation-delay: -2.4s; }
.easter-egg-sparks span:nth-child(10) { top: 86%; right: 30%; animation-delay: -.2s; }
.easter-egg-sparks span:nth-child(11) { top: 34%; left: 5%; color: rgba(255, 125, 143, .68); animation-delay: -3.8s; }
.easter-egg-sparks span:nth-child(12) { top: 9%; right: 8%; color: rgba(210, 164, 255, .7); animation-delay: -1.8s; }

@keyframes easter-egg-reveal {
  from { opacity: 0; transform: scale(.92) translateY(18px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

@keyframes easter-egg-glow {
  50% { opacity: .82; text-shadow: 0 0 38px rgba(255, 184, 52, 1); transform: translateY(-2px); }
}

@keyframes easter-egg-float {
  50% { opacity: .45; transform: translateY(-13px) scale(.78) rotate(24deg); }
}

.skeleton-card {
  display: grid;
  align-content: center;
  gap: 16px;
}

.skeleton-card i {
  display: block;
  height: 15px;
  background: linear-gradient(90deg, var(--skeleton-low), var(--skeleton-high), var(--skeleton-low));
  background-size: 220% 100%;
  border-radius: 6px;
  animation: shimmer 1.4s linear infinite;
}

.skeleton-card i:nth-child(1) { width: 28%; }
.skeleton-card i:nth-child(2) { width: 72%; height: 26px; }
.skeleton-card i:nth-child(3) { width: 92%; }

@keyframes shimmer {
  to { background-position: -220% 0; }
}

.sources-main {
  padding-top: 24px;
}

.sources-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(360px, .8fr);
  gap: 28px;
  align-items: center;
  padding: clamp(24px, 4vw, 38px);
  background: linear-gradient(135deg, var(--card-bg), var(--surface-soft));
  border: 1px solid var(--line);
  border-radius: 24px;
  box-shadow: var(--shadow);
}

.sources-hero h2 {
  margin-bottom: 12px;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(28px, 5vw, 42px);
  font-weight: 600;
  letter-spacing: .04em;
}

.sources-hero > div > p:last-child {
  max-width: 660px;
  margin: 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.8;
}

.sources-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}

.sources-summary > div {
  min-width: 0;
  padding: 16px;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 16px;
}

.sources-summary dt {
  margin-bottom: 8px;
  color: var(--dim);
  font-size: 12px;
  font-weight: 800;
}

.sources-summary dd {
  margin: 0;
  color: var(--text);
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: 26px;
  font-variant-numeric: tabular-nums;
}

.sources-summary dd small {
  margin-left: 4px;
  color: var(--muted);
  font: 700 12px/1 sans-serif;
}

.sources-workspace {
  padding: clamp(16px, 2.7vw, 26px);
  margin-top: 18px;
  background: color-mix(in srgb, var(--bg-elevated) 88%, transparent);
  border: 1px solid var(--line);
  border-radius: 24px;
  box-shadow: var(--shadow);
  backdrop-filter: blur(15px);
}

.sources-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--line);
}

.sources-search {
  display: flex;
  min-width: min(100%, 310px);
  min-height: 46px;
  align-items: center;
  gap: 10px;
  padding: 0 14px;
  color: var(--muted);
  background: var(--card-bg);
  border: 1px solid var(--line-strong);
  border-radius: 13px;
}

.sources-search svg {
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-width: 1.8;
}

.sources-search input {
  min-width: 0;
  width: 100%;
  color: var(--text);
  background: transparent;
  border: 0;
  outline: 0;
  font-size: 14px;
}

.source-filter-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 7px;
}

.source-filter-chips button {
  min-height: 40px;
  padding: 0 13px;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}

.source-filter-chips button:hover,
.source-filter-chips button.is-active {
  color: var(--highlight-text);
  background: var(--gold-soft);
  border-color: var(--line-strong);
}

.source-song-filter {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 11px 14px;
  margin-top: 14px;
  color: var(--muted);
  background: color-mix(in srgb, var(--gold-soft) 72%, var(--card-bg));
  border: 1px solid var(--line-strong);
  border-radius: 13px;
  font-size: 13px;
}

.source-song-filter[hidden] {
  display: none;
}

.source-song-filter span {
  min-width: 0;
}

.source-song-filter strong {
  margin-inline: 4px;
  color: var(--text);
  font-weight: 900;
}

.source-song-filter button {
  flex: 0 0 auto;
  min-height: 34px;
  padding: 0 11px;
  color: var(--text);
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 850;
}

.sources-browser {
  display: grid;
  grid-template-columns: minmax(240px, .34fr) minmax(0, 1fr);
  gap: 16px;
  min-height: 560px;
  margin-top: 18px;
}

.source-directory,
.source-timeline {
  min-width: 0;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 19px;
}

.source-directory {
  display: grid;
  align-content: start;
  grid-template-rows: auto minmax(0, 1fr) auto;
  max-height: 730px;
  overflow: hidden;
}

.source-directory-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding: 17px 17px 13px;
  border-bottom: 1px solid var(--line);
}

.source-directory-heading h3 {
  margin: 0;
  font-size: 16px;
}

.source-directory-heading span {
  color: var(--dim);
  font-size: 11px;
}

.source-directory ol {
  display: grid;
  align-content: start;
  gap: 6px;
  padding: 9px;
  margin: 0;
  overflow-y: auto;
  list-style: none;
  scrollbar-color: var(--line-strong) transparent;
}

.source-directory-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 61px;
  padding: 10px 11px;
  color: var(--text);
  text-align: left;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 12px;
}

.source-directory-item:hover,
.source-directory-item.is-active {
  background: var(--surface-soft);
  border-color: var(--line-strong);
}

.source-directory-item.is-active {
  box-shadow: inset 3px 0 0 var(--gold);
}

.source-directory-copy {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.source-directory-copy small,
.source-directory-copy strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-directory-copy small {
  color: var(--dim);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
}

.source-directory-copy strong {
  font-size: 13px;
}

.source-directory-progress {
  display: inline-flex;
  align-items: baseline;
  padding: 6px 8px;
  color: var(--dim);
  background: var(--surface-soft);
  border-radius: 999px;
  font-size: 10px;
  font-variant-numeric: tabular-nums;
}

.source-directory-progress b {
  color: var(--text);
  font-size: 12px;
}

.source-directory-progress.is-complete b {
  color: var(--gold);
}

.source-directory-progress.is-partial b {
  color: var(--accent);
}

.source-list-empty {
  padding: 18px;
  margin: 0;
  color: var(--dim);
  font-size: 13px;
  text-align: center;
}

.source-timeline {
  padding: clamp(20px, 4vw, 36px);
}

.source-timeline-header {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 18px;
}

.source-timeline-header time {
  display: block;
  margin-bottom: 5px;
  color: var(--muted);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}

.source-timeline-header h2 {
  margin: 0;
  font-family: "Noto Serif TC", "Songti TC", "PMingLiU", serif;
  font-size: clamp(27px, 4vw, 39px);
  font-weight: 600;
  letter-spacing: .03em;
}

.source-timeline-status {
  display: inline-flex;
  min-height: 31px;
  align-items: center;
  padding: 0 10px;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}

.source-timeline-status.is-complete {
  color: var(--highlight-text);
  background: var(--gold-soft);
  border-color: var(--line-strong);
}

.source-timeline-status.is-partial {
  color: var(--accent-text);
  background: var(--accent-soft);
}

.source-completion {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 13px;
  margin-top: 19px;
}

.source-completion > span {
  height: 8px;
  overflow: hidden;
  background: var(--surface-soft);
  border-radius: 999px;
}

.source-completion i {
  display: block;
  width: var(--source-progress);
  height: 100%;
  background: linear-gradient(90deg, var(--gold), var(--accent));
  border-radius: inherit;
}

.source-completion p {
  margin: 0;
  color: var(--dim);
  font-size: 11px;
}

.source-completion strong {
  color: var(--text);
  font-size: 14px;
}

.source-timeline-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 17px 0 22px;
}

.source-timeline-actions a,
.source-timeline-actions button {
  display: inline-flex;
  min-height: 39px;
  align-items: center;
  padding: 0 12px;
  color: var(--text);
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 10px;
  font-size: 12px;
  font-weight: 800;
}

.source-timeline-actions a:hover,
.source-timeline-actions button:hover {
  color: var(--gold);
  border-color: var(--line-strong);
}

.source-video-panel {
  margin: 0 0 22px;
  overflow: hidden;
  background: linear-gradient(145deg, rgba(0, 0, 0, .26), var(--surface-soft));
  border: 1px solid var(--line-strong);
  border-radius: 16px;
  box-shadow: 0 16px 34px rgba(0, 0, 0, .14);
}

.source-video-panel > summary {
  display: flex;
  min-height: 52px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 9px 13px;
  color: var(--text);
  background: linear-gradient(135deg, var(--gold-soft), var(--accent-soft));
  cursor: pointer;
  list-style: none;
}

.source-video-panel > summary::-webkit-details-marker {
  display: none;
}

.source-video-panel > summary > span:first-child {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.source-video-panel > summary small {
  color: var(--dim);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .08em;
}

.source-video-panel > summary strong {
  overflow: hidden;
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-video-toggle {
  flex: 0 0 auto;
  color: var(--gold);
  font-size: 19px;
  transition: transform 160ms ease;
}

.source-video-panel[open] .source-video-toggle {
  transform: rotate(180deg);
}

.source-video-frame {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #050505;
  border-block: 1px solid var(--line);
}

.source-video-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.source-video-footer {
  display: flex;
  min-height: 45px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 12px;
}

.source-video-status {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.source-video-status p {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  color: var(--dim);
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-video-status > small {
  color: var(--dim);
  font-size: 10px;
  line-height: 1.35;
}

.source-video-footer strong {
  color: var(--text);
  font-size: 12px;
}

.source-video-footer a {
  display: inline-flex;
  flex: 0 0 auto;
  min-height: 31px;
  align-items: center;
  gap: 5px;
  padding: 0 9px;
  color: var(--gold);
  text-decoration: none;
  background: var(--gold-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
}

.source-video-footer a:hover,
.source-video-footer a:focus-visible {
  border-color: var(--line-strong);
}

.source-part-groups {
  display: grid;
  gap: 17px;
}

.source-pending-group {
  padding-top: 17px;
  margin-top: 17px;
  border-top: 1px solid var(--line);
}

.source-pending-list {
  display: grid;
  gap: 7px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.source-pending-list .source-occurrence-song {
  grid-template-columns: 48px minmax(0, 1fr) 17px;
}

.source-pending-list .source-occurrence-index {
  color: var(--gold);
  font-weight: 850;
}

.source-part-group {
  padding-top: 17px;
  border-top: 1px solid var(--line);
}

.source-part-heading {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.source-part-heading h3 {
  margin: 0;
  font-size: 16px;
}

.source-part-heading span {
  color: var(--dim);
  font-size: 11px;
}

.source-occurrence-list {
  display: grid;
  gap: 7px;
  padding: 0;
  margin: 0;
  list-style: none;
}

.source-occurrence-list > li {
  display: grid;
  grid-template-columns: 84px minmax(0, 1fr);
  gap: 8px;
}

.source-occurrence-time,
.source-occurrence-song {
  min-height: 58px;
  color: var(--text);
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 12px;
}

.source-occurrence-time {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: var(--gold);
  font-size: 14px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}

.source-occurrence-time:hover,
.source-occurrence-song:hover {
  border-color: var(--line-strong);
  transform: translateX(2px);
}

.source-occurrence-time.is-active {
  color: var(--highlight-text);
  background: linear-gradient(135deg, var(--gold-soft), var(--accent-soft));
  border-color: var(--line-strong);
  box-shadow: inset 3px 0 0 var(--gold);
}

.source-occurrence-time.is-unlinked {
  display: grid;
  gap: 1px;
  place-content: center;
  color: var(--dim);
}

.source-occurrence-time.is-unlinked small {
  font-size: 9px;
}

.source-occurrence-song {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) 17px;
  align-items: center;
  gap: 10px;
  min-width: 0;
  padding: 8px 11px;
}

.source-occurrence-index {
  color: var(--dim);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.source-occurrence-song > span:nth-child(2) {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.source-occurrence-title {
  display: flex;
  min-width: 0;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
}

.source-occurrence-title strong {
  min-width: 0;
}

.source-occurrence-title .performance-stamps {
  flex: 0 0 auto;
}

.source-occurrence-song strong,
.source-occurrence-song small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-occurrence-song strong {
  font-size: 14px;
}

.source-occurrence-song small {
  color: var(--muted);
  font-size: 10px;
}

.source-occurrence-song > b {
  color: var(--dim);
}

.source-timeline-empty {
  display: grid;
  min-height: 300px;
  place-content: center;
  color: var(--dim);
  text-align: center;
}

.source-timeline-empty.is-inline {
  min-height: 230px;
  margin-top: 20px;
  background: var(--surface-soft);
  border: 1px dashed var(--line-strong);
  border-radius: 15px;
}

.source-timeline-empty p {
  margin-bottom: 5px;
  color: var(--muted);
  font-size: 14px;
}

.source-timeline-empty span {
  max-width: 420px;
  font-size: 11px;
  line-height: 1.6;
}

.source-records-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px;
}

.source-records-summary-copy {
  display: grid;
  flex: 1 1 230px;
  gap: 5px;
}

.source-records-summary-copy h3,
.source-records-summary-copy p {
  margin: 0;
}

.source-records-summary-copy p {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 8px;
  color: var(--muted);
  font-size: 13px;
}

.source-records-summary-copy p strong {
  color: var(--text);
  font-size: 18px;
  font-variant-numeric: tabular-nums;
}

.source-records-summary-copy small {
  color: var(--dim);
  font-size: 11px;
  line-height: 1.55;
}

.source-records-summary > a {
  display: inline-flex;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 0 14px;
  color: var(--highlight-text);
  text-decoration: none;
  background: var(--gold-soft);
  border: 1px solid var(--line-strong);
  border-radius: 12px;
  font-size: 12px;
  font-weight: 900;
}

.source-records-summary > a:hover {
  color: var(--gold);
  transform: translateY(-1px);
}

.source-timestamps-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.source-timestamps-heading h3 {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  margin: 0;
}

.source-timestamps-heading h3 small {
  color: var(--dim);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0;
}

.source-timestamps-heading > a,
.source-timeline-more {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  text-decoration: none;
}

.source-timestamps-heading > a:hover,
.source-timeline-more:hover {
  color: var(--gold);
}

.source-timestamp-groups {
  display: grid;
  gap: 7px;
  margin-top: 9px;
}

.source-timestamp-group {
  padding: 10px 11px;
  background: var(--surface-soft);
  border: 1px solid var(--line);
  border-radius: 12px;
}

.source-timestamp-group > header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
}

.source-timestamp-group > header > a {
  display: flex;
  min-width: 0;
  align-items: center;
  flex-wrap: wrap;
  gap: 3px 7px;
  color: var(--text);
  text-decoration: none;
}

.source-timestamp-group > header time {
  color: var(--dim);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
}

.source-timestamp-group > header strong {
  min-width: 0;
  overflow: hidden;
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-timestamp-group .source-timeline-status {
  min-height: 25px;
  padding-inline: 8px;
  font-size: 10px;
}

.source-timestamp-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 7px;
}

.source-timestamp-links {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: wrap;
  gap: 5px;
}

.source-timestamp-links > a,
.source-timestamp-links > span {
  display: inline-flex;
  min-height: 32px;
  align-items: center;
  gap: 5px;
  padding: 0 9px;
  color: var(--gold);
  text-decoration: none;
  background: var(--card-bg);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: 12px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}

.source-timestamp-links > a:hover {
  border-color: var(--line-strong);
  transform: translateY(-1px);
}

.source-timestamp-links small {
  color: var(--muted);
  font-size: 9px;
}

.source-timestamp-links .is-unlinked {
  color: var(--dim);
  border-style: dashed;
}

.source-timestamp-links b {
  font-size: 9px;
}

.source-timeline-more {
  display: inline-flex;
  min-height: 32px;
  align-items: center;
  gap: 5px;
  padding: 0 9px;
  margin-left: auto;
  background: var(--gold-soft);
  border: 1px solid var(--line);
  border-radius: 999px;
  white-space: nowrap;
}

@media (max-width: 920px) {
  .sources-hero,
  .sources-browser {
    grid-template-columns: 1fr;
  }

  .source-directory {
    max-height: 350px;
  }

  .updates-hero {
    grid-template-columns: 1fr;
  }

  .updates-summary {
    width: 100%;
  }

  .missing-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .missing-list {
    grid-template-columns: 1fr;
  }

  .stats-layout,
  .stats-layout-featured {
    grid-template-columns: 1fr;
  }

  .stats-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .visitor-detail-grid {
    grid-template-columns: 1fr;
  }

  .mood-term-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .select-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .reset-button {
    grid-column: auto;
    grid-row: auto;
    width: 100%;
  }

  .song-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  html[data-view="compact"] .song-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .event-grid {
    grid-template-columns: 1fr;
  }

  .event-stats {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .event-stats > div:last-child {
    grid-column: span 2;
  }

  .event-video-grid,
  .event-video-grid.is-single {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 620px) {
  .site-header,
  main,
  footer {
    width: min(100% - 24px, 1220px);
  }

  .site-header {
    width: 100%;
    grid-template-columns: 40px minmax(0, 1fr) auto;
    gap: 6px;
    padding: 9px 8px;
    border-width: 0 0 1px;
    border-radius: 0;
    box-shadow: 0 8px 28px rgba(24, 10, 0, .14);
  }

  .sources-main {
    padding-top: 14px;
  }

  .sources-hero,
  .sources-workspace {
    padding: 18px 14px;
    border-radius: 19px;
  }

  .sources-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .sources-summary > div {
    padding: 13px;
  }

  .sources-toolbar {
    display: grid;
  }

  .sources-search {
    min-width: 0;
    width: 100%;
  }

  .source-filter-chips {
    justify-content: flex-start;
  }

  .source-filter-chips button {
    flex: 1 0 calc(50% - 7px);
  }

  .source-timeline {
    padding: 19px 13px;
  }

  .source-timeline-header {
    display: grid;
  }

  .source-timeline-status {
    justify-self: start;
  }

  .source-video-panel {
    margin-bottom: 17px;
    border-radius: 13px;
  }

  .source-video-panel > summary {
    min-height: 48px;
    padding-inline: 11px;
  }

  .source-video-footer {
    display: grid;
    gap: 7px;
    padding: 9px 10px 10px;
  }

  .source-video-footer a {
    justify-self: start;
    min-height: 34px;
  }

  .source-occurrence-list > li {
    grid-template-columns: 76px minmax(0, 1fr);
  }

  .source-occurrence-song {
    grid-template-columns: 24px minmax(0, 1fr) 14px;
    gap: 7px;
    padding-inline: 8px;
  }

  .source-timestamp-group {
    padding: 9px;
  }

  .source-timestamp-group > header {
    gap: 6px;
  }

  .source-timestamp-group > header > a {
    gap-inline: 6px;
  }

  .source-timestamp-actions {
    gap: 5px;
  }

  .source-timestamp-links > a,
  .source-timestamp-links > span,
  .source-timeline-more {
    min-height: 34px;
  }

  .updates-hero {
    gap: 22px;
    padding: 26px 19px;
    border-radius: 20px;
  }

  .updates-summary {
    grid-template-columns: 1fr;
  }

  .updates-summary div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-width: 0;
    padding: 12px 14px;
    text-align: left;
  }

  .updates-summary dd {
    margin: 0;
  }

  .updates-jump,
  .updates-legend {
    justify-content: flex-start;
  }

  .updates-day-heading {
    padding: 17px 18px;
  }

  .updates-list li {
    grid-template-columns: auto auto minmax(0, 1fr);
    gap: 9px;
    padding: 17px 18px 17px 31px;
  }

  .updates-list li::before {
    top: 27px;
    left: 16px;
  }

  .updates-list .update-tag {
    justify-self: start;
  }

  .updates-list p {
    grid-column: 1 / -1;
  }

  .brand-logo {
    width: 40px;
    height: 40px;
    border-radius: 11px;
  }

  .brand-copy .eyebrow {
    display: none;
  }

  .brand-copy h1 {
    overflow: hidden;
    font-size: clamp(15px, 4.3vw, 18px);
    letter-spacing: .01em;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .brand-copy h1.brand-breadcrumb {
    overflow: visible;
    line-height: 1.3;
    text-overflow: clip;
    white-space: normal;
  }

  .header-actions {
    gap: 4px;
  }

  .archive-meta {
    display: none;
  }

  .header-nav-link {
    width: 42px;
    min-width: 42px;
    min-height: 42px;
    padding: 0;
  }

  .header-nav-link span {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }

  .options-toggle {
    width: 42px;
    min-width: 42px;
    min-height: 42px;
    padding: 0;
  }

  .options-toggle-label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }

  .options-toggle .options-chevron {
    display: none;
  }

  .options-panel {
    top: calc(100% + 9px);
    width: min(340px, calc(100vw - 24px));
    padding: 17px;
    border-radius: 18px;
  }

  .search-workspace {
    scroll-margin-top: 76px;
    padding: 14px;
    border-radius: 20px;
  }

  .search-shell {
    min-height: 56px;
    padding: 0 13px;
  }

  .search-shell input {
    font-size: 16px;
  }

  .filter-block {
    grid-template-columns: 1fr;
  }

  .advanced-filters-toggle {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 6px 10px;
    min-height: 58px;
    padding: 9px 12px;
  }

  .advanced-filters-summary {
    grid-column: 1;
    grid-row: 2;
    text-align: left;
  }

  .advanced-filters-chevron {
    grid-column: 2;
    grid-row: 1 / span 2;
  }

  .advanced-filters-panel {
    padding: 16px 12px 12px;
  }

  .chip-group {
    flex-wrap: nowrap;
    margin-right: -14px;
    padding-right: 14px;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .chip-group::-webkit-scrollbar {
    display: none;
  }

  .filter-chip {
    flex: 0 0 auto;
  }

  .select-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .select-filters label > span {
    font-size: 12px;
  }

  .results-section {
    scroll-margin-top: 76px;
    padding-top: 32px;
  }

  .playlist-panel {
    right: -54px;
  }

  .song-grid {
    grid-template-columns: 1fr;
  }

  html[data-view="compact"] .song-grid {
    grid-template-columns: 1fr;
  }

  .song-card {
    min-height: 210px;
  }

  html[data-view="compact"] .song-card {
    min-height: 61px;
  }

  .pagination {
    gap: 15px;
    padding: 18px 8px;
  }

  .pagination-main {
    gap: 3px;
  }

  .page-numbers {
    gap: 3px;
  }

  .page-nav-button,
  .page-number {
    min-width: 36px;
    min-height: 40px;
    padding-inline: 7px;
  }

  .page-ellipsis {
    min-width: 18px;
  }

  .pagination-options {
    display: grid;
    grid-template-columns: 1fr 1fr;
    width: 100%;
  }

  .page-size-control,
  .page-jump-form {
    justify-content: center;
  }

  .page-size-control {
    grid-column: 1 / -1;
  }

  .page-jump-form {
    grid-column: 1 / -1;
  }

  .show-all-button {
    grid-column: 1 / -1;
    width: 100%;
  }

  footer {
    display: grid;
    padding: 22px 20px;
    border-radius: 17px;
  }

  .has-mini-player footer {
    margin-bottom: 166px;
  }

  .visitor-overview {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .visitor-overview > article {
    padding: 15px;
  }

  .visitor-daily-chart {
    min-height: 172px;
  }

  .back-to-top {
    right: max(14px, env(safe-area-inset-right));
    bottom: max(14px, env(safe-area-inset-bottom));
    width: 48px;
    min-width: 48px;
    height: 48px;
    min-height: 48px;
    padding: 0;
  }

  .back-to-top span {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }

  .terms-main {
    padding-top: 18px;
  }

  .stats-main {
    padding-top: 16px;
  }

  .missing-main {
    padding-top: 16px;
  }

  .missing-hero {
    grid-template-columns: 1fr;
    gap: 18px;
    padding: 22px 16px;
    border-radius: 20px;
  }

  .missing-hero-count {
    display: flex;
    width: 100%;
    min-height: 86px;
    align-items: center;
    justify-content: space-between;
    padding: 18px 20px;
    text-align: left;
  }

  .missing-hero-count strong {
    font-size: 37px;
  }

  .missing-hero-count > span {
    margin-top: 0;
  }

  .missing-summary {
    gap: 7px;
  }

  .missing-summary-card {
    grid-template-columns: 1fr;
    gap: 9px;
    min-height: 104px;
    padding: 14px;
  }

  .missing-summary-card small {
    white-space: normal;
  }

  .missing-workspace {
    padding: 20px 15px;
    border-radius: 20px;
  }

  .missing-workspace-heading {
    display: grid;
    gap: 8px;
  }

  .missing-workspace-heading > p {
    max-width: none;
    text-align: left;
  }

  .missing-categories {
    flex-wrap: nowrap;
    margin-right: -15px;
    padding-right: 15px;
    overflow-x: auto;
    scrollbar-width: none;
  }

  .missing-categories::-webkit-scrollbar {
    display: none;
  }

  .missing-category {
    flex: 0 0 auto;
  }

  .missing-toolbar {
    grid-template-columns: 1fr;
  }

  .missing-sort-label {
    margin: 5px 2px -4px;
  }

  .missing-toolbar select {
    width: 100%;
  }

  .missing-card {
    min-height: 218px;
  }

  .stats-hero {
    display: grid;
    gap: 12px;
    padding: 22px 16px;
    border-radius: 20px;
  }

  .stats-hero > p {
    width: auto;
    text-align: left;
  }

  .stats-summary {
    gap: 8px;
  }

  .stat-number-card {
    min-height: 112px;
    padding: 16px;
  }

  .stats-panel {
    padding: 20px 15px;
    border-radius: 18px;
  }

  .stats-panel-heading {
    display: grid;
    gap: 7px;
  }

  .stats-panel-heading > p {
    max-width: none;
    text-align: left;
  }

  .stats-heading-actions {
    justify-items: start;
  }

  .stats-heading-actions > p {
    max-width: none;
    text-align: left;
  }

  .performer-chart {
    grid-template-columns: 1fr;
  }

  .performer-donut {
    width: 210px;
  }

  .mood-group-chart {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .source-overview,
  .source-ranking {
    grid-template-columns: 1fr;
  }

  .mood-detail {
    padding: 16px;
  }

  .mood-detail > header {
    display: grid;
  }

  .mood-term-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .top-song-list {
    grid-template-columns: 1fr;
  }

  .top-song-link {
    grid-template-columns: 38px minmax(0, 1fr) auto 18px;
  }

  .events-main {
    padding-top: 16px;
  }

  .events-portal,
  .event-detail-article {
    padding: 22px 16px;
    border-radius: 20px;
  }

  .events-heading,
  .event-section-heading {
    display: grid;
    gap: 11px;
  }

  .events-heading > p,
  .event-section-heading > p {
    max-width: none;
    text-align: left;
  }

  .event-grid {
    gap: 13px;
    margin-top: 19px;
  }

  .event-card-button {
    grid-template-columns: 84px minmax(0, 1fr) 22px;
    min-height: 224px;
    border-radius: 17px;
  }

  .event-ticket-date {
    padding-inline: 9px;
  }

  .event-ticket-date strong {
    font-size: 24px;
  }

  .event-card-copy {
    padding: 23px 14px;
  }

  .event-card-arrow {
    padding-top: 22px;
    font-size: 17px;
  }

  .event-detail-hero {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .event-detail-date {
    width: 118px;
  }

  .event-detail-date strong {
    font-size: 31px;
  }

  .event-videos {
    padding: 28px 0 25px;
  }

  .event-facts {
    padding: 25px 0;
  }

  .event-fact-grid {
    grid-template-columns: 1fr;
  }

  .event-source-block {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .event-source-block > strong {
    padding-top: 0;
  }

  .event-source-links {
    display: grid;
    grid-template-columns: 1fr;
  }

  .event-source-links a {
    min-width: 0;
  }

  .event-video-caption {
    display: grid;
    gap: 13px;
    padding: 14px;
  }

  .event-video-caption a {
    width: 100%;
  }

  .event-video-grid.is-single .event-video-part-list {
    grid-template-columns: 1fr;
  }

  .event-video-parts summary {
    padding-inline: 14px;
  }

  .event-video-part {
    grid-template-columns: 36px minmax(0, 1fr) auto;
  }

  .event-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .event-stats > div:last-child {
    grid-column: 1 / -1;
  }

  .event-song-item a {
    grid-template-columns: 45px minmax(0, 1fr) 18px;
    gap: 10px;
    min-height: 88px;
    padding: 12px;
  }

  .event-song-index {
    grid-row: 1 / span 2;
  }

  .event-song-item .performer-badge {
    grid-column: 2;
    justify-self: start;
  }

  .event-song-arrow {
    grid-column: 3;
    grid-row: 1 / span 2;
  }

  .terms-card {
    padding: 25px 20px;
    border-radius: 20px;
  }

  .terms-heading {
    margin-bottom: 24px;
  }

  .terms-toc {
    padding: 16px;
    border-radius: 17px;
  }

  .terms-toc-heading {
    display: block;
  }

  .terms-toc-heading > p {
    margin-top: 6px;
  }

  .terms-toc ol {
    grid-template-columns: 1fr;
  }

  .terms-section {
    scroll-margin-top: 76px;
  }

  .song-dialog {
    width: 100%;
    max-width: none;
    max-height: calc(100dvh - 10px);
    margin: auto 0 0;
    border-radius: 22px 22px 0 0;
  }

  .playback-queue-dialog {
    width: 100%;
    max-width: none;
    max-height: calc(100dvh - 10px);
    margin: auto 0 0;
    border-radius: 22px 22px 0 0;
  }

  .playback-queue-shell {
    max-height: calc(100dvh - 10px);
    padding: 22px 15px max(20px, env(safe-area-inset-bottom));
  }

  .playback-queue-description {
    font-size: 12px;
  }

  .playback-queue-song {
    grid-template-columns: 25px minmax(0, 1fr) auto;
    gap: 8px;
    padding: 8px 9px;
  }

  .playback-queue-item {
    grid-template-columns: minmax(0, 1fr) 40px;
  }

  .playback-queue-current {
    font-size: 10px;
  }

  .dialog-shell {
    max-height: calc(100dvh - 10px);
    padding: 24px 19px 34px;
  }

  .dialog-song-navigation {
    gap: 8px;
    padding: 8px;
  }

  .dialog-song-nav-button {
    min-height: 46px;
    padding: 8px 10px;
  }

  .youtube-player-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
  }

  .youtube-player-actions {
    width: 100%;
    align-items: flex-start;
    justify-content: space-between;
  }

  .youtube-player-heading a {
    min-height: 24px;
  }

  .playback-mode-control {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .background-playback-choice-body {
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 11px;
    padding: 16px 13px;
  }

  .background-playback-choice-icon {
    width: 44px;
    height: 44px;
  }

  .switch-playback-button {
    grid-column: 1 / -1;
    width: 100%;
  }

  .mini-player {
    right: max(8px, env(safe-area-inset-right));
    bottom: max(8px, env(safe-area-inset-bottom));
    left: max(8px, env(safe-area-inset-left));
    grid-template-columns: 88px minmax(0, 1fr);
    gap: 8px 11px;
    width: auto;
    padding: 9px;
    border-radius: 16px;
  }

  .mini-player-controls {
    grid-column: 1 / -1;
    justify-content: space-between;
    gap: 4px;
  }

  .mini-player-controls button,
  .mini-player-controls a {
    width: 40px;
    height: 40px;
  }

  .mini-player-controls .mini-player-mode {
    width: 44px;
  }

  .has-mini-player .back-to-top {
    bottom: calc(max(8px, env(safe-area-inset-bottom)) + 148px);
  }

  .detail-grid {
    grid-template-columns: 1fr;
  }

  .platform-links {
    gap: 9px;
  }

  .platform-link {
    width: 48px;
    height: 48px;
    border-radius: 14px;
  }

  .source-item.has-date {
    grid-template-columns: 1fr 20px;
    gap: 4px;
  }

  .source-item.has-date time {
    grid-column: 1;
  }

  .source-item.has-date > span:not(.source-search-arrow) {
    grid-column: 1;
  }

  .source-item.has-date .source-search-arrow {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
  }

  .related-event-links a {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 5px 10px;
  }

  .related-event-links time,
  .related-event-links a > span {
    grid-column: 1;
  }

  .related-event-links b {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
  }

  .related-video-links a {
    grid-template-columns: 40px minmax(0, 1fr);
    gap: 10px;
    padding: 12px;
  }

  .related-video-platform {
    width: 38px;
    height: 38px;
    border-radius: 11px;
  }

  .related-video-links b {
    grid-column: 2;
    justify-self: start;
  }

  .song-preferences.is-dialog {
    align-items: stretch;
  }

  .song-preferences.is-dialog .rating-control {
    width: 100%;
    justify-content: space-between;
    order: 3;
  }

  .recommendation-heading {
    display: grid;
    gap: 4px;
  }

  .recommendation-heading p {
    text-align: left;
  }

  .recommendation-heading > button {
    justify-self: start;
  }

  .recommendation-list {
    grid-template-columns: 1fr;
  }

  .recommendation-item {
    min-height: 104px;
  }

  .easter-egg-dialog {
    width: calc(100% - 18px);
    max-height: calc(100dvh - 18px);
    border-radius: 23px;
  }

  .easter-egg-scene {
    min-height: min(540px, calc(100dvh - 18px));
    padding: 62px 23px 34px;
  }

  .easter-egg-scene::before {
    inset: 11px;
    border-radius: 16px;
  }

  .easter-egg-close {
    top: 17px;
    right: 17px;
  }

  .easter-egg-actions {
    display: grid;
    grid-template-columns: 1fr;
    width: min(280px, 100%);
    margin-inline: auto;
  }
}

@media (max-width: 380px) {
  .mood-group-chart,
  .mood-term-grid {
    grid-template-columns: 1fr;
  }

  .dialog-song-position {
    min-width: 60px;
  }

  .dialog-song-nav-button {
    justify-content: center;
  }

  .dialog-song-nav-copy > span {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }

  .is-title-scrolling > .song-title-scroll-track {
    animation: none !important;
    transform: none !important;
  }
}
