/* Description composers: controls belong inside the field, never under contacts. */
.message-composer,.dictation-field{border:1px solid #8e9384;background:#fafaf6;border-radius:14px;overflow:hidden;min-width:0}
.message-composer:focus-within,.dictation-field:focus-within{outline:2px solid #c2461c;outline-offset:2px}
.message-composer>textarea,.dictation-field>textarea{display:block;width:100%;border:0;background:transparent;outline:none!important;border-radius:0;resize:vertical;padding:16px;font:inherit;font-size:16px;line-height:1.6;min-height:130px}
.composer-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;min-height:56px;width:100%}.dictation-slot{flex:1;min-width:0}
.dictation{display:flex;align-items:center;gap:10px;margin:0;min-width:0}
.dictation .mic-button{display:grid;place-items:center;width:40px;height:40px;min-width:40px;min-height:40px;padding:0;margin:0;border:0;border-radius:50%;background:transparent;color:#46513e;flex-shrink:0;cursor:pointer;touch-action:manipulation}
.dictation .mic-button:hover{background:#e2e6d8}.dictation .mic-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8}.dictation .mic-button .stop-glyph{display:none;fill:currentColor;stroke:none}
.dictation[data-state=listening] .mic-button,.dictation[data-state=stopping] .mic-button{background:#273b2d;color:#faf8f2}
.dictation[data-state=listening] .mic-glyph,.dictation[data-state=stopping] .mic-glyph{display:none}.dictation[data-state=listening] .stop-glyph,.dictation[data-state=stopping] .stop-glyph{display:block}
.dictation-progress{display:flex;align-items:center;gap:8px;flex-shrink:0}.dictation-clock{font:11px/1.4 monospace;font-variant-numeric:tabular-nums;color:#46513e}.dictation-wave{display:flex;align-items:center;gap:3px;height:20px}.dictation-wave i{display:block;width:3px;height:6px;border-radius:3px;background:#627052;transition:height .18s}
.dictation.speech-active .dictation-wave i{animation:dictation-speech .7s ease-in-out infinite alternate}.dictation-wave i:nth-child(2){animation-delay:-.2s!important}.dictation-wave i:nth-child(3){animation-delay:-.45s!important}.dictation-wave i:nth-child(4){animation-delay:-.3s!important}.dictation-wave i:nth-child(5){animation-delay:-.1s!important}
.dictation .dictation-status{font-size:10px;line-height:1.5;color:#5d6656!important;margin:0;overflow-wrap:anywhere;min-width:0}.dictation[data-state=idle] .dictation-status:empty{display:none}.dictation[data-state=listening] .dictation-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.dictation [hidden]{display:none!important}.dictation .mic-button:disabled{opacity:.4;cursor:not-allowed}
#contact-send,#chat-form #chat-send{display:grid;place-items:center;flex-shrink:0;width:40px;min-width:40px;height:40px;min-height:40px;margin:0;padding:0;border-radius:50%;background:#273b2d;color:#faf8f2}.composer-actions .ui-icon{width:20px;height:20px}#contact-send[aria-busy=true]{animation:chat-pulse 1s ease-in-out infinite alternate}
#chat-form .chat-composer{display:block;padding:0;overflow:hidden}#chat-form .chat-composer textarea{display:block;width:100%;min-height:80px;max-height:160px;padding:12px 14px;margin:0;outline:none!important}#chat-form .composer-actions{padding:4px 8px 8px;gap:6px;min-height:48px}.chat-composer .dictation{gap:6px}.chat-composer .dictation-status{font-size:9px}.chat-composer .dictation-progress{gap:5px}
@keyframes dictation-speech{from{height:5px}to{height:18px}}
@media(max-width:620px){.composer-actions{padding:6px 8px;gap:8px}.dictation{gap:8px}.dictation-status{font-size:10px}.message-composer>textarea,.dictation-field>textarea{padding:14px}}
@media(prefers-reduced-motion:reduce){.dictation.speech-active .dictation-wave i{animation:none;height:12px}#contact-send[aria-busy=true]{animation:none}}

.message-composer+label{margin-top:18px!important}
.chat-composer:focus-within{outline:2px solid #c2461c;outline-offset:2px}
