/* Stifterverband's existing bot design, scoped to this component only. */
.sv-assistant {
  --sv-chat-bg: #e9e8e2;
  --sv-chat-text: #355464;
  color: var(--sv-chat-text);
  font-family: inherit;
}

.sv-assistant *,
.sv-assistant *::before,
.sv-assistant *::after { box-sizing: border-box; }
.sv-assistant [hidden] { display: none !important; }
.sv-assistant button { color: inherit; cursor: pointer; }
.sv-assistant button:disabled { cursor: not-allowed; }
.sv-assistant button:focus-visible,
.sv-assistant textarea:focus-visible { outline: 2px solid var(--sv-chat-text); outline-offset: 2px; }

.sv-assistant__launcher {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 22px;
  border: 0;
  border-radius: 30px;
  background: #efefef;
  font: 16px Arial, sans-serif;
  line-height: 24px;
}
.sv-assistant__launcher svg { height: 28px; width: auto; flex-shrink: 0; }

.sv-assistant__panel {
  position: fixed;
  /* Above the site navigation (101), below the CCM19 consent banner. */
  z-index: 102;
  inset: auto 0 0 auto;
  width: 100%;
  max-width: 100%;
  max-height: 100dvh;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: white;
  color: var(--sv-chat-text);
  box-shadow: 0 4px 8px #0003, 0 6px 20px #0003;
  overflow: hidden;
}
.sv-assistant__chat {
  max-height: 100dvh;
  display: flex;
  flex-direction: column;
  text-align: left;
}
/* Reserve the conversation height only after the consent screen is dismissed. */
.sv-assistant__chat:not(.ai-chatbot--tos-pending):has(> .sv-assistant__conversation:not([hidden])) {
  min-height: min(100dvh, max(560px, 80dvh));
}
.sv-assistant__header {
  display: flex;
  justify-content: flex-end;
  flex-shrink: 0;
  padding: 15px;
  background: var(--sv-chat-bg);
}
.sv-assistant__close {
  width: 38px;
  height: 38px;
  padding: 3px 5px;
  border: 1.5px solid var(--sv-chat-text);
  border-radius: 90px;
  background: none;
  line-height: 10px;
}
.sv-assistant__close svg { transform: scale(.4); }
.sv-assistant__close:hover { border-color: transparent; }
.sv-assistant__notice { min-height: 0; overflow-y: auto; }
.sv-assistant__conversation { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.sv-assistant .ai-chatbot__messages {
  /* Keep absolutely positioned screen-reader labels inside this scroll area. */
  position: relative;
  /* The footer can grow with the textarea; let flex reserve its actual height. */
  flex: 1 1 auto;
  min-height: 0;
  padding: 0 30px;
  overflow-y: auto;
  overflow-wrap: anywhere;
  background: var(--sv-chat-bg);
  font-size: 14.4px;
  line-height: normal;
}
.sv-assistant .ai-chatbot__intro { display: flow-root; min-height: 300px; padding-bottom: 20px; }
.sv-assistant .ai-chatbot__intro-text {
  margin: 1.33em 0;
  margin-bottom: calc(1.33em + 10px);
  font-size: 1.2rem;
  font-weight: 700;
  line-height: normal;
}
.sv-assistant .ai-chatbot__suggestion-btn {
  display: block;
  max-width: 100%;
  margin-top: 10px;
  padding: 15px;
  border: 0;
  border-radius: 90px;
  background: white;
  font: 13.3333px Arial, sans-serif;
  text-align: left;
}
.sv-assistant .ai-chatbot__suggestion-btn:hover { background: var(--sv-chat-text); color: white; }
.sv-assistant .ai-chatbot__message { margin: 20px 0; padding: 0; }
.sv-assistant .ai-chatbot__message:last-child { margin-bottom: 30px; }
.sv-assistant .ai-chatbot__message-content {
  width: fit-content;
  max-width: calc(100% - 20px);
  margin: 0 20px 0 0;
  padding: 22px 27px;
  border-radius: 20px 20px 20px 0;
  background: white;
  color: var(--sv-chat-text);
  overflow-wrap: anywhere;
}
.sv-assistant .ai-chatbot__message--user .ai-chatbot__message-content {
  max-width: 100%;
  margin: 0 0 0 auto;
  border-radius: 20px 20px 0 20px;
  white-space: pre-wrap;
}
.sv-assistant .ai-chatbot__message-content p { margin: 1em 0; }
.sv-assistant .ai-chatbot__message-content p:first-child { margin-top: 0; }
.sv-assistant .ai-chatbot__message-content p:last-child { margin-bottom: 0; }
.sv-assistant .ai-chatbot__message-content a { color: darkgrey; }
.sv-assistant .ai-chatbot__message-content a:hover { color: var(--sv-chat-text); text-decoration: none; }
.sv-assistant .ai-chatbot__message-content pre { overflow-x: auto; }
.sv-assistant .ai-chatbot__message-content img { max-width: 100%; height: auto; }
.sv-assistant__external-host { color: #6b7280; font-size: .85em; margin-left: .35rem; }

.sv-assistant .ai-chatbot__footer { flex-shrink: 0; background: white; }
.sv-assistant .ai-chatbot__input-wrapper {
  display: flex;
  align-items: flex-end;
  margin: 20px 30px 0;
  padding: 10px;
  border: 1px solid var(--sv-chat-text);
  border-radius: 50px;
  background: white;
}
.sv-assistant .ai-chatbot__input-wrapper:focus-within { border-color: black; }
.sv-assistant .ai-chatbot__input {
  width: 100%;
  min-width: 0;
  max-height: 120px;
  padding: 0 15px;
  border: 0;
  border-radius: 0;
  margin: 0;
  resize: none;
  background: transparent;
  color: inherit;
  font: 14.4px/35px Brandon, iconfont, sans-serif;
}
.sv-assistant .ai-chatbot__input:focus { outline: none !important; }
.sv-assistant .ai-chatbot__send {
  display: grid;
  place-items: center;
  width: 35px;
  height: 35px;
  flex-shrink: 0;
  padding: 0;
  border: 0;
  background: none;
}
.sv-assistant .ai-chatbot__send:disabled { opacity: .4; }
.sv-assistant .ai-chatbot__actions { padding: 0 45px 15px 30px; text-align: right; line-height: 27px; }
.sv-assistant .ai-chatbot__clear,
.sv-assistant .ai-chatbot__tos-revoke {
  margin: 0;
  padding: 0 0 1px;
  border: 0;
  border-bottom: 1px solid var(--sv-chat-text);
  background: none;
  font: 13.3333px Arial, sans-serif;
}
.sv-assistant .ai-chatbot__clear:hover { border-bottom-color: transparent; }
.sv-assistant .ai-chatbot__tos-revoke { margin-left: 10px; }
.sv-assistant .ai-chatbot__disclaimer { font-size: 14px; line-height: 22px; }

.sv-assistant .loom-ai-content-warning--chatbot { margin: 30px; padding: 20px; }
.sv-assistant .loom-ai-content-warning__details,
.sv-assistant .loom-ai-content-warning__consent { font-size: 14px; line-height: 22px; }
.sv-assistant .loom-ai-content-warning__submit {
  display: block;
  width: 100%;
  padding: 8px 0;
  border: 0;
  background: rgba(27, 83, 101, .5);
  color: white;
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 1.08px;
}
.sv-assistant .ai-chatbot__tos { margin: 30px; min-height: 0; overflow-y: auto; }
.sv-assistant .ai-chatbot--tos-pending .ai-chatbot__footer { display: none; }
.sv-assistant .ai-chatbot__confirm { width: min(420px, 90vw); border: 0; padding: 25px; color: var(--sv-chat-text); }
.sv-assistant .ai-chatbot__confirm::backdrop { background: #0005; }
.sv-assistant .ai-chatbot__thinking { display: flex; gap: 5px; padding: 10px 0; }
.sv-assistant .ai-chatbot__thinking span { width: 7px; height: 7px; border-radius: 50%; background: currentColor; animation: sv-chat-thinking 1s ease-in-out infinite alternate; }
.sv-assistant .ai-chatbot__thinking span:nth-child(2) { animation-delay: .2s; }
.sv-assistant .ai-chatbot__thinking span:nth-child(3) { animation-delay: .4s; }
@keyframes sv-chat-thinking { to { opacity: .25; transform: translateY(-3px); } }
@media (prefers-reduced-motion: reduce) { .sv-assistant .ai-chatbot__thinking span { animation: none; } }
@media (min-width: 768px) { .sv-assistant__panel { right: 20px; width: 50%; } }
@media (min-width: 1200px) { .sv-assistant__panel { width: 500px; } }
