/**
 * mod_vr_card_grid frontend styles
 *
 * Schlankes Kartenraster ohne externe Abhaengigkeiten.
 * Alle dynamischen Werte werden serverseitig validiert und als CSS-Variablen
 * pro Modulinstanz gesetzt.
 */

.vrcardgrid-section {
  background: var(--vrcg-section-bg, #372d00);
  padding: var(--vrcg-section-padding-desktop, 160px 24px 180px);
  scroll-margin-top: var(--vrcg-scroll-margin-top, 96px);
}

/* Volle Browserbreite, auch wenn die Modulposition im Template begrenzt ist. */
.vrcardgrid-section--width-full {
  width: 100vw;
  margin-left: calc(50% - 50vw);
}

.vrcardgrid-section--width-box .vrcardgrid-section__shell {
  width: min(100%, var(--vrcg-max-width, 1040px));
}

.vrcardgrid-section--align-left .vrcardgrid-section__shell {
  margin-left: 0;
  margin-right: auto;
}

.vrcardgrid-section--align-center .vrcardgrid-section__shell {
  margin-left: auto;
  margin-right: auto;
}

.vrcardgrid-section--align-right .vrcardgrid-section__shell {
  margin-left: auto;
  margin-right: 0;
}

.vrcardgrid-section__shell {
  width: min(100%, var(--vrcg-max-width, 1040px));
  margin-left: auto;
  margin-right: auto;
}

.vrcardgrid-section__grid {
  display: grid;
  grid-template-columns: repeat(var(--vrcg-columns, 2), minmax(0, var(--vrcg-card-width, 470px)));
  gap: var(--vrcg-gap, 82px);
  justify-content: center;
  align-items: stretch;
}

.vrcardgrid-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
  color: var(--vrcg-text-color, #fff);
  background: var(--vrcg-card-bg, #5b430e);
  border-radius: var(--vrcg-card-radius, 0px);
  text-decoration: none;
}

.vrcardgrid-card--shadow {
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.22);
}

/* Die Karte selbst ist kein Link, damit Text normal markierbar bleibt. */
.vrcardgrid-card__media-link,
.vrcardgrid-card__title-link {
  color: inherit;
  text-decoration: none;
}

.vrcardgrid-card__media-link {
  display: block;
  width: 100%;
  height: 100%;
}

.vrcardgrid-card__title-link:hover,
.vrcardgrid-card__title-link:focus-visible {
  color: inherit;
  text-decoration: none;
}

.vrcardgrid-card__media-link:focus-visible,
.vrcardgrid-card__title-link:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

.vrcardgrid-card__media {
  height: var(--vrcg-image-height, 315px);
  background: rgba(0, 0, 0, 0.12);
  overflow: hidden;
}

.vrcardgrid-card__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--vrcg-image-position, center center);
}

.vrcardgrid-card__body {
  flex: 1 1 auto;
  min-height: var(--vrcg-card-min-height, 205px);
  padding: var(--vrcg-card-text-padding, 28px 32px 30px);
  color: var(--vrcg-text-color, #fff);
}

.vrcardgrid-card__title {
  margin: 0 0 18px;
  color: var(--vrcg-title-color, #fff);
  font-size: var(--vrcg-title-size, 34px);
  line-height: var(--vrcg-title-line-height, 1.15);
  font-weight: 400;
}

.vrcardgrid-card__text {
  margin: 0;
  color: var(--vrcg-text-color, #fff);
  font-size: var(--vrcg-text-size, 20px);
  line-height: var(--vrcg-text-line-height, 1.35);
}

/* Nur wenn diese Modulinstanz es verlangt: typischen Abstand des Joomla-Contentbereichs entfernen. */
.vrb-template main:has(.vrcardgrid-section[data-flush-content="1"]),
.vrb-template .vrb-main:has(.vrcardgrid-section[data-flush-content="1"]),
.vrb-template .vrb-content:has(.vrcardgrid-section[data-flush-content="1"]),
.vrb-template .vrb-component:has(.vrcardgrid-section[data-flush-content="1"]),
.vrb-template .com-content-article:has(.vrcardgrid-section[data-flush-content="1"]),
.vrb-template .item-page:has(.vrcardgrid-section[data-flush-content="1"]) {
  padding-top: 0 !important;
  margin-top: 0 !important;
}

.vrcardgrid-section[data-flush-content="1"] {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

@media (max-width: 600px) {
  .vrcardgrid-section {
    padding: var(--vrcg-section-padding-mobile, 72px 20px 88px);
  }

  .vrcardgrid-card__body {
    min-height: 0;
  }
}

/* Optionaler Hover-Layer fuer Projektkarten.
   Der sichtbare Kartentitel bleibt im Textbereich ein echtes H2.
   Der Effekt reagiert nur auf den Bildbereich, nicht auf die ganze Karte. */
.vrcardgrid-card__media {
  position: relative;
}

.vrcardgrid-card__image {
  transition:
    filter var(--vrcg-hover-fade-ms, 260ms) ease,
    transform var(--vrcg-hover-fade-ms, 260ms) ease;
}

.vrcardgrid-card__hover {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--vrcg-hover-fade-ms, 260ms) ease;
}

.vrcardgrid-card__hover::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--vrcg-hover-overlay-color, #8a7444);
  opacity: var(--vrcg-hover-overlay-opacity, 0.55);
}

.vrcardgrid-card__hover-title {
  position: relative;
  z-index: 1;
  color: var(--vrcg-hover-title-color, #fff);
  font-size: var(--vrcg-hover-title-size, 30px);
  line-height: 1.15;
  text-align: center;
  padding: 0 24px;
}

.vrcardgrid-section[data-hover-effect="1"] .vrcardgrid-card__media:hover .vrcardgrid-card__hover,
.vrcardgrid-section[data-hover-effect="1"] .vrcardgrid-card__media:focus-within .vrcardgrid-card__hover {
  opacity: 1;
}

.vrcardgrid-section[data-hover-effect="1"] .vrcardgrid-card__media:hover .vrcardgrid-card__image,
.vrcardgrid-section[data-hover-effect="1"] .vrcardgrid-card__media:focus-within .vrcardgrid-card__image {
  filter:
    blur(var(--vrcg-hover-blur, 2px))
    sepia(var(--vrcg-hover-sepia, 45%))
    saturate(0.72)
    brightness(1.08);
  transform: scale(1.025);
}

@media (prefers-reduced-motion: reduce) {
  .vrcardgrid-card__image,
  .vrcardgrid-card__hover {
    transition: none;
  }
}
