/* ============================================================
   Klaro Custom Styles — Leere Pisten
   Banner: #0d182b, Accept: #44e6ee, Decline: outlined
   ============================================================ */

.klaro {
  font-family: "Work Sans", "Segoe UI", Tahoma, sans-serif;
  font-size: 14px;
  line-height: 1.5;
  color: #f5f7fb;
}

.klaro *,
.klaro *::before,
.klaro *::after {
  box-sizing: border-box;
}

/* Hide scrollbars everywhere inside klaro */
.klaro *,
.klaro *::-webkit-scrollbar {
  scrollbar-width: none !important;
  -ms-overflow-style: none !important;
}
.klaro *::-webkit-scrollbar {
  width: 0 !important;
  height: 0 !important;
  display: none !important;
}

.klaro .cookie-notice a,
.klaro .cookie-modal a {
  color: #44e6ee;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.klaro .cookie-notice a:hover,
.klaro .cookie-modal a:hover {
  color: #6ef0f6;
}

/* ---------- Backdrop (large modal) ---------- */
.klaro .cookie-modal {
  position: fixed;
  inset: 0;
  z-index: 2147483646;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(8, 14, 28, 0.72) !important;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: klaro-fade 200ms ease-out;
}

@keyframes klaro-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes klaro-rise {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.klaro .cookie-modal .cm-bg {
  display: none;
}

.klaro .cookie-modal .cm-modal {
  position: relative;
  width: 100%;
  max-width: 720px;
  max-height: calc(100vh - 48px);
  background: #0d182b !important;
  color: #f5f7fb;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  box-shadow: 0 30px 80px -20px rgba(0, 0, 0, 0.6),
              0 0 0 1px rgba(68, 230, 238, 0.05);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: klaro-rise 240ms cubic-bezier(0.22, 1, 0.36, 1);
}

/* Header / Body / Footer inside large modal */
.klaro .cookie-modal .cm-header {
  padding: 28px 28px 16px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.klaro .cookie-modal .cm-header h1,
.klaro .cookie-modal .cm-header h2 {
  margin: 0 0 8px;
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: #ffffff;
}

.klaro .cookie-modal .cm-header p,
.klaro .cookie-modal .cm-header .description {
  margin: 0;
  font-size: 14px;
  color: #c3ccdb;
}

.klaro .cookie-modal .cm-body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 20px 28px;
}

/* Purpose list — more breathing room between categories */
.klaro .cookie-modal .cm-purposes,
.klaro .cookie-modal ul.cm-purposes {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.klaro .cookie-modal .cm-purpose,
.klaro .cookie-modal li.cm-purpose {
  position: relative;
  padding: 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.klaro .cookie-modal .cm-purpose:last-child {
  border-bottom: none;
}

.klaro .cookie-modal .cm-purpose .cm-list-title,
.klaro .cookie-modal .cm-purpose label .cm-list-title {
  font-size: 16px;
  font-weight: 600;
  color: #ffffff;
}

.klaro .cookie-modal .cm-purpose .cm-list-description,
.klaro .cookie-modal .cm-purpose p {
  font-size: 13px;
  color: #aab4c5;
  margin: 0;
}

/* Services toggle ("X Dienste") */
.klaro .cm-caret,
.klaro .cm-caret a,
.klaro .cm-services > .cm-caret,
.klaro a.cm-link {
  font-size: 13px;
  color: #c3ccdb;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding-bottom: 5px;
}

.klaro .cm-caret a:hover,
.klaro a.cm-link:hover {
  color: #44e6ee;
}

/* Services list — initially collapsed via .cm-content state */
.klaro .cm-content:not(.expanded) {
  display: none !important;
}

.klaro .cm-content.expanded {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px dashed rgba(255, 255, 255, 0.08);
}

.klaro .cm-services {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 15px;
}

.klaro .cm-service,
.klaro li.cm-service {
  padding: 10px 12px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 8px;
}

/* Toggle switches */
.klaro .cm-list-input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.klaro .cm-list-label {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  cursor: pointer;
}

.klaro .cm-list-label .cm-switch {
  position: relative;
  flex: 0 0 auto;
  width: 42px;
  height: 24px;
  border-radius: 999px;
  background: #2a3654;
  transition: background 180ms ease;
}

.klaro .cm-list-label .slider,
.klaro .cm-list-label .cm-switch::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  background: #ffffff;
  border-radius: 999px;
  transition: transform 180ms ease;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
}

.klaro .cm-list-input:checked + .cm-list-label .cm-switch,
.klaro .cm-list-label .cm-switch.slider.active {
  background: #44e6ee;
}

.klaro .cm-list-input:checked + .cm-list-label .cm-switch::after,
.klaro .cm-list-input:checked + .cm-list-label .slider {
  transform: translateX(18px);
}

.klaro .cm-list-input:disabled + .cm-list-label .cm-switch {
  opacity: 0.55;
  cursor: not-allowed;
}

/* Footer */
.klaro .cookie-modal .cm-footer {
  padding: 18px 28px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  background: #0d182b !important;
}

.klaro .cookie-modal .cm-footer-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: stretch;
  width: 100%;
}

/* Desktop/Tablet: 3 buttons split full width */
.klaro .cookie-modal .cm-footer-buttons .cm-btn {
  flex: 1 1 0;
  min-width: 0;
  width: auto;
}

.klaro .cookie-modal .cm-footer .cm-powered-by,
.klaro .cookie-modal .cm-footer p {
  font-size: 11px;
  color: #6b7790;
  margin: 10px 0 0;
  text-align: center;
}

/* ---------- Small banner (notice) — fully centered on every device ---------- */
.klaro .cookie-notice:not(.cookie-modal-notice),
.klaro .cookie-notice {
  position: fixed !important;
  z-index: 2147483645;
  top: 50% !important;
  left: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  margin: 0 auto !important;
  transform: translateY(-50%) !important;
  transition: none !important;
  width: calc(100% - 32px);
  max-width: 440px;
  background: #0d182b !important;
  color: #f5f7fb;
  border: 1px solid #1f2a3b !important;
  border-radius: 16px;
  box-shadow: 0 24px 60px -16px rgba(0, 0, 0, 0.6) !important;
  padding: 22px 22px 18px;
  animation: klaro-fade 220ms ease-out;
}

.klaro .cookie-notice.cookie-notice-hidden {
  display: none !important;
}

.klaro .cookie-notice .cn-body {
  padding: 0;
}

.klaro .cookie-notice .cn-body h1,
.klaro .cookie-notice .cn-body h2,
.klaro .cookie-notice .cn-body .title {
  margin: 0 0 8px;
  font-size: 18px;
  font-weight: 600;
  color: #ffffff;
  letter-spacing: -0.01em;
}

.klaro .cookie-notice .cn-body p {
  margin: 0 0 18px;
  font-size: 13px;
  line-height: 1.55;
  color: #c3ccdb;
}

.klaro .cookie-notice .cn-body .klaro-legal-links {
  margin-top: 8px;
  padding-bottom: 20px;
  font-size: 13px;
  line-height: 1.55;
}

/* Hide cookie banner on legal pages */
html[data-hide-klaro="1"] .klaro .cookie-notice,
html[data-hide-klaro="1"] .klaro .cookie-modal {
  display: none !important;
}

.klaro .cookie-notice .cn-body .klaro-legal-links a {
  color: #ffffff !important;
  font-weight: 400 !important;
  text-decoration: underline !important;
  text-underline-offset: 2px;
}

/* Buttons container in notice */
.klaro .cookie-notice .cn-buttons,
.klaro .cookie-notice .cn-ok {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
}

/* ---------- Buttons ---------- */
.klaro .cm-btn,
.klaro button.cm-btn {
  appearance: none;
  border: 1px solid transparent;
  border-radius: 10px;
  padding: 14px 20px;
  min-height: 48px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.2;
  cursor: pointer;
  transition: background-color 160ms ease, color 160ms ease,
              border-color 160ms ease, transform 80ms ease;
  text-align: center;
  width: 100%;
}

.klaro .cm-btn:active {
  transform: translateY(1px);
}

/* Accept all — primary cyan (shown LAST in modal footer) */
/* Primary: "Alle akzeptieren" (modal accept-all + small notice accept) — cyan */
.klaro .cm-btn-accept-all,
.klaro .cookie-notice .cm-btn-success {
  background: #44e6ee !important;
  color: #0d182b !important;
  border: 1px solid #44e6ee !important;
  font-weight: 600 !important;
  order: 3;
}

.klaro .cm-btn-accept-all:hover,
.klaro .cookie-notice .cm-btn-success:hover {
  background: #22c8d4 !important;
  border-color: #22c8d4 !important;
  color: #0d182b !important;
}

/* Secondary: decline + "Ausgewählte akzeptieren" — dark with #1f2a3b outline, non-bold */
.klaro .cm-btn-danger,
.klaro .cm-btn-decline,
.klaro .cn-decline,
.klaro .cm-btn-accept:not(.cm-btn-accept-all) {
  background: #0d182b !important;
  color: #ffffff !important;
  border: 1px solid #1f2a3b !important;
  font-weight: 500 !important;
}

.klaro .cm-btn-danger,
.klaro .cm-btn-decline,
.klaro .cn-decline {
  order: 1;
}

.klaro .cm-btn-accept:not(.cm-btn-accept-all) {
  order: 2;
}

.klaro .cm-btn-danger:hover,
.klaro .cm-btn-decline:hover,
.klaro .cn-decline:hover,
.klaro .cm-btn-accept:not(.cm-btn-accept-all):hover {
  background: #18243d !important;
  border-color: #1f2a3b !important;
  color: #ffffff !important;
}

/* "Lass mich wählen" — text link under the two buttons in the small notice */
.klaro .cookie-notice .cm-btn-info,
.klaro .cookie-notice .cm-btn-learn-more,
.klaro .cookie-notice .cm-btn-lern-more,
.klaro .cookie-notice .cn-learn-more {
  order: 3;
  background: transparent !important;
  border: none !important;
  color: #c3ccdb !important;
  padding: 4px 0 0;
  margin-top: 4px;
  font-size: 13px;
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 3px;
  width: auto;
  align-self: center;
  box-shadow: none !important;
}

.klaro .cookie-notice .cm-btn-info:hover,
.klaro .cookie-notice .cm-btn-learn-more:hover,
.klaro .cookie-notice .cm-btn-lern-more:hover,
.klaro .cookie-notice .cn-learn-more:hover {
  color: #44e6ee !important;
}

/* ---------- Mobile ---------- */
@media (max-width: 640px) {
  .klaro .cm-btn,
  .klaro button.cm-btn {
    font-size: 14px;
  }

  .klaro .cookie-notice .cn-body h1,
  .klaro .cookie-notice .cn-body h2,
  .klaro .cookie-notice .cn-body .title,
  .klaro .cookie-modal .cm-header h1,
  .klaro .cookie-modal .cm-header h2 {
    font-size: 18px;
  }

  .klaro .cookie-modal .cm-purpose .cm-list-title,
  .klaro .cookie-modal .cm-purpose label .cm-list-title {
    font-size: 16px;
  }

  .klaro .cookie-modal .cm-purpose .cm-list-description,
  .klaro .cookie-modal .cm-purpose p {
    font-size: 12px;
  }

  /* "X Dienste" caret link */
  .klaro .cm-caret,
  .klaro .cm-caret a,
  .klaro a.cm-link {
    font-size: 12px;
  }

  /* Large modal: full-height sheet, sticky footer, stacked buttons */
  .klaro .cookie-modal {
    padding: 0;
    align-items: stretch;
  }

  .klaro .cookie-modal .cm-modal {
    max-width: 100%;
    max-height: 100vh;
    height: 100vh;
    border-radius: 0;
    border: none;
  }

  .klaro .cookie-modal .cm-header {
    padding: 20px 18px 14px;
  }

  .klaro .cookie-modal .cm-body {
    padding: 14px 18px 18px;
  }

  .klaro .cookie-modal .cm-footer {
    position: sticky;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 14px 18px calc(14px + env(safe-area-inset-bottom));
    box-shadow: 0 -8px 24px -8px rgba(0, 0, 0, 0.5);
  }

  .klaro .cookie-modal .cm-footer-buttons {
    flex-direction: column;
    gap: 10px;
  }

  .klaro .cookie-modal .cm-footer-buttons .cm-btn {
    width: 100%;
    flex: 0 0 auto;
  }

  /* Small notice tweaks on mobile — stay centered */
  .klaro .cookie-notice:not(.cookie-modal-notice),
  .klaro .cookie-notice {
    width: calc(100% - 24px);
    max-width: none;
    padding: 18px 18px 16px;
  }
}
