/* Unified DM, Circle and Magnus dictation controls. */
.neis-voice-controls{display:inline-flex;align-items:center;gap:3px;flex:0 0 auto;min-width:0;vertical-align:middle;align-self:center}

.neis-voice-mic{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;min-height:38px;border:1px solid var(--line,#d7e0e9);border-radius:12px;background:var(--card,#fff);color:var(--muted,#62748a);padding:0;cursor:pointer;touch-action:manipulation}
.neis-voice-mic svg{display:block;pointer-events:none}
.neis-voice-mic.is-listening{background:color-mix(in srgb,#e34848 13%,var(--card,#fff));border-color:#e34848;color:#d63838;animation:neis-voice-pulse 1.5s ease-in-out infinite}
.neis-voice-mic:focus-visible{outline:2px solid var(--accent,#2573b4);outline-offset:2px}
.neis-voice-status{display:block;font-size:11px;line-height:1.4;color:var(--muted,#62748a);padding:0 10px;max-height:46px;overflow-wrap:anywhere}
.neis-voice-status:empty{display:none}
@keyframes neis-voice-pulse{50%{box-shadow:0 0 0 4px rgba(227,72,72,.15)}}
@media(prefers-reduced-motion:reduce){.neis-voice-mic.is-listening{animation:none}}
@media(max-width:450px){.neis-voice-mic{width:36px;height:36px;flex-basis:36px}.neis-voice-controls{gap:2px}}

/* Same single-mic appearance as Timetable AI, without a language chip. */
.neis-voice-controls{gap:0;flex:0 0 auto}
.neis-voice-mic.ttai-mic{width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;flex:0 0 36px!important;border:0!important;border-radius:10px!important;background:transparent!important;color:var(--muted,#65758a)!important;box-shadow:none!important;padding:7px!important;display:grid!important;place-items:center!important}
.neis-voice-mic.ttai-mic svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8}
.neis-voice-mic.ttai-mic:hover{background:color-mix(in srgb,var(--ink,#182b24) 5%,transparent)!important}
.neis-voice-mic.ttai-mic.is-listening{color:#d33b42!important;background:color-mix(in srgb,#d33b42 9%,transparent)!important}

/* ChatGPT-like tap-to-stop dictation: a voice-level waveform is visible
   while recording; the composer is updated only after Stop. */
.neis-voice-controls .neis-voice-wave{
 display:none;align-items:center;justify-content:center;gap:3px;
 height:30px;padding-inline:5px;flex:0 0 auto;pointer-events:none;
 color:var(--accent,#287cb6);
}
.neis-voice-controls:has(.is-listening) .neis-voice-wave{display:inline-flex}
.neis-voice-wave i{
 display:block;width:3px;height:5px;border-radius:4px;
 background:currentColor;min-height:4px;
 transition:height .08s ease-out;
}
.neis-voice-mic .neis-voice-stop{display:none;width:12px;height:12px;border-radius:3px;background:currentColor}
.neis-voice-mic.is-listening .neis-voice-stop{display:block}
.neis-voice-mic.is-listening svg{display:none!important}
.neis-voice-mic.ttai-mic.is-listening{
 background:color-mix(in srgb,#287cb6 11%,transparent)!important;
 color:#287cb6!important;
 border-color:transparent!important;
 animation:none!important;
}
html[data-theme="dark"] .neis-voice-mic.ttai-mic.is-listening{
 color:#89c8ff!important;
 background:rgba(82,158,222,.15)!important;
}
@media(max-width:460px){
 .neis-voice-controls .neis-voice-wave{gap:2px;padding-inline:3px}
}
@media(prefers-reduced-motion:reduce){.neis-voice-wave i{transition:none}}
