/* Character voice: profile tab, per-line buttons, manager. Uses theme-v2 tokens. */
.voice-btn{font-size:12px;padding:4px 10px;min-height:28px;border-radius:999px;margin-top:6px;white-space:nowrap}
.voice-btn[data-state=playing],.voice-btn[data-state=paused]{background:var(--accent-soft,#e3f6f3);color:var(--accent-ink,#145c55);border-color:var(--accent,#33aaa0)}
.voice-btn[data-state=loading]{opacity:.7}
.gchat-line .voice-btn{margin:4px 0 0}
.novel-toolbar .voice-btn{margin-top:0}
.voice-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}
.voice-head input[type=search]{flex:1 1 180px;min-width:0;padding:8px 10px;border:1px solid var(--line,#d8e0ea);border-radius:var(--r-sm,8px);font:inherit}
.voice-head select{padding:7px 8px;border-radius:var(--r-sm,8px)}
.voice-count{color:var(--muted,#7b8794);margin-left:auto}
.voice-note{font-size:12px;margin:2px 0 10px}
.voice-list{display:flex;flex-direction:column;gap:8px}
.voice-row{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--line,#d8e0ea);border-radius:var(--r-md,12px);background:var(--paper,#fff)}
.voice-row.playing{border-color:var(--accent,#33aaa0);box-shadow:0 0 0 2px var(--accent-soft,#e3f6f3)}
.voice-text{min-width:0;flex:1}
.voice-ja{margin:0 0 4px;white-space:pre-line;line-height:1.5;font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP",var(--font,sans-serif)}
.voice-text small{color:var(--muted,#7b8794);font-size:11px;word-break:break-all}
.voice-default{color:var(--accent-ink,#145c55)}
.voice-ctl{display:flex;gap:6px;flex-shrink:0}
.voice-ctl button{min-width:36px;min-height:36px;padding:4px 8px;font-size:13px}
.voice-ctl button.on{color:#d49a00}
.voice-manager .voice-tts-state{padding:8px 10px;border-radius:var(--r-sm,8px);background:var(--accent-soft,#e3f6f3);font-size:13px}
.voice-manager .voice-tts-state.warn{background:#fff6e0;color:#7a5500}
.voice-toggles{display:flex;flex-wrap:wrap;gap:6px 16px;margin:8px 0}
.voice-chars{display:flex;flex-direction:column;gap:6px;margin:10px 0}
.voice-char{border:1px solid var(--line,#d8e0ea);border-radius:var(--r-sm,8px);padding:6px 10px;background:var(--paper,#fff)}
.voice-char summary{cursor:pointer;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;list-style:none;min-height:32px;align-items:center}
.voice-char summary::-webkit-details-marker{display:none}
.voice-char summary small{color:var(--muted,#7b8794)}
.voice-char-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px 14px;padding:8px 0 4px;align-items:end}
.voice-char-grid .field{display:flex;flex-direction:column;gap:4px;font-size:12px}
.voice-char-grid .muted.small,.voice-errors .small{grid-column:1/-1;font-size:11px;margin:2px 0}
.voice-errors summary{cursor:pointer;font-size:13px}
@media (max-width:640px){
  .voice-row{flex-direction:column;align-items:stretch}
  .voice-ctl{justify-content:flex-end}
  .voice-head input[type=search]{flex-basis:100%}
}
/* Phone: the one-column profile grid used `1fr`, whose auto minimum let wide rows (tabs, actions)
   push the sheet past the screen. minmax(0,1fr) keeps it inside; rows wrap instead. */
@media (max-width:780px){
  .ah-profile{grid-template-columns:minmax(0,1fr)}
  .ah-profile-main{min-width:0}
  .ah-profile-main .ah-tabs{flex-wrap:wrap}
  .ah-profile-main .ah-tabs button{flex:1 1 30%}
}
