/* «Диктовка» lives in the seller composer. The toolbar keeps its height whether or not Format and Send are shown;
   while the draft is empty the microphone holds the Send slot, then steps left of Send. */
.composer-wrap [hidden]{display:none!important}
.conversation .compose-toolbar{min-height:55px}
.conversation .compose-tools{flex:1;min-width:0}
.conversation .compose-toolbar>#send-button{margin-left:4px}
/* One fixed box in both places (no layout transition); the Send-slot state differs by fill only. */
.mic-btn{position:relative;display:inline-grid;place-items:center;flex-shrink:0;width:38px;height:38px;padding:0;border:0;border-radius:10px;background:transparent;color:var(--plum-600);cursor:pointer;transition:background-color 160ms,color 160ms,transform 200ms var(--ease)}
@media(hover:hover){.mic-btn:hover{background:var(--plum-150);color:var(--plum-900)}}
.mic-btn:active{transform:scale(.94)}
.mic-btn:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.mic-btn[data-slot]{background:var(--plum-150);color:var(--plum-900)}
@media(hover:hover){.mic-btn[data-slot]:hover{background:var(--plum-200)}}
.mic-btn[data-state=recording]{background:var(--danger-600);color:var(--white)}
@media(hover:hover){.mic-btn[data-state=recording]:hover{background:var(--danger-700);color:var(--white)}}
.mic-btn[data-state=processing]{cursor:progress;transform:none}
.compose-toolbar>:is(.mic-btn,#send-button):not([hidden]){animation:compose-in 180ms var(--ease)}
@keyframes compose-in{from{opacity:0;transform:scale(.9)}}
.dictation-spinner{width:16px;height:16px;border:2px solid var(--plum-300);border-top-color:var(--plum-800);border-radius:50%;animation:dictation-spin 900ms linear infinite}
@keyframes dictation-spin{to{transform:rotate(360deg)}}
/* Recording: the real input level and the elapsed time take the place of Format. */
.dictation-live{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 6px}
.dictation-live .audio-level{width:auto;height:24px;gap:3px}
.dictation-live .audio-level i{width:3px;height:22px;background:var(--danger-600)}
.dictation-live time{font-size:13px;font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums}
.dictation-working{display:flex;align-items:center;min-height:36px;padding:0 6px;font-size:12px;color:var(--muted)}
.dictation-error{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px;margin:10px 2px 0;font-size:13px;line-height:1.6;color:var(--red)}
.dictation-error:empty{display:none}
.dictation-error .text-btn{min-height:32px;font-weight:500;color:var(--plum-800);text-decoration:underline;text-underline-offset:3px}
.dictation-error .text-btn:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
/* Settings → «Подробности»: the dictation status reads like the other readiness chips there. */
.dictation-settings .status{font-size:12px;gap:6px}
.dictation-settings .note{font-size:12px;color:var(--muted);overflow-wrap:anywhere}
@media(max-width:650px){.conversation .compose-toolbar{min-height:52px}.mic-btn{width:36px;height:36px}
 .conversation .compose-toolbar>#send-button{margin-left:8px}.dictation-live{gap:8px;padding:0 4px}.dictation-error{font-size:12px}}
@media(prefers-reduced-motion:reduce){.mic-btn{transition:none}.mic-btn:active{transform:none}.compose-toolbar>:is(.mic-btn,#send-button):not([hidden]),.dictation-spinner{animation:none}}
