/* Genussexpress — cookie consent (banner, settings dialog, consent placeholders) */

.gx-consent {
  position: fixed;
  left: 24px;
  bottom: 24px;
  z-index: 190;
  width: min(440px, calc(100vw - 48px));
  opacity: 0;
  transform: translateY(16px);
  transition: opacity var(--dur-mid, .28s) var(--ease-out, ease), transform var(--dur-mid, .28s) var(--ease-out, ease);
  pointer-events: none;
}

.gx-consent.is-visible {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}

.gx-consent[hidden] {
  display: none;
}

.gx-consent__card {
  position: relative;
  overflow: hidden;
  padding: 26px 26px 20px;
  color: var(--text-invert, #f8f5f1);
  background: rgba(19, 17, 15, .94);
  border: 1px solid rgba(198, 169, 125, .38);
  border-radius: 20px;
  box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .65), inset 0 1px 0 rgba(255, 255, 255, .06);
  backdrop-filter: blur(16px) saturate(1.3);
  -webkit-backdrop-filter: blur(16px) saturate(1.3);
}

.gx-consent__card::before {
  content: '';
  position: absolute;
  inset: 0 0 auto;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(223, 201, 171, .7), transparent);
}

.gx-consent__head {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 14px;
}

.gx-consent__icon {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  color: var(--gold-bright, #dfc9ab);
  background: rgba(174, 144, 105, .14);
  border: 1px solid rgba(198, 169, 125, .32);
  border-radius: 50%;
}

.gx-consent__overline {
  margin: 0 0 2px;
  font-family: var(--font-body, Inter, system-ui, sans-serif);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: var(--tracking-overline, .16em);
  text-transform: uppercase;
  color: var(--gold-hover, #c6a97d);
}

.gx-consent__title {
  margin: 0;
  font-family: var(--font-display, 'Cormorant Garamond', Georgia, serif);
  font-size: 26px;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: var(--tracking-tight, -.02em);
  color: var(--text-invert, #f8f5f1);
}

.gx-consent__text {
  margin: 0 0 18px;
  font-family: var(--font-body, Inter, system-ui, sans-serif);
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--text-invert-muted, #b7b0a8);
}

.gx-consent__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

/* Reject and accept deliberately share one style: equal weight, no nudging. */
.gx-consent__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0 18px;
  font-family: var(--font-body, Inter, system-ui, sans-serif);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
  text-align: center;
  color: var(--accent-ink, #13110f);
  background: var(--gold, #ae9069);
  border: 1px solid var(--gold, #ae9069);
  border-radius: var(--r-pill, 999px);
  cursor: pointer;
  transition: background var(--dur-fast, .18s) ease, border-color var(--dur-fast, .18s) ease, transform var(--dur-fast, .18s) ease;
}

.gx-consent__btn:hover {
  background: var(--gold-hover, #c6a97d);
  border-color: var(--gold-hover, #c6a97d);
}

.gx-consent__btn:active {
  transform: translateY(1px);
}

.gx-consent__btn:focus-visible,
.gx-consent__link:focus-visible,
.gx-consent-reopen:focus-visible,
.gx-consent-modal__close:focus-visible,
.gx-consent-switch input:focus-visible + .gx-consent-switch__track {
  outline: 2px solid var(--logo-blue, #b1d0e6);
  outline-offset: 3px;
}

.gx-consent__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px 10px;
  margin-top: 14px;
  font-size: 12.5px;
  color: var(--text-invert-faint, #8a837b);
}

.gx-consent__link {
  padding: 4px 2px;
  font: inherit;
  font-weight: 500;
  color: var(--text-invert, #f8f5f1);
  text-decoration: underline;
  text-decoration-color: rgba(198, 169, 125, .5);
  text-underline-offset: 3px;
  background: none;
  border: 0;
  cursor: pointer;
}

.gx-consent__link:hover {
  color: var(--gold-bright, #dfc9ab);
}

/* ── Settings dialog ─────────────────────────────────────── */

html.gx-consent-open,
html.gx-consent-open body {
  overflow: hidden;
}

.gx-consent-modal {
  position: fixed;
  inset: 0;
  z-index: 260;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.gx-consent-modal[hidden] {
  display: none;
}

.gx-consent-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(9, 8, 7, .72);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  opacity: 0;
  transition: opacity var(--dur-mid, .28s) ease;
}

.gx-consent-modal__dialog {
  position: relative;
  width: min(640px, 100%);
  max-height: min(88vh, 860px);
  padding: 34px 34px 24px;
  overflow-y: auto;
  overscroll-behavior: contain;
  color: var(--text, #4a453f);
  background: var(--surface, #fff);
  border: 1px solid var(--paper-border-soft, #ece4da);
  border-radius: 22px;
  box-shadow: var(--shadow-pop, 0 24px 60px rgba(9, 8, 7, .28));
  opacity: 0;
  transform: translateY(12px) scale(.985);
  transition: opacity var(--dur-mid, .28s) var(--ease-out, ease), transform var(--dur-mid, .28s) var(--ease-out, ease);
}

.gx-consent-modal__dialog:focus {
  outline: none;
}

.gx-consent-modal.is-open .gx-consent-modal__backdrop,
.gx-consent-modal.is-open .gx-consent-modal__dialog {
  opacity: 1;
  transform: none;
}

.gx-consent-modal__close {
  position: absolute;
  top: 16px;
  right: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  color: var(--text-faint, #938c85);
  background: transparent;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
}

.gx-consent-modal__close:hover {
  color: var(--text-strong, #171513);
  background: var(--surface-sunken, #fbf8f4);
}

.gx-consent-modal .gx-consent__overline {
  color: var(--gold-deep, #96764f);
}

.gx-consent-modal__title {
  margin: 4px 0 10px;
  font-family: var(--font-display, 'Cormorant Garamond', Georgia, serif);
  font-size: 32px;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: var(--tracking-tight, -.02em);
  color: var(--text-strong, #171513);
}

.gx-consent-modal__intro {
  margin: 0 0 20px;
  font-size: 14px;
  line-height: 1.6;
}

.gx-consent-modal__cats {
  display: grid;
  gap: 10px;
}

.gx-consent-cat {
  padding: 16px 18px;
  background: var(--surface-sunken, #fbf8f4);
  border: 1px solid var(--paper-hairline, #f1ece6);
  border-radius: 14px;
}

.gx-consent-cat__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.gx-consent-cat__label {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.gx-consent-cat__name {
  font-size: 15px;
  font-weight: 600;
  color: var(--text-strong, #171513);
}

.gx-consent-cat__badge {
  padding: 3px 9px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--ok, #4f8a5b);
  background: rgba(79, 138, 91, .1);
  border-radius: var(--r-pill, 999px);
}

.gx-consent-cat__desc {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: var(--text-muted, #625d58);
}

.gx-consent-cat__details {
  margin-top: 10px;
  font-size: 12.5px;
}

.gx-consent-cat__details summary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  color: var(--gold-deep, #96764f);
  list-style: none;
  cursor: pointer;
}

.gx-consent-cat__details summary::-webkit-details-marker {
  display: none;
}

.gx-consent-cat__details summary::after {
  content: '';
  width: 7px;
  height: 7px;
  margin-top: -3px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg);
  transition: transform var(--dur-fast, .18s) ease;
}

.gx-consent-cat__details[open] summary::after {
  margin-top: 3px;
  transform: rotate(-135deg);
}

.gx-consent-cat__details ul {
  display: grid;
  gap: 8px;
  margin: 10px 0 0;
  padding: 0;
  list-style: none;
}

.gx-consent-cat__details li {
  display: grid;
  gap: 2px;
  padding: 10px 12px;
  background: var(--surface, #fff);
  border: 1px solid var(--paper-hairline, #f1ece6);
  border-radius: 10px;
}

.gx-consent-cat__details strong {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-strong, #171513);
  word-break: break-word;
}

.gx-consent-cat__details span {
  color: var(--text, #4a453f);
}

.gx-consent-cat__details em {
  font-style: normal;
  color: var(--text-faint, #938c85);
}

/* Toggle switch */
.gx-consent-switch {
  position: relative;
  flex: 0 0 auto;
  cursor: pointer;
}

.gx-consent-switch input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
}

.gx-consent-switch__track {
  display: block;
  width: 48px;
  height: 28px;
  background: var(--paper-border, #e2dad2);
  border-radius: var(--r-pill, 999px);
  transition: background var(--dur-fast, .18s) ease;
}

.gx-consent-switch__thumb {
  display: block;
  width: 22px;
  height: 22px;
  margin: 3px;
  background: #fff;
  border-radius: 50%;
  box-shadow: 0 2px 6px rgba(20, 15, 10, .2);
  transition: transform var(--dur-fast, .18s) var(--ease-out, ease);
}

.gx-consent-switch input:checked + .gx-consent-switch__track {
  background: var(--gold, #ae9069);
}

.gx-consent-switch input:checked + .gx-consent-switch__track .gx-consent-switch__thumb {
  transform: translateX(20px);
}

.gx-consent-switch input:disabled + .gx-consent-switch__track {
  opacity: .55;
  cursor: not-allowed;
}

.gx-consent-modal__actions {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 22px;
}

.gx-consent__btn--light {
  color: var(--text-invert, #f8f5f1);
  background: var(--ink-800, #13110f);
  border-color: var(--ink-800, #13110f);
}

.gx-consent__btn--light:hover {
  color: var(--text-invert, #f8f5f1);
  background: var(--brown, #4c3222);
  border-color: var(--brown, #4c3222);
}

.gx-consent-modal__legal {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px 10px;
  margin: 16px 0 0;
  font-size: 12.5px;
  color: var(--text-faint, #938c85);
}

.gx-consent-modal__legal a {
  color: var(--gold-deep, #96764f);
  text-underline-offset: 3px;
}

.gx-consent-modal__id {
  flex-basis: 100%;
  text-align: center;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px;
}

/* Footer / shortcode "Cookie-Einstellungen" */
.gx-consent-reopen {
  padding: 0;
  font: inherit;
  color: inherit;
  text-decoration: inherit;
  background: none;
  border: 0;
  cursor: pointer;
}

.gx-consent-reopen:hover {
  color: var(--gold-hover, #c6a97d);
}

.gx-consent-reopen--inline {
  font-weight: 600;
  color: var(--gold-deep, #96764f);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Embed placeholder (e.g. Google Maps) until "Externe Medien" is allowed */
.gx-consent-embed {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  min-height: 280px;
  padding: 28px;
  text-align: center;
  color: var(--text-invert, #f8f5f1);
  background: var(--weave, none), var(--ink-750, #161310);
}

.gx-consent-embed.is-loaded {
  display: block;
  padding: 0;
  background: none;
}

.gx-consent-embed.is-loaded iframe {
  display: block;
  width: 100%;
  height: 100%;
  min-height: inherit;
  border: 0;
}

.gx-consent-embed__inner {
  max-width: 380px;
}

.gx-consent-embed__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  margin-bottom: 12px;
  color: var(--gold-bright, #dfc9ab);
  border: 1px solid rgba(198, 169, 125, .4);
  border-radius: 50%;
}

.gx-consent-embed__title {
  margin: 0 0 6px;
  font-family: var(--font-display, 'Cormorant Garamond', Georgia, serif);
  font-size: 24px;
  font-weight: 600;
}

.gx-consent-embed__text {
  margin: 0 0 16px;
  font-size: 13px;
  line-height: 1.55;
  color: var(--text-invert-muted, #b7b0a8);
}

.gx-consent-embed__text a {
  color: var(--gold-bright, #dfc9ab);
}

.gx-consent-embed .gx-consent__btn {
  min-width: 200px;
}

/* Privacy page cookie table */
.gx-consent-list table {
  width: 100%;
  margin: 8px 0 20px;
  font-size: 13px;
  border-collapse: collapse;
}

.gx-consent-list th,
.gx-consent-list td {
  padding: 8px 10px;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--paper-border-soft, #ece4da);
}

@media (max-width: 640px) {
  .gx-consent {
    left: 10px;
    right: 10px;
    bottom: calc(10px + env(safe-area-inset-bottom, 0px));
    width: auto;
  }

  .gx-consent__card {
    padding: 22px 20px 16px;
    border-radius: 18px;
  }

  .gx-consent__title {
    font-size: 23px;
  }

  .gx-consent__text {
    font-size: 13px;
  }

  .gx-consent-modal {
    align-items: flex-end;
    padding: 0;
  }

  .gx-consent-modal__dialog {
    width: 100%;
    max-height: 92vh;
    padding: 28px 20px calc(20px + env(safe-area-inset-bottom, 0px));
    border-radius: 22px 22px 0 0;
    transform: translateY(30px);
  }

  .gx-consent-modal__title {
    font-size: 28px;
  }

  .gx-consent-modal__actions {
    grid-template-columns: 1fr;
  }

  .gx-consent-list table,
  .gx-consent-list thead,
  .gx-consent-list tbody,
  .gx-consent-list tr,
  .gx-consent-list td {
    display: block;
  }

  .gx-consent-list thead {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gx-consent,
  .gx-consent-modal__dialog,
  .gx-consent-modal__backdrop,
  .gx-consent-switch__thumb {
    transition: none;
  }
}

.gx-kontakt__map .gx-consent-embed {
  min-height: 520px;
}
