/* Modul: celebrate. Alle Regeln sind auf dessen Wurzelelement begrenzt. */
[data-lemp-module="celebrate"] {
  padding: 28px 0 32px;
  background: var(--lemp-cream);
}

[data-lemp-module="celebrate"] .celebrate-section__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px 28px;
  margin-bottom: 20px;
}

[data-lemp-module="celebrate"] .celebrate-section__title {
  font-family: var(--lemp-font-hand);
  font-size: clamp(39px,4vw,53px);
  color: var(--lemp-red);
  margin: 0;
  line-height: 1;
}

[data-lemp-module="celebrate"] .celebrate-section__intro {
  max-width: 520px;
  margin: 0;
  font-size: 18px;
  line-height: 1.3;
}

[data-lemp-module="celebrate"] .celebrate-card {
  display: block;
  text-decoration: none;
}

[data-lemp-module="celebrate"] .celebrate-card__media {
  position: relative;
  aspect-ratio: 2.5;
  overflow: hidden;
  border-radius: 5px;
}

[data-lemp-module="celebrate"] .celebrate-card__image {
  width: 100%;
  position: absolute;
  bottom: 0;
  left: 0;
  height: 125%;
  object-fit: cover;
  object-position: center bottom;
  display: block;
}

[data-lemp-module="celebrate"] .celebrate-card__label {
  display: block;
  margin-top: 6px;
  font-family: var(--lemp-font-heading);
  font-size: 21px;
  font-weight: 500;
}

[data-lemp-module="celebrate"] .celebrate-card:hover {
  color: var(--lemp-red);
}


/* Bilder und Kontakt in einem gemeinsamen Bootstrap-Dialog. */
.celebrate-modal .modal-dialog { max-width: 1240px; }
.celebrate-modal .modal-content { background: var(--lemp-cream); border: 0; border-radius: 18px; overflow: hidden; box-shadow: 0 30px 100px #0005; }
.celebrate-modal .modal-header { border: 0; padding: 20px 28px 0; }
.celebrate-modal__eyebrow { margin: 0; color: var(--lemp-red); font-family: var(--lemp-font-hand); font-size: clamp(32px, 3.2vw, 44px); font-weight: 500; line-height: 1.15; }
.celebrate-modal .modal-body { padding: 22px 28px 28px; }
.celebrate-modal__layout { display: grid; grid-template-columns: minmax(0, 1.9fr) minmax(240px, 1fr); gap: 32px; align-items: center; }
.celebrate-gallery { min-width: 0; }
.celebrate-gallery__stage { position: relative; background: var(--lemp-cream); aspect-ratio: 4/3; border-radius: 12px; overflow: hidden; touch-action: pan-y; }
.celebrate-gallery__image { width: 100%; height: 100%; object-fit: contain; cursor: zoom-in; }
.celebrate-gallery__image.is-revealed { animation: lemp-gallery-reveal 650ms ease-out both; }
@keyframes lemp-gallery-reveal { from { opacity: .25; transform: scale(1.035); } to { opacity: 1; transform: scale(1); } }
.celebrate-gallery__control { position: absolute; display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid #ffffff70; border-radius: 50%; color: white; background: #17130f70; backdrop-filter: blur(8px); transition: background .2s, transform .2s; }
.celebrate-gallery__control:hover { background: var(--lemp-red); transform: scale(1.07); }
.celebrate-gallery__control svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.celebrate-gallery__prev { top: calc(50% - 22px); left: 14px; }
.celebrate-gallery__next { top: calc(50% - 22px); right: 14px; }
.celebrate-gallery__zoom { bottom: 14px; right: 14px; }
.celebrate-gallery__counter { position: absolute; bottom: 18px; left: 18px; color: white; background: #17130f80; padding: 4px 10px; border-radius: 20px; font-variant-numeric: tabular-nums; font-size: 13px; }
.celebrate-gallery__thumbs { display: flex; gap: 8px; overflow-x: auto; padding: 12px 2px 8px; scrollbar-width: thin; }
.celebrate-gallery__thumbs button { flex: 0 0 78px; border: 2px solid transparent; padding: 3px; background: transparent; border-radius: 8px; opacity: .65; transition: opacity .2s; }
.celebrate-gallery__thumbs button:hover, .celebrate-gallery__thumbs button[aria-current="true"] { opacity: 1; }
.celebrate-gallery__thumbs button[aria-current="true"] { border-color: var(--lemp-red); }
.celebrate-gallery__thumbs img { width: 100%; height: 52px; object-fit: cover; border-radius: 4px; }
.celebrate-modal__title { font-family: var(--lemp-font-hand); font-size: clamp(38px, 4vw, 56px); color: var(--lemp-red); margin-bottom: 20px; }
.celebrate-modal__text { font-size: 18px; line-height: 1.65; }
.celebrate-modal__contacts { display: flex; flex-wrap: wrap; gap: 18px; border-top: 1px solid #392d2220; margin-top: 28px; padding-top: 22px; }
.celebrate-modal__contact { display: flex; align-items: center; gap: 9px; text-decoration: none; color: var(--lemp-red); min-height: 44px; }
.celebrate-modal__contact svg { width: 25px; height: 25px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.celebrate-modal button:focus-visible, .celebrate-modal a:focus-visible { outline: 3px solid var(--lemp-red); outline-offset: 3px; }
.celebrate-modal--expanded .modal-dialog { max-width: none; margin: 12px; height: calc(100dvh - 24px); }
.celebrate-modal--expanded .modal-content { height: 100%; }
.celebrate-modal--expanded .modal-body { min-height: 0; overflow: hidden; }
.celebrate-modal--expanded .celebrate-modal__layout { display: block; height: 100%; }
.celebrate-modal--expanded .celebrate-modal__copy { display: none; }
.celebrate-modal--expanded .celebrate-gallery { height: 100%; display: flex; flex-direction: column; }
.celebrate-modal--expanded .celebrate-gallery__stage { flex: 1; min-height: 0; aspect-ratio: auto; }
.celebrate-modal--expanded .celebrate-gallery__thumbs { flex-shrink: 0; }
.celebrate-modal--expanded .celebrate-gallery__image { cursor: zoom-out; }
[data-lemp-module="celebrate"] .celebrate-card__image { transition: transform .5s ease; }
[data-lemp-module="celebrate"] .celebrate-card:hover .celebrate-card__image { transform: scale(1.04); }
@media(max-width: 767px) {
 .celebrate-modal .modal-header { padding: 18px 18px 0; }
 .celebrate-modal .modal-body { padding: 18px; }
 .celebrate-modal__layout { grid-template-columns: 1fr; gap: 20px; }
 .celebrate-modal__title { margin-bottom: 10px; }
 .celebrate-modal__text { font-size: 16px; }
 .celebrate-modal__contacts { margin-top: 18px; padding-top: 14px; }
}
@media(prefers-reduced-motion: reduce) {
 .celebrate-gallery__image.is-revealed { animation: none; }
 .celebrate-gallery__control, [data-lemp-module="celebrate"] .celebrate-card__image { transition: none; }
}

/* Frei ergänzbare Feiern-Einträge aus REDAXO. */
[data-lemp-module="celebrate"] .celebrate-section__grid--editable {
 display: grid; grid-template-columns: repeat(var(--celebrate-columns), minmax(0, 1fr)); gap: 20px;
 width: 100%; margin-inline: auto;
}
[data-lemp-module="celebrate"] .celebrate-card__short { margin: 5px 0 0; color: var(--lemp-ink); line-height: 1.45; }
.celebrate-modal__text { white-space: pre-line; }
.celebrate-modal [hidden] { display: none !important; }
.celebrate-modal__layout--text-only { grid-template-columns: 1fr; }
@media (max-width: 991px) {
 [data-lemp-module="celebrate"] .celebrate-section__grid--editable { grid-template-columns: repeat(min(2, var(--celebrate-columns)), minmax(0, 1fr)); }
}
@media (max-width: 575px) {
 [data-lemp-module="celebrate"] .celebrate-section__grid--editable { grid-template-columns: 1fr; }
}

/* Kartenformat richtet sich nach der Anzahl sichtbarer Räume. */
[data-lemp-module="celebrate"] .celebrate-section__grid--editable .celebrate-card__media { aspect-ratio: 3 / 2; }
[data-lemp-module="celebrate"] .celebrate-section__grid--editable .celebrate-card__image { position: static; height: 100%; object-position: center; }
[data-lemp-module="celebrate"] .celebrate-section__grid--editable .celebrate-card__copy { padding-top: 8px; }
[data-lemp-module="celebrate"] .celebrate-section__grid--editable .celebrate-card__label { margin-top: 0; }
[data-lemp-module="celebrate"] .celebrate-section__grid--editable[data-visible-count="2"] .celebrate-card__media { aspect-ratio: 16 / 9; }
[data-lemp-module="celebrate"] .celebrate-section__grid--single .celebrate-card {
 display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 56px); align-items: center;
}
[data-lemp-module="celebrate"] .celebrate-section__grid--single .celebrate-card__media { aspect-ratio: 16 / 9; border-radius: 8px; }
[data-lemp-module="celebrate"] .celebrate-section__grid--single .celebrate-card__label { font-size: clamp(30px, 3vw, 42px); line-height: 1.1; }
[data-lemp-module="celebrate"] .celebrate-section__grid--single .celebrate-card__short { margin-top: 16px; font-size: 18px; line-height: 1.6; }
[data-lemp-module="celebrate"] .celebrate-card__cta { display: inline-block; margin-top: 20px; color: var(--lemp-red); font-family: var(--lemp-font-heading); font-size: 21px; }
[data-lemp-module="celebrate"] .celebrate-section__grid--single .celebrate-card--no-image { grid-template-columns: 1fr; }
[data-lemp-module="celebrate"] a.celebrate-card:focus-visible { outline: 3px solid var(--lemp-red); outline-offset: 6px; border-radius: 5px; }
@media (max-width: 767px) {
 [data-lemp-module="celebrate"] .celebrate-section__grid--single .celebrate-card { grid-template-columns: 1fr; gap: 12px; }
 [data-lemp-module="celebrate"] .celebrate-section__grid--single .celebrate-card__short { font-size: 16px; margin-top: 10px; }
}
