/* Chat del bot — syleos.company
 *
 * Archivo aparte y no dentro de styles.css: es lo último que se agregó y lo
 * primero que se saca si hay que apagarlo. Un <link> menos y la burbuja
 * desaparece sin tocar el resto del sitio.
 *
 * Paleta de la marca (--accent, el fondo oscuro del panel) para que el chat se
 * lea como parte del sitio y no como un widget pegado de un tercero -- que es
 * exactamente lo que la home promete que no hay.
 */

/* La burbuja lanzadora
   ------------------------------------------------------------------------ */

.bot-lanzador {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 60;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 13px 20px;
  border: 1px solid rgba(16, 196, 206, .35);
  border-radius: 999px;
  background: #0A0E13;
  color: #f3f6f8;
  font: 600 14px/1 "Sora", system-ui, sans-serif;
  cursor: pointer;
  box-shadow: 0 10px 30px rgba(0, 0, 0, .35);
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}

.bot-lanzador:hover {
  transform: translateY(-2px);
  border-color: var(--accent);
  background: #0d141b;
}

.bot-lanzador:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

/* El puntito que dice "hay alguien". Se anima suave y se queda quieto si el
   visitante pidió menos movimiento (ver el @media del final). */
.bot-lanzador::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 0 rgba(16, 196, 206, .55);
  animation: bot-latido 2.4s ease-out infinite;
}

@keyframes bot-latido {
  0%   { box-shadow: 0 0 0 0 rgba(16, 196, 206, .5); }
  70%  { box-shadow: 0 0 0 9px rgba(16, 196, 206, 0); }
  100% { box-shadow: 0 0 0 0 rgba(16, 196, 206, 0); }
}

/* La caja del chat
   ------------------------------------------------------------------------ */

.bot-caja {
  position: fixed;
  right: 22px;
  bottom: 84px;
  z-index: 61;
  width: min(380px, calc(100vw - 44px));
  height: min(540px, calc(100vh - 130px));
  display: flex;
  flex-direction: column;
  background: #0A0E13;
  border: 1px solid rgba(16, 196, 206, .22);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .6), 0 0 0 1px rgba(255, 255, 255, .03) inset;
}

.bot-cabecera {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 15px 16px 13px;
  border-bottom: 1px solid rgba(255, 255, 255, .07);
}

.bot-titulo {
  margin: 0;
  font: 700 14px/1.3 "Sora", system-ui, sans-serif;
  color: #f3f6f8;
}

.bot-sub {
  margin: 3px 0 0;
  font: 400 11.5px/1.4 "Sora", system-ui, sans-serif;
  color: #8b98a3;
}

.bot-cerrar {
  flex: none;
  width: 30px;
  height: 30px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: #8b98a3;
  font-size: 19px;
  line-height: 1;
  cursor: pointer;
}

.bot-cerrar:hover { color: #f3f6f8; background: rgba(255, 255, 255, .06); }
.bot-cerrar:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* El hilo
   ------------------------------------------------------------------------ */

.bot-hilo {
  flex: 1;
  overflow-y: auto;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 9px;
  /* Sin esto, un mensaje largo empuja el ancho de la caja entera. */
  min-width: 0;
}

.bot-msg {
  max-width: 84%;
  padding: 10px 13px;
  border-radius: 14px;
  font: 400 13.5px/1.5 "Sora", system-ui, sans-serif;
  /* El texto viene de un modelo: puede traer una palabra larguísima o una URL
     sin espacios, y sin esto se desborda la caja. */
  overflow-wrap: anywhere;
  white-space: pre-wrap;
}

.bot-msg-bot {
  align-self: flex-start;
  background: rgba(255, 255, 255, .06);
  color: #e8eef2;
  border-bottom-left-radius: 5px;
}

.bot-msg-yo {
  align-self: flex-end;
  background: rgba(16, 196, 206, .16);
  border: 1px solid rgba(16, 196, 206, .25);
  color: #f3f6f8;
  border-bottom-right-radius: 5px;
}

/* Los tres puntitos del "escribiendo" */
.bot-pensando {
  display: flex;
  gap: 4px;
  align-items: center;
  padding: 13px;
}

.bot-pensando span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #8b98a3;
  animation: bot-punto 1.3s ease-in-out infinite;
}

.bot-pensando span:nth-child(2) { animation-delay: .18s; }
.bot-pensando span:nth-child(3) { animation-delay: .36s; }

@keyframes bot-punto {
  0%, 60%, 100% { opacity: .3; transform: translateY(0); }
  30%           { opacity: 1;  transform: translateY(-3px); }
}

/* El botón de agendar, que es a donde queremos que termine todo esto */
.bot-agendar {
  align-self: flex-start;
  margin-top: 2px;
  padding: 11px 18px;
  border: 0;
  border-radius: 999px;
  background: var(--accent);
  color: #04252a;
  font: 700 13px/1 "Sora", system-ui, sans-serif;
  text-decoration: none;
  cursor: pointer;
}

.bot-agendar:hover { background: #1fe6ff; }
.bot-agendar:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

/* El pie: donde se escribe
   ------------------------------------------------------------------------ */

.bot-form {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  padding: 11px 12px 12px;
  border-top: 1px solid rgba(255, 255, 255, .07);
}

.bot-form textarea {
  flex: 1;
  min-height: 40px;
  max-height: 96px;
  padding: 11px 13px;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 12px;
  background: rgba(255, 255, 255, .04);
  color: #f3f6f8;
  font: 400 13.5px/1.45 "Sora", system-ui, sans-serif;
  resize: none;
}

.bot-form textarea::placeholder { color: #6c7a86; }
.bot-form textarea:focus { outline: none; border-color: var(--accent); }
.bot-form textarea:disabled { opacity: .55; }

.bot-enviar {
  flex: none;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 12px;
  background: var(--accent);
  color: #04252a;
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
}

.bot-enviar:hover { background: #1fe6ff; }
.bot-enviar:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

.bot-legal {
  margin: 0;
  padding: 0 14px 11px;
  font: 400 10.5px/1.4 "Sora", system-ui, sans-serif;
  color: #6c7a86;
}

.bot-legal a { color: #8b98a3; }

/* El campo trampa. Fuera de pantalla y NO display:none: un bot que completa
   todo lo llena igual, y ahí es donde lo detectamos. Con display:none muchos
   bots lo saltean, que es justo lo que no queremos. */
.bot-trampa {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* Pantallas chicas: el chat ocupa todo, como cualquier app de mensajes.
   ------------------------------------------------------------------------ */

@media (max-width: 520px) {
  .bot-caja {
    right: 0;
    bottom: 0;
    width: 100vw;
    height: 100dvh;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
  }

  .bot-lanzador { right: 14px; bottom: 14px; padding: 12px 17px; font-size: 13px; }
}

@media (prefers-reduced-motion: reduce) {
  .bot-lanzador::before,
  .bot-pensando span { animation: none; }
  .bot-lanzador { transition: none; }
}
