#kdconsent-banner-root {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 9999;
  --kdconsent-backdrop: rgba(0, 0, 0, 0.45);
  --kdconsent-btn-accept-bg: #2563eb;
  --kdconsent-btn-accept-text: #ffffff;
  --kdconsent-btn-accept-border: #2563eb;
  --kdconsent-btn-accept-hover-bg: #1d4ed8;
  --kdconsent-btn-accept-hover-text: #ffffff;
  --kdconsent-btn-accept-hover-border: #1d4ed8;
  --kdconsent-btn-reject-bg: #f3f4f6;
  --kdconsent-btn-reject-text: #111827;
  --kdconsent-btn-reject-border: #c0c6cc;
  --kdconsent-btn-reject-hover-bg: #e5e7eb;
  --kdconsent-btn-reject-hover-text: #111827;
  --kdconsent-btn-reject-hover-border: #9ca3af;
  --kdconsent-btn-customize-bg: #ffffff;
  --kdconsent-btn-customize-text: #1f2328;
  --kdconsent-btn-customize-border: #c0c6cc;
  --kdconsent-btn-customize-hover-bg: #f8fafc;
  --kdconsent-btn-customize-hover-text: #111827;
  --kdconsent-btn-customize-hover-border: #94a3b8;
  --kdconsent-btn-save-bg: #2563eb;
  --kdconsent-btn-save-text: #ffffff;
  --kdconsent-btn-save-border: #2563eb;
  --kdconsent-btn-save-hover-bg: #1d4ed8;
  --kdconsent-btn-save-hover-text: #ffffff;
  --kdconsent-btn-save-hover-border: #1d4ed8;
  --kdconsent-btn-close-bg: #f3f4f6;
  --kdconsent-btn-close-text: #111827;
  --kdconsent-btn-close-border: #c0c6cc;
  --kdconsent-btn-close-hover-bg: #e5e7eb;
  --kdconsent-btn-close-hover-text: #111827;
  --kdconsent-btn-close-hover-border: #9ca3af;
}

.kdconsent-banner {
  position: relative;
  z-index: 1;
  max-width: 980px;
  margin: 0 auto 20px;
  border: 1px solid #d0d7de;
  border-radius: 12px;
  background: #ffffff;
  color: #1f2328;
  box-shadow: 0 10px 25px rgba(15, 23, 42, 0.15);
  padding: 18px;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

.kdconsent-position-center .kdconsent-banner {
  margin-top: 20px;
}

.kdconsent-banner-overlay {
  position: fixed;
  inset: 0;
  z-index: 0;
  background: var(--kdconsent-backdrop, rgba(0, 0, 0, 0.45));
  pointer-events: none;
}

.kdconsent-banner.kdconsent-anim-enter {
  animation-duration: 420ms;
  animation-fill-mode: both;
  animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}

.kdconsent-banner.kdconsent-anim-fade-in {
  animation-name: kdconsentFadeIn;
}

.kdconsent-banner.kdconsent-anim-slide-in-up {
  animation-name: kdconsentSlideInUp;
}

.kdconsent-banner.kdconsent-anim-slide-in-left {
  animation-name: kdconsentSlideInLeft;
}

.kdconsent-banner.kdconsent-anim-slide-in-right {
  animation-name: kdconsentSlideInRight;
}

.kdconsent-banner.kdconsent-anim-slide-in-down {
  animation-name: kdconsentSlideInDown;
}

.kdconsent-banner.kdconsent-anim-blur-in {
  animation-name: kdconsentBlurIn;
}

@keyframes kdconsentFadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes kdconsentSlideInUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes kdconsentSlideInLeft {
  from {
    opacity: 0;
    transform: translateX(-24px);
  }

  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes kdconsentSlideInRight {
  from {
    opacity: 0;
    transform: translateX(24px);
  }

  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes kdconsentSlideInDown {
  from {
    opacity: 0;
    transform: translateY(-24px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes kdconsentBlurIn {
  from {
    opacity: 0;
    filter: blur(10px);
    transform: scale(0.98);
  }

  to {
    opacity: 1;
    filter: blur(0);
    transform: scale(1);
  }
}

.kdconsent-banner-title {
  margin: 0 0 8px;
  font-size: 18px;
}

.kdconsent-banner-body {
  margin: 0;
  line-height: 1.45;
}

.kdconsent-banner-actions {
  display: flex;
  gap: 10px;
  margin-top: 14px;
  flex-wrap: wrap;
}

.kdconsent-btn {
  border: 1px solid #c0c6cc;
  border-radius: 8px;
  padding: 8px 14px;
  cursor: pointer;
  font-size: 14px;
}

.kdconsent-btn-primary {
  background: #2563eb;
  color: #fff;
  border-color: #2563eb;
}

.kdconsent-btn-secondary {
  background: #f3f4f6;
  color: #111827;
}

.kdconsent-btn-tertiary {
  background: transparent;
}

.kdconsent-btn-accept {
  background: var(--kdconsent-btn-accept-bg);
  color: var(--kdconsent-btn-accept-text);
  border-color: var(--kdconsent-btn-accept-border);
}

.kdconsent-btn-accept:hover,
.kdconsent-btn-accept:focus-visible {
  background: var(--kdconsent-btn-accept-hover-bg);
  color: var(--kdconsent-btn-accept-hover-text);
  border-color: var(--kdconsent-btn-accept-hover-border);
}

.kdconsent-btn-reject {
  background: var(--kdconsent-btn-reject-bg);
  color: var(--kdconsent-btn-reject-text);
  border-color: var(--kdconsent-btn-reject-border);
}

.kdconsent-btn-reject:hover,
.kdconsent-btn-reject:focus-visible {
  background: var(--kdconsent-btn-reject-hover-bg);
  color: var(--kdconsent-btn-reject-hover-text);
  border-color: var(--kdconsent-btn-reject-hover-border);
}

.kdconsent-btn-customize {
  background: var(--kdconsent-btn-customize-bg);
  color: var(--kdconsent-btn-customize-text);
  border-color: var(--kdconsent-btn-customize-border);
}

.kdconsent-btn-customize:hover,
.kdconsent-btn-customize:focus-visible {
  background: var(--kdconsent-btn-customize-hover-bg);
  color: var(--kdconsent-btn-customize-hover-text);
  border-color: var(--kdconsent-btn-customize-hover-border);
}

.kdconsent-btn-save {
  background: var(--kdconsent-btn-save-bg);
  color: var(--kdconsent-btn-save-text);
  border-color: var(--kdconsent-btn-save-border);
}

.kdconsent-btn-save:hover,
.kdconsent-btn-save:focus-visible {
  background: var(--kdconsent-btn-save-hover-bg);
  color: var(--kdconsent-btn-save-hover-text);
  border-color: var(--kdconsent-btn-save-hover-border);
}

.kdconsent-btn-close {
  background: var(--kdconsent-btn-close-bg);
  color: var(--kdconsent-btn-close-text);
  border-color: var(--kdconsent-btn-close-border);
}

.kdconsent-btn-close:hover,
.kdconsent-btn-close:focus-visible {
  background: var(--kdconsent-btn-close-hover-bg);
  color: var(--kdconsent-btn-close-hover-text);
  border-color: var(--kdconsent-btn-close-hover-border);
}

.kdconsent-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 2;
  background: var(--kdconsent-backdrop, rgba(0, 0, 0, 0.45));
  display: grid;
  place-items: center;
  padding: 20px;
}

.kdconsent-modal {
  width: 100%;
  max-width: 620px;
  max-height: calc(100vh - 40px);
  max-height: calc(100dvh - 40px);
  overflow-y: auto;
  overscroll-behavior: contain;
  background: #fff;
  color: #111827;
  border-radius: 14px;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.3);
  padding: 20px;
  -webkit-overflow-scrolling: touch;
}

.kdconsent-modal-title {
  margin: 0 0 16px;
}

.kdconsent-modal-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid #e5e7eb;
}

.kdconsent-modal-item-text {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.kdconsent-modal-item-text span {
  font-size: 13px;
  color: #6b7280;
}

.kdconsent-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 16px;
}

.kdconsent-open-preferences,
.kdcb-open-preferences {
  border: 1px solid #cbd5e1;
  border-radius: 6px;
  background: #fff;
  padding: 6px 10px;
  cursor: pointer;
}

@media (max-width: 768px) {
  .kdconsent-banner {
    margin: 0 12px 12px;
    padding: 14px;
  }

  .kdconsent-banner-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .kdconsent-banner-actions .kdconsent-btn {
    width: 100%;
  }

  .kdconsent-banner-actions .kdconsent-btn-customize {
    grid-column: 1 / -1;
  }

  .kdconsent-modal {
    max-height: calc(100vh - 24px);
    max-height: calc(100dvh - 24px);
    padding: 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kdconsent-banner.kdconsent-anim-enter {
    animation: none !important;
  }
}
