/* Öffentliche Website – Vereinsfarbe Orange RGB 245/125/50 wie auf der bisherigen Seite */
:root {
  --orange: #f57d32;
  --orange-dunkel: #b4501a;
  --orange-hell: #fef0e7;
  --text: #222;
  --gedaempft: #5f6670;
  --rand: #e7e2dd;
  --flaeche: #fff;
  --hintergrund: #faf8f6;
}

* { box-sizing: border-box; }
body { margin: 0; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color: var(--text); background: var(--hintergrund); line-height: 1.6; }
a { color: var(--orange-dunkel); }
img { max-width: 100%; }

/* Kopf */
.w-kopf { background: var(--orange); color: #fff; }
.w-kopf-innen { max-width: 1150px; margin: 0 auto; padding: 0.8rem 1rem; display: flex; align-items: center; gap: 1rem; }
.w-marke { display: flex; align-items: center; gap: 1rem; color: #fff; text-decoration: none; flex: 1; }
.w-marke img { height: 84px; width: auto; filter: drop-shadow(0 1px 2px rgba(0,0,0,.25)); }
.w-marke strong { display: block; font-size: 2rem; font-weight: 500; line-height: 1.1; }
.w-marke em { display: block; font-style: normal; font-size: 1.1rem; opacity: .95; }
.w-anmelden { color: #fff; text-decoration: none; border: 1px solid rgba(255,255,255,.7); border-radius: 999px; padding: 0.3rem 0.9rem; font-size: 0.9rem; }
.w-anmelden:hover { background: rgba(255,255,255,.15); }
.w-menue-knopf { display: none; cursor: pointer; font-weight: 600; }

.w-nav { max-width: 1150px; margin: 0 auto; padding: 0 1rem; display: flex; flex-wrap: wrap; border-top: 1px solid rgba(255,255,255,.35); }
.w-nav a { color: #fff; text-decoration: none; text-transform: uppercase; letter-spacing: .03em; font-size: 0.92rem; padding: 0.65rem 0.9rem; display: block; }
.w-nav > a:hover, .w-untermenue > a:hover, .w-nav a.aktiv { background: rgba(0,0,0,.12); }
.w-untermenue { position: relative; }
.w-liste { display: none; position: absolute; top: 100%; left: 0; z-index: 10; min-width: 220px; background: #fff; box-shadow: 0 6px 18px rgba(0,0,0,.15); border-top: 3px solid var(--orange-dunkel); }
.w-liste a { color: var(--text); text-transform: none; letter-spacing: 0; padding: 0.45rem 1rem; }
.w-liste a:hover { background: var(--orange-hell); color: var(--orange-dunkel); }
.w-untermenue:hover .w-liste, .w-untermenue:focus-within .w-liste { display: block; }

/* Inhalt */
.w-inhalt { max-width: 1150px; margin: 0 auto; padding: 2rem 1rem 3rem; }
.w-titel { color: var(--orange-dunkel); font-weight: 600; margin: 0 0 1.25rem; }
h2 { color: var(--orange-dunkel); font-size: 1.25rem; }
.w-pfad { font-size: 0.9rem; color: var(--gedaempft); margin: 0 0 0.5rem; }
.w-karte { background: var(--flaeche); border: 1px solid var(--rand); border-radius: 8px; padding: 1.25rem 1.5rem; margin-bottom: 1.25rem; }
.w-karte h2:first-child, .w-karte h1:first-child { margin-top: 0; }
.w-mitte { max-width: 640px; margin: 2rem auto; text-align: center; }
.w-spalten { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.25rem; align-items: start; }
.w-spalten.breit-schmal { grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr); }
.w-text { max-width: 820px; }
.w-hinweis { background: var(--orange-hell); border-left: 4px solid var(--orange); padding: 0.5rem 0.75rem; }
.w-meldung { background: #e7f5ec; border: 1px solid #b7e1c4; padding: 0.6rem 0.9rem; border-radius: 6px; }
.w-meldung.fehler { background: #fdecea; border-color: #f4b4ad; }

.w-buehne { display: flex; align-items: center; justify-content: space-between; gap: 2rem; background: linear-gradient(120deg, var(--orange) 0%, #f9a46d 100%);
  color: #fff; border-radius: 12px; padding: 2.5rem 2.5rem; margin-bottom: 2rem; }
.w-buehne h1 { margin: 0; font-size: 2.3rem; font-weight: 600; }
.w-buehne .w-slogan { font-size: 1.4rem; margin: 0.25rem 0 0.75rem; }
.w-buehne-wappen { height: 180px; width: auto; filter: drop-shadow(0 4px 10px rgba(0,0,0,.25)); }
.w-knoepfe { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.25rem; }

.w-knopf { display: inline-block; background: var(--orange-dunkel); color: #fff; border: 0; border-radius: 6px; padding: 0.65rem 1.3rem; font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; }
.w-knopf:hover { background: #8c3e14; color: #fff; }
.w-knopf-hell { background: #fff; color: var(--orange-dunkel); border: 1px solid var(--orange-dunkel); }
.w-knopf-hell:hover { background: var(--orange-hell); color: var(--orange-dunkel); }
.w-buehne .w-knopf { background: #fff; color: var(--orange-dunkel); }
.w-buehne .w-knopf-hell { background: transparent; color: #fff; border-color: #fff; }

.w-kacheln { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 0.75rem; margin-bottom: 2rem; }
.w-kachel { background: #fff; border: 1px solid var(--rand); border-left: 4px solid var(--orange); border-radius: 6px; padding: 0.9rem 1rem; color: var(--text); text-decoration: none; font-weight: 600; }
.w-kachel:hover { background: var(--orange-hell); color: var(--orange-dunkel); }

.w-tabelle { width: 100%; border-collapse: collapse; }
.w-tabelle td { padding: 0.45rem 0; border-bottom: 1px solid var(--rand); vertical-align: top; }
.w-tabelle .zahl { text-align: right; white-space: nowrap; font-weight: 600; }

/* Bilder: Startseiten-Bühne, Kacheln, Titelbilder, Galerien */
.w-buehne-bilder { position: relative; height: clamp(320px, 52vw, 520px); border-radius: 12px; overflow: hidden; margin-bottom: 2rem; background: #333; }
.w-folie { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transition: opacity 1.2s ease; display: flex; align-items: flex-end; }
.w-folie.aktiv { opacity: 1; z-index: 1; }
.w-folie-text { width: 100%; padding: 2.5rem 2.5rem 3.2rem; color: #fff; background: linear-gradient(0deg, rgba(0,0,0,.65) 0%, rgba(0,0,0,.25) 60%, rgba(0,0,0,0) 100%); }
.w-folie-text h1 { margin: 0; font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 600; text-shadow: 0 2px 8px rgba(0,0,0,.4); }
.w-folie-text p { margin: 0.3rem 0 1rem; font-size: 1.25rem; text-shadow: 0 1px 6px rgba(0,0,0,.4); }
.w-folie-text .w-knopf { background: var(--orange); }
.w-folie-text .w-knopf:hover { background: var(--orange-dunkel); }
.w-punkte { position: absolute; z-index: 2; bottom: 1rem; right: 1.5rem; display: flex; gap: 0.5rem; }
.w-punkte button { width: 12px; height: 12px; border-radius: 50%; border: 2px solid #fff; background: transparent; cursor: pointer; padding: 0; }
.w-punkte button.aktiv { background: #fff; }

.w-bildkacheln { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.w-bildkachel { display: flex; flex-direction: column; border-radius: 8px; overflow: hidden; background: var(--orange); text-decoration: none; box-shadow: 0 2px 6px rgba(0,0,0,.08); transition: box-shadow .2s; }
.w-bildkachel:hover { box-shadow: 0 6px 16px rgba(0,0,0,.16); }
.w-kachelbild { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: #eee; }
.w-bildkachel img, .w-ohne-bild { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s ease; }
.w-ohne-bild { background: linear-gradient(135deg, var(--orange), #f9a46d); }
.w-bildkachel:hover img { transform: scale(1.06); }
/* Name unter dem Bild: oranger Kasten, weiße Schrift, immer eine Zeile */
.w-kachelname { display: block; padding: 0.6rem 0.9rem; background: var(--orange); color: #fff; font-weight: 700; font-size: 1.1rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: background .2s; }
.w-bildkachel:hover .w-kachelname { background: var(--orange-dunkel); }
.w-karte-farbig { background: var(--orange-hell); border-color: #f8c9a8; }

.w-titelbild { height: clamp(200px, 30vw, 340px); border-radius: 12px; background-size: cover; background-position: center; display: flex; align-items: flex-end; margin-bottom: 1.5rem; overflow: hidden; }
.w-titelbild h1 { margin: 0; width: 100%; padding: 1.5rem 2rem; color: #fff; font-size: clamp(1.8rem, 4vw, 2.6rem); background: linear-gradient(0deg, rgba(0,0,0,.6), rgba(0,0,0,0)); }

.w-galerie { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; margin: 1rem 0 2rem; }
.w-galerie figure { margin: 0; background: #fff; border: 1px solid var(--rand); border-radius: 8px; overflow: hidden; }
.w-galerie img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; transition: opacity .2s; }
.w-galerie a:hover img { opacity: .85; }
.w-galerie figcaption { padding: 0.5rem 0.8rem; font-weight: 600; color: var(--orange-dunkel); }

/* Trainingsgruppen */
.w-gruppen { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
.w-gruppe { background: #fff; border: 1px solid var(--rand); border-top: 4px solid var(--orange); border-radius: 8px; overflow: hidden; }
.w-gruppe img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.w-gruppe > div { padding: 0.8rem 1.1rem 1rem; }
.w-gruppe h3 { margin: 0 0 0.3rem; color: var(--orange-dunkel); font-size: 1.05rem; }
.w-trainer { margin: 0 0 0.4rem; color: var(--gedaempft); font-size: 0.92rem; }
.w-zeiten { margin: 0 0 0.5rem; padding: 0; list-style: none; }
.w-zeiten li { padding: 0.3rem 0; border-bottom: 1px dashed var(--rand); }
.w-zeiten li:last-child { border-bottom: 0; }
.w-zeiten span { color: var(--gedaempft); }
.w-gruppe-aktuell { background: #fdecea; border-left: 4px solid #d9534f; padding: 0.35rem 0.6rem; margin: 0 0 0.5rem; font-size: 0.92rem; }
.w-gruppe-hinweis { font-size: 0.92rem; background: var(--orange-hell); padding: 0.1rem 0.7rem; border-radius: 6px; margin-bottom: 0.5rem; }
.w-gruppe-hinweis p { margin: 0.4rem 0; }

/* Formulare */
.w-formular fieldset { border: 1px solid var(--rand); border-radius: 8px; background: #fff; padding: 0.75rem 1.5rem 1.25rem; margin: 0 0 1.25rem; }
.w-formular legend { color: var(--orange-dunkel); font-weight: 700; padding: 0 0.4rem; }
.w-raster { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 0 1.25rem; }
.w-feld { margin-top: 0.75rem; }
.w-feld label { display: block; font-weight: 600; margin-bottom: 0.2rem; }
.w-feld input:not([type=checkbox]), .w-feld select, .w-feld textarea { width: 100%; padding: 0.5rem 0.6rem; border: 1px solid #cfc8c1; border-radius: 6px; font: inherit; background: #fff; }
.w-feld input:focus, .w-feld select:focus, .w-feld textarea:focus { outline: 2px solid var(--orange); border-color: var(--orange); }
.w-feld small { color: var(--gedaempft); }
.w-feld.fehler input, .w-feld.fehler select { border-color: #b42318; }
.w-feld .errorlist, .w-formular .errorlist { color: #b42318; margin: 0.2rem 0 0; padding-left: 1.1rem; }
.w-haken { display: flex !important; gap: 0.6rem; align-items: flex-start; font-weight: normal !important; }
.w-haken input { margin-top: 0.35rem; accent-color: var(--orange-dunkel); }
.w-auswahl ul, .w-auswahl > div > div { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 0.15rem 1rem; }
.w-auswahl label { font-weight: normal !important; display: flex; gap: 0.4rem; align-items: center; }
.w-auswahl input { accent-color: var(--orange-dunkel); }
.w-familie { border-top: 1px dashed var(--rand); padding-top: 0.5rem; margin-bottom: 0.75rem; }
.w-mandat { background: var(--hintergrund); border-left: 4px solid var(--orange); padding: 0.6rem 0.9rem; font-size: 0.92rem; }
.w-falle { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

/* Fuß */
.w-fuss { background: #3a3633; color: #eee; }
.w-fuss-innen { max-width: 1150px; margin: 0 auto; padding: 1.5rem 1rem; display: flex; flex-wrap: wrap; gap: 1.5rem 3rem; justify-content: space-between; }
.w-fuss a { color: #ffd2b5; }
.w-fuss-links { display: flex; gap: 1.25rem; align-items: flex-start; }

@media (max-width: 800px) {
  .w-marke img { height: 56px; }
  .w-marke strong { font-size: 1.35rem; }
  .w-marke em { font-size: 0.95rem; }
  .w-anmelden { display: none; }
  .w-menue-knopf { display: inline-block; }
  .w-nav { display: none; flex-direction: column; }
  #w-menue-schalter:checked + .w-nav { display: flex; }
  .w-liste { position: static; box-shadow: none; display: block; background: transparent; border: 0; padding-left: 1rem; }
  .w-liste a { color: #fff; }
  .w-buehne { flex-direction: column-reverse; text-align: center; padding: 1.75rem 1.25rem; }
  .w-buehne-wappen { height: 120px; }
  .w-knoepfe { justify-content: center; }
  .w-spalten.breit-schmal { grid-template-columns: 1fr; }
  .w-folie-text { padding: 1.5rem 1.25rem 2.5rem; }
  .w-bildkacheln { grid-template-columns: repeat(2, 1fr); gap: 0.6rem; }
}

/* Bausteine */
.w-baustein { margin-bottom: 1.75rem; }
.w-baustein > :first-child { margin-top: 0; }
.w-baustein.w-versteckt { opacity: 0.4; outline: 2px dashed var(--gedaempft); outline-offset: 4px; }
.w-einzelbild { margin: 0 auto; max-width: 820px; }
.w-einzelbild.voll { max-width: none; }
.w-einzelbild img { width: 100%; display: block; border-radius: 8px; }
.w-einzelbild figcaption { font-size: 0.9rem; color: var(--gedaempft); padding-top: 0.35rem; text-align: center; }
.w-bildtext { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2rem; align-items: center; }
.w-bildtext img { width: 100%; border-radius: 8px; display: block; }
.w-bildtext.bild-rechts img { order: 2; }
.w-bildtext h2 { margin-top: 0; }
.w-aufruf { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; background: var(--orange-hell); border: 1px solid #f8c9a8; border-radius: 12px; padding: 1.5rem 2rem; }
.w-aufruf h2 { margin: 0 0 0.25rem; }
.w-aufruf p { margin: 0.25rem 0; }
.w-knopf-zeile.mitte { text-align: center; }
.w-spaltenbild { width: calc(100% + 3rem); margin: -1.25rem -1.5rem 1rem; aspect-ratio: 16 / 9; object-fit: cover; display: block; border-radius: 8px 8px 0 0; }
@media (max-width: 800px) {
  .w-bildtext { grid-template-columns: 1fr; gap: 1rem; }
  .w-bildtext.bild-rechts img { order: 0; }
  .w-aufruf { padding: 1.25rem; }
}

/* Aktuelles und Termine */
.w-kopfzeile { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; flex-wrap: wrap; }
.w-kopfzeile .w-titel { margin-bottom: 0.75rem; }
.w-beitraege { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 1.25rem; margin-bottom: 1.5rem; }
.w-beitrag { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--rand); border-radius: 8px; overflow: hidden; text-decoration: none; color: var(--text); transition: box-shadow .15s; }
.w-beitrag:hover { box-shadow: 0 4px 14px rgba(0,0,0,.1); }
.w-beitrag img, .w-beitrag .w-ohne-bild { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.w-beitrag-text { display: flex; flex-direction: column; gap: 0.3rem; padding: 0.9rem 1.1rem 1.1rem; }
.w-beitrag-text small { color: var(--gedaempft); line-height: 1.4; height: 1.4em; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
/* gleiche Kachelhöhe: Überschrift immer 2 Zeilen, Anreißer immer 3 Zeilen (Überlänge endet mit „…“) */
.w-beitrag-text strong { color: var(--orange-dunkel); font-size: 1.08rem; line-height: 1.35; height: 2.7em;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.w-beitrag-text span { font-size: 0.95rem; line-height: 1.5; height: 4.5em;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; }
.w-termine { display: flex; flex-direction: column; gap: 0.6rem; margin-bottom: 1.5rem; }
.w-termin { display: flex; gap: 1rem; align-items: center; background: #fff; border: 1px solid var(--rand); border-radius: 8px; padding: 0.6rem 0.9rem; text-decoration: none; color: var(--text); }
.w-termin:hover { border-color: var(--orange); background: var(--orange-hell); }
.w-termin.vorbei { opacity: 0.7; }
.w-termin-datum { flex: 0 0 3.6rem; text-align: center; background: var(--orange); color: #fff; border-radius: 6px; padding: 0.25rem 0; font-size: 0.8rem; text-transform: uppercase; line-height: 1.2; }
.w-termin-datum strong { display: block; font-size: 1.45rem; }
.w-termin-info { display: flex; flex-direction: column; min-width: 0; }
.w-termin-info strong { color: var(--orange-dunkel); }
.w-termin-info small { color: var(--gedaempft); }
.w-artikel { max-width: 820px; }
.w-datum { color: var(--gedaempft); margin-top: -0.75rem; }
.w-artikelbild { width: 100%; border-radius: 8px; display: block; margin: 0.5rem 0 1.25rem; }
.w-anreisser { font-size: 1.12rem; font-weight: 600; }
.w-termin-daten { margin-bottom: 1.25rem; }
.w-termin-daten td:first-child { width: 7rem; color: var(--gedaempft); }
.w-reiter { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.w-reiter a { padding: 0.35rem 0.9rem; border: 1px solid var(--rand); border-radius: 999px; text-decoration: none; background: #fff; }
.w-reiter a.aktiv { background: var(--orange-dunkel); border-color: var(--orange-dunkel); color: #fff; }
.w-blaettern { display: flex; gap: 1rem; justify-content: center; align-items: center; margin: 1rem 0 2rem; }

/* Kursplan (Wochenplan) */
.w-kursplan { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 0.6rem; align-items: start; margin-bottom: 0.5rem; }
.w-kurstag { background: var(--orange-hell); border-radius: 8px; padding: 0 0 0.4rem; overflow: hidden; }
.w-kurstag h3 { margin: 0 0 0.4rem; padding: 0.45rem 0.6rem; background: var(--orange-dunkel); color: #fff; font-size: 1.05rem; text-align: center; }
.w-kurs { display: flex; flex-direction: column; margin: 0 0.4rem 0.4rem; background: #fff; border: 1px solid #f3c7a8; border-radius: 6px; overflow: hidden; text-decoration: none; color: var(--text); text-align: center; }
a.w-kurs:hover { border-color: var(--orange); box-shadow: 0 2px 8px rgba(0,0,0,.1); }
/* gleich große Kästen: Überschrift immer 2 Zeilen, Uhrzeit 1, Ort 1, Hinweis 1 (Überlänge mit „…“, voller Text im Tooltip) */
.w-kurs-titel { background: var(--orange); color: #fff; font-weight: 600; font-size: 0.85rem; line-height: 1.3; padding: 0.25rem 0.4rem;
  height: calc(2.6em + 0.5rem); box-sizing: border-box; display: flex; align-items: center; justify-content: center; }
.w-kurs-titel > span { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
.w-kurs-zeit { display: block; font-weight: 700; font-size: 0.88rem; line-height: 1.35; height: 1.35em; padding-top: 0.3rem; box-sizing: content-box; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.w-kurs-ort { display: block; font-size: 0.78rem; line-height: 1.35; height: 1.35em; padding: 0 0.4rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.w-kurs-zusatz { display: block; font-size: 0.72rem; line-height: 1.3; height: 1.3em; margin: 0.1rem 0.4rem 0.3rem; color: var(--gedaempft);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.w-kurs-leer { text-align: center; color: var(--gedaempft); margin: 0.5rem 0; }
.w-kursplan-stand { text-align: right; color: var(--gedaempft); font-size: 0.85rem; margin: 0 0 2rem; }
.w-wochenende { display: flex; flex-direction: column; gap: 0.6rem; }
.w-wochenende:empty { display: none; }
@media (min-width: 1000px) {
  .w-kursplan { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
/* Druckrahmen: auf dem Bildschirm unsichtbar, beim Drucken wiederholt sich der Kopf auf jeder Seite */
.w-druckrahmen, .w-druckrahmen > tbody, .w-druckrahmen > tbody > tr, .w-druckrahmen > tbody > tr > td { display: block; }
.w-druckrahmen > thead { display: none; }
.w-druckrahmen { width: 100%; border-collapse: collapse; }
.w-druckrahmen td { padding: 0; }
.w-druckkopf { display: flex; align-items: center; gap: 4mm; padding-bottom: 2.5mm; margin-bottom: 3mm; border-bottom: 1.2mm solid var(--orange); }
.w-druckkopf img { height: 16mm; width: auto; }
.w-druckkopf strong { display: block; font-size: 15pt; color: var(--orange-dunkel); }
.w-druckkopf em { display: block; font-style: normal; font-size: 9pt; color: var(--gedaempft); }
.w-druckkopf-titel { margin-left: auto; text-align: right; }
.w-druckkopf-titel span { display: block; font-size: 9pt; color: var(--gedaempft); }

@media print {
  .w-kopf, .w-fuss, .w-pfad, .w-nicht-drucken, .w-meldung { display: none !important; }
  body { background: #fff; }
  .w-inhalt { max-width: none; padding: 0; margin: 0; }
  /* „Kursplan drucken“: alles außer dem Kursplan ausblenden */
  body.drucke-kursplan :is(.w-inhalt, .w-baustein) > :not(.w-kursplan-bereich):not(:has(.w-kursplan-bereich)) { display: none !important; }
  .w-kursplan-bereich .w-druckrahmen { display: table; }
  .w-kursplan-bereich .w-druckrahmen > thead { display: table-header-group; }
  .w-kursplan-bereich .w-druckrahmen > tbody { display: table-row-group; }
  .w-kursplan-bereich .w-druckrahmen > * > tr { display: table-row; }
  .w-kursplan-bereich .w-druckrahmen > * > tr > td { display: table-cell; }
  .w-kursplan-stand { display: none; }
  /* Wochentage stehen im Druckkopf und wiederholen sich so auf jeder Seite */
  .w-kurstag h3.im-druckkopf { display: none; }
  .w-druck-tage { margin-bottom: 1.5mm; align-items: stretch; }
  .w-druck-tage h3 { margin: 0; padding: 1mm; background: var(--orange-dunkel); color: #fff; font-size: 9.5pt; text-align: center;
    border-radius: 1.5mm 1.5mm 0 0; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .w-kurstag { padding-top: 1mm; border-radius: 0 0 1.5mm 1.5mm; }
  /* kompakte Kästen für den Druck */
  .w-kursplan { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 1.5mm; }
  .w-wochenende { gap: 1.5mm; }
  .w-kurstag { padding-bottom: 1mm; border-radius: 1.5mm; }
  .w-kurstag h3 { font-size: 9.5pt; padding: 1mm; margin-bottom: 1mm; }
  .w-kurs { margin: 0 1mm 1mm; border-radius: 1mm; }
  .w-kurs-titel { font-size: 7pt; line-height: 1.2; padding: 0.6mm 1mm; height: calc(2.4em + 1.2mm); }
  .w-kurs-zeit { font-size: 7.5pt; padding-top: 0.6mm; }
  .w-kurs-ort { font-size: 6.5pt; }
  .w-kurs-zusatz { font-size: 6pt; margin: 0 1mm 0.6mm; }
  .w-kurstag, .w-kurs-titel, .w-kurstag h3, .w-druckkopf { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .w-kurs { break-inside: avoid; }
  @page { size: A4 landscape; margin: 10mm; }
}


/* Fließtext im Blocksatz mit Silbentrennung (lang="de"); Elemente mit eigener Klasse behalten ihre Ausrichtung */
.w-inhalt p:not([class]), .w-inhalt li:not([class]) { text-align: justify; hyphens: auto; -webkit-hyphens: auto; }

/* Kopfbereich (Logo und Hauptmenü) bleibt beim Scrollen stehen */
.w-kopf { position: sticky; top: 0; z-index: 100; box-shadow: 0 2px 8px rgba(0,0,0,.12); }
html { scroll-padding-top: 8.5rem; }
@media (max-width: 800px) {
  html { scroll-padding-top: 4.5rem; }
  /* aufgeklapptes Menü auf kleinen Bildschirmen scrollbar halten */
  #w-menue-schalter:checked ~ .w-nav { max-height: calc(100vh - 4rem); overflow-y: auto; }
}

/* ---------------------------------------------------------------- Ansprechpartner */
.w-ansprechpartner { margin: 2rem 0; }
.w-ansprechpartner h3 { margin: 1.4rem 0 .6rem; }
.w-personen { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; }
.w-person { display: flex; gap: .9rem; align-items: flex-start; background: var(--flaeche); border: 1px solid var(--rand); border-radius: 8px; padding: .9rem; }
.w-person img, .w-person-ohne { width: 84px; height: 84px; border-radius: 50%; object-fit: cover; flex: none; }
.w-person-ohne { display: flex; align-items: center; justify-content: center; background: var(--orange); color: #fff; font-weight: 700; font-size: 1.4rem; }
.w-person div { display: flex; flex-direction: column; gap: .15rem; min-width: 0; text-align: left; }
.w-person a { overflow-wrap: anywhere; }
.w-person-rolle { color: var(--gedaempft); text-transform: uppercase; letter-spacing: .03em; font-size: .75rem; }

/* ---------------------------------------------------------------- Dateien, Sponsoren, Sportstätten */
.w-dateien { list-style: none; padding: 0; }
.w-inhalt .w-dateien li { text-align: left; padding: .5rem 0; border-bottom: 1px solid var(--rand); display: flex; justify-content: space-between; gap: 1rem; }
.w-dateien a::before { content: "📄 "; }
.w-sponsoren { margin: 2rem 0; text-align: center; }
.w-logos { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 1.2rem 2rem; margin: .8rem 0 1.6rem; }
.w-logos a, .w-logos span { display: flex; align-items: center; justify-content: center; background: #fff; border-radius: 6px; padding: .5rem; }
.w-logos img { max-width: 100%; max-height: 100%; object-fit: contain; transition: transform .2s; }
.w-logos a:hover img { transform: scale(1.04); }
.w-logos.stufe-1 a, .w-logos.stufe-1 span { width: 280px; height: 150px; }
.w-logos.stufe-2 a, .w-logos.stufe-2 span { width: 210px; height: 115px; }
.w-logos.stufe-3 a, .w-logos.stufe-3 span, .w-logos.stufe-0 a, .w-logos.stufe-0 span { width: 160px; height: 90px; }
.w-logos.stufe-4 a, .w-logos.stufe-4 span { width: 130px; height: 72px; }
.w-sportstaetten { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem; margin: 1rem 0 2rem; }
.w-sportstaette { display: flex; flex-direction: column; gap: .3rem; padding: 1rem; border-radius: 8px; background: var(--flaeche); border: 1px solid var(--rand); text-decoration: none; color: inherit; }
.w-sportstaette:hover { border-color: var(--orange); }
.w-sportstaette span { color: var(--orange-dunkel); font-weight: 600; margin-top: auto; }
.w-sponsoren.leiste { border-top: 1px solid var(--rand); padding-top: 1.2rem; }
.w-sponsoren.leiste h2 { font-size: 1.1rem; }
.w-sponsoren.leiste .w-logos { gap: .6rem 1.2rem; }
.w-sponsoren.leiste .w-logos a, .w-sponsoren.leiste .w-logos span { width: 110px; height: 60px; padding: .2rem; background: transparent; }
/* Schmale Karten (Spalten): Blocksatz würde große Wortlücken erzeugen */
.w-spalten .w-karte p:not([class]) { text-align: left; hyphens: manual; }

/* Medien aus der Mediathek im Text */
.w-medium { margin: 1.25rem 0; }
.w-medium img, .w-medium video { display: block; max-width: 100%; height: auto; border-radius: 6px; }
.w-medium figcaption { font-size: .85rem; color: var(--gedaempft); margin-top: .35rem; text-align: left; }
.w-inhalt p.w-medium-datei { text-align: left; }
.w-medium-datei a::before { content: ""; }

/* Filter auf „Aktuelles“ */
.w-filter { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin: 0 0 1.25rem; }
.w-filter label { font-weight: 600; }
.w-filter select { padding: .45rem .7rem; border: 1px solid var(--rand); border-radius: 6px; font: inherit; background: #fff; min-width: 220px; max-width: 100%; }

/* Formatierungen aus dem Text-Editor */
.w-text p.klein, .w-text .klein { font-size: .85em; }
.w-text p.gross, .w-text .gross { font-size: 1.25em; }
.w-text .mitte { text-align: center !important; }
.w-text blockquote { border-left: 3px solid var(--orange); margin: 1rem 0; padding: .3rem 1rem; color: var(--gedaempft); font-style: italic; }
.w-text h4 { font-size: 1.05rem; margin: 1rem 0 .3rem; }
.w-text hr { border: 0; border-top: 1px solid var(--rand); margin: 1.5rem 0; }

/* Einzelansicht Beitrag: so breit wie die Kacheln darunter */
.w-artikel, .w-artikel .w-text { max-width: none; }
.w-untertitel { font-size: 1.15rem; color: var(--gedaempft); margin: -.6rem 0 .8rem; }
.w-autor { display: flex; align-items: center; gap: .6rem; margin: 0 0 .3rem; }
.w-autor img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
.w-autor span { display: flex; flex-direction: column; line-height: 1.25; }
.w-autor small { color: var(--gedaempft); }
.w-termin-hinweis { display: flex; gap: 1rem; align-items: center; margin: 1.5rem 0; padding: 1rem; border: 1px solid var(--rand);
  border-left: 4px solid var(--orange); border-radius: 8px; background: var(--flaeche); }
.w-gefaellt { margin: 1.5rem 0 0; }
.w-gefaellt button { display: inline-flex; gap: .45rem; align-items: center; padding: .5rem 1rem; border: 1px solid var(--rand);
  border-radius: 999px; background: #fff; font: inherit; cursor: pointer; color: var(--text); }
.w-gefaellt button:hover { border-color: var(--orange); }
.w-gefaellt .w-herz { color: var(--orange-dunkel); font-size: 1.2rem; line-height: 1; }
.w-gefaellt.an button { border-color: var(--orange); background: var(--orange-hell); }
.w-gefaellt [data-anzahl] { font-weight: 700; }
/* Editor-Formatierungen auch in Hinweis-, Aufruf- und Bild-Text-Bausteinen */
.w-inhalt .klein { font-size: .85em; }
.w-inhalt .gross { font-size: 1.25em; }
.w-inhalt .mitte { text-align: center !important; }
.w-inhalt blockquote { border-left: 3px solid var(--orange); margin: 1rem 0; padding: .3rem 1rem; color: var(--gedaempft); font-style: italic; }

/* Bilder in Beitragskacheln: 4:3, Hochformate vollständig auf unscharfem Hintergrund */
.w-beitrag .w-kachelbild { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: #eee; }
.w-beitrag .w-kachelbild img { width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; display: block; position: relative; }
.w-kachelbild.ganz::before { content: ""; position: absolute; inset: -20px; background: var(--bild) center / cover no-repeat;
  filter: blur(16px) brightness(.8); transform: scale(1.1); }
.w-kachelbild img { position: relative; }
.w-kachelbild.ganz img, .w-bildkachel .w-kachelbild.ganz img { object-fit: contain; }
.w-bildkachel:hover .w-kachelbild.ganz img { transform: none; }
.w-beitrag .w-ohne-bild { aspect-ratio: 4 / 3; }

/* Kontakt-Knöpfe in den Ansprechpartner-Kacheln */
.w-person .w-person-knoepfe { display: flex; flex-direction: row; flex-wrap: wrap; gap: .4rem; margin-top: .5rem; }
.w-kontaktknopf { display: inline-flex; align-items: center; gap: .3rem; padding: .35rem .75rem; border-radius: 999px; font-size: .85rem;
  font-weight: 600; text-decoration: none; background: var(--orange-hell); color: var(--orange-dunkel); border: 1px solid #f8c9a8;
  white-space: nowrap; transition: background .15s, color .15s; }
.w-kontaktknopf:hover, .w-kontaktknopf:focus-visible { background: var(--orange-dunkel); border-color: var(--orange-dunkel); color: #fff; }

/* Ansprechpartner-Kacheln: zentriert, großes rundes Foto */
.w-personen { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.w-person { flex-direction: column; align-items: center; text-align: center; gap: .7rem; padding: 1.2rem 1rem; }
.w-person img, .w-person-ohne { width: 128px; height: 128px; border-radius: 50%; object-position: 50% 30%; border: 3px solid #fff;
  box-shadow: 0 0 0 2px var(--orange-hell), 0 2px 8px rgba(0,0,0,.12); }
.w-person-ohne { font-size: 2rem; }
.w-person div { align-items: center; text-align: center; }
.w-person .w-person-knoepfe { justify-content: center; }

/* Überschrift links, Filter rechtsbündig */
.w-titelzeile { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem 1.5rem; margin-bottom: 1.25rem; }
.w-titelzeile .w-titel { margin: 0; }
.w-titelzeile .w-filter { margin: 0 0 0 auto; justify-content: flex-end; }

.w-titelzeile .w-reiter { margin: 0 0 0 auto; justify-content: flex-end; }

/* Kopfzeile eines Beitrags: Autor mit Foto, darunter Datum und Abteilung */
.w-meta { display: flex; align-items: center; gap: .7rem; margin: 0 0 1rem; }
.w-meta img, .w-meta-initialen { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: none;
  box-shadow: 0 0 0 2px var(--orange-hell); }
.w-meta-initialen { display: inline-flex; align-items: center; justify-content: center; background: var(--orange); color: #fff;
  font-weight: 700; }
.w-meta strong { color: var(--text); }
.w-meta-funktion { color: var(--gedaempft); }
.w-meta-datum { color: var(--gedaempft); font-size: .92rem; }

/* Veranstaltungskacheln unter „Termine“: Höhe richtet sich nach dem Inhalt, keine Leerflächen */
.w-veranstaltungen { align-items: stretch; }
.w-veranstaltungen .w-beitrag { height: 100%; }
.w-veranstaltungen .w-beitrag-text { flex: 1; }
.w-beitrag.kompakt .w-beitrag-text { padding: .7rem 1rem .8rem; gap: .2rem; }
.w-beitrag.kompakt .w-beitrag-text strong, .w-beitrag.kompakt .w-beitrag-text span,
.w-beitrag.kompakt .w-beitrag-text small { height: auto; -webkit-line-clamp: unset; white-space: normal; }

/* Einzeln stehende Links als Button, rechtsbündig */
.w-link-knopf { display: flex; justify-content: flex-end; margin: 0.75rem 0 0; }
.w-knopf-klein { padding: 0.35rem 0.9rem; font-size: 0.9rem; }
.w-kopfzeile { align-items: center; }
.w-kopfzeile .w-knopf { margin-bottom: 0.75rem; }

/* Raceresult (Anmeldung/Ergebnisse) – erst nach Klick geladen */
.w-raceresult { border: 1px solid var(--rand, #e5ddd5); border-radius: 8px; background: #fff; overflow: hidden; }
.w-raceresult-hinweis { padding: 1.25rem; }
.w-raceresult-hinweis .w-knopf-zeile { display: flex; flex-wrap: wrap; gap: 0.6rem; }
.w-raceresult-merken { display: flex; gap: 0.4rem; align-items: center; font-size: 0.9rem; margin-top: 0.75rem; }
.w-raceresult-fenster { display: block; width: 100%; height: 1400px; border: 0; }
@media (max-width: 700px) { .w-raceresult-fenster { height: 1800px; } }


/* Kacheln als Knöpfe (z. B. Streckenvideos): gleiche Spalten wie die Bildkacheln darüber */
.w-kachelknoepfe { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1rem; margin: 0.5rem 0 1.5rem; }
.w-kachelknoepfe .w-knopf { text-align: center; }
.w-galerie figure[hidden] { display: none; }
.w-archiv-link { text-align: center; margin: 1.5rem 0 2rem; }
