/* 1.11 角色声音库：延续原弹窗视觉，增加真实上传、绑定及配音操作。 */
html body .voice-api-dialog [hidden] { display: none !important; }
html body .voice-api-dialog .asset-voice-dialog { width: min(920px, calc(100vw - 24px)); max-height: calc(100vh - 24px); display: flex; flex-direction: column; }
html body .voice-api-dialog .asset-voice-dialog-body { min-height: 0; flex: 1; overflow: auto; grid-template-columns: 188px minmax(0, 1fr); }
html body .voice-api-dialog .asset-voice-library { display: flex; flex-direction: column; gap: 12px; min-width: 0; overflow: visible; }
html body .voice-api-dialog .asset-voice-library-list { min-height: 100px; max-height: 290px; overflow: auto; flex: none; }
html body .voice-api-dialog .asset-voice-option { display: flex; gap: 8px; padding: 10px; }
html body .voice-api-dialog .asset-voice-option-copy { min-width: 60px; flex: 1; }
html body .voice-api-dialog .asset-voice-option-copy strong, html body .voice-api-dialog .asset-voice-option-copy small { overflow-wrap: anywhere; white-space: normal; }
html body .voice-api-dialog button { cursor: pointer; }
html body .voice-api-dialog button:disabled { opacity: .45; cursor: not-allowed; }
html body .voice-api-dialog button:focus-visible, html body .voice-api-dialog input:focus-visible, html body .voice-api-dialog textarea:focus-visible, html body .voice-api-dialog select:focus-visible { outline: 2px solid #4acfb9; outline-offset: 2px; }
html body .voice-api-dialog .voice-feedback { padding: 0 20px; color: #82d8c8; font-size: 12px; min-height: 22px; overflow-wrap: anywhere; }
html body .voice-api-dialog .voice-feedback.is-error { color: #ffb8a8; }
html body .voice-api-dialog .voice-empty { padding: 30px 14px; text-align: center; color: #8ba3a7; }
html body .voice-api-dialog .voice-selection-note { display: block; min-height: 40px; font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
html body .voice-api-dialog .voice-preview-current, html body .voice-api-dialog .voice-unbind { width: 100%; margin-bottom: 8px; }
html body .voice-api-dialog .asset-voice-confirm { margin-top: 12px; width: 100%; }
html body .voice-api-dialog .voice-form, html body .voice-api-dialog .voice-generation { border: 1px solid #304044; background: #141d20; border-radius: 8px; padding: 12px; }
html body .voice-api-dialog .voice-form h4 { margin: 0 0 10px; color: #e4eff0; }
html body .voice-api-dialog label { display: flex; flex-direction: column; gap: 6px; color: #cbdadd; font-size: 12px; margin-bottom: 10px; }
html body .voice-api-dialog input, html body .voice-api-dialog textarea, html body .voice-api-dialog select { width: 100%; box-sizing: border-box; padding: 8px; border: 1px solid #34454a; border-radius: 5px; background: #10181b; color: #e4edef; font: inherit; }
html body .voice-api-dialog textarea { min-height: 76px; resize: vertical; }
html body .voice-api-dialog small { color: #8fa6ab; font-size: 11px; line-height: 1.5; }
html body .voice-api-dialog .voice-form-row { display: flex; gap: 10px; }
html body .voice-api-dialog .voice-form-row label { flex: 1; min-width: 0; }
html body .voice-api-dialog .voice-form-actions, html body .voice-api-dialog .voice-generation-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px; }
html body .voice-api-dialog .voice-generate, html body .voice-api-dialog .voice-form button[type=submit] { background: #43cbb6; color: #082b26; font-weight: 600; }
html body .voice-api-dialog .voice-result audio { width: 100%; margin-top: 12px; height: 38px; }
html body .voice-api-dialog .voice-result button { margin: 8px 8px 0 0; }
@media(max-width: 620px) {
  html body .voice-api-dialog .asset-voice-dialog-body { display: block; }
  html body .voice-api-dialog .asset-voice-current { display: block; padding: 14px; border-bottom: 1px solid #304044; }
  html body .voice-api-dialog .asset-voice-role-avatar, html body .voice-api-dialog .asset-voice-current-kicker, html body .voice-api-dialog .asset-voice-current > strong, html body .voice-api-dialog .asset-voice-current > p { display: none; }
  html body .voice-api-dialog .voice-selection-note { min-height: 0; }
  html body .voice-api-dialog .voice-preview-current, html body .voice-api-dialog .voice-unbind, html body .voice-api-dialog .asset-voice-confirm { width: auto; margin: 8px 8px 0 0; }
  html body .voice-api-dialog .asset-voice-option { flex-wrap: wrap; }
  html body .voice-api-dialog .asset-voice-option-copy { flex-basis: calc(100% - 54px); }
}
