/* Song generator section on the home page. Built from the conversion tool's parts
   (vc-workspace-grid, vc-model-picker, vc-output-side, vc-result, sep-drop, sep-option);
   only what is new is here. The allowance ring and its pop-up come from tool-allowance.css. */

/* Same height as Voice conversion; the inputs and the song list scroll inside it. */
#song-generator .song-grid { height: 573px; }
#song-generator .song-grid > .vc-input-side { min-height: 0; height: 100%; grid-template-rows: minmax(0, 1fr); }
#song-generator .song-card { min-height: 0; height: 100%; margin: 0; overflow-y: auto; overscroll-behavior-y: auto; scrollbar-gutter: stable; align-content: start; grid-auto-rows: max-content; }
#song-generator .song-output { display: flex; flex-direction: column; height: 100%; overflow: hidden; }
#song-generator .song-list { flex: 1; min-height: 0; overflow-y: auto; margin-top: 12px; padding-right: 4px; }
#song-generator .song-list:empty { display: none; }
#song-generator .song-output .vc-output-empty { flex: 1; min-height: 0; }
#song-generator .song-output [hidden] { display: none; }
#song-generator > .suite-tool-body { padding-bottom: 0; }
#song-generator .song-tool-note {
  margin: 0 12px; padding-block: 16px; color: var(--muted);
  font-size: .72rem; font-style: italic; line-height: 1.35; text-align: center;
}
.song-output-title-line { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 10px; }
#song-allowance [hidden] { display: none; }
#song-allowance-signin:not([hidden]) {
  display: flex; align-items: center; justify-content: flex-end; grid-column: 1 / -1;
  min-height: 44px; color: var(--purple-dark); text-decoration: underline; text-underline-offset: .18em;
}
#song-allowance-signin:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; border-radius: 4px; }
.song-filters { display: inline-flex; align-items: center; gap: 2px; padding: 2px; border: 1px solid var(--border); border-radius: 999px; background: var(--soft); }
.song-filters button { border: 0; border-radius: 999px; background: transparent; color: var(--muted); padding: 4px 10px; min-height: 32px; font: inherit; font-size: .76rem; cursor: pointer; }
.song-filters button[aria-pressed="true"] { background: var(--purple-soft); color: var(--purple-dark); font-weight: 650; }
.song-filters button:focus-visible { outline: 2px solid var(--purple); outline-offset: 1px; }

/* + Drop a song for inspiration: a quiet row that opens the drop box, - closes it. */
.song-reveal {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 2px 0;
  border: 0; background: none; color: var(--ink); font: inherit; font-size: .88rem; font-weight: 650;
  text-align: left; cursor: pointer;
}
.song-reveal-sign {
  position: relative; display: inline-block; flex: none; width: 26px; height: 26px;
  border: 0; border-radius: 0; background: transparent;
}
.song-reveal-sign::before, .song-reveal-sign::after {
  content: ""; position: absolute; left: 50%; top: 50%; width: 11px; height: 1.6px; border-radius: 2px;
  background: var(--ink); transform: translate(-50%, -50%); transition: background-color .15s ease, transform .15s ease;
}
.song-reveal-sign::after { transform: translate(-50%, -50%) rotate(90deg); }
.song-reveal[aria-expanded="true"] .song-reveal-sign::after { transform: translate(-50%, -50%) rotate(0deg); }
.song-reveal:hover, .song-reveal:focus-visible { color: var(--purple-dark); }
.song-reveal:hover .song-reveal-sign::before, .song-reveal:hover .song-reveal-sign::after,
.song-reveal:focus-visible .song-reveal-sign::before, .song-reveal:focus-visible .song-reveal-sign::after { background: var(--purple); }
.song-reveal:focus-visible { outline: none; }
.song-reveal:focus-visible .song-reveal-sign { outline: 2px solid var(--purple); outline-offset: 2px; }

.song-inspiration-panel { display: grid; gap: 10px; }
.song-inspiration-panel[hidden] { display: none; }
#song-generator .song-drop { display: grid; justify-items: center; gap: 4px; min-height: 96px; padding: 18px; text-align: center; cursor: pointer; transition: border-color .15s ease, background-color .15s ease; }
#song-generator #song-drop[hidden] { display: none; }
#song-generator .song-drop:hover, #song-generator .song-drop.is-dragging { border-color: var(--purple); background: var(--purple-soft); }
#song-generator .song-drop strong { font-size: .92rem; color: var(--ink); }
#song-generator .song-drop span { color: var(--muted); font-size: .78rem; }
.song-inspiration { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px 10px; }
.song-inspiration[hidden] { display: none; }
.song-inspiration-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; font-size: .84rem; }
.song-inspiration-remove { width: 26px; height: 26px; border: 0; border-radius: 50%; background: transparent; color: var(--muted); font-size: 1.2rem; line-height: 1; cursor: pointer; }
.song-inspiration-remove:hover { background: var(--purple-soft); color: var(--purple-dark); }
.song-consent { grid-column: 1 / -1; font-size: .78rem; color: var(--muted); }
.song-inspiration-status, .song-reference-lyrics p { margin: 0; color: var(--muted); font-size: .8rem; }
.song-reference-lyrics { display: grid; gap: 8px; }
.song-reference-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.song-reference-choices button {
  min-height: 44px; padding: 6px 8px; border: 1px solid var(--border); border-radius: 9px;
  background: #fff; color: var(--ink); font: inherit; font-size: .8rem; font-weight: 600;
  line-height: 1.25; cursor: pointer;
}
.song-reference-choices button:hover, .song-reference-choices button[aria-pressed="true"] {
  border-color: var(--purple); background: var(--purple-soft); color: var(--purple-dark);
}
.song-reference-choices button:focus-visible { outline: 2px solid var(--purple); outline-offset: 2px; }
.song-reference-lyrics[hidden], #song-generator #song-lyrics-mode[hidden],
#song-generator #song-lyrics-mode option[hidden] { display: none; }

/* Fields: the same dropdown as the other tools (sep-option), stacked. */
#song-generator .song-option { display: grid; gap: 6px; }
#song-generator .song-option select { width: 100%; min-width: 0; }
#song-generator .song-option select:focus { outline: 2px solid var(--purple); outline-offset: 1px; }
.song-field { display: grid; gap: 6px; }
.song-lyric-note[hidden] { display: none; }
.song-optional { margin-left: 6px; color: var(--muted); font-size: .68rem; font-weight: 500; text-transform: none; letter-spacing: 0; }
#song-generator .song-card input[type="text"], .song-title-edit {
  width: 100%; padding: 10px 12px; border: 1px solid #e2d6ce; border-radius: 9px; background: #fff;
  color: var(--ink); font: inherit; font-size: .9rem;
}
#song-generator .song-card input[type="text"]:hover { border-color: #d9c6b9; }
#song-generator .song-card input[type="text"]:focus, .song-title-edit:focus { outline: 2px solid var(--purple); outline-offset: 1px; }
.song-title-edit { padding: 5px 9px; font-size: .86rem; font-weight: 600; min-width: 0; flex: 1; }
#song-generator .song-card textarea {
  width: 100%; padding: 10px 12px; border: 1px solid #e2d6ce; border-radius: 9px; background: #fff;
  color: var(--ink); font: inherit; font-size: .9rem; line-height: 1.5; resize: vertical;
}
#song-generator .song-card textarea:hover { border-color: #d9c6b9; }
#song-generator .song-card textarea:focus { outline: 2px solid var(--purple); outline-offset: 1px; }
#song-generator .song-card textarea[hidden], .song-lyrics-file[hidden], .song-error[hidden] { display: none; }
.song-lyrics-editor { display: grid; gap: 6px; min-width: 0; }
.song-lyrics-editor[hidden] { display: none; }
.song-lyrics-heading { display: flex; align-items: center; gap: 8px; }
#song-generator #song-lyrics { min-height: 92px; max-height: 240px; resize: none; overflow-y: auto; }
.song-lyrics-guide { position: relative; display: inline-flex; }
.song-lyrics-help { position: fixed; z-index: 100; box-sizing: border-box; width: min(300px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); overflow: auto; overscroll-behavior: contain; padding: 10px 12px; border: 1px solid #dfd4cc; border-radius: 9px; background: #fffaf6; color: #3c3029; box-shadow: 0 6px 22px #34221620; font: 500 .82rem/1.45 system-ui, sans-serif; }
.song-lyrics-help[hidden] { display: none; }
.song-lyrics-help p { margin: 0; }
.song-lyrics-help details { margin-top: 8px; border-top: 1px solid #ebded5; }
.song-lyrics-help summary { padding-top: 7px; color: #8b3b16; font-weight: 650; cursor: pointer; }
.song-lyrics-help dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 5px 10px; margin: 8px 0; }
.song-lyrics-help dt { font-weight: 650; }
.song-lyrics-help dd { margin: 0; }
.song-lyrics-file { display: block; padding: 10px 12px; border: 1px dashed #e2d6ce; border-radius: 9px; color: var(--muted); font-size: .84rem; cursor: pointer; }
.song-lyrics-file:hover, .song-lyrics-file.is-dragover, .song-lyrics-file:focus-within { border-color: var(--purple); color: var(--purple-dark); background: #fff7f0; }
.song-lyrics-file input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.song-create { width: 100%; }
.song-taste[hidden], .song-taste [hidden] { display: none; }
.song-taste { min-width: 0; border-top: 1px solid var(--border); }
.song-taste-header { display: flex; align-items: center; gap: 5px 12px; }
.song-taste-summary { flex: 1 1 auto; width: auto; min-width: 0; min-height: 44px; color: var(--muted); font-size: .82rem; }
.song-taste-header .song-taste-use { flex: none; }
.song-taste-body { border: 1px solid var(--border); border-radius: 10px; padding: 11px; background: #fff; }
.song-taste-body > p { color: var(--muted); font-size: .78rem; margin: 0; }
.song-taste-use,.song-taste-consent { font-size: .78rem; color: var(--muted); }
.song-taste-use { position: relative; display: flex; width: fit-content; align-items: center; gap: 9px; min-height: 44px; cursor: pointer; color: var(--ink); font-weight: 650; }
.song-taste-use input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.song-taste-switch { position: relative; flex: none; width: 40px; height: 23px; border: 1px solid var(--border); border-radius: 999px; background: var(--soft); }
.song-taste-switch::after { content: ""; position: absolute; top: 3px; left: 3px; width: 15px; height: 15px; border-radius: 50%; background: var(--muted); }
.song-taste-use input:checked + .song-taste-switch { background: var(--purple-dark); border-color: var(--purple-dark); }
.song-taste-use input:checked + .song-taste-switch::after { left: 20px; background: white; }
.song-taste-use input:focus-visible + .song-taste-switch { outline: 2px solid var(--purple); outline-offset: 3px; }
.song-taste-consent { display: flex; margin: 9px 0; }
.song-taste-slots { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 8px; max-width: 570px; }
.song-taste-tile { min-width: 0; position: relative; }
.song-taste-tile button:not(.song-taste-remove), .song-taste-filled {
  box-sizing: border-box; display: flex; flex-direction: column; align-items: center; justify-content: center;
  width: 100%; min-height: 65px; aspect-ratio: 1.27; max-height: 96px; gap: 4px; padding: 6px;
  color: var(--muted); background: var(--soft); border: 1px dashed var(--border); border-radius: 10px; font: inherit;
}
.song-taste-tile button:not(.song-taste-remove) { cursor: pointer; }
.song-taste-tile button:hover,.song-taste-tile button:focus-visible,.song-taste-tile.is-dragging button {
  border-color: var(--purple); color: var(--purple-dark); background: var(--purple-soft); box-shadow: 0 0 10px #e9681826;
}
.song-taste-plus { color: var(--purple-dark); font-size: 1.25rem; line-height: 1; }
.song-taste-tile small,.song-taste-tile strong { max-width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: .69rem; }
.song-taste-filled { border-style: solid; padding: 21px 5px 4px; }
.song-taste-remove { position: absolute; top: 2px; right: 3px; width: 26px; height: 24px; border: 0; background: transparent; border-radius: 6px; color: var(--muted); cursor: pointer; }
.song-taste-status,.song-taste details { margin: 8px 0 0; }
.song-taste details { font-size: .78rem; }
.song-taste details summary { cursor: pointer; color: var(--purple-dark); font-weight: 600; }
.song-taste details p { margin: 6px 0; color: var(--muted); overflow-wrap: anywhere; }
@media (max-width: 430px) { .song-taste-body { padding: 8px; } .song-taste-slots { gap: 4px; } }
.song-error { margin: 0; color: var(--red); font-size: .84rem; }
.song-rap-tip { margin: -4px 0 0; color: var(--muted); font-size: .72rem; font-style: italic; line-height: 1.45; }
.song-rap-tip[hidden], .song-test-voice-row .vc-combo-option[hidden] { display: none; }

/* Results: the conversion tool's result rows, plus the extra actions in its link style. */
.song-like { display: inline-grid; place-items: center; width: 36px; height: 36px; flex: none; padding: 0; border: 1px solid transparent; border-radius: 9px; background: transparent; color: var(--muted); cursor: pointer; }
.song-like svg { width: 19px; height: 19px; }
.song-like[aria-pressed="true"] { color: #cf4663; }
.song-like[aria-pressed="true"] svg { fill: currentColor; }
.song-like:hover,.song-like:focus-visible { color: var(--purple-dark); background: var(--purple-soft); }
.song-like:focus-visible { outline: 2px solid var(--purple); outline-offset: 1px; }
.song-playback-status { grid-column: 1 / -1; color: var(--muted); font-size: .74rem; }
.song-playback-status[hidden] { display: none; }
@media (pointer: coarse) { .song-like { width: 44px; height: 44px; } }
.song-result .vc-result-top { gap: 10px; }
.song-showcase { margin-bottom: 24px; }
.song-showcase .splitter-section-head { margin-bottom: 16px; }
.song-showcase .splitter-section-head h2 { margin: 0; font-size: clamp(1.25rem, 2vw, 1.55rem); }
.song-showcase .vc-workspace-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.song-showcase .vc-output-side { min-height: 0; display: grid; gap: 10px; }
.song-showcase-actions { display: grid; justify-items: center; margin-top: 18px; text-align: center; }
.song-showcase-actions a {
  display: inline-flex; align-items: center; justify-content: center;
  width: auto; max-width: 100%; min-height: 44px; white-space: normal; text-align: center;
}
.song-showcase-signin { color: var(--purple-dark); font-size: .85rem; font-weight: 800; text-decoration: underline; text-underline-offset: 2px; }
.song-showcase-actions a:focus-visible { outline: 2px solid var(--purple-dark); outline-offset: 3px; }
[data-song-guest-offer][hidden] { display: none; }
@media (max-width: 860px) {
  .song-showcase .vc-workspace-grid { grid-template-columns: minmax(0, 1fr); }
}
.song-result .vc-result-top strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.song-result-length { margin-left: auto; color: var(--muted); font-size: .74rem; font-variant-numeric: tabular-nums; }
.song-result-actions { display: flex; flex-wrap: wrap; gap: 0 16px; }
.song-transport { display: flex; align-items: center; justify-content: center; gap: 2px; padding: 0; }
.song-transport button { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 32px; flex: none; padding: 7px 9px; border: 0; border-radius: 4px; background: transparent; color: #c65011; cursor: pointer; transition: none; transform: none; animation: none; }
.song-transport button:hover, .song-transport button:active { background: transparent; color: #c65011; transform: none; }
.song-transport button:focus-visible { outline: 2px solid #c65011; outline-offset: 3px; }
.song-transport button:disabled { opacity: .35; cursor: default; transform: none; }
.song-transport svg { width: 17px; height: 17px; fill: currentColor; stroke: none; transition: none; transform: none; animation: none; }
.song-transport-play[data-playing="true"] .song-icon-play,
.song-transport-play:not([data-playing="true"]) .song-icon-pause { display: none; }
@media (pointer: coarse) { .song-transport button { width: 44px; height: 44px; padding: 13px; } }
@media (prefers-reduced-motion: reduce) { .song-transport button { transition: none; } }
.song-result-actions .vc-download { min-height: 30px; border: 0; background: none; padding: 0; font: inherit; font-size: .78rem; font-weight: 600; color: var(--purple-dark); cursor: pointer; text-decoration: none; }
.song-result .vc-download:hover { color: var(--purple); text-decoration: underline; text-underline-offset: 2px; }
.song-result-actions .song-remove { color: var(--muted); }
.song-result-actions .song-remove:hover { color: var(--red); }
/* Lyrics stay visible as a disclosure below each song; other actions use the menu. */
.song-menu { position: relative; flex: none; }
.song-menu-button {
  display: inline-flex; align-items: center; justify-content: center; gap: 3px; width: 36px; height: 34px;
  border: 1px solid transparent; border-radius: 8px; background: transparent; cursor: pointer;
  transition: border-color .15s ease, background-color .15s ease;
}
.song-menu-button i { width: 4px; height: 4px; border-radius: 50%; background: var(--muted); transition: background-color .15s ease; }
.song-menu-button:hover, .song-menu-button[aria-expanded="true"] { border-color: var(--border); background: #fff; }
.song-menu-button:hover i, .song-menu-button[aria-expanded="true"] i { background: var(--purple); }
.song-menu-button:focus-visible { outline: 2px solid var(--purple); outline-offset: 1px; }
.song-menu-panel {
  position: fixed; z-index: 60; display: grid; min-width: 210px; padding: 6px;
  border: 1px solid var(--border); border-radius: 12px; background: #fff; box-shadow: 0 12px 32px rgba(40, 20, 10, .14);
}
.song-menu-panel[hidden] { display: none; }
.song-menu-panel hr { margin: 5px 4px; border: 0; border-top: 1px solid var(--border); }
.song-menu-item {
  display: block; width: 100%; padding: 8px 10px; border: 0; border-radius: 8px; background: none;
  color: var(--ink); font: inherit; font-size: .84rem; font-weight: 550; text-align: left; cursor: pointer;
}
.song-menu-item:hover, .song-menu-item:focus-visible { background: var(--purple-soft); color: var(--purple-dark); outline: none; }
.song-menu-item:disabled { color: var(--muted); cursor: progress; }
.song-menu-item.is-danger:hover, .song-menu-item.is-danger:focus-visible { background: #fdecea; color: var(--red); }
.song-lyrics-view { white-space: pre-wrap; margin: 0; padding: 10px 12px; border-radius: 9px; background: #fff; border: 1px solid var(--border); color: var(--muted); font: inherit; font-size: .78rem; line-height: 1.55; max-height: 220px; overflow: auto; }
.song-lyrics-view[hidden] { display: none; }
.song-lyric-line { display: block; overflow-wrap: anywhere; }
.song-lyric-word.is-playing { color: #a84311; font-weight: 700; }
.song-lyrics-toggle { width: auto; justify-self: start; gap: 5px; font-size: .78rem; font-weight: 600; color: var(--muted); }
.song-lyrics-toggle .song-reveal-sign { width: 18px; height: 22px; }
.song-working { display: flex; align-items: center; gap: 8px; }
.song-progress { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 12px; }
.song-result.is-early-mix .nv-wave-stage { background: #444145; border-color: #5d565a; }
.song-result.is-early-mix .nv-audio-toggle { background: #6b5146; }
.song-result.is-early-mix .nv-wave-stage .nv-audio-time { background: rgba(36, 31, 35, .78); }
.song-finishing-label { display: inline-flex; align-items: center; gap: 8px; margin: 0; color: #724c39; font-size: .75rem; line-height: 1.35; }
.song-finishing-icon { display: inline-flex; align-items: center; justify-content: center; gap: 2px; width: 21px; height: 21px; flex: none; border-radius: 6px; background: #fff0e5; color: #a65a33; }
.song-finishing-icon i { width: 2px; height: 8px; border-radius: 2px; background: currentColor; animation: song-layers 1.4s ease-in-out infinite alternate; }
.song-finishing-icon i:nth-child(2) { height: 12px; animation-delay: -.55s; }
.song-finishing-icon i:nth-child(3) { height: 6px; animation-delay: -.85s; }
@keyframes song-layers { from { transform: scaleY(.55); } to { transform: scaleY(1); } }
.song-eta { flex: 0 0 auto; margin-inline-start: auto; }
@media (prefers-reduced-motion: reduce) { .song-eta i, .song-finishing-icon i { animation: none; } }
.song-working i { flex: none; width: 14px; height: 14px; border-radius: 50%; border: 2px solid #f1e5dd; border-top-color: var(--purple); animation: song-spin .9s linear infinite; }
@keyframes song-spin { to { transform: rotate(360deg); } }
.song-result.is-failed .vc-result-note { color: var(--red); }

@media (max-width: 860px) {
  #song-generator .song-grid { height: auto; }
  #song-generator .song-grid > .vc-input-side { height: auto; }
  #song-generator .song-card { height: auto; overflow: visible; }
  #song-generator .song-output { height: auto; max-height: 560px; }
}
.song-add-voice[hidden], .song-voice-upload-panel[hidden], #song-voice-dropdown [hidden] { display: none; }
.song-voice-combo { min-width: 0; }
.song-voice-combo .vc-combo-panel { position: static; margin-top: 7px; width: 100%; box-sizing: border-box; padding: 10px; border-radius: 12px; }
.song-voice-combo .vc-combo-panel[hidden] { display: none; }
.song-voice-combo .model-search { width: 100%; box-sizing: border-box; min-height: 40px; }
.song-voice-combo .vc-combo-list { max-height: min(195px, 38dvh); padding: 2px 1px; }
.song-voice-combo .vc-combo-option { display: flex; align-items: center; flex-wrap: wrap; justify-content: space-between; gap: 3px 8px; white-space: normal; overflow-wrap: anywhere; min-height: 38px; line-height: 1.35; }
.song-voice-combo .song-voice-option-name { flex: 1 1 7em; min-width: 0; }
.song-voice-tabs { margin: 10px 0 8px; }
.song-test-voice-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 6px; }
.song-test-voice-row .vc-combo-option { width: 100%; }
.song-test-voice-info { width: 44px; height: 44px; display: grid; place-items: center; border: 0; background: transparent; color: var(--muted); cursor: pointer; border-radius: 8px; }
.song-test-voice-info span { width: 18px; height: 18px; border: 1px solid currentColor; border-radius: 50%; font: 650 .7rem/16px system-ui; text-align: center; }
.song-test-voice-help { margin: 0; padding: 0 8px; max-height: 0; overflow: hidden; opacity: 0; color: var(--muted); font-size: .82rem; line-height: 1.45; }
.song-test-voice-row:has(.song-test-voice-info:is(:hover,:focus-visible,[aria-expanded="true"])) + .song-test-voice-help { max-height: none; padding-block: 6px; opacity: 1; }
.song-voice-combo .vc-model-date { font-size: .68rem; }
.song-voice-combo .song-voice-sorts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.song-voice-sorts .vc-model-sort-label { display: flex; align-items: center; justify-content: space-between; gap: 6px; min-height: 40px; padding: 7px 9px; font-size: .75rem; line-height: 1.25; white-space: normal; }
.song-sort-arrow { flex: none; color: var(--purple-dark); font-size: .9rem; }
.song-add-voice { width: 100%; justify-content: flex-start; gap: 10px; margin: 0 0 8px; min-height: 64px; padding: 11px 12px; border: 1px solid #f0ccb5; border-radius: 9px; background: #fff7f0; color: #a84318; text-align: left; }
.song-add-voice-icon { flex: none; font-size: 1.55rem; line-height: 1; }
.song-add-voice-copy { display: grid; gap: 4px; min-width: 0; }
.song-add-voice-title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; line-height: 1.3; }
.song-add-voice-title strong { font-size: .9rem; font-weight: 650; }
.song-add-voice-free { padding: 2px 6px; border-radius: 4px; background: #f9e2d1; font-size: .66rem; font-weight: 650; }
.song-add-voice-help { color: var(--muted); font-size: .75rem; font-weight: 400; line-height: 1.45; }
.song-add-voice:hover { background: #ffedde; border-color: #dfaa86; }
.song-add-voice:focus-visible { outline: 2px solid currentColor; outline-offset: -2px; }
.song-voice-upload-panel { display: grid; gap: 9px; min-width: 0; padding: 10px; margin-bottom: 7px; border: 1px solid var(--border); border-radius: 10px; }
.song-voice-upload-panel .primary-action { width: 100%; min-height: 44px; }
.song-voice-upload-panel [role="status"], #song-voice-library-status { margin: 0; color: var(--muted); font-size: .8rem; overflow-wrap: anywhere; }
.song-voice-upload-panel [role="status"]:empty, #song-voice-library-status:empty, #song-voice-remove[hidden] { display: none; }
.song-voice-drop { display: grid; justify-items: center; min-width: 0; padding: 12px; }
.song-voice-drop label { display: grid; gap: 4px; justify-items: center; width: 100%; cursor: pointer; }
.song-voice-drop label:focus-visible { outline: 2px solid var(--purple); outline-offset: 3px; }
.song-voice-drop.is-dragging { border-color: var(--purple); background: #fff8f3; }
#song-voice-take { display: grid; gap: 6px; min-width: 0; }
#song-voice-take .input-audio-strip { margin: 0; }
.song-voice-edits { display: flex; flex-wrap: wrap; gap: 6px; }
.song-voice-edits button { min-height: 40px; }
#song-voice-denoise-help { margin: 0; color: var(--muted); font-size: .74rem; }
#song-voice-remove { margin-top: 4px; min-height: 36px; color: var(--muted); }

.song-create-dock { display: contents; }
#song-inspiration-toggle { min-height: 32px; gap: 6px; }
#song-inspiration-toggle .song-reveal-sign { width: 12px; }
@media (max-width: 370px) {
  .song-voice-combo .vc-combo-panel { padding: 8px; }
  .song-voice-sorts .vc-model-sort-label { padding-inline: 7px; }
}
.song-voice-file { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.song-feedback { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; color: var(--muted, #645c54); font-size: .78rem; }
.song-feedback button { font: inherit; color: inherit; min-height: 32px; padding: 4px 10px; border: 1px solid var(--border, #ded8d1); border-radius: 999px; background: transparent; cursor: pointer; }
.song-feedback button:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
.song-feedback-followup { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; width: 100%; }
.song-feedback [hidden] { display: none; }
.song-feedback-followup label { display: grid; gap: 4px; flex-basis: 100%; }
.song-feedback-followup textarea { width: 100%; padding: 7px 9px; border: 1px solid var(--border, #ded8d1); border-radius: 8px; background: #fff; color: var(--ink, #24201c); font: inherit; resize: vertical; }
.song-feedback-followup textarea:focus-visible { outline: 2px solid var(--accent, #b7440d); outline-offset: 1px; }
#song-generator .nv-waveform-controls > audio[hidden] { display: none; }
#song-subscribe-action[hidden] { display: none; }
#song-voice-panel:focus-within .song-drop { outline-offset: 2px; }
#song-voice-panel:has(.song-voice-file:focus-visible) .song-drop { outline: 2px solid currentColor; }

/* Cancel a song in progress (owner, 10 Nov 2026): a quiet link-style button, red on hover. */
.song-progress .song-cancel { min-height: 28px; margin-left: auto; padding: 0 10px; border: 1px solid var(--border); border-radius: 999px;
  background: #fff; color: var(--muted); font: inherit; font-size: .76rem; font-weight: 600; cursor: pointer; }
.song-progress .song-cancel:hover, .song-progress .song-cancel:focus-visible { border-color: var(--red); color: var(--red); outline: none; }
.song-progress .song-cancel:disabled { cursor: progress; opacity: .7; }
#song-inspiration-toggle[hidden] { display: none; }
[data-song-chat] body > :not(main):not(dialog):not(script),
[data-song-chat] main > :not(#song-generator) { display: none !important; }
[data-song-chat] .guide-shell { padding: 8px; width: 100%; max-width: none; margin: 0; }
[data-song-chat] #song-generator { margin: 0; }
