/* Dex Voice Widget — floating mic + voice overlay for LTAT apps */
:root{ --dvw-accent:#d69e2e; }
#dvw-fab{
  position:fixed; right:18px; bottom:calc(18px + env(safe-area-inset-bottom));
  width:60px; height:60px; border-radius:50%;
  background:var(--dvw-accent); border:none; cursor:pointer;
  font-size:26px; line-height:1; color:#1a202c;
  box-shadow:0 4px 16px rgba(0,0,0,.35);
  z-index:9998; display:flex; align-items:center; justify-content:center;
  -webkit-tap-highlight-color:transparent; touch-action:manipulation;
}
#dvw-fab:active{ transform:scale(.94); }
#dvw-fab.dvw-hidden{ display:none; }
#dvw-overlay{
  position:fixed; inset:0; z-index:9999;
  background:rgba(10,15,25,.72);
  display:none; align-items:flex-end; justify-content:center;
}
#dvw-overlay.dvw-open{ display:flex; }
#dvw-panel{
  width:100%; max-width:520px; max-height:82vh;
  background:#0f172a; color:#e2e8f0;
  border-radius:20px 20px 0 0;
  padding:16px 16px calc(20px + env(safe-area-inset-bottom));
  display:flex; flex-direction:column; gap:12px;
  box-shadow:0 -8px 32px rgba(0,0,0,.5);
}
#dvw-head{ display:flex; align-items:center; justify-content:space-between; }
#dvw-title{ font-weight:800; letter-spacing:2px; font-size:15px; }
#dvw-title b{ color:var(--dvw-accent); }
#dvw-close{
  background:rgba(255,255,255,.08); border:none; color:#e2e8f0;
  width:36px; height:36px; border-radius:50%; font-size:18px; cursor:pointer;
}
#dvw-status{
  text-align:center; font-size:13px; color:#94a3b8;
  background:rgba(255,255,255,.05); border-radius:999px; padding:8px 12px;
}
#dvw-status.dvw-listening{ color:#f87171; }
#dvw-status.dvw-speaking{ color:var(--dvw-accent); }
#dvw-status.dvw-err{ color:#f87171; }
#dvw-transcript{
  flex:1; min-height:120px; max-height:40vh; overflow-y:auto;
  display:flex; flex-direction:column; gap:8px; padding:4px 2px;
}
.dvw-bubble{ border-radius:14px; padding:10px 12px; font-size:14px; line-height:1.45; max-width:92%; }
.dvw-bubble.dvw-you{ align-self:flex-end; background:#1e3a5f; color:#dbeafe; }
.dvw-bubble.dvw-dex{ align-self:flex-start; background:rgba(255,255,255,.07); color:#e2e8f0; }
#dvw-talkrow{ display:flex; justify-content:center; align-items:center; gap:16px; }
#dvw-photo{
  width:60px; height:60px; border-radius:50%;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18); cursor:pointer;
  font-size:24px; color:#e2e8f0;
  -webkit-tap-highlight-color:transparent; touch-action:manipulation;
}
#dvw-photo:active{ transform:scale(.93); }
#dvw-photo.dvw-busy{ opacity:.45; pointer-events:none; }
.dvw-bubble.dvw-photo{ padding:6px; }
.dvw-bubble.dvw-photo img{ max-width:170px; width:100%; border-radius:10px; display:block; }
#dvw-talk{
  width:92px; height:92px; border-radius:50%;
  background:var(--dvw-accent); border:none; cursor:pointer;
  font-size:38px; color:#1a202c;
  box-shadow:0 4px 20px rgba(0,0,0,.4);
  -webkit-tap-highlight-color:transparent; touch-action:manipulation;
  transition:transform .12s ease;
}
#dvw-talk:active{ transform:scale(.93); }
#dvw-talk.dvw-rec{ animation:dvw-pulse 1.2s ease-in-out infinite; background:#f87171; }
#dvw-talk.dvw-play{ background:#4ade80; }
@keyframes dvw-pulse{ 0%,100%{transform:scale(1)} 50%{transform:scale(1.08)} }
#dvw-hint{ text-align:center; font-size:12px; color:#64748b; }
