.medex-assistant {
  position: fixed;
  left: max(18px, env(safe-area-inset-left));
  bottom: max(16px, env(safe-area-inset-bottom));
  z-index: 1050;
  display: flex;
  align-items: flex-end;
  gap: 10px;
  pointer-events: none;
  transition: left .2s ease, right .2s ease, opacity .2s ease, visibility .2s ease, transform .2s ease;
}

.medex-assistant.has-admin-chat {
  right: max(12px, env(safe-area-inset-right));
  bottom: calc(
    var(--admin-chat-toggle-bottom, 20px) +
    var(--admin-chat-toggle-size, 60px) +
    4px
  );
  left: auto;
}

.medex-assistant.is-admin-chat-open {
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px);
}

.medex-assistant__character {
  position: relative;
  width: calc(var(--admin-chat-toggle-size, 60px) + 10px);
  height: calc(var(--admin-chat-toggle-size, 60px) + 10px);
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  pointer-events: auto;
  transform-origin: 50% 100%;
  filter: saturate(1.18) drop-shadow(0 12px 18px rgba(37, 99, 235, .22));
  transition: transform .25s ease, filter .25s ease;
}

.medex-assistant__character:hover {
  transform: translateY(-3px) scale(1.04);
  filter: saturate(1.28) drop-shadow(0 22px 32px rgba(14, 165, 233, .32));
}

.medex-assistant__character:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--primary, #2563eb) 45%, transparent);
  outline-offset: 3px;
  border-radius: 24px;
}

.medex-assistant__character svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.medex-assistant__eye {
  transform-box: fill-box;
  transform-origin: center;
}

.medex-assistant__character.is-blinking .medex-assistant__eye {
  animation: medex-blink .16s ease-in-out;
}

.medex-assistant__smile {
  transform-box: fill-box;
  transform-origin: center top;
}

.medex-assistant__character.is-smiling .medex-assistant__smile {
  animation: medex-smile .9s ease-in-out;
}

.medex-assistant__online {
  position: absolute;
  right: 2px;
  bottom: 2px;
  width: 10px;
  height: 10px;
  border: 2px solid white;
  border-radius: 50%;
  background: #2dd4bf;
  box-shadow: 0 2px 8px rgba(15, 23, 42, .25);
}

.medex-assistant__bubble {
  width: min(290px, calc(100vw - 112px));
  margin-bottom: 34px;
  padding: 15px 16px 13px;
  border: 1px solid rgba(148, 163, 184, .25);
  border-radius: 20px 20px 6px 20px;
  color: #e0f2fe;
  background: linear-gradient(145deg, rgba(15, 23, 42, .94), rgba(30, 64, 175, .9));
  box-shadow: 0 18px 50px rgba(14, 165, 233, .24), 0 2px 8px rgba(15, 23, 42, .18);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  pointer-events: auto;
  opacity: 0;
  visibility: hidden;
  transform: translateY(12px) scale(.96);
  transform-origin: 100% 100%;
  transition: opacity .25s ease, transform .3s cubic-bezier(.2,.8,.2,1), visibility .25s;
}

.medex-assistant.is-speaking .medex-assistant__bubble {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}

.medex-assistant.is-greeting .medex-assistant__character {
  animation: medex-wave 1.1s ease-in-out 2;
}

.medex-assistant__heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 7px;
}

.medex-assistant__badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #67e8f9;
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .12em;
}

.medex-assistant__badge span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #2dd4bf;
  box-shadow: 0 0 0 4px rgba(45, 212, 191, .16);
}

.medex-assistant__message {
  margin: 0;
  color: #f8fafc;
  font-size: .88rem;
  font-weight: 600;
  line-height: 1.45;
}

.medex-assistant__close {
  display: grid;
  width: 25px;
  height: 25px;
  padding: 0;
  border: 0;
  border-radius: 8px;
  place-items: center;
  color: #64748b;
  background: rgba(219, 234, 254, .14);
  cursor: pointer;
}

.medex-assistant__silence {
  margin-top: 9px;
  padding: 0;
  border: 0;
  color: #bfdbfe;
  background: transparent;
  font-size: .72rem;
  font-weight: 600;
  cursor: pointer;
}

.medex-assistant__silence:hover { color: #2563eb; }

.medex-assistant__spark {
  position: absolute;
  z-index: -1;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: #38bdf8;
  opacity: 0;
  transform: rotate(45deg);
}

.medex-assistant__spark--one { top: 7px; left: 4px; }
.medex-assistant__spark--two { top: 23px; right: 3px; background: #818cf8; }
.medex-assistant__spark--three { top: 16px; left: -10px; background: #2dd4bf; }
.medex-assistant.is-greeting .medex-assistant__spark { animation: medex-spark 1.5s ease-out 2; }
.medex-assistant.is-greeting .medex-assistant__spark--two { animation-delay: .28s; }

@keyframes medex-wave {
  0%, 100% { transform: rotate(0) translateY(0); }
  20% { transform: rotate(-5deg) translateY(-4px); }
  45% { transform: rotate(5deg) translateY(-6px); }
  70% { transform: rotate(-3deg) translateY(-2px); }
}

@keyframes medex-spark {
  0% { opacity: 0; transform: scale(.4) rotate(45deg); }
  40% { opacity: 1; transform: scale(1) rotate(100deg); }
  100% { opacity: 0; transform: translateY(-15px) scale(.4) rotate(160deg); }
}

@keyframes medex-blink {
  0%, 100% { transform: scaleY(1); }
  45%, 55% { transform: scaleY(.08); }
}

@keyframes medex-smile {
  0%, 100% { transform: translateY(0) scale(1); }
  40%, 65% { transform: translateY(-1px) scale(1.14, 1.3); }
}

@media (min-width: 768px) {
  body:not(.sidebar-collapsed) .medex-assistant:not(.has-admin-chat) { left: calc(var(--sidebar-expanded-width) + 18px); }
  body.sidebar-collapsed .medex-assistant:not(.has-admin-chat) { left: calc(var(--sidebar-collapsed-width) + 18px); }
}

@media (max-width: 640px) {
  .medex-assistant__character { width: calc(var(--admin-chat-toggle-size, 60px) + 8px); height: calc(var(--admin-chat-toggle-size, 60px) + 8px); }
  .medex-assistant__bubble { margin-bottom: 34px; padding: 13px 14px 12px; }
}

@media (prefers-reduced-motion: reduce) {
  .medex-assistant *,
  .medex-assistant *::before,
  .medex-assistant *::after {
    animation: none !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}

.meli-panel[hidden] { display: none; }
.meli-panel { position: fixed; right: 24px; bottom: calc(var(--admin-chat-toggle-bottom, 20px) + var(--admin-chat-toggle-size, 60px) + 84px); z-index: 1050; width: min(410px, calc(100vw - 24px)); max-height: min(720px, calc(100dvh - 188px)); display: flex; flex-direction: column; background: #fff; color: #1f2937; border: 1px solid #dbe2ee; border-radius: 18px; box-shadow: 0 18px 55px #17255426; overflow: hidden; }
.meli-panel__header { display: flex; align-items: center; gap: 8px; padding: 14px 16px; background: #263e88; color: #fff; }
.meli-panel__header div { flex: 1; }
.meli-panel__header strong { display: block; font-size: 16px; }
.meli-panel__header small { font-size: 11px; opacity: .85; }
.meli-panel__header button { width: 30px; height: 30px; border-radius: 8px; }
.meli-panel__header button:hover { background: #ffffff24; }
.meli-panel__status { padding: 9px 14px; font-size: 12px; background: #f3f6fc; }
.meli-panel__messages { overflow-y: auto; min-height: 110px; flex: 1 1 auto; padding: 12px; display: flex; flex-direction: column; gap: 10px; }
.meli-message { padding: 10px 12px; border-radius: 12px; background: #f3f4f6; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; line-height: 1.5; }
.meli-message--user { background: #e7edff; margin-left: 24px; }
.meli-message--assistant { margin-right: 12px; }
.meli-panel__proposals { max-height: 240px; flex-shrink: 0; overflow-y: auto; }
.meli-proposal { margin: 8px 12px; padding: 12px; border: 1px solid #c7d2fe; border-radius: 12px; font-size: 12px; }
.meli-proposal strong { display: block; margin-bottom: 6px; }
.meli-proposal pre { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 140px; overflow: auto; font-family: inherit; margin: 8px 0; }
.meli-proposal button { border: 1px solid #d1d5db; padding: 6px 10px; border-radius: 7px; margin-right: 6px; }
.meli-proposal button:first-of-type { background: #263e88; color: white; border-color: #263e88; }
.meli-panel__form { display: flex; gap: 8px; border-top: 1px solid #e5e7eb; padding: 10px 12px; }
.meli-panel__form textarea { width: 100%; min-height: 44px; max-height: 110px; resize: vertical; border: 1px solid #d1d5db; border-radius: 10px; padding: 8px; font-size: 13px; }
.meli-panel__form button { display: grid; place-items: center; align-self: flex-end; background: #263e88; color: white; width: 40px; height: 40px; border-radius: 10px; flex-shrink: 0; }
.meli-panel button:disabled { opacity: .5; cursor: wait; }
.meli-panel__hint { padding: 0 12px 10px; color: #6b7280; font-size: 10px; }
@media (max-width: 640px) { .meli-panel { right: 12px; max-height: calc(100dvh - 188px); } }
