/* ============================================================ COMPONENTS — eine Sektion pro Komponente, Banner-Kommentare ============================================================ */ /* === hero === */ .hero { position: relative; display: grid; align-items: end; min-height: min(92vh, 900px); padding-block: calc(var(--header-h) + 80px) var(--space-section); overflow: hidden; } /* Kompakte Variante: schlanker Unterseiten-Header statt vollflächig. */ .hero--compact { min-height: min(60vh, 560px); padding-block: calc(var(--header-h) + 64px) 3.5rem; } .hero__media { position: absolute; inset: 0; z-index: -1; } .hero__img { width: 100%; height: 100%; object-fit: cover; } .hero__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; } @media (prefers-reduced-motion: reduce) { .hero__video { display: none; } } /* Dunkler Verlauf wie auf der alten Seite: oben transparent → unten Seitenhintergrund */ .hero__media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgb(20 20 20 / 0.25) 0%, rgb(20 20 20 / 0.55) 55%, var(--clr-bg) 100%); } .hero__content { width: 100%; } .hero__title { text-shadow: 0 2px 24px rgb(0 0 0 / 0.5); } /* Keyword-Subline innerhalb der h1 (SEO) — visuell kleinere zweite Zeile */ .hero__tagline { display: block; margin-top: 0.75rem; font-size: var(--fs-600); letter-spacing: 0.14em; } .hero__text { margin-top: 1rem; max-width: 60ch; text-shadow: 0 1px 12px rgb(0 0 0 / 0.6); } .hero__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.75rem; } /* Variante: Text mittig zentriert (z. B. Startseite) */ .hero--center { align-items: center; text-align: center; } .hero--center .hero__text { margin-inline: auto; } .hero--center .hero__actions { justify-content: center; } /* Variante: Editorial-Display (Startseite) — linksbündig unten, große Typo */ .hero--display .hero__media::after { /* zusätzlicher Verlauf von links für Textlesbarkeit über dem Video */ background: linear-gradient(90deg, rgb(10 10 10 / 0.62) 0%, rgb(10 10 10 / 0.25) 45%, transparent 70%), linear-gradient(180deg, rgb(20 20 20 / 0.2) 0%, rgb(20 20 20 / 0.45) 55%, var(--clr-bg) 100%); } .hero__kicker { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.25rem; font-size: var(--fs-500); text-transform: uppercase; letter-spacing: 0.18em; color: var(--clr-text); } .hero__kicker::before { content: ''; width: 3rem; height: 4px; background: var(--clr-accent); border-radius: 2px; } .hero--display .hero__title { font-size: clamp(3.5rem, 2rem + 7.5vw, 7.5rem); } .hero--display .hero__tagline { margin-top: 0.5rem; font-size: clamp(1.75rem, 1rem + 2.5vw, 2.75rem); letter-spacing: 0.1em; color: rgb(255 255 255 / 0.88); } .hero__scroll-cue { position: absolute; left: 50%; bottom: 1.25rem; translate: -50% 0; display: grid; place-items: center; width: 44px; height: 44px; color: var(--clr-text-muted); font-size: 1.4rem; transition: color var(--transition); animation: scroll-cue-bounce 2.4s ease-in-out infinite; } .hero__scroll-cue:hover { color: var(--clr-text); } @keyframes scroll-cue-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(8px); } } /* === instagram === */ /* Sektions-Kopf zentriert (einheitlich mit partners/persons/…) */ .instagram > .container > h2, .instagram > .container > .text-muted { text-align: center; } .instagram > .container > .text-muted { max-width: 60ch; margin-inline: auto; } .instagram__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 2rem; } @media (max-width: 600px) { .instagram__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; } } .instagram__link { position: relative; display: block; border-radius: var(--radius-card); overflow: hidden; box-shadow: var(--shadow-card); } .instagram__link img { width: 100%; height: auto; /* Instagram-Portrait 1080x1350 */ aspect-ratio: 4 / 5; object-fit: cover; transition: transform var(--transition); } .instagram__link:hover img, .instagram__link:focus-visible img { transform: scale(1.05); } .instagram__badge { position: absolute; top: 0.75rem; right: 0.75rem; display: grid; place-items: center; width: 2rem; height: 2rem; background: rgb(0 0 0 / 0.6); border-radius: 50%; font-size: 0.8rem; color: var(--clr-text); } .instagram__fallback { margin-top: 1.5rem; padding: 2.5rem; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); text-align: center; } .instagram__fallback p { margin-inline: auto; } .instagram__fallback .btn { margin-top: 1rem; } /* === split (Bild/Text-Sektion) === */ .split__inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: 3rem; } /* Sanft aufgehelltes, durchgehendes Band über die volle Breite — generisch für jede Sektion (Split via tinted: true im JSON, person-grid u.a. per Klasse). Direkt aufeinanderfolgende tinted-Sektionen verschmelzen nahtlos. */ .section--tinted { background: linear-gradient(180deg, rgb(255 255 255 / 0.06), rgb(255 255 255 / 0.035)); border-block: 1px solid rgb(255 255 255 / 0.1); } .section--tinted + .section--tinted { border-top: 0; } .section--tinted:has(+ .section--tinted) { border-bottom: 0; } /* Bild/Text-Sektionen im Band: mehr Luft nach oben und unten */ .split.section--tinted { padding-block: clamp(4.5rem, 3.5rem + 3vw, 7.5rem); } .split--flip .split__text { order: 2; } .split--flip .split__media { order: 1; } .split__text p { margin-top: 1rem; } .split__cta { margin-top: 1.5rem; } .split__img { width: 100%; border-radius: var(--radius-card); box-shadow: var(--shadow-card); } /* Mannschafts-„Über"-Sektion: ruhiges 4:3-Bild (nicht zu hoch), mit dem Text ausbalanciert. */ #ueber .split__img { aspect-ratio: 4 / 3; object-fit: cover; object-position: center top; } @media (max-width: 992px) { .split__inner { grid-template-columns: 1fr; gap: 2rem; } .split--flip .split__text { order: 0; } .split--flip .split__media { order: 0; } } /* === stats === */ .stats { position: relative; padding-block: 7rem; overflow: hidden; } .stats__media { position: absolute; inset: 0; z-index: -1; } .stats__img { width: 100%; height: 100%; object-fit: cover; } /* Abdunkeln + weiche Kanten: oben/unten Verlauf in den Seitenhintergrund, damit kein harter "Streifen" entsteht */ .stats__media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, var(--clr-bg) 0%, rgb(15 15 15 / 0.72) 28%, rgb(15 15 15 / 0.72) 72%, var(--clr-bg) 100%); } .stats__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem; text-align: center; } @media (max-width: 600px) { .stats__list { grid-template-columns: 1fr; } } .stats__item { display: grid; gap: 0.25rem; } .stats__value { font-family: var(--ff-heading); font-size: var(--fs-900); line-height: var(--lh-heading); color: var(--clr-accent); text-shadow: 0 2px 18px rgb(0 0 0 / 0.55), 0 0 30px rgb(var(--clr-accent-rgb) / 0.35); } .stats__label { font-size: var(--fs-500); text-transform: uppercase; letter-spacing: 0.08em; color: var(--clr-text-muted); } /* === timeline (Vereinshistorie, Museums-Look) === */ .timeline-intro { max-width: 60ch; margin-inline: auto; padding-block: 2.5rem 0; text-align: center; color: var(--clr-text-muted); } /* Sprung-Navigation: Jahres-Pills, klebt beim Scrollen oben */ .timeline-nav { position: sticky; top: 1rem; z-index: 5; display: flex; justify-content: center; margin-bottom: 3rem; } .timeline-nav__list { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.4rem; padding: 0.4rem; background: rgb(10 10 10 / 0.82); border: 1px solid var(--clr-glass-border); border-radius: 999px; backdrop-filter: blur(6px); } .timeline-nav a { display: inline-block; padding: 0.25em 0.85em; font-family: var(--ff-heading); /* Coolvetica unter ~28px wird unleserlich (Projekt-Faustregel) */ font-size: var(--fs-650); letter-spacing: 0.06em; text-transform: uppercase; text-decoration: none; color: var(--clr-text-muted); border-radius: 999px; transition: color var(--transition), background var(--transition); } .timeline-nav a:hover { color: var(--clr-text); } .timeline-nav a.is-active { color: var(--clr-text); background: var(--clr-accent); } /* Mittellinie + Stationen */ .timeline { position: relative; display: grid; gap: 4.5rem; padding-block: 1rem 2rem; } .timeline::before { content: ''; position: absolute; top: 0; bottom: 0; left: 50%; width: 2px; transform: translateX(-50%); background: linear-gradient(180deg, transparent, rgb(var(--clr-accent-rgb) / 0.55) 6%, rgb(var(--clr-accent-rgb) / 0.55) 94%, transparent); } .timeline__event { position: relative; width: calc(50% - 3.5rem); } .timeline__event:nth-child(even) { margin-left: auto; } .timeline__marker { position: absolute; top: 0.6rem; left: calc(100% + 3.5rem); width: 16px; height: 16px; transform: translateX(-50%); background: var(--clr-accent); border-radius: 50%; box-shadow: 0 0 0 4px rgb(var(--clr-accent-rgb) / 0.25), 0 0 18px rgb(var(--clr-accent-rgb) / 0.5); } .timeline__event:nth-child(even) .timeline__marker { left: -3.5rem; } .timeline__year { font-size: var(--fs-900); color: var(--clr-text); text-shadow: 0 2px 18px rgb(0 0 0 / 0.5); margin-bottom: 1rem; } .timeline__event:nth-child(odd) .timeline__year { text-align: right; } /* Museums-Rahmen: Foto wie ein aufgezogener Print, leicht gedreht */ .timeline__figure { margin: 0; padding: 0.9rem 0.9rem 1.1rem; background: #f3efe4; border-radius: 3px; box-shadow: 0 12px 35px rgb(0 0 0 / 0.5); transform: rotate(-1.2deg); transition: transform var(--transition); } .timeline__event:nth-child(even) .timeline__figure { transform: rotate(1.2deg); } .timeline__event:hover .timeline__figure { transform: rotate(0deg) scale(1.02); } .timeline__figure img { width: 100%; height: auto; display: block; } .timeline__text { padding-top: 0.9rem; font-size: var(--fs-500); line-height: 1.45; color: #3a372f; } /* Scroll-Reveal nur mit JS (js-reveal), sonst alles sichtbar */ .js-reveal .timeline__event { opacity: 0; translate: 0 28px; transition: opacity 600ms ease, translate 600ms ease; } .js-reveal .timeline__event.is-visible { opacity: 1; translate: 0 0; } @media (max-width: 768px) { .timeline::before { left: 8px; } .timeline__event, .timeline__event:nth-child(even) { width: auto; margin-left: 0; padding-left: 2.5rem; } .timeline__marker, .timeline__event:nth-child(even) .timeline__marker { left: 8px; } .timeline__event:nth-child(odd) .timeline__year { text-align: left; } } /* === partners === */ .partners > .container { text-align: center; } .partners > .container > p { max-width: 60ch; margin-inline: auto; } /* Intro-Abstand zur Überschrift einheitlich mit den anderen Sektionen */ .partners__intro { margin-top: 1rem; } .partners__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 220px)); justify-content: center; align-items: center; gap: 2rem; margin-block: 2.5rem; } .partners__item { display: grid; place-items: center; padding: 1.5rem; /* Dunkles Glas — die Partner-Logos sind weiße Varianten */ background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); min-height: 120px; } .partners__item img { max-height: 80px; width: auto; max-width: 100%; object-fit: contain; } /* === persons (Ansprechpartner-Visitenkarten) === */ .persons > .container { text-align: center; } .persons__intro { margin-inline: auto; margin-top: 1rem; max-width: 60ch; color: var(--clr-text-muted); } /* Max. 3 pro Reihe; unvollständige Reihen (z. B. 3+2) zentrieren sich automatisch */ .persons__grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 1.5rem; margin-top: 2.5rem; text-align: left; } .persons__grid > li { flex: 0 1 calc((100% - 3rem) / 3); min-width: 220px; max-width: 340px; } .person-card { display: grid; height: 100%; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); overflow: hidden; transition: transform var(--transition), box-shadow var(--transition); } .person-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); } .person-card__media img { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; /* Ausschnitt nach oben → Gesicht bleibt im Bild, nicht der Bauch */ object-position: center top; } .person-card__body { display: grid; gap: 0.2rem; padding: 1.1rem 1.2rem 1.2rem; /* Verlauf knüpft an die dunklen Studiofotos an */ background: linear-gradient(180deg, rgb(20 20 20 / 0) 0%, rgb(20 20 20 / 0.35) 100%); } .person-card__department { font-size: var(--fs-650); letter-spacing: 0.04em; } .person-card__name { color: var(--clr-text-muted); } .person-card__contact { display: inline-flex; align-items: center; gap: 0.5rem; margin-top: 0.5rem; padding-block: 0.3rem; color: var(--clr-text); text-decoration: none; font-size: var(--fs-500); } .person-card__contact .icon { color: var(--clr-accent); flex: none; } .person-card__contact span { overflow-wrap: anywhere; } .person-card__contact:hover { text-decoration: underline; text-underline-offset: 0.25em; } /* === contact form === */ .contact__inner { display: grid; gap: 2.5rem; justify-items: center; } .contact__intro { max-width: 60ch; text-align: center; } .contact__intro p { margin-top: 1rem; } .form { display: grid; gap: 1.25rem; width: 100%; max-width: 720px; padding: 2rem; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); } .form__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1.25rem; } @media (max-width: 600px) { .form__row { grid-template-columns: 1fr; } } .form__field { display: grid; gap: 0.4rem; } .form__field label { font-size: var(--fs-500); } .form__field input, .form__field select, .form__field textarea { width: 100%; padding: 10px 12px; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border-strong); border-radius: var(--radius-btn); color: var(--clr-text); transition: border-color var(--transition), background var(--transition), box-shadow var(--transition); } .form__field input:hover, .form__field select:hover, .form__field textarea:hover { border-color: rgb(255 255 255 / 0.55); } /* Eigener, deutlich sichtbarer Fokus-Ring statt des globalen Outlines */ .form__field input:focus-visible, .form__field select:focus-visible, .form__field textarea:focus-visible { outline: none; border-color: rgb(255 255 255 / 0.75); box-shadow: 0 0 0 3px rgb(255 255 255 / 0.18); } .form__field ::placeholder { color: rgb(255 255 255 / 0.45); } /* Fehlerzustand: per JS (aria-invalid) und nativ nach Nutzereingabe (:user-invalid) */ .form__field input[aria-invalid="true"], .form__field select[aria-invalid="true"], .form__field textarea[aria-invalid="true"], .form__field input:user-invalid, .form__field select:user-invalid, .form__field textarea:user-invalid { border-color: var(--clr-error); } .form__field select { appearance: none; padding-right: 2.5rem; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' fill='none'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.9rem center; } .form__field select option { background: var(--clr-bg); color: var(--clr-text); } .form__note { margin: 0; font-size: var(--fs-400); color: var(--clr-text-muted); } .form__required { color: var(--clr-accent); } .form__hint { font-size: var(--fs-400); color: var(--clr-text-muted); } .form__error-msg { font-size: var(--fs-400); color: var(--clr-error); } .form button[disabled] { opacity: 0.65; cursor: progress; } .form__field textarea { resize: vertical; min-height: 8rem; } .form__field--checkbox { grid-template-columns: auto 1fr; align-items: start; gap: 0.6rem; } .form__field--checkbox input { /* 24px — Mindest-Zielgröße (WCAG 2.5.8) */ width: 1.5rem; height: 1.5rem; margin-top: 0.1rem; accent-color: var(--clr-accent); } .form__field--checkbox label { font-size: var(--fs-500); } /* Leer: unsichtbar, aber im Accessibility-Tree — display:none würde die aria-live-Region abmelden und Screenreader verpassen die erste Meldung. */ .form__status:empty { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); } .form__success { padding: 0.75rem 1rem; border: 1px solid var(--clr-success); border-radius: var(--radius-btn); color: var(--clr-success); } .form__error { padding: 0.75rem 1rem; border: 1px solid var(--clr-error); border-radius: var(--radius-btn); color: var(--clr-error); } .form__submit { margin: 0; } /* === Werbe-/Sponsoren-Banner (Slider) === */ .ad-banner { --banner-interval: 6s; } /* Sektions-Kopf zentriert (einheitlich mit partners/persons/…) */ .ad-banner > .container > h2, .ad-banner__subline { text-align: center; } .ad-banner__subline { margin-top: 0.75rem; /* Volle Breite, damit der Dank in einer Zeile steht; auf Mobil bricht er natürlich um. */ max-width: none; text-wrap: balance; } .ad-banner__track { list-style: none; margin: 2rem 0 0; padding: 0; } .ad-banner__slide[hidden] { display: none; } .ad-banner__slide { display: grid; grid-template-columns: 2fr 1fr; gap: 2.5rem; align-items: center; padding: clamp(1.75rem, 1rem + 2vw, 3rem); background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); box-shadow: var(--shadow-card); } /* Optionaler Hintergrund pro Banner (data: "background"). Dunkler Verlauf über dem Bild hält Text & CTA links lesbar. */ .ad-banner__slide--bg { background-image: linear-gradient(to right, rgb(0 0 0 / 0.82), rgb(0 0 0 / 0.45) 60%, rgb(0 0 0 / 0.3)), var(--banner-bg); background-size: cover; background-position: center; border-color: transparent; } .ad-banner__slide--bg .ad-banner__text { color: var(--clr-text); } .ad-banner__slide--bg .ad-banner__logo { background: rgb(0 0 0 / 0.4); border-color: rgb(255 255 255 / 0.3); backdrop-filter: blur(2px); } @media (max-width: 768px) { /* Auf Mobil läuft der Verlauf nach unten, damit der gestapelte Text lesbar bleibt. */ .ad-banner__slide--bg { background-image: linear-gradient(to bottom, rgb(0 0 0 / 0.82), rgb(0 0 0 / 0.5)), var(--banner-bg); } } /* Eigenwerbung („Hier könnte Ihre Werbung stehen") — rote Glasfläche mit gestricheltem Frame, das eine freie Werbefläche andeutet. */ .ad-banner__slide--house { position: relative; overflow: hidden; background: radial-gradient(135% 145% at 100% 0%, rgb(var(--clr-accent-rgb) / 0.24), transparent 55%), var(--clr-glass-bg); border-color: rgb(var(--clr-accent-rgb) / 0.5); } .ad-banner__slide--house .ad-banner__content, .ad-banner__slide--house .ad-banner__logo { position: relative; z-index: 1; } .ad-banner__slide--house .ad-banner__tag { color: #fff; background: var(--clr-accent); border-color: transparent; } .ad-banner__slide--house .ad-banner__text { color: var(--clr-text); } .ad-banner__slide--house .ad-banner__logo { background: rgb(0 0 0 / 0.25); border-color: rgb(var(--clr-accent-rgb) / 0.45); } /* Eigenwerbung MIT Foto-Hintergrund: rot-dunkler Verlauf von links hält den Text lesbar, das Foto bleibt rechts sichtbar. */ .ad-banner__slide--house.ad-banner__slide--bg { background-image: linear-gradient(to right, rgb(12 10 11 / 0.9), rgb(20 16 17 / 0.55) 55%, rgb(20 16 17 / 0.12) 90%), var(--banner-bg); background-size: cover; background-position: center; border-color: transparent; } .ad-banner__slide--house.ad-banner__slide--bg .ad-banner__logo { background: rgb(0 0 0 / 0.45); border-color: rgb(255 255 255 / 0.18); backdrop-filter: blur(2px); } @media (max-width: 768px) { /* Auf Mobil läuft der Verlauf nach unten (Text steht gestapelt darüber). */ .ad-banner__slide--house.ad-banner__slide--bg { background-image: linear-gradient(to bottom, rgb(12 10 11 / 0.88), rgb(20 16 17 / 0.7)), var(--banner-bg); } } .ad-banner__tag { display: inline-block; margin-bottom: 0.85rem; padding: 0.2em 0.7em; font-size: var(--fs-300); text-transform: uppercase; letter-spacing: 0.08em; color: var(--clr-text-muted); background: rgb(255 255 255 / 0.08); border: 1px solid var(--clr-glass-border); border-radius: 999px; } .ad-banner__title { font-family: var(--ff-heading); font-size: var(--fs-700); line-height: var(--lh-heading); margin-bottom: 0.6rem; } .ad-banner__text { max-width: 52ch; margin-bottom: 1.5rem; color: var(--clr-text-muted); } /* CTA-Reihe: Primär- + optionaler Outline-Sekundär-Button nebeneinander. */ .ad-banner__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; } .ad-banner__logo { display: grid; place-items: center; min-height: 130px; padding: 1.5rem; background: rgb(0 0 0 / 0.18); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); } /* Helle Platte für dunkle Firmenlogos (Wortmarken). Überschreibt auch die dunkle Logo-Box der Foto-Variante (gleiche Spezifität, später im File). */ .ad-banner__logo.ad-banner__logo--light { background: #fff; border-color: rgb(255 255 255 / 0.55); backdrop-filter: none; } .ad-banner__logo img { width: auto; max-width: 100%; max-height: 96px; object-fit: contain; } @media (max-width: 768px) { .ad-banner__slide { grid-template-columns: 1fr; gap: 1.75rem; } } /* Steuerung: Pause/Play-Taste + Indikatorleiste. */ .ad-banner__controls { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-top: 1.75rem; } .ad-banner__controls[hidden] { display: none; } .ad-banner__toggle { display: inline-grid; place-items: center; width: 2.25rem; height: 2.25rem; padding: 0; color: var(--clr-text); background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: 999px; cursor: pointer; transition: background var(--transition); } .ad-banner__toggle[hidden] { display: none; } .ad-banner__toggle:hover { background: rgb(255 255 255 / 0.2); } .ad-banner__toggle:focus-visible { outline: 2px solid var(--clr-text); outline-offset: 3px; } .ad-banner__toggle-icon { font-size: 1.15rem; } /* Pause-Icon im Abspiel-Zustand, Play-Icon wenn pausiert. */ .ad-banner__toggle .ad-banner__toggle-icon--play { display: none; } .ad-banner__toggle[aria-pressed="true"] .ad-banner__toggle-icon--pause { display: none; } .ad-banner__toggle[aria-pressed="true"] .ad-banner__toggle-icon--play { display: inline-block; } /* Indikatorleiste — die aktive Leiste füllt sich über --banner-interval. */ .ad-banner__indicators { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; } .ad-banner__dot { position: relative; width: 48px; height: 6px; padding: 0; border: 0; border-radius: 999px; background: var(--clr-glass-border); cursor: pointer; overflow: hidden; transition: background var(--transition); } .ad-banner__dot:hover { background: rgb(255 255 255 / 0.35); } .ad-banner__dot:focus-visible { outline: 2px solid var(--clr-text); outline-offset: 3px; } .ad-banner__progress { position: absolute; inset: 0; background: var(--clr-accent); transform: scaleX(0); transform-origin: left; } .ad-banner__dot.is-active .ad-banner__progress { animation: ad-progress var(--banner-interval) linear forwards; } .ad-banner.is-paused .ad-banner__dot.is-active .ad-banner__progress { animation-play-state: paused; } @keyframes ad-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } } @media (prefers-reduced-motion: reduce) { .ad-banner__dot.is-active .ad-banner__progress { animation: none; transform: scaleX(1); } } /* === key-facts (Faktenleiste) === */ .key-facts__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin: 0; padding: 0; list-style: none; } .key-facts__item { display: flex; align-items: center; gap: 0.85rem; padding: 1.1rem 1.25rem; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); } .key-facts__icon { display: inline-flex; font-size: 1.5rem; color: var(--clr-accent); } .key-facts__text { display: grid; gap: 0.1rem; } .key-facts__label { font-size: var(--fs-400); text-transform: uppercase; letter-spacing: 0.06em; color: var(--clr-text-muted); } .key-facts__value { font-family: var(--ff-heading); font-size: var(--fs-650); line-height: var(--lh-heading); } /* === team-about === */ .team-about p { max-width: 68ch; } /* === training-location (Bento-Grid) === */ .bento { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: minmax(0, auto); gap: 1.25rem; } /* Tile-Größen: Trainingszeiten = großer Anker, Spielort = breit, dazu zwei kleine. */ .bento__tile--times { grid-column: span 2; grid-row: span 2; } .bento__tile--venue { grid-column: span 2; } .bento__tile--accent { grid-column: span 1; } .bento__tile--route { grid-column: span 1; } .bento__tile { position: relative; display: flex; flex-direction: column; padding: 1.75rem; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); overflow: hidden; } /* Akzent-Tile: gefüllt, weiße Schrift (gut lesbar), zentrierte Kennzahl. */ .bento__tile--accent { justify-content: center; gap: 0.35rem; background: var(--clr-accent); border-color: var(--clr-accent); text-align: center; } .bento__tile--route { justify-content: center; align-items: center; gap: 0.9rem; text-align: center; } /* Inhalt über dem Deko-Icon halten. */ .bento__heading, .bento__sessions, .bento__address, .bento__note { position: relative; z-index: 1; } .bento__heading { display: flex; align-items: center; gap: 0.7rem; margin-bottom: 1.5rem; font-size: clamp(2rem, 1.6rem + 1.2vw, 2.6rem); line-height: var(--lh-heading); } .bento__hicon { flex: none; font-size: 1.6rem; color: var(--clr-accent); } .bento__sessions { margin: 0; padding: 0; list-style: none; } .bento__sessions li { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--clr-glass-border); } .bento__sessions li:first-child { padding-top: 0; } .bento__sessions li:last-child { padding-bottom: 0; border-bottom: 0; } .bento__day { font-size: var(--fs-600); } .bento__time { font-family: var(--ff-heading); font-size: var(--fs-650); color: var(--clr-text); } .bento__note { margin-top: 1rem; } .bento__address { margin: 0; font-size: var(--fs-600); line-height: 1.5; } /* Akzent-Tile-Typo. */ .bento__stat-label { font-size: var(--fs-500); text-transform: uppercase; letter-spacing: 0.08em; color: rgb(255 255 255 / 0.85); } .bento__stat-value { font-family: var(--ff-heading); font-size: clamp(2rem, 1.5rem + 2vw, 2.8rem); line-height: var(--lh-heading); color: #fff; } .bento__route-label { font-family: var(--ff-heading); font-size: var(--fs-650); } /* Großes, angeschnittenes Deko-Icon unten rechts. */ .bento__deco { position: absolute; right: -1rem; bottom: -1.75rem; z-index: 0; font-size: 9rem; line-height: 1; color: var(--clr-text); opacity: 0.06; pointer-events: none; } @media (max-width: 900px) { .bento { grid-template-columns: repeat(2, 1fr); } .bento__tile--times { grid-column: span 2; grid-row: auto; } .bento__tile--venue { grid-column: span 2; } } @media (max-width: 560px) { .bento { grid-template-columns: 1fr; } .bento__tile--times, .bento__tile--venue, .bento__tile--accent, .bento__tile--route { grid-column: span 1; } } /* === cta-band === */ .cta-band__inner { max-width: 60ch; margin-inline: auto; text-align: center; } .cta-band__text { margin-top: 0.75rem; margin-inline: auto; } .cta-band__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; margin-top: 1.75rem; } /* === faq (Accordion) === */ .faq__inner { max-width: 760px; margin-inline: auto; } .faq__inner > h2 { text-align: center; } /* Schlichte Trennlinien-Liste statt Kästchen. */ .faq__list { margin-top: 2.5rem; border-top: 1px solid var(--clr-glass-border); } .faq__item { border-bottom: 1px solid var(--clr-glass-border); } .faq__q { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.35rem 0.25rem; font-size: var(--fs-600); line-height: 1.3; cursor: pointer; list-style: none; transition: color var(--transition); } .faq__q::-webkit-details-marker { display: none; } .faq__q:hover { color: var(--clr-text-muted); } .faq__q:focus-visible { outline: 2px solid var(--clr-text); outline-offset: 2px; } .faq__chevron { flex: none; font-size: 0.9rem; color: var(--clr-text-muted); transition: transform var(--transition), color var(--transition); } .faq__item[open] .faq__q { color: var(--clr-text); } .faq__item[open] .faq__chevron { transform: rotate(180deg); color: var(--clr-text); } .faq__a { padding: 0 0.25rem 1.4rem; color: var(--clr-text-muted); } .faq__a p { max-width: 64ch; margin: 0; } /* Antwort beim Öffnen sanft einblenden (reduced-motion via reset.css deaktiviert). */ .faq__item[open] .faq__a { animation: faq-reveal 260ms ease; } @keyframes faq-reveal { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } } /* === age-groups (Jugend-Altersklassen) === */ .age-groups > .container { text-align: center; } .age-groups__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.5rem; margin: 2.5rem 0 0; padding: 0; list-style: none; text-align: left; } .age-group { display: grid; grid-template-rows: auto 1fr; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); overflow: hidden; transition: transform var(--transition), box-shadow var(--transition); } .age-group:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); } .age-group__media { position: relative; overflow: hidden; } .age-group__img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; transition: transform var(--transition); } .age-group:hover .age-group__img { transform: scale(1.05); } /* Klassen-Badge (G/F/E/D/C) auf dem Bild. */ .age-group__badge { position: absolute; top: 0.75rem; left: 0.75rem; display: grid; place-items: center; width: 2.6rem; height: 2.6rem; font-family: var(--ff-heading); font-size: var(--fs-650); line-height: 1; color: #fff; background: var(--clr-accent); border-radius: 50%; box-shadow: 0 2px 10px rgb(0 0 0 / 0.35); } .age-group__body { display: grid; gap: 0.4rem; align-content: start; padding: 1.1rem 1.3rem 1.3rem; } .age-group__name { font-size: var(--fs-650); line-height: var(--lh-heading); } .age-group__training { display: inline-flex; align-items: center; gap: 0.5rem; margin: 0; font-size: var(--fs-500); color: var(--clr-text-muted); } .age-group__icon { flex: none; color: var(--clr-accent); } /* === team-cards (Mannschafts-Karten) === */ .team-cards > .container { text-align: center; } .team-cards__intro { max-width: 60ch; margin: 1rem auto 0; } /* Intro als „Klärtext" unter den Kacheln → mehr Luft nach oben zur Kartenreihe */ .team-cards__intro--below { margin-top: 2.5rem; } .team-cards__grid { display: grid; /* Zwei Karten pro Reihe (50/50) — bei vier Mannschaften ergibt das ein 2×2-Raster */ grid-template-columns: repeat(2, 1fr); gap: 1.5rem; margin: 2.5rem 0 0; padding: 0; list-style: none; text-align: left; } @media (max-width: 600px) { .team-cards__grid { grid-template-columns: 1fr; } } .team-card { display: grid; grid-template-rows: auto 1fr; height: 100%; color: var(--clr-text); text-decoration: none; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); overflow: hidden; transition: transform var(--transition), box-shadow var(--transition); } .team-card:hover, .team-card:focus-visible { transform: translateY(-4px); box-shadow: var(--shadow-card); } .team-card__img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; transition: transform var(--transition); } .team-card:hover .team-card__img, .team-card:focus-visible .team-card__img { transform: scale(1.04); } .team-card__body { display: flex; flex-direction: column; gap: 0.3rem; padding: 1.4rem 1.5rem 1.5rem; } .team-card__name { /* Coolvetica/Heading (siehe CLAUDE.md) — bewusst groß und prägnant. */ font-size: clamp(1.9rem, 1.4rem + 1.4vw, 2.4rem); line-height: var(--lh-heading); } .team-card__meta { font-size: var(--fs-500); text-transform: uppercase; letter-spacing: 0.06em; color: var(--clr-text-muted); } .team-card__cta { display: inline-flex; align-items: center; gap: 0.45rem; /* an den unteren Rand schieben → CTA aller Karten fluchtet, egal wie lang der Name */ margin-top: auto; padding-top: 1rem; /* Body-Schrift (Abel) — Coolvetica bleibt den Überschriften vorbehalten */ font-size: var(--fs-500); color: var(--clr-accent); } .team-card__arrow { transition: transform var(--transition); } .team-card:hover .team-card__arrow { transform: translateX(3px); } /* === team-roster (Kader + Trainerstab) === */ .team-roster > .container { text-align: center; } .team-roster__intro { max-width: 60ch; margin: 1rem auto 0; } /* Positions-Zwischenüberschrift (Trainer & Betreuer, Torwart, Abwehr, …) */ .team-roster__group { margin-top: 2.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--clr-glass-border); text-align: left; font-size: var(--fs-700); line-height: var(--lh-heading); } .team-roster__grid { display: grid; /* Feste 5 pro Reihe → größere Cards/Bilder; runter gestuft auf schmaleren Screens */ grid-template-columns: repeat(5, 1fr); gap: 1.25rem; margin: 1.5rem 0 0; padding: 0; list-style: none; text-align: left; } @media (max-width: 992px) { .team-roster__grid { grid-template-columns: repeat(4, 1fr); } } @media (max-width: 768px) { .team-roster__grid { grid-template-columns: repeat(3, 1fr); } } @media (max-width: 500px) { .team-roster__grid { grid-template-columns: repeat(2, 1fr); } } .roster-card { display: grid; grid-template-rows: auto 1fr; height: 100%; background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); overflow: hidden; transition: transform var(--transition), box-shadow var(--transition); } .roster-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); } /* Trainerstab dezent mit Akzentkante abgesetzt */ .roster-card--staff { border-color: var(--clr-accent); } .roster-card__media img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; object-position: center top; } .roster-card__body { display: flex; flex-direction: column; gap: 0.1rem; padding: 0.85rem 1rem 1rem; background: linear-gradient(180deg, rgb(20 20 20 / 0) 0%, rgb(20 20 20 / 0.35) 100%); } .roster-card__role { font-size: var(--fs-400); text-transform: uppercase; letter-spacing: 0.08em; color: var(--clr-accent); } /* Name in Abel (Body) — Coolvetica wäre unter 28px unzulässig (siehe CLAUDE.md) */ .roster-card__name { font-size: var(--fs-500); } /* --- Variante: Name als Overlay im Foto, unten links, dunkler Verlauf von unten --- */ .roster-card--overlay { position: relative; display: block; } .roster-card--overlay .roster-card__img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; object-position: center top; } .roster-card__caption { position: absolute; inset: auto 0 0 0; display: flex; flex-direction: column; gap: 0.15rem; padding: 2.5rem 0.9rem 0.85rem; /* dunkler Fade von unten → Name bleibt auf jedem Foto lesbar */ background: linear-gradient(180deg, rgb(15 15 15 / 0) 0%, rgb(15 15 15 / 0.55) 45%, rgb(15 15 15 / 0.9) 100%); } /* Name hier in Coolvetica (≥28px = fs-650, Mindestgröße eingehalten) */ .roster-card--overlay .roster-card__name { font-family: var(--ff-heading); font-size: var(--fs-650); line-height: var(--lh-heading); text-transform: uppercase; color: #fff; } .roster-card--overlay .roster-card__role { /* Auf dem dunklen Foto-Verlauf: klein und weiß statt rot → besser lesbar */ font-size: var(--fs-300); color: #fff; } /* === faq-contact (FAQ 2/3 + Ansprechpartner 1/3) === */ .faq-contact__inner { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 3rem; align-items: start; } /* Ohne Kontakt: FAQ allein, lesbar zentriert. */ .faq-contact--solo .faq-contact__inner { grid-template-columns: minmax(0, 760px); justify-content: center; } /* Sektions-Kopf zentriert über dem 2-Spalten-Inhalt (FAQ + Kontakt) */ .faq-contact__title { text-align: center; margin: 0; } /* Gedämpfte Subline unter der Überschrift (einheitlich mit den anderen Sektionen) */ .faq-contact__intro { max-width: 60ch; margin-inline: auto; margin-bottom: 2.25rem; text-align: center; } /* Abstände je nachdem, ob eine Subline folgt */ .faq-contact__title + .faq-contact__intro { margin-top: 1rem; } .faq-contact__title + .faq-contact__inner { margin-top: 2.25rem; } .faq-contact__aside > h2 { margin-bottom: 1.5rem; } /* --- Ansprechpartner-Mini-Slider (mehrere Kontakte) --- Ohne JS: alle Karten gestapelt sichtbar. Mit JS (--ready): nur eine sichtbar, wechselt automatisch; Punkte zur manuellen Auswahl. */ .contact-slider { /* Auf Kartenbreite begrenzt und zentriert → Karte und Punkte teilen dieselbe Mittelachse */ max-width: 320px; margin-inline: auto; } .contact-slider__track { display: flex; flex-direction: column; gap: 1.5rem; margin: 0; padding: 0; list-style: none; } .contact-slider__dots { /* Ohne JS funktionslos → ausgeblendet; erst mit aktivem Slider sichtbar. */ display: none; } .contact-slider--ready .contact-slider__dots { display: flex; justify-content: center; gap: 0.4rem; margin-top: 1rem; } .contact-slider__dot { /* 24px-Ziel (WCAG 2.5.8), sichtbarer Punkt 10px */ display: grid; place-items: center; width: 24px; height: 24px; padding: 0; background: none; border: 0; cursor: pointer; } .contact-slider__dot::before { content: ''; width: 10px; height: 10px; border-radius: 50%; border: 1px solid var(--clr-glass-border-strong); transition: background var(--transition), border-color var(--transition); } .contact-slider__dot[aria-current="true"]::before { background: var(--clr-accent); border-color: var(--clr-accent); } @keyframes contact-slide-fade { from { opacity: 0; } to { opacity: 1; } } .contact-slider--ready .contact-slider__slide.is-active { animation: contact-slide-fade 0.4s ease; } .faq-contact__main .faq__list { margin-top: 0; } .faq-contact__aside .person-card { max-width: 320px; margin-inline: auto; } /* Flacheres Foto im Kontakt-Block (Gesicht bleibt oben erhalten). */ .faq-contact__aside .person-card__media img { aspect-ratio: 4 / 3; } @media (max-width: 900px) { .faq-contact__inner { grid-template-columns: 1fr; gap: 2.5rem; } } /* === team-photo (Mannschaftsfoto in voller Breite) === */ .team-photo__figure { margin: 0; } .team-photo__img { display: block; width: 100%; height: auto; border-radius: var(--radius-card); border: 1px solid var(--clr-glass-border); } .team-photo__caption { margin-top: 0.75rem; text-align: center; color: var(--clr-text-muted); font-size: var(--fs-400); } /* === team-bento (Bild + Einleitung + Training + Spielort als Dashboard) === */ .team-bento { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; grid-template-areas: "about about about" "train train klasse" "venue venue venue"; } .team-bento__about { grid-area: about; } .team-bento__training { grid-area: train; } .team-bento__klasse { grid-area: klasse; } .team-bento__venue { grid-area: venue; } .team-bento__about { justify-content: center; } .team-bento__about > h2 { margin-bottom: 0.75rem; } .team-bento__about p { color: var(--clr-text-muted); max-width: 60ch; } /* Spielort: breite untere Kachel — Adresse links, Button rechts. */ .team-bento__venue { flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.25rem; } .team-bento__venue-main { position: relative; z-index: 1; } .team-bento__venue .bento__heading { margin-bottom: 0.6rem; } .team-bento__route { position: relative; z-index: 1; flex: none; } @media (max-width: 900px) { .team-bento { grid-template-columns: 1fr; grid-template-areas: "about" "train" "klasse" "venue"; } } /* === intro-bento (Jugend-Einleitung: Bild + Text + Spielort + Stat) === */ .intro-bento { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; grid-template-areas: "image about about" "image venue stat"; } .intro-bento__image { grid-area: image; position: relative; min-height: 260px; padding: 0; overflow: hidden; } .intro-bento__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center top; } .intro-bento__about { grid-area: about; justify-content: center; } .intro-bento__about > h2 { margin-bottom: 0.75rem; } .intro-bento__about p { max-width: 60ch; color: var(--clr-text-muted); } .intro-bento__venue { grid-area: venue; } .intro-bento__venue .bento__address { margin-bottom: 1.25rem; } .intro-bento__route { position: relative; z-index: 1; align-self: start; margin-top: auto; } .intro-bento__stat { grid-area: stat; } @media (max-width: 900px) { .intro-bento { grid-template-columns: 1fr; grid-template-areas: "image" "about" "venue" "stat"; } .intro-bento__image { aspect-ratio: 16 / 10; min-height: 0; } } /* === legal (Impressum, Datenschutz) === Schmale, gut lesbare Fließtext-Seite. Top-Padding klärt den absolut positionierten Header (analog zur Hero-Logik). */ .legal { padding-block: calc(var(--header-h) + 80px) var(--space-section); } .legal__head { max-width: 60ch; margin-bottom: clamp(2.5rem, 1.5rem + 3vw, 4rem); } .legal__kicker { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.25rem; font-size: var(--fs-500); text-transform: uppercase; letter-spacing: 0.18em; } .legal__kicker::before { content: ''; width: 3rem; height: 4px; background: var(--clr-accent); border-radius: 2px; } .legal__lead { margin-top: 1.25rem; color: var(--clr-text-muted); } /* Lesespalte: angenehme Zeilenlänge für lange Rechtstexte */ .legal__body { max-width: 72ch; } .legal__body > section + section { margin-top: clamp(2.5rem, 1.8rem + 2vw, 3.5rem); } .legal__body h2 { font-size: var(--fs-700); margin-bottom: 1rem; } /* Coolvetica nie unter --fs-650 (28px) — Unterüberschriften daher in Abel, per Laufweite/Uppercase ausgezeichnet statt in der Display-Schrift. */ .legal__body h3 { font-family: var(--ff-body); font-size: var(--fs-600); font-weight: var(--fw-bold); text-transform: none; line-height: var(--lh-body); margin-top: 1.75rem; margin-bottom: 0.5rem; } .legal__body p, .legal__body ul { margin-bottom: 1rem; } .legal__body a { color: var(--clr-text); text-decoration: underline; text-underline-offset: 0.2em; } .legal__body a:hover { color: var(--clr-text-muted); } .legal__body ul { padding-left: 1.25rem; max-width: 70ch; } .legal__body li { margin-bottom: 0.35rem; } .legal__body li::marker { color: var(--clr-accent); } /* Adress-/Kontaktblöcke (Verantwortlicher, Bankverbindung) als abgesetzte Karte */ .legal__card { margin-bottom: 1rem; padding: clamp(1.25rem, 1rem + 1.5vw, 1.75rem); background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); } .legal__card :last-child { margin-bottom: 0; } .legal__card address { font-style: normal; line-height: var(--lh-body); } .legal__cards { display: grid; gap: 1rem; margin-bottom: 1rem; } @media (min-width: 600px) { .legal__cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } } /* === department-choice (Abteilungs-Auswahl Fußball | Turnen) === */ .department-choice > .container { text-align: center; } .department-choice__intro { max-width: 60ch; margin: 1rem auto 0; } .department-choice__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; margin: 2.5rem 0 0; padding: 0; list-style: none; text-align: left; } @media (max-width: 600px) { .department-choice__grid { grid-template-columns: 1fr; } } .department-choice__card { display: flex; flex-direction: column; gap: 0.35rem; height: 100%; padding: clamp(1.75rem, 1.25rem + 2vw, 2.75rem); background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); } .department-choice__heading { font-size: var(--fs-700); line-height: var(--lh-heading); color: var(--clr-text); } .department-choice__subtitle { font-size: var(--fs-500); text-transform: uppercase; letter-spacing: 0.1em; color: var(--clr-accent); } .department-choice__text { margin-top: 0.65rem; color: var(--clr-text-muted); } .department-choice__btn { align-self: start; margin-top: auto; display: inline-flex; align-items: center; gap: 0.5rem; } .department-choice__arrow { font-size: 0.9em; } /* === fee-table (Beitragstabellen) === */ .fee-table { padding: clamp(1.25rem, 1rem + 1.5vw, 1.75rem); background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); } .fee-table__title { font-size: var(--fs-650); line-height: var(--lh-heading); margin-bottom: 1rem; } .fee-table__list { margin: 0; } .fee-table__row { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 0.65rem 0; border-bottom: 1px solid var(--clr-glass-border); } .fee-table__row:last-child { border-bottom: 0; } .fee-table__label { margin: 0; } .fee-table__price { margin: 0; flex: none; font-family: var(--ff-heading); font-size: var(--fs-650); line-height: 1; color: var(--clr-accent); } .fee-table__note { margin-top: 1rem; font-size: var(--fs-400); color: var(--clr-text-muted); } /* === membership (Mitglied werden) === */ .membership-signup__inner { max-width: 820px; margin-inline: auto; } /* Zentrierter, ruhiger Sektions-Kopf (einheitlich mit instagram/partners) */ .membership-signup__head { max-width: 60ch; margin: 0 auto 2.5rem; text-align: center; } .membership-signup__intro { margin-top: 1rem; color: var(--clr-text-muted); } /* Beitragstabelle und Formular mittig, schlanke Spaltenbreite für Lesbarkeit */ .membership-signup .fee-table { max-width: 560px; margin-inline: auto; } .membership-signup .form { margin-inline: auto; } .membership-signup .fee-table + .form { margin-top: 2rem; } .membership-notes { display: grid; gap: 1.5rem; margin: 0 0 2.5rem; padding: 0; list-style: none; } @media (min-width: 768px) { .membership-notes { grid-template-columns: repeat(3, minmax(0, 1fr)); } } .membership-notes__title { font-size: var(--fs-650); line-height: var(--lh-heading); margin-bottom: 0.4rem; padding-top: 0.75rem; border-top: 2px solid var(--clr-accent); } .membership-download { text-align: center; } .membership-download__btn { display: inline-flex; align-items: center; gap: 0.5rem; } .membership-download__icon { font-size: 0.9em; } .membership-download__hint, .membership-download__contact { margin-top: 0.75rem; font-size: var(--fs-400); color: var(--clr-text-muted); } .legal__muted { color: var(--clr-text-muted); } /* === facility (Gelände / Drohnen-Luftbild auf der Vereinsseite) === */ .facility__lead { max-width: 70ch; margin-top: 1rem; color: var(--clr-text-muted); } .facility__figure { margin: 2.5rem 0 0; } .facility__img { display: block; width: 100%; height: auto; border-radius: var(--radius-card); box-shadow: var(--shadow-card); } .facility__caption { margin-top: 0.85rem; color: var(--clr-text-faint); font-size: var(--fs-500); } .facility__actions { margin-top: 1.75rem; }