/* Schriften: Alegreya und Alegreya Sans (SIL Open Font License), von der eigenen Domain geladen */
@font-face { font-family: 'Alegreya'; font-style: normal; font-weight: 500; font-display: swap; src: url('../schriften/alegreya-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya'; font-style: normal; font-weight: 700; font-display: swap; src: url('../schriften/alegreya-latin-700-normal.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('../schriften/alegreya-sans-latin-400-normal.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url('../schriften/alegreya-sans-latin-400-italic.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url('../schriften/alegreya-sans-latin-500-normal.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: italic; font-weight: 500; font-display: swap; src: url('../schriften/alegreya-sans-latin-500-italic.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('../schriften/alegreya-sans-latin-700-normal.woff2') format('woff2'); }
@font-face { font-family: 'Alegreya Sans'; font-style: italic; font-weight: 700; font-display: swap; src: url('../schriften/alegreya-sans-latin-700-italic.woff2') format('woff2'); }

/* ==========================================================================
   KlosterArt Oschatz · klassische Vereinsseite
   Ruhiger, heller Grund, weiße Kästen, Petrolblau aus dem Logo.
   Orange nur gedämpft und an wenigen Stellen.
   ========================================================================== */

:root {
  /* Flächen */
  --grund: #f6f3ec;
  --weiss: #fff;
  --band: #ede7da;

  /* Logofarben */
  --petrol: #183540;
  --petrol-mid: #405e64;
  --sand: #cebe9e;

  /* Farben der bisherigen Seite */
  --schiefer: #546284;
  --himmel: #4faae9;

  /* Gedämpftes Orange: Knopf im breiten Terminkasten und die Marke „heute“ */
  --apricot: #de9a63;
  --apricot-tief: #d38a52;

  /* Farbe der Agentur, nur für das Herz in der Zeile „Made with ♥ by Sakea“ */
  --sakea-gelb: #d2f716;

  --schrift-text: 'Alegreya Sans', 'Candara', 'Segoe UI', sans-serif;
  --schrift-titel: 'Alegreya', 'Georgia', serif;

  --breite: 80rem;
  --rand: clamp(1rem, 4vw, 3rem);
  --radius: 0.625rem;
  --linie: rgb(24 53 64 / 0.12);
  --schatten: 0 1px 2px rgb(24 53 64 / 0.06), 0 10px 28px rgb(24 53 64 / 0.08);
  --schatten-hoch: 0 2px 4px rgb(24 53 64 / 0.08), 0 20px 44px rgb(24 53 64 / 0.15);
  --schatten-schweb: 0 4px 8px rgb(24 53 64 / 0.1), 0 30px 60px rgb(24 53 64 / 0.22);
  --aus: cubic-bezier(0.16, 1, 0.3, 1);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-padding-top: 1.5rem;
  scrollbar-color: var(--petrol-mid) var(--grund);
}

body {
  margin: 0;
  background: var(--grund);
  color: var(--petrol);
  font-family: var(--schrift-text);
  font-size: 1.1875rem;
  line-height: 1.6;
  font-variant-numeric: lining-nums;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  caret-color: var(--schiefer);
}

::selection {
  background: var(--petrol);
  color: var(--weiss);
}

:focus-visible {
  outline: 3px solid var(--schiefer);
  outline-offset: 3px;
  border-radius: 3px;
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

h1,
h2,
h3 {
  margin: 0;
  font-family: var(--schrift-titel);
  font-weight: 700;
  line-height: 1.15;
  text-wrap: balance;
}

p {
  margin: 0;
}

a {
  color: inherit;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.2em;
}

address {
  font-style: normal;
}

figure {
  margin: 0;
}

figcaption {
  margin-top: 0.5rem;
  font-size: 1rem;
  color: var(--petrol-mid);
}

.unsichtbar {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.sprung {
  position: absolute;
  left: var(--rand);
  top: 0.5rem;
  z-index: 30;
  padding: 0.6rem 1rem;
  border-radius: var(--radius);
  background: var(--petrol);
  color: var(--weiss);
  translate: 0 -200%;
}

.sprung:focus {
  translate: 0 0;
}

.ziffern,
.datumsfeld__tag,
.archivzeile__datum,
.jahrgang__jahr,
.chronik dt {
  font-variant-numeric: tabular-nums lining-nums;
}

.satz {
  display: block;
}

.vorspann {
  max-width: 62ch;
  font-size: 1.3125rem;
  line-height: 1.55;
  text-wrap: pretty;
}

/* --------------------------------------------------------------------------
   Kopf und Menü
   -------------------------------------------------------------------------- */

.kopf {
  position: relative;
  z-index: 20;
  background: var(--weiss);
  border-bottom: 1px solid var(--linie);
}

.kopf__innen {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  max-width: calc(var(--breite) + 2 * var(--rand));
  margin-inline: auto;
  padding: 0.75rem var(--rand);
}

.kopf__logo {
  display: block;
  flex: none;
}

.kopf__logo img {
  width: auto;
  height: 4.25rem;
}

.menue__schalter {
  display: none;
}

.menue__liste {
  display: flex;
  gap: clamp(1.25rem, 2.6vw, 2.5rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

.menue__link {
  position: relative;
  display: block;
  padding: 0.6rem 0;
  font-weight: 500;
  font-size: 1.1875rem;
  text-decoration: none;
}

.menue__link::after {
  content: '';
  position: absolute;
  inset: auto 0 0.3rem;
  height: 2px;
  background: var(--petrol);
  scale: 0 1;
  transform-origin: left;
  transition: scale 0.45s var(--aus);
}

.menue__link:hover::after,
.menue__link[aria-current]::after {
  scale: 1 1;
}

.menue__link[aria-current] {
  font-weight: 700;
}

@media (max-width: 47.99rem) {
  .kopf__logo img {
    height: 3.25rem;
  }

  .menue__schalter {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 2.75rem;
    padding: 0.4rem 0.9rem;
    border: 1.5px solid var(--petrol);
    border-radius: var(--radius);
    background: none;
    color: inherit;
    font: 700 1.0625rem/1 var(--schrift-text);
    cursor: pointer;
  }

  .menue__balken {
    position: relative;
    width: 1.125rem;
    height: 0.75rem;
  }

  .menue__balken::before,
  .menue__balken::after {
    content: '';
    position: absolute;
    inset-inline: 0;
    height: 2px;
    border-radius: 1px;
    background: currentColor;
    transition:
      translate 0.35s var(--aus),
      rotate 0.35s var(--aus);
  }

  .menue__balken::before {
    top: 1px;
  }

  .menue__balken::after {
    bottom: 1px;
  }

  .menue__schalter[aria-expanded='true'] .menue__balken::before {
    translate: 0 0.25rem;
    rotate: 45deg;
  }

  .menue__schalter[aria-expanded='true'] .menue__balken::after {
    translate: 0 -0.25rem;
    rotate: -45deg;
  }

  .menue__liste {
    position: absolute;
    inset: 100% 0 auto;
    display: none;
    flex-direction: column;
    gap: 0;
    padding: 0.25rem var(--rand) 1rem;
    background: var(--weiss);
    border-bottom: 1px solid var(--linie);
    box-shadow: 0 18px 28px rgb(24 53 64 / 0.14);
  }

  .menue__liste[data-offen] {
    display: flex;
  }

  .menue__link {
    padding: 0.85rem 0;
    border-bottom: 1px solid var(--linie);
    font-size: 1.3125rem;
  }

  .menue__liste li:last-child .menue__link {
    border-bottom: 0;
  }

  .menue__link::after {
    display: none;
  }

  .menue__link[aria-current] {
    color: var(--schiefer);
  }
}

/* --------------------------------------------------------------------------
   Knöpfe, Links, Marken
   -------------------------------------------------------------------------- */

.knopf {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  min-height: 3rem;
  padding: 0.65rem 1.3rem;
  border: 0;
  border-radius: var(--radius);
  background: var(--petrol);
  color: var(--weiss);
  font: 700 1.0625rem/1.2 var(--schrift-text);
  text-decoration: none;
  cursor: pointer;
  transition:
    background-color 0.25s ease,
    color 0.25s ease,
    box-shadow 0.25s ease;
}

.knopf svg {
  flex: none;
}

.knopf__pfeil {
  transition: translate 0.45s var(--aus);
}

.knopf:hover {
  background: var(--petrol-mid);
}

.knopf:hover .knopf__pfeil {
  translate: 0.3rem 0;
}

.knopf--linie {
  background: transparent;
  color: var(--petrol);
  box-shadow: inset 0 0 0 1.5px var(--petrol);
}

.knopf--linie:hover {
  background: var(--petrol);
  color: var(--weiss);
}

.knopfreihe {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.textlink {
  color: var(--schiefer);
  font-weight: 500;
}

.textlink svg {
  display: inline-block;
  margin-left: 0.3em;
  vertical-align: -0.2em;
}

.textlink:hover {
  color: var(--petrol);
}

.zurueck {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  justify-self: start;
  padding: 0.4rem 0;
  color: var(--schiefer);
  font-weight: 500;
  text-decoration: none;
}

.zurueck:hover {
  color: var(--petrol);
}

.zurueck svg {
  transition: translate 0.45s var(--aus);
}

.zurueck:hover svg {
  translate: -0.3rem 0;
}

.kopieren {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  min-height: 2.75rem;
  padding: 0.5rem 1rem;
  border: 1.5px solid var(--petrol);
  border-radius: var(--radius);
  background: none;
  color: inherit;
  font: 700 1.0625rem/1.2 var(--schrift-text);
  cursor: pointer;
  transition:
    background-color 0.25s ease,
    color 0.25s ease;
}

.kopieren:hover {
  background: var(--petrol);
  color: var(--weiss);
}

.marke {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.75rem 0.15rem;
  border-radius: 99rem;
  background: var(--band);
  color: var(--petrol);
  font-weight: 700;
  font-size: 0.9375rem;
  line-height: 1.4;
  white-space: nowrap;
}

.marke--heute {
  background: var(--apricot);
}

.marke--rueckblick {
  background: var(--schiefer);
  color: var(--weiss);
}

/* --------------------------------------------------------------------------
   Kästen und Faktenlisten
   -------------------------------------------------------------------------- */

.kasten {
  display: grid;
  gap: 1rem;
  justify-items: start;
  align-content: start;
  padding: clamp(1.5rem, 3vw, 2.25rem);
  border-radius: var(--radius);
  background: var(--weiss);
  box-shadow: var(--schatten);
}

.kasten__titel {
  font-size: 1.5rem;
}

.kasten__hinweis {
  font-size: 1rem;
  color: var(--petrol-mid);
}

.fakten {
  display: grid;
  width: 100%;
  margin: 0;
  border-top: 1px solid var(--linie);
}

.fakten__zeile {
  display: grid;
  grid-template-columns: 4rem minmax(0, 1fr);
  gap: 0.75rem;
  align-items: baseline;
  padding: 0.5rem 0 0.45rem;
  border-bottom: 1px solid var(--linie);
}

.fakten dt {
  font-weight: 700;
  font-size: 0.875rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--petrol-mid);
}

.fakten dd {
  margin: 0;
  font-weight: 500;
}

.angaben {
  display: grid;
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
  font-weight: 500;
  line-height: 1.4;
}

.angaben li {
  display: flex;
  gap: 0.6rem;
  align-items: flex-start;
}

.angaben svg {
  flex: none;
  margin-top: 0.2em;
  color: var(--petrol-mid);
}

.anschrift {
  font-size: 1.1875rem;
  line-height: 1.55;
}

/* Datumsfeld */
.datumsfeld {
  display: grid;
  color: var(--weiss);
  line-height: 1.1;
}

.datumsfeld__tag {
  font-family: var(--schrift-titel);
  font-weight: 700;
  font-size: 3rem;
  line-height: 1;
  white-space: nowrap;
}

.datumsfeld[data-lang] .datumsfeld__tag {
  font-size: 1.875rem;
}

.datumsfeld__monat {
  margin-top: 0.45rem;
  font-weight: 700;
  font-size: 1.125rem;
}

.datumsfeld__wochentag {
  margin-top: 0.15rem;
  font-size: 1rem;
  color: var(--sand);
}

/* --------------------------------------------------------------------------
   Bühne: Bildwechsel über die ganze Breite mit Leitsatz
   -------------------------------------------------------------------------- */

.buehne {
  position: relative;
  height: clamp(27rem, 74svh, 43rem);
  overflow: hidden;
  background: var(--petrol);
  color: var(--weiss);
}

.buehne::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 3;
  background: linear-gradient(
    to bottom,
    rgb(16 38 46 / 0.5),
    rgb(16 38 46 / 0.42) 38%,
    rgb(16 38 46 / 0.58) 68%,
    rgb(16 38 46 / 0.84)
  );
  pointer-events: none;
}

.buehne__bild {
  position: absolute;
  inset: -9% 0 0;
}

.buehne__inhalt {
  position: relative;
  z-index: 4;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 1.1rem;
  height: 100%;
  padding: 3.5rem var(--rand) 10.5rem;
  text-align: center;
  pointer-events: none;
}

/* Schatten hält die Schrift auch auf hellen Stellen der Fotos lesbar */
.buehne__inhalt {
  text-shadow: 0 1px 2px rgb(16 38 46 / 0.55), 0 0 18px rgb(16 38 46 / 0.6);
}

.buehne__gruss {
  font-weight: 500;
  font-size: clamp(1.125rem, 1rem + 0.7vw, 1.5rem);
  line-height: 1.4;
}

.leitsatz {
  font-weight: 500;
  font-size: clamp(2.25rem, 1.35rem + 3.5vw, 4.25rem);
  line-height: 1.08;
  letter-spacing: -0.01em;
}

.buehne :focus-visible {
  outline-color: var(--weiss);
}

/* Bildwechsel */
.bildwechsel,
.bildwechsel__ebene {
  position: absolute;
  inset: 0;
}

.bildwechsel__ebene {
  opacity: 0;
  visibility: hidden;
}

.bildwechsel__ebene[data-erste] {
  opacity: 1;
  visibility: visible;
}

.bildwechsel__ebene img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.bildwechsel__unterschrift {
  position: absolute;
  top: calc(9% + 1rem);
  left: max(var(--rand), calc((100% - var(--breite)) / 2));
  z-index: 5;
  max-width: min(calc(100% - 16rem), 40rem);
  padding: 0.25rem 0.7rem 0.2rem;
  border-radius: 0.3rem;
  background: rgb(16 38 46 / 0.6);
  color: var(--weiss);
  font-size: 0.9375rem;
  line-height: 1.35;
}

.bildwechsel__leiste {
  position: absolute;
  top: calc(9% + 0.55rem);
  right: max(var(--rand), calc((100% - var(--breite)) / 2));
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--weiss);
}

.bildwechsel__pause {
  display: grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border: 1.5px solid currentColor;
  border-radius: 50%;
  background: rgb(16 38 46 / 0.45);
  color: inherit;
  cursor: pointer;
  transition: background-color 0.25s ease;
}

.bildwechsel__pause:hover {
  background: var(--petrol);
}

.bildwechsel__punkte {
  display: flex;
  align-items: center;
}

.bildwechsel__punkt {
  display: grid;
  place-items: center;
  width: 1.5rem;
  height: 2.75rem;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  cursor: pointer;
}

.bildwechsel__punkt::before,
.bildwechsel__fuellung {
  grid-area: 1 / 1;
  width: calc(100% - 0.75rem);
  height: 0.5rem;
  border-radius: 1rem;
}

.bildwechsel__punkt::before {
  content: '';
  background: rgb(255 255 255 / 0.45);
}

.bildwechsel__fuellung {
  background: currentColor;
  scale: 0 1;
  transform-origin: left;
}

.bildwechsel__punkt[aria-current] {
  width: 3.25rem;
}

.bildwechsel__punkt[aria-current] .bildwechsel__fuellung {
  scale: 1 1;
}

/* --------------------------------------------------------------------------
   Termine: schieben sich von unten in die Bühne
   -------------------------------------------------------------------------- */

.termine {
  position: relative;
  z-index: 6;
  max-width: calc(var(--breite) + 2 * var(--rand));
  margin: -8.75rem auto 0;
  padding-inline: var(--rand);
}

.termine__kopf {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25rem 1rem;
  margin-bottom: 1rem;
  color: var(--weiss);
}

.termine__titel {
  font-weight: 500;
  font-size: 1.625rem;
}

/* „und 6 weitere Termine“: der Weg zur Liste, schon im ersten Bildschirm */
.termine__hinweis {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  min-height: 2.75rem;
  font-weight: 500;
  font-size: 1.0625rem;
  text-decoration-color: rgb(255 255 255 / 0.5);
  transition: text-decoration-color 0.25s ease;
}

.termine__hinweis:hover {
  text-decoration-color: var(--weiss);
}

.termine__hinweis svg {
  rotate: 90deg;
}

.termine__leer {
  max-width: 46rem;
}

/* Vorschau eines anderen Tages (nur in der Entwicklung) */
.vorschauhinweis {
  padding: 0.5rem var(--rand);
  background: var(--petrol);
  color: var(--weiss);
  font-size: 1rem;
  text-align: center;
}

.vorschauhinweis a {
  margin-left: 0.5rem;
}

/* --------------------------------------------------------------------------
   Terminliste: alle weiteren kommenden Veranstaltungen, eine Zeile je Termin
   -------------------------------------------------------------------------- */

.terminliste {
  display: grid;
  margin: 0;
  padding: 0;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--weiss);
  box-shadow: var(--schatten);
  list-style: none;
}

.terminliste--folgt {
  margin-top: 1.5rem;
}

.terminliste__mehr {
  margin-top: 1.5rem;
}

.terminzeile {
  box-shadow: 0 1px 0 var(--linie);
}

.terminzeile__link {
  display: grid;
  grid-template-columns: 9.5rem minmax(0, 1fr) auto auto;
  gap: 1.75rem;
  align-items: center;
  min-height: 6.25rem;
  padding: 1.1rem 1.75rem;
  text-decoration: none;
  transition: background-color 0.25s ease;
}

.terminzeile__link:hover {
  background: var(--grund);
}

/* Die Listen beschneiden ihre runden Ecken; der Fokusrahmen liegt deshalb innen. */
.terminzeile__link:focus-visible,
.archivzeile__link:focus-visible {
  outline-offset: -3px;
}

.terminzeile__datum {
  display: grid;
}

.terminzeile__tage {
  font-family: var(--schrift-titel);
  font-weight: 500;
  font-size: 2.25rem;
  line-height: 1;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums lining-nums;
  white-space: nowrap;
}

.terminzeile__monat {
  margin-top: 0.35rem;
  color: var(--petrol-mid);
  font-weight: 700;
  font-size: 1rem;
  line-height: 1.2;
}

.terminzeile__monat-kurz {
  display: none;
}

.terminzeile__text {
  display: grid;
  gap: 0.25rem;
  justify-items: start;
  min-width: 0;
}

.terminzeile__titel {
  font-family: var(--schrift-titel);
  font-weight: 700;
  font-size: 1.5rem;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.terminzeile__angaben {
  color: var(--petrol-mid);
  font-size: 1.0625rem;
  line-height: 1.4;
}

.terminzeile__bild {
  width: 6rem;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 0.3rem;
  background: var(--band);
}

.terminzeile__bild img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: scale 1.2s var(--aus);
}

.terminzeile__bild--plakat img {
  object-fit: contain;
}

.terminzeile__bild--leer {
  background: none;
}

.terminzeile__pfeil {
  color: var(--petrol-mid);
  opacity: 0.55;
  transition:
    translate 0.45s var(--aus),
    opacity 0.25s ease;
}

.terminzeile__link:hover .terminzeile__titel {
  text-decoration: underline;
  text-decoration-thickness: 0.06em;
  text-underline-offset: 0.18em;
}

.terminzeile__link:hover .terminzeile__pfeil {
  opacity: 1;
  translate: 0.25rem 0;
}

.terminzeile__link:hover .terminzeile__bild:not(.terminzeile__bild--plakat) img {
  scale: 1.05;
}

.termin {
  container-type: inline-size;
}

/* Gestapelt (Handy): Datum und Titel zuerst, dann das Bild, dann die Angaben,
   damit die Auskunft im ersten Bildschirm steht. */
.termin__innen {
  position: relative;
  display: grid;
  grid-template-areas:
    'kopf'
    'bild'
    'inhalt';
  height: 100%;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--weiss);
  box-shadow: var(--schatten);
  transition:
    translate 0.5s var(--aus),
    box-shadow 0.5s var(--aus);
}

/* Auf dem Bild der Bühne liegt der Kasten höher */
.termine .termin__innen {
  box-shadow: var(--schatten-hoch);
}

.termin__kopf {
  grid-area: kopf;
  display: grid;
  gap: 0.8rem;
  padding: 1.25rem 1.4rem 1.1rem;
}

.termin__bild {
  grid-area: bild;
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--band);
}

.termin__bild img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: scale 1.4s var(--aus);
}

/* Plakate stehen vollständig auf dem sandfarbenen Grund */
.termin__bild--plakat img {
  inset: 1rem;
  width: calc(100% - 2rem);
  height: calc(100% - 2rem);
  object-fit: contain;
}

/* Ohne Bild trägt die Fläche das Datum als Tafel; gestapelt entfällt sie */
.termin__bild--tafel {
  display: none;
  place-items: center;
  color: var(--petrol);
}

.termin__tafel {
  display: grid;
  justify-items: center;
  gap: 0.4rem;
  padding: 1.5rem;
  font-family: var(--schrift-titel);
  text-align: center;
}

.termin__tafel-tage {
  font-weight: 700;
  font-size: clamp(3.25rem, 9cqw, 5.5rem);
  line-height: 1;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums lining-nums;
  white-space: nowrap;
}

.termin__tafel-monat {
  font-weight: 500;
  font-size: 1.625rem;
  line-height: 1.15;
}

.termin__tafel-wochentag {
  color: var(--petrol-mid);
  font-family: var(--schrift-text);
  font-weight: 500;
  font-size: 1.0625rem;
}

.termin__inhalt {
  grid-area: inhalt;
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  min-width: 0;
  padding: 1.1rem 1.4rem 1.4rem;
}

/* Das Datum als große Zeile: Tage, Monat und Jahr, der Wochentag gleich dahinter */
.termin__datum {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.2rem 0.9rem;
  padding-bottom: 0.8rem;
  border-bottom: 1px solid var(--linie);
}

.termin__zeit {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.1rem 0.6rem;
  font-family: var(--schrift-titel);
  font-weight: 500;
}

.termin__tage {
  font-size: 2.5rem;
  line-height: 1;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums lining-nums;
  white-space: nowrap;
}

.termin__monat {
  font-size: 1.375rem;
  line-height: 1.15;
}

.termin__wochentag {
  color: var(--petrol-mid);
  font-size: 1rem;
}

.termin__titel {
  font-weight: 700;
  font-size: 1.625rem;
  line-height: 1.15;
  overflow-wrap: anywhere;
  hyphens: auto;
}

.termin__link {
  text-decoration: none;
}

.termin__link::after {
  content: '';
  position: absolute;
  inset: 0;
}

.termin__kurztext {
  display: -webkit-box;
  overflow: hidden;
  color: var(--petrol-mid);
  font-size: 1.0625rem;
  line-height: 1.5;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
}

.termin__fuss {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1rem;
  margin-top: auto;
  padding-top: 0.4rem;
}

.termin__mehr {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--schiefer);
  font-weight: 700;
}

.termin__mehr svg {
  transition: translate 0.45s var(--aus);
}

/* Zwei leise Handgriffe unter dem Weg zur Veranstaltung: Kalender und Link */
.termin__aktionen {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 0 1.5rem;
  margin-top: -0.35rem;
}

.termin__aktion {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  min-height: 2.75rem;
  padding: 0;
  border: 0;
  background: none;
  color: var(--schiefer);
  font: 500 1rem/1.2 var(--schrift-text);
  text-decoration: none;
  cursor: pointer;
  transition: color 0.25s ease;
}

.termin__aktion svg {
  flex: none;
}

.termin__aktion:hover {
  color: var(--petrol);
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.2em;
}

/* Weitersagen ohne Teilen-Menü des Geräts: zwei Wege klappen in einer eigenen Zeile auf */
.weitersagen {
  display: contents;
}

.teilen {
  flex-basis: 100%;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  margin: 0.25rem 0 0;
  padding: 0;
  list-style: none;
}

.teilen__weg {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 2.75rem;
  padding: 0.4rem 1rem;
  border-radius: 99rem;
  background: var(--band);
  color: var(--petrol);
  font-weight: 700;
  font-size: 1rem;
  text-decoration: none;
  transition:
    background-color 0.25s ease,
    color 0.25s ease;
}

.teilen__weg:hover {
  background: var(--petrol);
  color: var(--weiss);
}

/* Genug Platz: Bild links über die ganze Höhe, rechts Datum, Titel und Angaben mittig */
@container (min-width: 46rem) {
  .termin__innen {
    grid-template-columns: minmax(0, 45%) minmax(0, 1fr);
    grid-template-rows: 1fr auto auto 1fr;
    grid-template-areas:
      'bild .'
      'bild kopf'
      'bild inhalt'
      'bild .';
  }

  .termin__bild {
    aspect-ratio: auto;
    min-height: 21rem;
  }

  .termin__bild--tafel {
    display: grid;
  }

  /* Steht das Datum auf der Tafel, entfällt die Datumszeile daneben */
  .termin__innen:has(.termin__bild--tafel) .termin__datum {
    display: none;
  }

  .termin__kopf {
    gap: 1.1rem;
    padding: 2.25rem 2.5rem 0;
  }

  .termin__inhalt {
    gap: 1.1rem;
    padding: 1.1rem 2.5rem 2.25rem;
  }

  .termin__datum {
    padding-bottom: 1.1rem;
  }

  .termin__tage {
    font-size: 3.5rem;
  }

  .termin__monat {
    font-size: 1.75rem;
  }

  .termin__titel {
    font-size: 2.5rem;
    line-height: 1.08;
    letter-spacing: -0.01em;
  }

  .termin__fuss {
    justify-content: flex-start;
    gap: 1.25rem;
    margin-top: 0.4rem;
  }

  .termin__mehr {
    min-height: 3rem;
    padding: 0.65rem 1.3rem;
    border-radius: var(--radius);
    background: var(--apricot);
    color: var(--petrol);
    transition: background-color 0.25s ease;
  }

  @media (hover: hover) {
    .termin__innen:hover .termin__mehr {
      background: var(--apricot-tief);
    }
  }
}

@media (hover: hover) {
  .termin__innen:hover,
  .bildkasten:hover {
    translate: 0 -0.25rem;
    box-shadow: var(--schatten-hoch);
  }

  .termine .termin__innen:hover {
    box-shadow: var(--schatten-schweb);
  }

  .termin__innen:hover .termin__link,
  .bildkasten:hover .bildkasten__link {
    text-decoration: underline;
    text-decoration-thickness: 0.06em;
  }

  .termin__innen:hover .termin__mehr svg {
    translate: 0.3rem 0;
  }

  .termin__innen:hover .termin__bild:not(.termin__bild--plakat, .termin__bild--tafel) img,
  .bildkasten:hover .bildkasten__bild:not(.bildkasten__bild--plakat) img {
    scale: 1.04;
  }
}

/* --------------------------------------------------------------------------
   Abschnitte der Startseite
   -------------------------------------------------------------------------- */

.abschnitt,
.seitenkopf {
  max-width: calc(var(--breite) + 2 * var(--rand));
  margin-inline: auto;
  padding-inline: var(--rand);
}

.abschnitt {
  padding-block: clamp(3.5rem, 7vw, 6rem);
}

.abschnitt--oben,
.abschnitt + .abschnitt {
  padding-top: 0;
}

.abschnitt__kopf {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.25rem 2rem;
  margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.abschnitt__titel {
  font-size: clamp(1.75rem, 1.35rem + 1.5vw, 2.375rem);
  line-height: 1.12;
  letter-spacing: -0.01em;
}

.abschnitt--oben > .abschnitt__titel {
  margin-bottom: 1.5rem;
}

.abschnitt__unterzeile {
  margin-top: 0.5rem;
  color: var(--petrol-mid);
}

.ort {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}

.ort__text {
  display: grid;
  gap: 1.5rem;
  justify-items: start;
}

.ort__text .vorspann {
  font-size: 1.1875rem;
}

/* Fotos, die sich beim Einblenden öffnen: Der Rahmen trägt Rundung und Schatten und hält
   das Bild in seinen Grenzen, solange es noch leicht vergrößert ist (sonst ragt es am
   Handy über den Bildschirmrand). */
.ort__bild,
.textseite__bild {
  overflow: hidden;
  border-radius: var(--radius);
  box-shadow: var(--schatten);
}

.ort__bild img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.chronik {
  display: grid;
  width: 100%;
  margin: 0;
  border-top: 1px solid var(--linie);
}

.chronik__zeile {
  display: grid;
  grid-template-columns: 8rem minmax(0, 1fr);
  gap: 1rem;
  align-items: baseline;
  padding: 0.6rem 0 0.55rem;
  border-bottom: 1px solid var(--linie);
}

.chronik dt {
  font-weight: 700;
  line-height: 1.45;
}

.chronik dd {
  margin: 0;
  line-height: 1.45;
}

/* Bildkästen: vergangene Veranstaltungen */
.bildkaesten {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.5rem;
}

.bildkasten {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--weiss);
  box-shadow: var(--schatten);
  transition:
    translate 0.5s var(--aus),
    box-shadow 0.5s var(--aus);
}

.bildkasten__bild {
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: var(--band);
}

.bildkasten__bild img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 25%;
  transition: scale 1.2s var(--aus);
}

.bildkasten__bild--plakat {
  padding: 1rem;
}

.bildkasten__bild--plakat img {
  object-fit: contain;
  object-position: center;
}

.bildkasten__text {
  display: grid;
  gap: 0.5rem;
  justify-items: start;
  align-content: start;
  padding: 1.25rem 1.5rem 1.5rem;
}

.bildkasten__datum {
  color: var(--petrol-mid);
  font-weight: 500;
  font-size: 1rem;
}

.bildkasten__titel {
  font-size: 1.5rem;
  line-height: 1.2;
  overflow-wrap: anywhere;
}

.bildkasten__link {
  text-decoration: none;
}

.bildkasten__link::after {
  content: '';
  position: absolute;
  inset: 0;
}

.bildkasten__kurztext {
  display: -webkit-box;
  overflow: hidden;
  color: var(--petrol-mid);
  font-size: 1.0625rem;
  line-height: 1.5;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
}

/* Sandgetöntes Band: der Verein */
.band {
  background: var(--band);
  padding-block: clamp(3.5rem, 7vw, 6rem);
}

.band__innen {
  max-width: calc(var(--breite) + 2 * var(--rand));
  margin-inline: auto;
  padding-inline: var(--rand);
}

.verein {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(18rem, 1fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}

.verein__text {
  display: grid;
  gap: 1.5rem;
  justify-items: start;
}

.verein__text .vorspann {
  font-size: 1.1875rem;
}

.fakten .ziffern {
  font-weight: 700;
  letter-spacing: 0.01em;
}

/* --------------------------------------------------------------------------
   Seitenkopf, Veranstaltungsübersicht und Archiv
   -------------------------------------------------------------------------- */

.seitenkopf {
  display: grid;
  gap: 1rem;
  padding-block: clamp(2.5rem, 6vw, 4.5rem) clamp(1.75rem, 3vw, 2.5rem);
}

.seitenkopf--allein {
  min-height: 55vh;
  align-content: center;
  justify-items: start;
}

.seitenkopf__titel {
  font-weight: 500;
  font-size: clamp(2.375rem, 1.65rem + 3.2vw, 3.875rem);
  line-height: 1.06;
  letter-spacing: -0.015em;
}

.leer {
  max-width: 46rem;
  font-size: 1.1875rem;
}

.jahre {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
}

.jahre__link {
  padding: 0.3rem 0.75rem;
  border-radius: 99rem;
  background: var(--weiss);
  box-shadow: inset 0 0 0 1px var(--linie);
  font-weight: 700;
  font-size: 1rem;
  text-decoration: none;
  font-variant-numeric: tabular-nums lining-nums;
  transition:
    background-color 0.25s ease,
    color 0.25s ease;
}

.jahre__link:hover {
  background: var(--petrol);
  color: var(--weiss);
}

.jahrgang {
  display: grid;
  grid-template-columns: 7.5rem minmax(0, 1fr);
  gap: 1rem 2rem;
  padding-block: 1.25rem;
}

.jahrgang__jahr {
  position: sticky;
  top: 1.25rem;
  align-self: start;
  font-weight: 500;
  font-size: 2.5rem;
  line-height: 1.1;
  color: var(--petrol-mid);
}

.archiv {
  display: grid;
  max-width: 58rem;
  margin: 0;
  padding: 0;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--weiss);
  box-shadow: var(--schatten);
  list-style: none;
}

.archivzeile {
  box-shadow: 0 1px 0 var(--linie);
}

.archivzeile__link {
  display: grid;
  grid-template-columns: 8.5rem minmax(0, 1fr) auto auto;
  gap: 1rem;
  align-items: center;
  min-height: 4.25rem;
  padding: 0.7rem 1.25rem;
  text-decoration: none;
  transition: background-color 0.25s ease;
}

.archivzeile__link:hover {
  background: var(--grund);
}

.archivzeile__datum {
  color: var(--petrol-mid);
  font-weight: 700;
  font-size: 1.0625rem;
  white-space: nowrap;
}

.archivzeile__titel {
  display: block;
  font-weight: 700;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

.archivzeile__angaben {
  display: block;
  color: var(--petrol-mid);
  font-size: 1rem;
  line-height: 1.35;
}

.archivzeile__pfeil {
  color: var(--petrol-mid);
  opacity: 0.55;
  transition:
    translate 0.45s var(--aus),
    opacity 0.25s ease;
}

.archivzeile__link:hover .archivzeile__pfeil {
  opacity: 1;
  translate: 0.25rem 0;
}


/* --------------------------------------------------------------------------
   Veranstaltungsseite
   -------------------------------------------------------------------------- */

.veranstaltung {
  max-width: calc(var(--breite) + 2 * var(--rand));
  margin-inline: auto;
  padding: 1rem var(--rand) clamp(3.5rem, 7vw, 6rem);
}

.veranstaltung__kopf {
  display: grid;
  gap: 0.9rem;
  padding-block: 0.5rem clamp(1.75rem, 3vw, 2.5rem);
}

.veranstaltung__zeile {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.6rem 0.9rem;
  color: var(--petrol-mid);
  font-weight: 500;
  font-size: 1.25rem;
  line-height: 1.4;
}

.veranstaltung__spalten {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(17rem, 23rem);
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
}

/* Veranstaltungen ohne Text und Bild: die Eckdaten als ein breiter Kasten */
.veranstaltung__spalten--schmal {
  grid-template-columns: minmax(0, 58rem);
}

.veranstaltung__haupt {
  display: grid;
  gap: 2rem;
  min-width: 0;
}

.veranstaltung__titelbild img,
.veranstaltung__ort img {
  width: 100%;
  max-height: 30rem;
  object-fit: cover;
  border-radius: var(--radius);
}

.veranstaltung__ort img {
  aspect-ratio: 16 / 9;
}

/* Querformatige Plakate und Ankündigungen bleiben unbeschnitten */
.veranstaltung__titelbild--ganz img {
  max-height: none;
  object-fit: contain;
}

.veranstaltung__seite {
  display: grid;
  gap: 1.5rem;
}

.ueberblick {
  gap: 1.25rem;
}

.ueberblick__angaben {
  display: grid;
  gap: 1.1rem;
  justify-items: start;
  width: 100%;
}

.ueberblick--breit {
  grid-template-columns: minmax(13rem, 32%) minmax(0, 1fr);
  gap: clamp(1.5rem, 3vw, 2.5rem);
  align-items: center;
}

.ueberblick--breit .datumsfeld {
  align-self: stretch;
  align-content: center;
  padding: 1.75rem 1.6rem;
}

.veranstaltung__plakat--gross {
  max-width: 32rem;
}

.ueberblick .datumsfeld {
  justify-self: stretch;
  padding: 1.25rem 1.4rem 1.15rem;
  border-radius: 0.45rem;
  background: var(--petrol);
}

.veranstaltung__plakat img {
  width: 100%;
  border-radius: var(--radius);
  box-shadow: var(--schatten);
}

.downloads {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.bildreihe {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
  gap: 1rem;
  align-items: start;
  margin: 0;
  padding: 0;
  list-style: none;
}

.bildreihe a {
  display: block;
  overflow: hidden;
  border-radius: var(--radius);
}

.bildreihe img {
  width: 100%;
  transition: scale 1.2s var(--aus);
}

.bildreihe a:hover img {
  scale: 1.03;
}

.rueckblick {
  display: grid;
  gap: 1.25rem;
  padding-top: 2rem;
  border-top: 1px solid var(--linie);
}

/* Nach der Entscheidung: Kalender, Route, Weitersagen */
.hingehen {
  display: grid;
  gap: 0.9rem;
  margin-top: clamp(2.5rem, 5vw, 4rem);
}

.hingehen__zeile {
  color: var(--petrol-mid);
  font-weight: 500;
}

.hingehen__knoepfe {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 0.25rem;
}

.fruehere {
  display: grid;
  gap: 1.25rem;
  margin-top: clamp(2.5rem, 5vw, 4rem);
}

.fruehere .archiv {
  max-width: none;
}

/* Bei vergangenen Terminen steht der Rückblick zuerst, die Ankündigung folgt */
.rueckblick--oben {
  padding-top: 0;
  padding-bottom: 2rem;
  border-top: 0;
  border-bottom: 1px solid var(--linie);
}

.veranstaltung__ankuendigung {
  color: var(--petrol-mid);
  font-weight: 500;
  font-size: 1.375rem;
}

.nachbarn {
  display: flex;
  justify-content: space-between;
  gap: 1.5rem;
  margin-top: clamp(2.5rem, 5vw, 4rem);
  padding-top: 1.5rem;
  border-top: 1px solid var(--linie);
}

.nachbarn__link {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  max-width: 48%;
  padding: 0.4rem 0;
  font-weight: 700;
  line-height: 1.3;
  text-decoration: none;
}

.nachbarn__link--danach {
  margin-left: auto;
  text-align: right;
}

.nachbarn__text {
  display: grid;
  gap: 0.1rem;
}

.nachbarn__rolle {
  color: var(--petrol-mid);
  font-weight: 500;
  font-size: 0.9375rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.nachbarn__link svg {
  flex: none;
  color: var(--schiefer);
  transition: translate 0.45s var(--aus);
}

.nachbarn__link:hover span {
  text-decoration: underline;
  text-decoration-thickness: 0.07em;
}

.nachbarn__link:hover svg {
  translate: -0.3rem 0;
}

.nachbarn__link--danach:hover svg {
  translate: 0.3rem 0;
}

/* --------------------------------------------------------------------------
   Textseiten und Kontakt
   -------------------------------------------------------------------------- */

.textseite {
  padding-bottom: clamp(3.5rem, 7vw, 6rem);
}

.reiter {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.5rem;
}

.reiter__link {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  min-height: 2.75rem;
  padding: 0.45rem 1.1rem;
  border-radius: 99rem;
  background: var(--weiss);
  box-shadow: inset 0 0 0 1px var(--linie);
  font-weight: 700;
  font-size: 1.0625rem;
  text-decoration: none;
  transition:
    background-color 0.25s ease,
    color 0.25s ease;
}

.reiter__link:hover,
.reiter__link[aria-current] {
  background: var(--petrol);
  color: var(--weiss);
}

.textseite__spalten {
  display: grid;
  grid-template-columns: minmax(0, 46rem) minmax(0, 1fr);
  gap: clamp(1.75rem, 4vw, 3.5rem);
  align-items: start;
  max-width: calc(var(--breite) + 2 * var(--rand));
  margin-inline: auto;
  padding-inline: var(--rand);
}

.textseite__blatt {
  display: block;
  padding: clamp(1.5rem, 4.5vw, 3.5rem);
}

.textseite__bild {
  position: sticky;
  top: 1.75rem;
}

.textseite__bild img {
  width: 100%;
}

.fliesstext {
  /* Rund 72 Zeichen je Zeile in Alegreya Sans */
  max-width: 60ch;
  text-wrap: pretty;
  /* Lange Wörter und Adressen dürfen die Spalte nicht sprengen (schmale Bildschirme). */
  overflow-wrap: break-word;
  hyphens: auto;
  hyphenate-limit-chars: 8 4 4;
}

.fliesstext > * + * {
  margin-top: 1em;
}

.fliesstext h2 {
  margin-top: 2em;
  font-size: 1.75rem;
  line-height: 1.2;
}

.fliesstext h3 {
  margin-top: 1.8em;
  font-size: 1.375rem;
  line-height: 1.25;
}

.fliesstext h2 + *,
.fliesstext h3 + * {
  margin-top: 0.5em;
}

.fliesstext > :first-child {
  margin-top: 0;
}

.fliesstext ul,
.fliesstext ol {
  padding-left: 1.3em;
}

.fliesstext li + li {
  margin-top: 0.35em;
}

.fliesstext li::marker {
  color: var(--petrol-mid);
  font-weight: 700;
}

.fliesstext a {
  color: var(--schiefer);
  transition: color 0.25s ease;
}

.fliesstext a:hover {
  color: var(--petrol);
}

.fliesstext strong {
  font-weight: 700;
}

.bildnachweis {
  margin-top: 2.25em;
}

.bildnachweis > div {
  margin-top: 1.25em;
}

.kontakt {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr));
  gap: 1.5rem;
  align-items: stretch;
}

.kontakt .knopf {
  max-width: 100%;
  overflow-wrap: anywhere;
}

/* --------------------------------------------------------------------------
   Fuß
   -------------------------------------------------------------------------- */

.fuss {
  background: var(--petrol);
  color: var(--weiss);
}

.fuss ::selection {
  background: var(--sand);
  color: var(--petrol);
}

.fuss :focus-visible {
  outline-color: var(--weiss);
}

.fuss__innen {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr));
  gap: 2.5rem clamp(1.5rem, 4vw, 4rem);
  max-width: calc(var(--breite) + 2 * var(--rand));
  margin-inline: auto;
  padding: clamp(3rem, 6vw, 5rem) var(--rand) clamp(2.5rem, 5vw, 3.5rem);
}

.fuss__marke img {
  width: 12.5rem;
}

.fuss__leitsatz {
  margin-top: 1.5rem;
  font-family: var(--schrift-titel);
  font-weight: 500;
  font-size: 1.5rem;
  line-height: 1.25;
  color: var(--sand);
}

.fuss__spalte {
  display: grid;
  align-content: start;
  gap: 0.75rem;
  font-size: 1.0625rem;
  line-height: 1.55;
}

.fuss__titel {
  font-size: 1.25rem;
  color: var(--sand);
}

.fuss__liste,
.fuss__recht {
  display: grid;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.fuss__link {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  padding-block: 0.15rem;
  text-decoration-color: rgb(255 255 255 / 0.4);
  transition: text-decoration-color 0.25s ease;
}

.fuss__link:hover {
  text-decoration-color: var(--weiss);
}

.fuss__leiste {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.75rem 2rem;
  width: min(var(--breite), 100% - 2 * var(--rand));
  margin-inline: auto;
  padding-block: 1.25rem 1.75rem;
  border-top: 1px solid rgb(255 255 255 / 0.16);
  font-size: 1rem;
}

.fuss__recht {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.75rem;
}

/* Zeile der Agentur unter dem Fuß: weißer Streifen, Herz in der Farbe der Agentur, pulsiert beim Überfahren */
.fuss__macher {
  padding: 0.25rem var(--rand);
  background: var(--weiss);
  color: var(--petrol);
  font-size: 1rem;
  text-align: center;
}

.fuss__macher :focus-visible {
  outline-color: var(--schiefer);
}

.fuss__sakea {
  gap: 0.4rem;
  min-height: 2.75rem;
  text-decoration: none;
}

.fuss__sakea:hover span {
  text-decoration: underline;
  text-decoration-color: currentColor;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.2em;
}

.fuss__herz {
  width: 1.25rem;
  height: auto;
  color: var(--sakea-gelb);
  transform-origin: center;
}

.fuss__sakea:hover .fuss__herz,
.fuss__sakea:focus-visible .fuss__herz {
  animation: herzschlag 0.8s ease-in-out;
}

@keyframes herzschlag {
  0%,
  100% {
    transform: scale(1);
  }

  20% {
    transform: scale(1.3);
  }

  40% {
    transform: scale(1);
  }

  60% {
    transform: scale(1.25);
  }
}

/* --------------------------------------------------------------------------
   Kleinere Bildschirme
   -------------------------------------------------------------------------- */

@media (max-width: 63.99rem) {
  .bildkaesten {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* Zwei Kästen pro Reihe: der dritte entfällt, statt eine Reihe halb leer zu lassen */
  .bildkaesten > :nth-child(n + 3) {
    display: none;
  }

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

  .textseite__spalten {
    grid-template-columns: minmax(0, 1fr);
  }

  .textseite__bild {
    position: static;
    order: -1;
    max-width: 34rem;
  }
}

@media (max-width: 55.99rem) {
  .ort,
  .verein,
  .veranstaltung__spalten {
    grid-template-columns: minmax(0, 1fr);
  }

  .ort__bild {
    order: -1;
  }

  .veranstaltung__seite {
    order: -1;
  }

  .veranstaltung__plakat {
    max-width: 24rem;
  }

  .jahrgang {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.75rem;
  }

  .jahrgang__jahr {
    position: static;
    font-size: 2rem;
  }
}

@media (max-width: 39.99rem) {
  body {
    font-size: 1.125rem;
  }

  /* Flacher als am Desktop: Datum und Titel des nächsten Termins sollen ohne Wischen zu sehen sein */
  .buehne {
    height: clamp(21rem, 52svh, 30rem);
  }

  .buehne__inhalt {
    gap: 0.75rem;
    padding: 2.75rem var(--rand) 6.75rem;
  }

  .termine {
    margin-top: -5.5rem;
  }

  .termine__titel {
    font-size: 1.375rem;
  }

  .bildkaesten {
    grid-template-columns: minmax(0, 1fr);
  }

  .terminzeile__link {
    grid-template-columns: 5.5rem minmax(0, 1fr) auto;
    gap: 1rem;
    align-items: start;
    min-height: 0;
    padding: 1rem 1.1rem;
  }

  .terminzeile__pfeil {
    align-self: center;
  }

  /* Monat kurz, die lange Form bleibt für Vorleseprogramme da */
  .terminzeile__monat-kurz {
    display: inline;
  }

  .terminzeile__monat-lang {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  .terminzeile__tage {
    font-size: 1.875rem;
  }

  .terminzeile__datum[data-spanne] .terminzeile__tage {
    font-size: 1.375rem;
    line-height: 1.35;
  }

  .terminzeile__monat {
    font-size: 0.9375rem;
  }

  .terminzeile__titel {
    font-size: 1.3125rem;
  }

  .terminzeile__bild {
    display: none;
  }

  .bildkaesten > :nth-child(n + 3) {
    display: flex;
  }

  .termin__tage {
    font-size: 2.25rem;
  }

  .termin__monat {
    font-size: 1.25rem;
  }

  .bildwechsel__unterschrift {
    display: none;
  }

  .ueberblick--breit {
    grid-template-columns: minmax(0, 1fr);
  }

  /* Tippziele: Links im Fuß, Sprungmarken und Rückwege mindestens 44 px hoch */
  .fuss__link,
  .zurueck,
  .nachbarn__link {
    min-height: 2.75rem;
  }

  .fuss__liste {
    gap: 0;
  }

  .jahre__link,
  .kontakt__kasten .textlink {
    display: inline-flex;
    align-items: center;
    min-height: 2.75rem;
  }

  .seitenkopf__titel {
    overflow-wrap: break-word;
    hyphens: auto;
  }

  .archivzeile__link {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.15rem 0.75rem;
    padding: 0.8rem 1rem;
  }

  .archivzeile__datum {
    grid-column: 1 / -1;
    font-size: 1rem;
  }

  .archivzeile__pfeil {
    display: none;
  }

  .chronik__zeile {
    grid-template-columns: 6.5rem minmax(0, 1fr);
  }

  .fuss__innen {
    grid-template-columns: minmax(0, 1fr);
  }

  .nachbarn {
    flex-direction: column;
  }

  .nachbarn__link {
    max-width: none;
  }

  .nachbarn__link--danach {
    margin-left: 0;
    flex-direction: row-reverse;
    justify-content: flex-end;
    text-align: left;
  }
}

/* --------------------------------------------------------------------------
   Bewegung beim Laden: Leitsatz und Terminkästen kommen ruhig herein.
   Alles Weitere steuert GSAP (components/Bewegung.tsx).
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }

  /* Die beiden Zeilen des Leitsatzes steigen nacheinander aus einer Maske */
  .leitsatz .satz {
    animation: zeile-auf 1.3s var(--aus) 0.15s both;
  }

  .leitsatz .satz + .satz {
    animation-delay: 0.34s;
  }

  .buehne__gruss {
    animation: herein 1.1s var(--aus) 0.5s both;
  }

  /* Der nächste Termin ist die wichtigste Auskunft der Seite: Er kommt früh und zügig. */
  .termine__kopf {
    animation: herein 0.9s var(--aus) 0.2s both;
  }

  .termine .termin,
  .termine .termine__leer {
    animation: herauf 0.9s var(--aus) 0.25s both;
  }

  /* Das Bild im Kasten kommt aus leichter Vergrößerung zur Ruhe */
  .termine .termin__bild img {
    animation: bild-ruhe 1.9s var(--aus) 0.25s both;
  }

  /* Unterseiten: Titel aus der Maske, der Rest folgt */
  .seitenkopf__titel {
    animation: zeile-auf 1.2s var(--aus) 0.05s both;
  }

  .seitenkopf > :not(.seitenkopf__titel),
  .veranstaltung__zeile {
    animation: herein 1.1s var(--aus) 0.3s both;
  }
}

@keyframes zeile-auf {
  from {
    opacity: 0;
    clip-path: inset(0 0 100% 0);
    transform: translateY(0.55em);
  }

  to {
    clip-path: inset(-0.3em -0.3em -0.4em -0.3em);
  }
}

@keyframes herein {
  from {
    opacity: 0;
    transform: translateY(1.25rem);
  }
}

@keyframes herauf {
  from {
    opacity: 0;
    transform: translateY(2.75rem);
  }
}

@keyframes bild-ruhe {
  from {
    transform: scale(1.14);
  }
}

/* „Bewegung reduzieren“: nichts fährt, zoomt oder gleitet; Inhalte blenden nur noch weich ein */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }

  .leitsatz .satz,
  .buehne__gruss,
  .termine__kopf,
  .termine .termin,
  .termine .termine__leer,
  .seitenkopf__titel,
  .seitenkopf > :not(.seitenkopf__titel),
  .veranstaltung__zeile {
    animation: nur-einblenden 0.9s ease both !important;
  }

  .buehne__gruss,
  .seitenkopf > :not(.seitenkopf__titel),
  .veranstaltung__zeile {
    animation-delay: 0.25s !important;
  }

  .termine__kopf,
  .termine .termin,
  .termine .termine__leer {
    animation-delay: 0.15s !important;
  }
}

@keyframes nur-einblenden {
  from {
    opacity: 0;
  }
}

/* --------------------------------------------------------------------------
   Druck: alles zeigen, auch was am Bildschirm erst beim Scrollen einblendet
   -------------------------------------------------------------------------- */

@media print {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }

  [data-bewegung],
  [data-bewegung] *,
  .abschnitt__titel,
  .buehne__inhalt {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    clip-path: none !important;
  }

  .sprung,
  .menue,
  .bildwechsel__leiste,
  .vorschauhinweis,
  .kopieren,
  .nachbarn {
    display: none !important;
  }

  .kasten,
  .termin__innen,
  .terminliste,
  .archiv {
    box-shadow: none;
    outline: 1px solid var(--linie);
  }

  .terminzeile,
  .archivzeile,
  .bildkasten,
  .termin {
    break-inside: avoid;
  }
}
