/* ============================================================ 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 === */ .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; } .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); } @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; } .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); } .persons__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 240px)); justify-content: center; gap: 1.5rem; margin-top: 2.5rem; text-align: left; } .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; } .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; } .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); } } .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); } .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); } .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-600); } /* === team-about === */ .team-about p { max-width: 68ch; } /* === training-location === */ .training__inner { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 3rem; align-items: start; } @media (max-width: 768px) { .training__inner { grid-template-columns: 1fr; gap: 2.5rem; } } .training__table { width: 100%; margin-top: 1rem; border-collapse: collapse; } .training__table th, .training__table td { padding: 0.65rem 0; border-bottom: 1px solid var(--clr-glass-border); } .training__table th { font-weight: var(--fw-regular); text-align: left; } .training__table td { color: var(--clr-text-muted); text-align: right; } .training__address { display: flex; gap: 0.6rem; align-items: start; margin: 1rem 0 1.5rem; } .training__pin { flex: none; margin-top: 0.15rem; font-size: 1.3rem; color: var(--clr-accent); } /* === 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__list { display: grid; gap: 0.6rem; margin-top: 2rem; } .faq__item { background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); overflow: hidden; } .faq__q { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 1.25rem; font-size: var(--fs-600); cursor: pointer; list-style: none; } .faq__q::-webkit-details-marker { display: none; } .faq__q:focus-visible { outline: 2px solid var(--clr-text); outline-offset: -2px; } .faq__chevron { flex: none; font-size: 0.8em; color: var(--clr-accent); transition: transform var(--transition); } .faq__item[open] .faq__chevron { transform: rotate(180deg); } .faq__a { padding: 0 1.25rem 1.1rem; color: var(--clr-text-muted); } /* === 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; } .age-group__img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; } .age-group__body { display: grid; gap: 0.35rem; align-content: start; padding: 1rem 1.2rem 1.2rem; } .age-group__name { font-size: var(--fs-600); } .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; } .team-cards__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem; margin: 2.5rem 0 0; padding: 0; list-style: none; text-align: left; } .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; } .team-card__body { display: grid; gap: 0.35rem; align-content: start; padding: 1.1rem 1.25rem 1.25rem; } .team-card__name { font-size: var(--fs-600); } .team-card__meta { color: var(--clr-text-muted); font-size: var(--fs-500); } .team-card__cta { display: inline-flex; align-items: center; gap: 0.4rem; margin-top: 0.4rem; color: var(--clr-accent); font-size: var(--fs-500); } .team-card__arrow { transition: transform var(--transition); } .team-card:hover .team-card__arrow { transform: translateX(3px); }