.publisher-privacy-banner {
  position: fixed;
  left: var(--publisher-privacy-banner-left, 50%);
  bottom: var(--publisher-privacy-banner-bottom, max(12px, env(safe-area-inset-bottom)));
  z-index: var(--publisher-privacy-banner-z-index, 80);
  transform: var(--publisher-privacy-banner-transform, translateX(-50%));
  width: var(--publisher-privacy-banner-width, min(1120px, calc(100vw - 24px)));
  margin: 0;
  padding: var(--publisher-privacy-banner-padding, 10px 12px);
  border: 1px solid var(--publisher-privacy-banner-border-color, #d9e3ef);
  border-radius: var(--publisher-privacy-banner-radius, 14px);
  background: var(--publisher-privacy-banner-background, rgba(255, 255, 255, 0.98));
  box-shadow: var(--publisher-privacy-banner-shadow, 0 18px 44px rgba(15, 23, 42, 0.12), 0 4px 14px rgba(15, 23, 42, 0.08));
  box-sizing: border-box;
  backdrop-filter: var(--publisher-privacy-banner-backdrop, blur(18px));
  transition:
    opacity var(--publisher-privacy-banner-transition-duration, 120ms) ease,
    transform var(--publisher-privacy-banner-transition-duration, 120ms) ease;
}

.publisher-privacy-banner.is-hidden {
  display: none !important;
}

.publisher-privacy-banner__body {
  display: grid;
  gap: 10px;
}

.publisher-privacy-banner__body--actions-only {
  display: flex;
  justify-content: flex-end;
}

.publisher-privacy-banner__panel {
  display: grid;
  gap: 10px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--publisher-privacy-banner-divider-color, #e6edf5);
}

.publisher-privacy-banner__panel-copy p,
.publisher-privacy-banner__details-copy p,
.publisher-privacy-banner__option small,
.publisher-privacy-banner__vendor p,
.publisher-privacy-banner__saved,
.publisher-privacy-banner__legal-copy p {
  margin: 0;
  color: var(--publisher-privacy-banner-copy-color, #60708c);
  font-size: 0.74rem;
  line-height: 1.4;
}

.publisher-privacy-banner__panel-copy strong,
.publisher-privacy-banner__details-copy strong,
.publisher-privacy-banner__option strong,
.publisher-privacy-banner__vendor strong {
  display: block;
  color: var(--publisher-privacy-banner-heading-color, #16202f);
  font-size: 0.78rem;
  line-height: 1.25;
}

.publisher-privacy-banner__actions,
.publisher-privacy-banner__panel-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.publisher-privacy-banner__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid var(--publisher-privacy-banner-button-border-color, #d7dde6);
  border-radius: var(--publisher-privacy-banner-button-radius, 10px);
  background: var(--publisher-privacy-banner-button-background, #ffffff);
  color: var(--publisher-privacy-banner-button-color, #16202f);
  font-size: 0.8rem;
  font-weight: var(--publisher-privacy-banner-button-weight, 700);
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  transition:
    transform var(--publisher-privacy-banner-transition-duration, 120ms) ease,
    border-color var(--publisher-privacy-banner-transition-duration, 120ms) ease,
    box-shadow var(--publisher-privacy-banner-transition-duration, 120ms) ease,
    background-color var(--publisher-privacy-banner-transition-duration, 120ms) ease,
    color var(--publisher-privacy-banner-transition-duration, 120ms) ease;
}

.publisher-privacy-banner__button:hover {
  transform: translateY(-1px);
}

.publisher-privacy-banner__button.is-primary {
  border-color: var(--publisher-privacy-banner-button-primary-border-color, transparent);
  background: var(--publisher-privacy-banner-button-primary-background, var(--publisher-privacy-banner-link-color, #5d7a53));
  color: var(--publisher-privacy-banner-button-primary-color, #ffffff);
  box-shadow: var(--publisher-privacy-banner-button-primary-shadow, none);
}

.publisher-privacy-banner__button.is-secondary,
.publisher-privacy-banner__button.is-ghost {
  border-color: var(--publisher-privacy-banner-button-secondary-border-color, var(--publisher-privacy-banner-button-border-color, #d7dde6));
  background: var(--publisher-privacy-banner-button-secondary-background, #ffffff);
  color: var(--publisher-privacy-banner-button-secondary-color, var(--publisher-privacy-banner-button-color, #16202f));
}

.publisher-privacy-banner__button.is-ghost {
  background: var(--publisher-privacy-banner-button-ghost-background, transparent);
  color: var(--publisher-privacy-banner-button-ghost-color, var(--publisher-privacy-banner-link-color, #5d7a53));
}

.publisher-privacy-banner__saved {
  font-weight: 600;
}

.publisher-privacy-banner__legal {
  display: grid;
  gap: 8px;
  margin-top: 6px;
}

.publisher-privacy-banner__legal summary {
  width: fit-content;
  color: var(--publisher-privacy-banner-link-color, #5d7a53);
  font-size: 0.74rem;
  font-weight: 700;
  cursor: pointer;
}

.publisher-privacy-banner__legal-copy {
  display: grid;
  gap: 6px;
}

.publisher-privacy-banner__legal-copy a {
  color: var(--publisher-privacy-banner-link-color, #5d7a53);
}

.publisher-privacy-banner__preferences {
  display: grid;
  gap: 8px;
  line-height: 1;
}

.publisher-privacy-banner__option {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 8px;
  align-items: start;
  padding: 8px 10px;
  border: 1px solid var(--publisher-privacy-banner-surface-border-color, #e6edf5);
  border-radius: 10px;
  background: var(--publisher-privacy-banner-surface-background, #fbfdff);
}

.publisher-privacy-banner__option input {
  margin: 1px 0 0;
}

.publisher-privacy-banner__details {
  display: grid;
  gap: 8px;
}

.publisher-privacy-banner__vendor-grid {
  display: grid;
  gap: 8px;
}

.publisher-privacy-banner__vendor {
  display: grid;
  gap: 6px;
  padding: 8px 10px;
  border: 1px solid var(--publisher-privacy-banner-surface-border-color, #e6edf5);
  border-radius: 10px;
  background: var(--publisher-privacy-banner-surface-background, #fbfdff);
}

.publisher-privacy-banner__vendor-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  min-height: 20px;
  padding: 0 7px;
  border-radius: 999px;
  font-size: 0.67rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.publisher-privacy-banner__vendor-badge.is-necessary {
  background: var(--publisher-privacy-banner-badge-necessary-background, color-mix(in srgb, var(--publisher-privacy-banner-link-color, #5d7a53) 16%, white));
  color: var(--publisher-privacy-banner-badge-necessary-color, var(--publisher-privacy-banner-link-color, #5d7a53));
}

.publisher-privacy-banner__vendor-badge.is-optional {
  background: var(--publisher-privacy-banner-badge-optional-background, #eef3f8);
  color: var(--publisher-privacy-banner-badge-optional-color, #516274);
}

@media (min-width: 900px), (min-width: 720px) and (orientation: landscape) {
  .publisher-privacy-banner__body {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
  }

  .publisher-privacy-banner__preferences {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .publisher-privacy-banner__vendor-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
