/* ── AI Assistant Chat Widget ── */

/* ── FAB (Floating Action Button) ── */
.aic-fab{
  position:fixed;
  bottom:24px;
  right:24px;
  z-index:99990;
  width:56px;height:56px;
  border-radius:50%;
  border:1px solid var(--bd);
  background:var(--card);
  color:var(--label);
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 20px rgba(0,0,0,.35), 0 0 0 1px rgba(255,255,255,.04) inset;
  backdrop-filter:blur(var(--fx-blur-12, 12px));
  -webkit-backdrop-filter:blur(var(--fx-blur-12, 12px));
  transition:transform .2s ease, box-shadow .2s ease, bottom .3s ease;
}
.aic-fab:hover{
  transform:scale(1.08);
  box-shadow:0 6px 28px rgba(59,130,246,.25), 0 0 0 1px rgba(255,255,255,.06) inset;
}
.aic-fab:active{ transform:scale(.96); }
.aic-fab svg{ width:26px; height:26px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; transition:transform .2s; }
.aic-fab .aic-icon-close{ display:none; }
.aic-fab.open .aic-icon-chat{ display:none; }
.aic-fab.open .aic-fab-photo{ display:none; }
.aic-fab.open .aic-icon-close{ display:block; }
.aic-fab-photo{
  width:56px;height:56px;
  border-radius:50%;
  object-fit:cover;
  position:absolute;
  inset:0;
}
.aic-fab:has(.aic-fab-photo){ padding:0; overflow:visible; }
.aic-fab:has(.aic-fab-photo) .aic-fab-photo{ border-radius:50%; }

/* Voice mode running in background - pulsing green border on FAB */
.aic-fab.voice-active{
  border-color:rgba(34,197,94,.6);
  box-shadow:0 0 20px rgba(34,197,94,.3), 0 0 40px rgba(34,197,94,.1);
  animation:aicFabVoicePulse 2s ease-in-out infinite;
}
@keyframes aicFabVoicePulse{
  0%,100%{ box-shadow:0 0 15px rgba(34,197,94,.25); border-color:rgba(34,197,94,.5); }
  50%{ box-shadow:0 0 30px rgba(34,197,94,.4); border-color:rgba(34,197,94,.7); }
}

/* Shift FAB up when update banner is visible */
.appUpdateBanner.show ~ #aiAssistantRoot .aic-fab{ bottom:90px; }
.appUpdateBanner.show ~ #aiAssistantRoot .aic-panel{ bottom:158px; }

/* ── Chat Panel ── */
.aic-panel{
  position:fixed;
  bottom:calc(92px + env(safe-area-inset-bottom));
  right:24px;
  z-index:99990;
  width:380px;
  max-height:min(560px, calc(100vh - 120px));
  border-radius:16px;
  border:1px solid var(--bd);
  background:var(--card);
  box-shadow:0 16px 48px rgba(0,0,0,.4), 0 0 0 1px rgba(255,255,255,.04) inset;
  display:flex;flex-direction:column;
  overflow:hidden;
  opacity:0;
  transform:scale(.95) translateY(8px);
  transform-origin:bottom right;
  pointer-events:none;
  transition:opacity .2s ease, transform .2s ease;
}
.aic-panel.open{
  opacity:1;
  transform:scale(1) translateY(0);
  pointer-events:auto;
}
/* Force full height when voice mode overlay is active */
.aic-panel.voice-full{
  height:min(560px, calc(100vh - 120px));
}

/* ── Header ── */
.aic-header{
  display:flex;align-items:center;gap:10px;
  padding:14px 16px;
  border-bottom:1px solid var(--bd);
  flex-shrink:0;
}
.aic-header-avatar{
  width:34px;height:34px;
  border-radius:50%;
  border:1.5px solid rgba(59,130,246,.3);
  overflow:hidden;
  flex-shrink:0;
}
.aic-header-avatar img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}
.aic-header-title{
  flex:1;min-width:0;
  font-size:14px;font-weight:600;color:var(--txt);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.aic-header-actions{ display:flex;gap:4px; }
.aic-hdr-btn{
  width:30px;height:30px;
  border-radius:8px;
  border:none;background:transparent;
  color:var(--mut);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background .15s, color .15s;
}
.aic-hdr-btn:hover{ background:var(--hover); color:var(--txt); }
.aic-hdr-btn svg{ width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round; }

/* ── Messages Area ── */
.aic-messages{
  flex:1;
  overflow-y:auto;
  padding:16px;
  display:flex;flex-direction:column;gap:12px;
  scroll-behavior:smooth;
}
.aic-messages::-webkit-scrollbar{ width:5px; }
.aic-messages::-webkit-scrollbar-track{ background:transparent; }
.aic-messages::-webkit-scrollbar-thumb{ background:var(--bd);border-radius:3px; }

/* ── Welcome Message ── */
.aic-welcome{
  text-align:center;
  padding:24px 16px;
}
.aic-welcome-icon{
  width:64px;height:64px;
  border-radius:50%;
  border:2px solid rgba(59,130,246,.25);
  overflow:hidden;
  margin:0 auto 12px;
}
.aic-welcome-icon img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}
.aic-welcome h3{
  font-size:15px;font-weight:600;color:var(--txt);margin:0 0 6px;
}
.aic-welcome p{
  font-size:12px;color:var(--mut);margin:0;line-height:1.5;
}

/* ── Message Bubbles ── */
.aic-msg{
  display:flex;gap:8px;
  max-width:92%;
  animation:aicFadeIn .2s ease-out;
}
.aic-msg.user{ align-self:flex-end; flex-direction:row-reverse; }
.aic-msg.ai{ align-self:flex-start; }

.aic-msg-avatar{
  width:28px;height:28px;
  border-radius:50%;
  border:1px solid rgba(59,130,246,.25);
  overflow:hidden;
  flex-shrink:0;
}
.aic-msg-avatar img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}
.aic-msg-avatar.initials{
  background:rgba(59,130,246,.18);
  color:var(--label);
  font-weight:700;
  font-size:11px;
  display:flex;align-items:center;justify-content:center;
}

.aic-bubble{
  padding:10px 14px;
  border-radius:14px;
  font-size:13px;
  line-height:1.55;
  color:var(--txt);
  word-break:break-word;
}
.aic-msg.user .aic-bubble{
  background:rgba(59,130,246,.15);
  border:1px solid rgba(59,130,246,.2);
  border-bottom-right-radius:4px;
}
.aic-msg.ai .aic-bubble{
  background:var(--bg2);
  border:1px solid var(--bd);
  border-bottom-left-radius:4px;
}

/* Inline markdown styles */
.aic-bubble strong{ font-weight:600; color:var(--label); }
.aic-bubble code{
  background:rgba(59,130,246,.1);
  padding:1px 5px;border-radius:4px;
  font-size:12px;font-family:monospace;
}
.aic-bubble ul,.aic-bubble ol{
  margin:6px 0 2px;padding-left:18px;
}
.aic-bubble li{ margin-bottom:3px; }

/* Document links */
.aic-doc-link{
  color:var(--ok2);
  text-decoration:underline;
  text-decoration-color:var(--ok);
  text-underline-offset:2px;
  font-weight:600;cursor:pointer;
}
.aic-doc-link:hover{
  color:var(--ok);
  text-decoration-thickness:2px;
}

/* ── Speak Button (per AI bubble) ── */
.aic-bubble{ position:relative; }
.aic-speak-btn{
  position:absolute;
  bottom:4px;right:6px;
  width:22px;height:22px;
  border:none;background:transparent;
  color:var(--mut);
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  border-radius:4px;
  opacity:0;
  transition:opacity .15s, color .15s, background .15s;
  padding:0;
}
.aic-bubble:hover .aic-speak-btn{ opacity:1; }
.aic-speak-btn:hover{ color:var(--label); background:rgba(59,130,246,.1); }
.aic-speak-btn.active{ opacity:1; color:var(--label); }
.aic-speak-btn svg{ width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round; }
.aic-msg.user .aic-speak-btn{ display:none; }

/* ── Voice Output Status (small bar) ── */
.aic-voice-status{
  display:none;
  text-align:center;
  font-size:10px;
  color:var(--ok2);
  padding:4px 16px;
  border-bottom:1px solid var(--bd);
  background:rgba(34,197,94,.05);
}

/* ── Voice Mode Button active state ── */
.aic-hdr-btn.active{
  color:var(--ok2);
  background:rgba(34,197,94,.12);
}

/* ── Voice Overlay (ChatGPT-style) ── */
.aic-voice-overlay{
  position:absolute;
  top:0;left:0;right:0;bottom:0;
  z-index:5;
  background:var(--card);
  display:none;flex-direction:column;
  align-items:center;justify-content:center;
  gap:16px;
  border-radius:16px;
  overflow:hidden;
  clip-path:inset(0 round 16px);
}
.aic-voice-overlay.active{ display:flex; }

/* Panel rotating border trail (separate element, not ::before) */
@property --aic-angle { syntax: '<angle>'; initial-value: 0deg; inherits: false; }
@keyframes aicBorderSpin { to { --aic-angle: 360deg; } }

.aic-border-trail{
  position:fixed;
  bottom:calc(90px + env(safe-area-inset-bottom));
  right:22px;
  width:384px;
  border-radius:18px;
  padding:2px;
  pointer-events:none;
  z-index:99989;
  opacity:0;
  transition:opacity .3s;
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask-composite:exclude;
}
.aic-border-trail.active{ opacity:1; }

/* Height syncs with panel */
.aic-border-trail.voice-full{
  height:calc(min(560px, calc(100vh - 120px)) + 4px);
}
.aic-panel.voice-full{ border-color:transparent; }

/* Listening: green rotating trail */
.aic-border-trail.listening{
  background:conic-gradient(from var(--aic-angle,0deg), transparent 0%, rgba(34,197,94,.85) 8%, rgba(74,222,128,1) 14%, rgba(34,197,94,.85) 20%, transparent 32%);
  animation:aicBorderSpin 3s linear infinite;
}

/* Thinking: amber rotating trail */
.aic-border-trail.thinking{
  background:conic-gradient(from var(--aic-angle,0deg), transparent 0%, rgba(234,179,8,.85) 8%, rgba(250,204,21,1) 14%, rgba(234,179,8,.85) 20%, transparent 32%);
  animation:aicBorderSpin 2s linear infinite;
}

/* Speaking: gentle pulsing border (no rotation, no mask) */
.aic-border-trail.speaking{
  background:none;
  padding:0;
  border:2px solid rgba(99,102,241,.5);
  -webkit-mask:none;
  mask:none;
  mask-composite:unset;
  -webkit-mask-composite:unset;
  animation:aicBorderPulse 2.5s ease-in-out infinite;
}
@keyframes aicBorderPulse{
  0%,100%{
    border-color:rgba(99,102,241,.3);
    box-shadow:0 0 10px rgba(99,102,241,.08);
  }
  50%{
    border-color:rgba(139,92,246,.75);
    box-shadow:0 0 30px rgba(99,102,241,.2), 0 0 55px rgba(139,92,246,.08);
  }
}

/* ── iPad/Touch: glow directly on panel via box-shadow (no separate trail positioning) ── */
@media (pointer:coarse) {
  .aic-border-trail{ display:none !important; }
  .aic-panel.voice-full.listening{
    border-color:rgba(34,197,94,.5) !important;
    box-shadow:0 0 0 2px rgba(34,197,94,.4), 0 0 20px rgba(34,197,94,.15), 0 16px 48px rgba(0,0,0,.4) !important;
    animation:aicPanelGlowGreen 2s ease-in-out infinite !important;
  }
  .aic-panel.voice-full.thinking{
    border-color:rgba(234,179,8,.5) !important;
    box-shadow:0 0 0 2px rgba(234,179,8,.4), 0 0 20px rgba(234,179,8,.15), 0 16px 48px rgba(0,0,0,.4) !important;
    animation:aicPanelGlowAmber 2s ease-in-out infinite !important;
  }
  .aic-panel.voice-full.speaking{
    border-color:rgba(99,102,241,.4) !important;
    box-shadow:0 0 0 2px rgba(99,102,241,.3), 0 0 20px rgba(99,102,241,.1), 0 16px 48px rgba(0,0,0,.4) !important;
    animation:aicPanelGlowPurple 2.5s ease-in-out infinite !important;
  }
  @keyframes aicPanelGlowGreen{
    0%,100%{ border-color:rgba(34,197,94,.3); box-shadow:0 0 0 2px rgba(34,197,94,.2), 0 0 8px rgba(34,197,94,.1), 0 16px 48px rgba(0,0,0,.4); }
    50%{ border-color:rgba(34,197,94,.7); box-shadow:0 0 0 2px rgba(34,197,94,.5), 0 0 24px rgba(34,197,94,.25), 0 16px 48px rgba(0,0,0,.4); }
  }
  @keyframes aicPanelGlowAmber{
    0%,100%{ border-color:rgba(234,179,8,.3); box-shadow:0 0 0 2px rgba(234,179,8,.2), 0 0 8px rgba(234,179,8,.1), 0 16px 48px rgba(0,0,0,.4); }
    50%{ border-color:rgba(234,179,8,.7); box-shadow:0 0 0 2px rgba(234,179,8,.5), 0 0 24px rgba(234,179,8,.25), 0 16px 48px rgba(0,0,0,.4); }
  }
  @keyframes aicPanelGlowPurple{
    0%,100%{ border-color:rgba(99,102,241,.3); box-shadow:0 0 0 2px rgba(99,102,241,.2), 0 0 8px rgba(99,102,241,.08), 0 16px 48px rgba(0,0,0,.4); }
    50%{ border-color:rgba(139,92,246,.6); box-shadow:0 0 0 2px rgba(99,102,241,.4), 0 0 24px rgba(99,102,241,.2), 0 16px 48px rgba(0,0,0,.4); }
  }
}

.aic-voice-orb{
  position:relative;
  width:160px;height:160px;
  min-width:160px;min-height:160px;
  flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.aic-voice-orb-avatar{
  width:88px;height:88px;
  border-radius:50%;
  overflow:hidden;
  position:relative;
  z-index:2;
  border:2.5px solid rgba(59,130,246,.4);
  box-shadow:0 0 20px rgba(59,130,246,.15);
  transition:border-color .4s, box-shadow .4s;
}
.aic-voice-orb-avatar img{ width:100%;height:100%;object-fit:cover;display:block; }

/* Animated glow rings */
.aic-voice-ring{
  position:absolute;
  border-radius:50%;
  border:1.5px solid transparent;
  opacity:0;
  background:transparent;
}
.aic-voice-ring:nth-child(1){ inset:18px; }
.aic-voice-ring:nth-child(2){ inset:6px; }
.aic-voice-ring:nth-child(3){ inset:-6px; }

/* ── Listening: green glow ── */
.aic-voice-overlay.listening .aic-voice-ring{
  border-color:rgba(34,197,94,.25);
  box-shadow:0 0 15px rgba(34,197,94,.15), inset 0 0 15px rgba(34,197,94,.05);
  animation:aicGlowListen 2.5s ease-in-out infinite;
}
.aic-voice-overlay.listening .aic-voice-ring:nth-child(2){ animation-delay:.4s; }
.aic-voice-overlay.listening .aic-voice-ring:nth-child(3){ animation-delay:.8s; }
.aic-voice-overlay.listening .aic-voice-orb-avatar{
  border-color:rgba(34,197,94,.5);
  box-shadow:0 0 30px rgba(34,197,94,.2), 0 0 60px rgba(34,197,94,.08);
}

/* ── Thinking: amber pulse ── */
.aic-voice-overlay.thinking .aic-voice-ring{
  border-color:rgba(234,179,8,.2);
  box-shadow:0 0 12px rgba(234,179,8,.1);
  animation:aicGlowThink 1.5s ease-in-out infinite;
}
.aic-voice-overlay.thinking .aic-voice-ring:nth-child(2){ animation-delay:.2s; }
.aic-voice-overlay.thinking .aic-voice-ring:nth-child(3){ animation-delay:.4s; }
.aic-voice-overlay.thinking .aic-voice-orb-avatar{
  border-color:rgba(234,179,8,.5);
  box-shadow:0 0 25px rgba(234,179,8,.18), 0 0 50px rgba(234,179,8,.06);
}

/* ── Speaking: blue wave ── */
.aic-voice-overlay.speaking .aic-voice-ring{
  border-color:rgba(99,102,241,.35);
  box-shadow:0 0 20px rgba(99,102,241,.2), inset 0 0 20px rgba(99,102,241,.05);
  animation:aicGlowSpeak .9s ease-in-out infinite;
}
.aic-voice-overlay.speaking .aic-voice-ring:nth-child(2){ animation-delay:.15s; }
.aic-voice-overlay.speaking .aic-voice-ring:nth-child(3){ animation-delay:.3s; }
.aic-voice-overlay.speaking .aic-voice-orb-avatar{
  border-color:rgba(99,102,241,.6);
  box-shadow:0 0 35px rgba(99,102,241,.25), 0 0 70px rgba(99,102,241,.1);
}

.aic-voice-label{
  font-size:13px;
  font-weight:500;
  color:var(--mut);
  text-align:center;
  min-height:18px;
  flex-shrink:0;
}

/* ── Response text area in overlay (word-by-word reveal) ── */
.aic-voice-text{
  max-height:80px;
  overflow-y:auto;
  padding:4px 24px;
  font-size:12px;
  line-height:1.5;
  color:var(--txt);
  text-align:center;
  width:100%;
  display:none;
  scroll-behavior:smooth;
  flex:0 1 auto;
}
.aic-voice-text::-webkit-scrollbar{ width:3px; }
.aic-voice-text::-webkit-scrollbar-thumb{ background:var(--bd);border-radius:2px; }
.aic-voice-text.has-text{ display:block; }
.aic-voice-text .vt-done{ color:var(--txt); }
.aic-voice-text .vt-pending{ color:rgba(255,255,255,.15); }

.aic-voice-stop{
  width:38px;height:38px;
  flex-shrink:0;
  border-radius:50%;
  border:2px solid rgba(239,68,68,.35);
  background:rgba(239,68,68,.08);
  color:#ef4444;
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .2s;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
.aic-voice-stop:hover{ background:rgba(239,68,68,.18); border-color:rgba(239,68,68,.5); box-shadow:0 0 15px rgba(239,68,68,.15); }
.aic-voice-stop svg{ width:16px;height:16px;fill:currentColor;stroke:none; }

@keyframes aicGlowListen{
  0%,100%{ opacity:.15; transform:scale(.96); }
  50%{ opacity:.55; transform:scale(1.04); }
}
@keyframes aicGlowThink{
  0%,100%{ opacity:.2; transform:scale(.98); }
  50%{ opacity:.5; transform:scale(1.03); }
}
@keyframes aicGlowSpeak{
  0%,100%{ opacity:.2; transform:scale(.93); }
  20%{ opacity:.65; transform:scale(1.07); }
  40%{ opacity:.3; transform:scale(.97); }
  60%{ opacity:.7; transform:scale(1.09); }
  80%{ opacity:.25; transform:scale(.95); }
}

/* ── DSGVO Consent Dialog ── */
.aic-consent{
  text-align:center;
  padding:24px 16px;
}
.aic-consent-icon{
  font-size:36px;
  margin-bottom:12px;
}
.aic-consent h3{
  font-size:15px;font-weight:600;color:var(--txt);margin:0 0 12px;
}
.aic-consent p{
  font-size:12px;color:var(--mut);margin:0 0 20px;line-height:1.6;
  text-align:left;
}
.aic-consent-btns{
  display:flex;gap:10px;justify-content:center;
}
.aic-consent-accept{
  padding:8px 20px;
  border-radius:10px;
  border:none;
  background:var(--ok);
  color:#fff;
  font-size:13px;font-weight:600;
  cursor:pointer;
  transition:filter .15s;
}
.aic-consent-accept:hover{ filter:brightness(1.15); }
.aic-consent-decline{
  padding:8px 20px;
  border-radius:10px;
  border:1px solid var(--bd);
  background:transparent;
  color:var(--mut);
  font-size:13px;
  cursor:pointer;
  transition:color .15s, border-color .15s;
}
.aic-consent-decline:hover{ color:var(--txt); border-color:var(--txt); }

/* ── Timestamp ── */
.aic-time{
  font-size:10px;color:var(--mut);
  text-align:center;
  padding:4px 0;
}

/* ── Typing Indicator ── */
.aic-typing{
  display:flex;gap:8px;align-self:flex-start;
  max-width:92%;
}
.aic-typing .aic-bubble{
  display:flex;align-items:center;gap:4px;
  padding:12px 18px;
}
.aic-dot{
  width:7px;height:7px;
  border-radius:50%;
  background:var(--mut);
  animation:aicDotPulse 1.4s ease-in-out infinite;
}
.aic-dot:nth-child(2){ animation-delay:.2s; }
.aic-dot:nth-child(3){ animation-delay:.4s; }

/* ── "Still thinking" hint ── */
.aic-thinking-hint{
  font-size:11px;color:var(--mut);
  text-align:center;
  padding:2px 0;
  animation:aicFadeIn .3s ease;
}

/* ── Error message ── */
.aic-error{
  font-size:12px;
  color:var(--bad);
  text-align:center;
  padding:8px 12px;
  background:rgba(239,68,68,.08);
  border:1px solid rgba(239,68,68,.2);
  border-radius:10px;
  animation:aicFadeIn .2s ease-out;
}

/* ── Input Area ── */
.aic-input-area{
  display:flex;align-items:flex-end;gap:6px;
  padding:12px 14px;
  border-top:1px solid var(--bd);
  flex-shrink:0;
}
.aic-input-btns{
  display:flex;flex-direction:column;gap:4px;
  flex-shrink:0;
}
.aic-input-wrap{
  flex:1;
  position:relative;
}
.aic-input{
  width:100%;
  min-height:38px;
  max-height:120px;
  padding:8px 12px;
  border-radius:12px;
  border:1px solid var(--bd);
  background:var(--bg2);
  color:var(--txt);
  font-size:13px;
  font-family:inherit;
  line-height:1.45;
  resize:none;
  outline:none;
  transition:border-color .15s;
}
.aic-input:focus{ border-color:var(--label); }
.aic-input::placeholder{ color:var(--mut); }
.aic-char-count{
  position:absolute;
  bottom:8px;right:10px;
  font-size:9px;
  color:var(--mut);
  opacity:0;
  transition:opacity .15s;
  pointer-events:none;
}
.aic-input:focus ~ .aic-char-count{ opacity:1; }
.aic-char-count.warn{ color:var(--bad); }

/* ── Mic Button (Speech-to-Text) ── */
.aic-mic-btn{
  width:38px;height:38px;
  border-radius:10px;
  border:none;
  background:transparent;
  color:var(--mut);
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  transition:color .15s, background .15s, transform .1s;
}
.aic-mic-btn:hover{ color:var(--txt); background:var(--hover); }
.aic-mic-btn:active{ transform:scale(.92); }
.aic-mic-btn.recording{
  color:#ef4444;
  background:rgba(239,68,68,.1);
  animation:aicMicPulse 1.5s ease-in-out infinite;
}
.aic-mic-btn svg{ width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round; }
.aic-mic-btn.hidden{ display:none; }

@keyframes aicMicPulse{
  0%,100%{ box-shadow:0 0 0 0 rgba(239,68,68,.3); }
  50%{ box-shadow:0 0 0 8px rgba(239,68,68,0); }
}

.aic-send-btn{
  width:38px;height:38px;
  border-radius:10px;
  border:none;
  background:var(--label);
  color:#fff;
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
  transition:background .15s, transform .1s, opacity .15s;
}
.aic-send-btn:hover{ filter:brightness(1.15); }
.aic-send-btn:active{ transform:scale(.92); }
.aic-send-btn:disabled{ opacity:.4;cursor:not-allowed; }
.aic-send-btn svg{ width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round; }

/* ── Animations ── */
@keyframes aicFadeIn{
  from{opacity:0;transform:translateY(6px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes aicDotPulse{
  0%,60%,100%{opacity:.3;transform:scale(.85)}
  30%{opacity:1;transform:scale(1)}
}

/* ── Responsive ── */

/* Touch devices: Apple 44px minimum touch targets */
@media(pointer:coarse){
  .aic-mic-btn{ width:44px;height:44px; }
  .aic-send-btn{ width:44px;height:44px; }
  .aic-mic-btn svg,.aic-send-btn svg{ width:20px;height:20px; }
}

/* FAB: safe-area-inset for notched devices (iPhone Home Indicator) */
.aic-fab{
  bottom:calc(24px + env(safe-area-inset-bottom));
}

@media(max-width:768px){
  .aic-panel{
    width:calc(100vw - 32px);
    right:16px;
    max-height:min(500px, calc(100vh - 120px));
  }
  .aic-border-trail{
    width:calc(100vw - 28px);
    right:14px;
  }
}
@media(max-width:480px){
  .aic-panel{
    inset:8px;
    width:auto;
    max-height:none;
    height:auto;
    bottom:calc(72px + env(safe-area-inset-bottom));
    border-radius:14px;
  }
  .aic-border-trail{
    top:6px;
    left:6px;
    right:6px;
    bottom:calc(70px + env(safe-area-inset-bottom));
    width:auto;
    height:auto;
    border-radius:16px;
  }
  .aic-border-trail.voice-full{
    height:auto;
  }
  .aic-fab{
    bottom:calc(12px + env(safe-area-inset-bottom)) !important;
    right:12px;
    width:50px;height:50px;
  }
  .aic-fab svg{width:22px;height:22px}
  /* Input-Bereich: groesser auf kleinem Screen */
  .aic-input-area{padding:8px 10px}
  .aic-input-area textarea{font-size:16px;min-height:40px}
  /* Header kompakter */
  .aic-hd{padding:10px 12px}
  .aic-hd .aic-title{font-size:.9rem}
}

/* Sehr kleine Screens (iPhone SE / mini) */
@media(max-width:375px){
  .aic-panel{
    inset:4px;
    bottom:calc(66px + env(safe-area-inset-bottom));
    border-radius:12px;
  }
  .aic-border-trail{
    top:2px;
    left:2px;
    right:2px;
    bottom:calc(64px + env(safe-area-inset-bottom));
    border-radius:14px;
  }
  .aic-fab{
    bottom:calc(8px + env(safe-area-inset-bottom)) !important;
    right:8px;
    width:46px;height:46px;
  }
}

/* iPhone Landscape: begrenzte Hoehe */
@media(max-height:500px){
  .aic-panel{
    top:8px;
    bottom:calc(8px + env(safe-area-inset-bottom));
    max-height:none;
    height:auto;
  }
  .aic-messages{padding:10px 12px}
  .aic-hd{padding:8px 12px}
  .aic-hd .aic-hd-actions button{width:28px;height:28px}
}

/* Touch: tap-delay entfernen + Input-Zoom verhindern */
@media(pointer:coarse){
  .aic-fab,.aic-send-btn,.aic-mic-btn,.aic-hd-actions button,.aic-input-area textarea{
    touch-action:manipulation;
  }
  .aic-input-area textarea{font-size:16px}
  .aic-hd-actions button{min-width:36px;min-height:36px}
  /* Scrollbar auf Touch verstecken (native Scroll) */
  .aic-messages::-webkit-scrollbar{display:none}
  .aic-messages{scrollbar-width:none;-ms-overflow-style:none}
}

/* ── Light theme adjustments ── */
html[data-theme=light] .aic-fab{
  box-shadow:0 4px 16px rgba(0,0,0,.12), 0 0 0 1px rgba(0,0,0,.04) inset;
}
html[data-theme=light] .aic-fab:hover{
  box-shadow:0 6px 24px rgba(59,130,246,.18), 0 0 0 1px rgba(0,0,0,.06) inset;
}
html[data-theme=light] .aic-panel{
  box-shadow:0 16px 48px rgba(0,0,0,.12), 0 0 0 1px rgba(0,0,0,.06) inset;
}
html[data-theme=light] .aic-msg.user .aic-bubble{
  background:rgba(59,130,246,.1);
  border-color:rgba(59,130,246,.15);
}
html[data-theme=light] .aic-voice-text .vt-pending{ color:rgba(0,0,0,.12); }

/* ── Memory Panel ── */
.aic-mem-panel{
  position:absolute;
  inset:0;
  z-index:10;
  background:var(--card, #1a1a2e);
  display:flex;
  flex-direction:column;
  border-radius:inherit;
  animation:aicMemIn .2s ease;
}
@keyframes aicMemIn{
  from{ opacity:0; transform:translateY(8px); }
  to{ opacity:1; transform:translateY(0); }
}
.aic-mem-hd{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 16px;
  border-bottom:1px solid var(--bd, rgba(255,255,255,.08));
  font-weight:600;
  font-size:.95rem;
}
.aic-mem-sel{
  padding:8px 16px 0;
}
.aic-mem-sel select{
  width:100%;
  padding:6px 10px;
  border-radius:8px;
  border:1px solid var(--bd, rgba(255,255,255,.08));
  background:var(--bg, #0f0f23);
  color:var(--txt, #e0e0e8);
  font-size:.85rem;
}
.aic-mem-list{
  flex:1;
  overflow-y:auto;
  padding:12px 16px;
}
.aic-mem-count{
  text-align:right;
  font-size:.75rem;
  color:var(--mut, #888);
  margin-bottom:8px;
}
.aic-mem-item{
  padding:10px 12px;
  margin-bottom:8px;
  border-radius:10px;
  background:rgba(255,255,255,.04);
  border:1px solid var(--bd, rgba(255,255,255,.06));
}
.aic-mem-txt{
  font-size:.88rem;
  line-height:1.4;
  color:var(--txt, #e0e0e8);
}
.aic-mem-meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-top:6px;
  font-size:.75rem;
  color:var(--mut, #888);
}
.aic-mem-del{
  background:none;
  border:none;
  cursor:pointer;
  padding:4px;
  border-radius:4px;
  color:var(--mut, #888);
  transition:color .15s;
}
.aic-mem-del svg{
  width:14px;height:14px;
  fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
.aic-mem-del:hover{ color:var(--bad, #ef4444); }
.aic-mem-empty{
  text-align:center;
  color:var(--mut, #888);
  font-size:.88rem;
  padding:40px 0;
}

/* Light theme memory panel */
html[data-theme=light] .aic-mem-item{
  background:rgba(0,0,0,.03);
  border-color:rgba(0,0,0,.06);
}

/* ── Message Panel ── */
.aic-msg-panel{
  position:absolute;
  inset:0;
  z-index:10;
  background:var(--card, #1a1a2e);
  display:flex;
  flex-direction:column;
  border-radius:inherit;
  animation:aicMemIn .2s ease;
}
.aic-msg-list{
  flex:1;
  overflow-y:auto;
  padding:12px 16px;
}
.aic-msg-item{
  padding:12px 14px;
  margin-bottom:10px;
  border-radius:10px;
  background:rgba(255,255,255,.04);
  border:1px solid var(--bd, rgba(255,255,255,.06));
  transition:border-color .2s;
}
.aic-msg-item.unread{
  border-color:rgba(59,130,246,.4);
  background:rgba(59,130,246,.06);
}
.aic-msg-from{
  font-size:.8rem;
  color:var(--mut, #888);
  margin-bottom:4px;
}
.aic-msg-from strong{ color:var(--txt, #e0e0e8); }
.aic-msg-txt{
  font-size:.9rem;
  line-height:1.45;
  color:var(--txt, #e0e0e8);
}
.aic-msg-meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:.72rem;
  color:var(--mut, #888);
  margin-top:8px;
}
.aic-msg-reply{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:4px 10px;
  border-radius:6px;
  border:1px solid var(--bd, rgba(255,255,255,.1));
  background:rgba(59,130,246,.1);
  color:rgba(59,130,246,.9);
  font-size:.75rem;
  font-weight:600;
  cursor:pointer;
  transition:background .15s, color .15s;
}
.aic-msg-reply:hover{
  background:rgba(59,130,246,.2);
  color:rgba(59,130,246,1);
}
.aic-msg-reply svg{
  width:12px;height:12px;
  fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
.aic-msg-task{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:4px 10px;
  border-radius:6px;
  border:1px solid rgba(34,197,94,.35);
  background:rgba(34,197,94,.12);
  color:rgba(34,197,94,1);
  font-size:.75rem;
  font-weight:600;
  cursor:pointer;
  transition:background .15s, border-color .15s;
}
.aic-msg-task:hover{
  background:rgba(34,197,94,.22);
  border-color:rgba(34,197,94,.55);
}
.aic-msg-actions{
  display:flex;
  gap:6px;
  align-items:center;
}
.aic-msg-del{
  background:none;
  border:none;
  cursor:pointer;
  padding:4px;
  border-radius:4px;
  color:var(--mut, #888);
  transition:color .15s;
}
.aic-msg-del svg{
  width:13px;height:13px;
  fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
.aic-msg-del:hover{ color:var(--bad, #ef4444); }

/* ── Message Badge on Envelope Button ── */
.aic-msg-badge{
  position:absolute;
  top:-4px;right:-4px;
  min-width:16px;height:16px;
  border-radius:99px;
  background:#ef4444;
  color:#fff;
  font-size:10px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  padding:0 4px;
  line-height:1;
  pointer-events:none;
  animation:aicBadgePulse 2s ease-in-out infinite;
}
#aicMsgBtn{ position:relative; }
#aicMsgBtn.msg-pulse svg{ animation:aicEnvShake 1.5s ease-in-out infinite; }

@keyframes aicBadgePulse{
  0%,100%{ transform:scale(1); }
  50%{ transform:scale(1.15); }
}
@keyframes aicEnvShake{
  0%,100%{ transform:rotate(0); }
  15%{ transform:rotate(8deg); }
  30%{ transform:rotate(-6deg); }
  45%{ transform:rotate(4deg); }
  60%{ transform:rotate(0); }
}

/* ── FAB pulse when messages pending ── */
.aic-fab.msg-pending{
  border-color:rgba(239,68,68,.8);
  animation:aicFabMsgPulse 1.2s ease-in-out infinite;
}
.aic-fab.msg-pending::before{
  content:'';
  position:absolute;
  inset:-6px;
  border-radius:50%;
  border:2px solid rgba(239,68,68,.5);
  animation:aicFabMsgRing 1.2s ease-out infinite;
  pointer-events:none;
}
@keyframes aicFabMsgPulse{
  0%,100%{ box-shadow:0 0 12px rgba(239,68,68,.3), 0 0 24px rgba(239,68,68,.1); transform:scale(1); }
  50%{ box-shadow:0 0 24px rgba(239,68,68,.6), 0 0 48px rgba(239,68,68,.2); transform:scale(1.06); }
}
@keyframes aicFabMsgRing{
  0%{ transform:scale(1); opacity:.8; }
  100%{ transform:scale(1.5); opacity:0; }
}

/* ── Envelope badge above Linda's head when message pending ── */
.aic-fab-envelope{
  position:absolute;
  top:-8px;
  right:-10px;
  width:30px;
  height:30px;
  border-radius:50%;
  background:linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
  box-shadow:0 4px 12px rgba(239,68,68,.55), 0 0 0 2px rgba(255,255,255,.95);
  display:flex;
  align-items:center;
  justify-content:center;
  opacity:0;
  transform:scale(.3) translateY(8px);
  pointer-events:none;
  transition:opacity .25s ease, transform .35s cubic-bezier(.34,1.56,.64,1);
  z-index:5;
}
.aic-fab-envelope svg{
  width:16px;
  height:16px;
  fill:none;
  stroke:#fff;
  stroke-width:2.2;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.aic-fab.msg-pending .aic-fab-envelope{
  opacity:1;
  transform:scale(1) translateY(0);
  animation:aicFabEnvBob 1.6s ease-in-out infinite .35s;
}
@keyframes aicFabEnvBob{
  0%,100%{ transform:scale(1) translateY(0) rotate(-4deg); }
  50%{ transform:scale(1.08) translateY(-3px) rotate(4deg); }
}
html[data-theme=light] .aic-fab-envelope{
  box-shadow:0 4px 12px rgba(239,68,68,.4), 0 0 0 2px #fff;
}

/* Light theme message items */
html[data-theme=light] .aic-msg-item{
  background:rgba(0,0,0,.03);
  border-color:rgba(0,0,0,.06);
}
html[data-theme=light] .aic-msg-item.unread{
  background:rgba(59,130,246,.06);
  border-color:rgba(59,130,246,.2);
}
