/* Voice discovery: restrained surfaces, direct auditions, one persistent player. */
.ui-icon { width:20px; height:20px; flex-shrink:0; vertical-align:middle; }
.app-sidebar a { display:flex; align-items:center; gap:12px; }
body[data-page="voices"] { --accent:#edbd77; --accent-ink:#201a12; --line:#3f454c; --muted:#b1b6be; background:#111315; }
body[data-page="voices"] main { padding:42px 40px; }
body[data-page="voices"] .page-heading { display:block; margin-bottom:32px; position:relative; }
body[data-page="voices"] .page-heading::before { content:'VOICE LIBRARY'; display:block; font-size:11px; font-weight:650; letter-spacing:.2em; color:#edbd77; margin-bottom:15px; }
body[data-page="voices"] .page-heading h1 { font-size:clamp(30px,3.1vw,44px); font-weight:600; letter-spacing:-.055em; line-height:1.2; margin:0; }
body[data-page="voices"] .page-heading p { font-size:16px; color:#abb2ba; margin:14px 0 0; }
body[data-page="voices"] .cast-toolbar { gap:10px; margin:0 0 28px; align-items:center; flex-wrap:nowrap; }
body[data-page="voices"] .cast-toolbar .search-field { flex:1; max-width:none; min-width:0; position:relative; }
body[data-page="voices"] .search-field>.ui-icon { position:absolute; left:17px; top:17px; color:#999fa8; pointer-events:none; }
body[data-page="voices"] #character-search { width:100%; height:54px; border-radius:10px; padding:14px 16px 14px 48px; background:#1b1e21; border-color:#3f454c; font-size:15px; }
body[data-page="voices"] #character-search::placeholder { color:#aab2bc; }
body[data-page="voices"] .cast-filter-toggle,
body[data-page="voices"] .cast-favorites-filter { display:inline-flex; align-items:center; justify-content:center; gap:7px; background:transparent; border-color:#41484e; height:54px; min-height:44px; border-radius:10px; font-size:14px; white-space:nowrap; }
body[data-page="voices"] .cast-favorites-filter[aria-pressed="true"],
body[data-page="voices"] .cast-filter-toggle.has-filters { color:#f2c78d; border-color:#b58c53; background:#30291f; }
body[data-page="voices"] #cast-selection { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
body[data-page="voices"] .cast-filters { background:#1b1e21; border-color:#3f454c; margin-bottom:24px; }
body[data-page="voices"] .cast-filter-summary { margin-top:-12px; font-size:13px; color:#f2c78d; }
body[data-page="voices"] .voice-collection-bar { display:flex; justify-content:space-between; align-items:center; gap:16px; margin:0 0 16px; }
body[data-page="voices"] .cast-panel .panel-heading { margin:0; justify-content:flex-start; gap:8px; flex-wrap:wrap; }
body[data-page="voices"] .cast-panel .panel-heading h2 { display:block; font-size:15px; font-weight:600; margin:0; }
body[data-page="voices"] #cast-count { font-size:13px; color:#f2c78d; background:#30291f; padding:3px 7px; border-radius:5px; }
body[data-page="voices"] .voice-free-note { color:#aab2bc; font-size:12px; margin-left:8px; }
body[data-page="voices"] .voice-library-model { margin:0; gap:8px; font-size:12px; flex-wrap:nowrap; }
body[data-page="voices"] .voice-library-model>span { color:#9299a1; white-space:nowrap; }
body[data-page="voices"] #library-model { max-width:210px; min-height:34px; height:34px; font-size:12px; padding:7px 28px 7px 10px; background:#181c1f; border-color:#3a4148; border-radius:6px; }
body[data-page="voices"] #character-grid { margin:0; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; overflow:visible; align-items:stretch; }
body[data-page="voices"] #character-grid .character-entry { display:flex; flex-direction:column; align-items:stretch; padding:10px; gap:0; border:1px solid #353a40; border-radius:16px; background:#1b1e21; transition:border-color .16s,background .16s; }
body[data-page="voices"] #character-grid .character-entry:hover { border-color:#59626c; background:#22262a; }
body[data-page="voices"] #character-grid .character-entry.is-selected { border-color:#b58c53; background:#292621; }
body[data-page="voices"] #character-grid .character-card { display:flex; flex-direction:column; align-items:stretch; width:100%; min-width:0; height:auto; padding:0; gap:0; border-radius:10px; background:transparent; }
body[data-page="voices"] #character-grid .character-card:hover { background:transparent; }
body[data-page="voices"] #character-grid .character-portrait { display:block; width:100%; height:auto; aspect-ratio:1; border-radius:10px; background:#303438; overflow:hidden; }
body[data-page="voices"] #character-grid .character-portrait img { width:100%; height:100%; object-fit:cover; transition:transform .25s; }
body[data-page="voices"] #character-grid .character-card:hover img { transform:scale(1.04); }
body[data-page="voices"] #character-grid .character-card strong { align-self:auto; padding:0 3px; margin-top:12px; font-size:20px; line-height:1.3; letter-spacing:-.03em; color:#f3f1eb; }
body[data-page="voices"] #character-grid .character-card[aria-pressed="true"] strong { color:#f2c78d; }
body[data-page="voices"] #character-grid .character-role { color:#aeb5bd; font-size:13px; line-height:1.6; padding:0 3px; margin:4px 0 0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
body[data-page="voices"] #character-grid .character-meta { color:#999fa8; font-size:11px; font-weight:450; padding:0 3px; margin-top:4px; }
body[data-page="voices"] #character-grid .cast-check { display:none; }
body[data-page="voices"] #character-grid .cast-favorite { top:16px; right:16px; bottom:auto; width:32px; height:32px; border:1px solid #ffffff35; border-radius:50%; background:#111315d9; color:#e4e7eb; }
body[data-page="voices"] #character-grid .cast-favorite:hover { background:#353027; color:#f6cc93; }
body[data-page="voices"] #character-grid .cast-favorite[aria-pressed="true"] { color:#edbd77; }
body[data-page="voices"] .cast-favorite[aria-pressed="true"] svg { fill:currentColor; }
body[data-page="voices"] .voice-samples { margin-top:12px; gap:0; flex:none; }
body[data-page="voices"] .voice-samples-label { display:none; }
body[data-page="voices"] .voice-sample-buttons { display:grid; grid-template-columns:1fr; gap:5px; padding:0; }
body[data-page="voices"] .voice-sample-buttons button { min-width:0; display:flex; justify-content:center; align-items:center; gap:5px; min-height:32px; padding:5px 3px; border:1px solid #5a4935; border-radius:7px; background:#30291f; font-size:12px; font-weight:500; color:#e4cba7; white-space:nowrap; transition:background-color .15s ease,border-color .15s ease,color .15s ease; }
body[data-page="voices"] .voice-sample-buttons button:hover { background:#443522; border-color:#b58c53; color:#ffe0b4; }
body[data-page="voices"] .voice-sample-buttons .ui-icon { width:10px; height:10px; }
body[data-page="voices"] .voice-sample-buttons button[aria-pressed="true"] { background:#edbd77; color:#201a12; border-color:#edbd77; }
body[data-page="voices"] .cast-note { color:#9299a1; font-size:12px; margin:22px 0; }
body[data-page="voices"] #cast-empty { border:1px dashed #59626c; border-radius:12px; padding:48px 24px; text-align:center; color:#b1b6be; }
body[data-page="voices"] .voice-dock { left:calc(var(--sidebar-width) + 12px); right:12px; bottom:20px; grid-template-columns:260px minmax(0,1fr) 172px; padding:18px 40px 18px 20px; gap:20px; border-radius:16px; background:#2b3036; border-color:#998368; box-shadow:0 18px 64px #000c,0 4px 16px #0008,inset 0 1px 0 #f6cc9340; }
body[data-page="voices"] .voice-dock #preview-portrait { width:56px; height:72px; border-radius:8px; }
body[data-page="voices"] .voice-dock #preview-heading { font-size:20px; font-weight:600; color:#f3f1eb; }
body[data-page="voices"] .voice-dock #preview-gender { font-size:11px; color:#c3cbd3; background:#353d44; }
body[data-page="voices"] .voice-dock #preview-role { font-size:12px; margin:3px 0 8px; color:#aebac5; }
body[data-page="voices"] .voice-dock .preview-emotions { gap:3px; }
body[data-page="voices"] .voice-dock .preview-emotions button { background:transparent; border-color:transparent; color:#b2bcc6; font-size:11px; min-height:28px; padding:4px 6px; }
body[data-page="voices"] .voice-dock .preview-emotions button[aria-pressed="true"] { color:#f6cc93; border-color:#b58c53; background:#342c20; }
body[data-page="voices"] .voice-dock .preview-toggle { border-radius:50%; width:40px; height:40px; min-width:40px; background:#edbd77; border-color:#edbd77; color:#201a12; display:grid; place-items:center; }
body[data-page="voices"] .voice-dock .preview-toggle:hover { background:#f6cc93; }
body[data-page="voices"] .preview-wave-wrap { height:32px; background:transparent; }
body[data-page="voices"] #preview-waveform rect { fill:#778591; }
body[data-page="voices"] #preview-waveform rect.played { fill:#edbd77; }
body[data-page="voices"] .preview-wave-meta { font-size:10px; color:#bac2ca; margin-top:2px; font-variant-numeric:tabular-nums; }
body[data-page="voices"] .voice-dock .preview-transcript { color:#d3d8df; font-size:13px; line-height:1.55; height:3.1em; max-height:3.1em; margin-top:8px; }
body[data-page="voices"] .voice-dock #preview-status { color:#edbd77; font-size:10px; height:2.8em; min-height:2.8em; line-height:1.4; margin-top:3px; }
body[data-page="voices"] .preview-actions>.generate { background:#edbd77; color:#201a12; border:1px solid #edbd77; font-size:13px; border-radius:8px; min-height:44px; padding:10px; }
body[data-page="voices"] .preview-actions>.generate:hover { background:#f6cc93; }
body[data-page="voices"] .preview-actions>span { font-size:10px; line-height:1.6; color:#b2bcc6; }
body[data-page="voices"] .voice-dock .preview-close { color:#b1b6be; right:7px; top:7px; }
@media(max-width:1150px) {
  body[data-page="voices"] main { padding:32px 28px; }
  body[data-page="voices"] .voice-free-note,body[data-page="voices"] .voice-library-model>span { display:none; }
  body[data-page="voices"] .voice-dock { grid-template-columns:220px minmax(0,1fr) 150px; gap:14px; padding:16px 34px 16px 16px; }
  body[data-page="voices"] .preview-actions>span { display:block; }
}
@media(max-width:950px) {
  body[data-page="voices"] .voice-dock { grid-template-columns:220px minmax(0,1fr); gap:10px 18px; }
  body[data-page="voices"] .preview-content { grid-column:2; grid-row:1/3; }
  body[data-page="voices"] .preview-actions { grid-column:1; grid-row:2; }
  body[data-page="voices"] .preview-actions>span { display:none; }
}
@media(max-width:700px) {
  body[data-page="voices"] main { padding:28px 20px; }
  body[data-page="voices"] .cast-toolbar { flex-wrap:wrap; }
  body[data-page="voices"] .cast-toolbar .search-field { flex:1 1 100%; }
  body[data-page="voices"] .cast-filter-toggle,body[data-page="voices"] .cast-favorites-filter { height:42px; }
}
@media(max-width:600px) {
  body[data-page="voices"] .page-heading::before { font-size:10px; margin-bottom:10px; }
  body[data-page="voices"] .page-heading h1 { font-size:30px; }
  body[data-page="voices"] .page-heading p { font-size:14px; line-height:1.7; max-width:290px; }
  body[data-page="voices"] .page-heading { margin-bottom:22px; }
  body[data-page="voices"] #character-search { height:50px; }
  body[data-page="voices"] .search-field>.ui-icon { top:15px; }
  body[data-page="voices"] .cast-toolbar { margin-bottom:22px; }
  body[data-page="voices"] .voice-collection-bar { gap:8px; flex-wrap:wrap; }
  body[data-page="voices"] .cast-panel .panel-heading h2 { font-size:14px; }
  body[data-page="voices"] #library-model { max-width:176px; font-size:11px; }
  body[data-page="voices"] .voice-dock { left:8px; right:8px; bottom:8px; padding:14px 16px 12px; gap:10px; grid-template-columns:minmax(0,1.05fr) minmax(0,1fr); border-radius:14px; max-height:55dvh; }
  body[data-page="voices"] .preview-identity { grid-column:1; grid-row:1; gap:8px; }
  body[data-page="voices"] .voice-dock #preview-portrait { width:40px; height:54px; }
  body[data-page="voices"] .voice-dock #preview-heading { font-size:17px; }
  body[data-page="voices"] .voice-dock #preview-role { display:none; }
  body[data-page="voices"] .voice-dock #preview-gender { font-size:10px; }
  body[data-page="voices"] .voice-dock .preview-emotions { gap:1px; }
  body[data-page="voices"] .voice-dock .preview-emotions button { font-size:10px; padding:3px 4px; min-height:28px; }
  body[data-page="voices"] .preview-content { display:contents; }
  body[data-page="voices"] .preview-audio-row { grid-column:2; grid-row:1; gap:6px; padding-right:6px; }
  body[data-page="voices"] .voice-dock .preview-toggle { width:32px; min-width:32px; height:32px; min-height:32px; }
  body[data-page="voices"] .preview-toggle .ui-icon { width:17px; height:17px; }
  body[data-page="voices"] .voice-dock .preview-transcript { grid-column:1/-1; grid-row:2; margin:0; font-size:12px; }
  body[data-page="voices"] .voice-dock #preview-status { grid-column:1; grid-row:3; margin:0; }
  body[data-page="voices"] .preview-actions { grid-column:2; grid-row:3; }
  body[data-page="voices"] .preview-actions>.generate { min-height:38px; padding:8px 6px; font-size:11px; }
}
@media(prefers-reduced-motion:reduce) {
  body[data-page="voices"] #character-grid .character-entry,
  body[data-page="voices"] #character-grid .character-portrait img { transition:none; }
}

@media(max-width:600px) {
  body[data-page="voices"] #character-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
  body[data-page="voices"] #character-grid .character-entry { padding:8px; border-radius:12px; }
  body[data-page="voices"] #character-grid .character-portrait { border-radius:7px; }
  body[data-page="voices"] #character-grid .character-card strong { margin-top:12px; font-size:20px; }
  body[data-page="voices"] #character-grid .character-role { font-size:12px; }
  body[data-page="voices"] #character-grid .character-meta { font-size:10px; }
  body[data-page="voices"] #character-grid .cast-favorite { top:14px; right:14px; width:32px; height:32px; }
  body[data-page="voices"] .voice-samples { margin-top:12px; }
  body[data-page="voices"] .voice-sample-buttons { grid-template-columns:1fr; gap:5px; }
  body[data-page="voices"] .voice-sample-buttons button { min-height:36px; font-size:12px; }
}

/* Extend beyond the collection while keeping clear of the sidebar and viewport edges. */
body[data-page="voices"] .voice-dock { left:var(--voice-dock-left,calc(var(--sidebar-width) + 12px)); right:auto; width:var(--voice-dock-width,calc(100% - var(--sidebar-width) - 24px)); max-width:1306px; }
@media(min-width:951px) and (max-width:1199px) {
  body[data-page="voices"] #character-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
}
@media(min-width:601px) and (max-width:950px) {
  body[data-page="voices"] #character-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
