/* ============================================================ COMPONENTS — eine Sektion pro Komponente, Banner-Kommentare ============================================================ */ /* === hero === */ .hero { position: relative; display: grid; align-items: end; /* svh statt vh: stabil gegenüber ein-/ausfahrender Browser-UI auf Phones. */ min-height: min(92vh, 900px); min-height: min(92svh, 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); min-height: min(60svh, 560px); padding-block: calc(var(--header-h) + 64px) var(--space-5xl); } /* Mobile: Höhe am Inhalt statt am Viewport orientieren — weniger Leer-Scroll. Startseiten-Hero lässt bewusst einen Streifen Folge-Inhalt anblitzen (Scroll-Affordance), Unterseiten-Heros kollabieren auf Überschrift + Teaser. */ @media (max-width: 768px) { .hero { min-height: min(82vh, 700px); min-height: min(82svh, 700px); padding-block: calc(var(--header-h) + 48px) var(--space-4xl); } .hero--compact { min-height: 0; padding-block: calc(var(--header-h) + 44px) var(--space-3xl); } } .hero__media { position: absolute; inset: 0; z-index: -1; /* Unten ausblenden statt mit grauem BG zudecken: der echte, dunkle texturierte Seiten-Hintergrund scheint durch → transparent & matcht den Grund exakt (kein graues, opakes Band mehr). */ -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 58%, transparent 92%); mask-image: linear-gradient(180deg, #000 0%, #000 58%, transparent 92%); } .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; } } /* Reine Schwarz-Abdunklung (kein grauer Fill) — der Auslauf zum Grund kommt aus der Mask auf .hero__media, hier wird nur schwärzer getönt. */ .hero__media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgb(0 0 0 / 0.45) 0%, rgb(0 0 0 / 0.15) 45%, rgb(0 0 0 / 0.5) 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: var(--space-xs); font-size: var(--fs-600); letter-spacing: var(--ls-wide); } .hero__text { margin-top: var(--space-s); max-width: 60ch; text-shadow: 0 1px 12px rgb(0 0 0 / 0.6); text-wrap: pretty; } /* Display-Hero: schmaleres Maß fürs Zentrieren — ausgewogene Zeilen statt vier Zeilen mit unruhigem Flatterrand. */ .hero--display .hero__text { max-width: 52ch; } .hero__actions { display: flex; flex-wrap: wrap; gap: var(--space-xs); margin-top: var(--space-xl); } /* Variante: Text mittig zentriert (z. B. Startseite) */ .hero--center { align-items: center; text-align: center; } .hero--center .hero__text { margin-inline: auto; } /* letter-spacing schiebt zentrierten Text optisch nach rechts (Spacing nach letztem Char). text-indent gleich dem letter-spacing-Wert kompensiert das. */ .hero--center .hero__tagline { text-indent: 0.14em; } .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(0 0 0 / 0.42) 0%, rgb(0 0 0 / 0.15) 45%, rgb(0 0 0 / 0.5) 100%); } /* Center+Display: kein Seitenverlauf, nur zentrales Abdunkeln für Lesbarkeit */ .hero--center.hero--display .hero__media::after { background: radial-gradient(ellipse 80% 60% at 50% 40%, rgb(10 10 10 / 0.5) 0%, transparent 100%), linear-gradient(180deg, rgb(0 0 0 / 0.4) 0%, rgb(0 0 0 / 0.14) 45%, rgb(0 0 0 / 0.5) 100%); } /* Kicker: einziges gesperrtes Versalien-Element im Hero — bewusst ohne Schmuck-Linien, damit die Typo-Hierarchie ruhig bleibt (Eyebrow → Titel → Subline → Text). */ .hero__kicker { margin-bottom: var(--space-m); font-size: var(--fs-500); text-transform: uppercase; letter-spacing: var(--ls-wider); /* Sperrung optisch kompensieren (Spacing nach letztem Zeichen). */ text-indent: 0.18em; color: rgb(255 255 255 / 0.85); } .hero--display .hero__title { font-size: var(--fs-1000); } /* Subline ruhig in Abel, Groß-/Kleinschreibung — konkurriert nicht mehr mit Kicker (gesperrte Versalien) und Coolvetica-Titel. */ .hero--display .hero__tagline { margin-top: var(--space-xs); font-family: var(--ff-body); font-size: var(--fs-550); font-weight: 400; letter-spacing: 0; text-indent: 0; text-transform: none; line-height: 1.35; color: rgb(255 255 255 / 0.92); } .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: var(--icon-l); 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: var(--space-s); margin-top: var(--space-2xl); } /* Mobil: Ein-Reihen-Swiper statt 2er-Grid — volle Bildgröße, natürliche Instagram-Geste. Fluchtet mit dem Text-Container; die angeschnittene Folgekarte ist die Wisch-Affordance, Scrollbar bleibt darum versteckt. */ @media (max-width: 600px) { .instagram__grid { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: min(72vw, 320px); gap: var(--space-xs); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; } .instagram__grid::-webkit-scrollbar { display: none; } .instagram__link { scroll-snap-align: start; } } .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: var(--fs-300); color: var(--clr-text); } .instagram__fallback { margin-top: var(--space-l); padding: var(--space-3xl); 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: var(--space-s); } /* === split (Bild/Text-Sektion) === */ .split__inner { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: var(--space-4xl); } /* 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); } /* Abgesetztes, dunkleres Band über die volle Breite — das Gegenstück zu --tinted, wenn eine Sektion sich nach unten statt nach oben abheben soll. */ .section--sunken { background: var(--clr-bg-deep); border-block: 1px solid rgb(255 255 255 / 0.08); } .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(var(--space-6xl), var(--space-5xl) + 3vw, var(--space-7xl)); } .split--flip .split__text { order: 2; } .split--flip .split__media { order: 1; } .split__text p { margin-top: var(--space-s); } .split__cta { margin-top: var(--space-l); } .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: var(--space-2xl); } .split--flip .split__text { order: 0; } .split--flip .split__media { order: 0; } } /* === stats === */ .stats { position: relative; padding-block: var(--space-7xl); 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: var(--space-2xl); text-align: center; } @media (max-width: 600px) { .stats__list { grid-template-columns: 1fr; } } .stats__item { display: grid; gap: var(--space-3xs); } .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: var(--ls-caps); color: var(--clr-text-muted); } /* === timeline (Vereinshistorie, Museums-Look) === */ .timeline-intro { max-width: 60ch; margin-inline: auto; padding-block: var(--space-3xl) 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: var(--space-4xl); } .timeline-nav__list { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2xs); padding: var(--space-2xs); 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: var(--ls-caps); 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: var(--space-6xl); padding-block: var(--space-s) var(--space-2xl); } .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: var(--space-s); } .timeline__event:nth-child(odd) .timeline__year { text-align: right; } /* Museums-Rahmen: Foto wie ein aufgezogener Print, leicht gedreht */ .timeline__figure { margin: 0; padding: var(--space-s) var(--space-s) var(--space-s); background: var(--clr-sepia-bg); 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: var(--space-s); font-size: var(--fs-500); line-height: 1.45; color: var(--clr-sepia-text); } /* 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: var(--space-3xl); } .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: var(--space-s); } .partners__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 220px)); justify-content: center; align-items: center; gap: var(--space-2xl); margin-block: var(--space-3xl); } .partners__item { display: grid; place-items: center; padding: var(--space-l); /* 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; } /* === sponsor-arguments === */ .sponsor-arguments__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-3xl) var(--space-4xl); list-style: none; padding: 0; } .sponsor-arguments__item { display: flex; gap: var(--space-m); align-items: flex-start; } .sponsor-arguments__icon { flex-shrink: 0; width: 2.5rem; height: 2.5rem; background: var(--clr-accent); border-radius: 8px; display: grid; place-items: center; font-size: var(--icon-s); color: #fff; margin-top: var(--space-3xs); } .sponsor-arguments__title { font-family: var(--ff-heading); font-size: var(--fs-675); text-transform: uppercase; line-height: var(--lh-heading); margin: 0 0 var(--space-2xs); } .sponsor-arguments__text { color: var(--clr-text-muted); font-size: var(--fs-500); line-height: var(--lh-body); margin: 0; } @media (max-width: 768px) { .sponsor-arguments__grid { grid-template-columns: 1fr; gap: var(--space-2xl); } } /* === sponsor-channels === */ .sponsor-channels > .container { text-align: center; } .sponsor-channels__intro { max-width: 65ch; margin-inline: auto; margin-top: var(--space-s); color: var(--clr-text-muted); } .sponsor-channels__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-l); margin-top: var(--space-3xl); list-style: none; padding: 0; align-items: stretch; } .sponsor-channels__card { background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-top: 3px solid var(--clr-accent); border-radius: var(--radius-card); padding: var(--space-2xl); display: flex; flex-direction: column; gap: 0; text-align: left; transition: background var(--transition), box-shadow var(--transition); } .sponsor-channels__card:hover { background: rgb(255 255 255 / 0.07); box-shadow: 0 8px 32px rgb(0 0 0 / 0.35); } .sponsor-channels__head { display: flex; flex-direction: column; align-items: flex-start; gap: 0; } .sponsor-channels__kicker { font-family: var(--ff-body); font-size: var(--fs-300); font-weight: var(--fw-bold); letter-spacing: var(--ls-wide); text-transform: uppercase; color: var(--clr-text-muted); margin: 0 0 var(--space-s); } .sponsor-channels__icon { width: 2.75rem; height: 2.75rem; background: var(--clr-accent); border-radius: 8px; display: grid; place-items: center; font-size: var(--icon-m); color: #fff; margin-bottom: var(--space-m); } .sponsor-channels__title { font-family: var(--ff-heading); font-size: var(--fs-700); text-transform: uppercase; line-height: var(--lh-heading); margin: 0 0 var(--space-xs); } .sponsor-channels__desc { color: var(--clr-text-muted); font-size: var(--fs-500); line-height: var(--lh-body); margin: 0; } .sponsor-channels__divider { border: none; border-top: 1px solid var(--clr-glass-border); margin: var(--space-l) 0; } .sponsor-channels__features { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-xs); flex: 1; } .sponsor-channels__features li { display: flex; align-items: center; gap: var(--space-xs); font-size: var(--fs-500); color: var(--clr-text); } .sponsor-channels__check { flex-shrink: 0; font-size: var(--icon-s); color: var(--clr-accent); } @media (max-width: 768px) { .sponsor-channels__grid { grid-template-columns: 1fr; } .sponsor-channels__title { font-size: var(--fs-700); } } @media (min-width: 769px) and (max-width: 992px) { .sponsor-channels__grid { grid-template-columns: repeat(2, 1fr); } .sponsor-channels__card:last-child:nth-child(odd) { grid-column: 1 / -1; max-width: 50%; margin-inline: auto; } } /* === persons (Ansprechpartner-Visitenkarten) === */ .persons > .container { text-align: center; } .persons__intro { margin-inline: auto; margin-top: var(--space-s); max-width: 60ch; color: var(--clr-text-muted); } /* Kurze Hairline unter der Bereichs-Überschrift */ .persons h2::after { content: ""; display: block; width: 2.5rem; height: 2px; margin: var(--space-2xs) auto 0; background: var(--clr-accent); } /* Max. 5 pro Reihe; unvollständige Reihen zentrieren sich automatisch */ .persons__grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--space-m); margin-top: var(--space-3xl); text-align: left; } /* Fixe Spaltenanzahl (z. B. 3 für 2×3-Layout auf der Startseite) */ .persons__grid--cols-3 { grid-template-columns: repeat(3, 1fr); } @media (max-width: 992px) { .persons__grid { grid-template-columns: repeat(3, 1fr); } } @media (max-width: 768px) { .persons__grid, .persons__grid--cols-3 { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 500px) { .persons__grid, .persons__grid--cols-3 { grid-template-columns: 1fr; } } .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: var(--space-3xs); padding: var(--space-s) var(--space-m) var(--space-m); /* 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%); } /* Kompaktere Kacheln im Ansprechpartner-Grid (faq-contact bleibt unberührt) */ .persons .person-card__media img { aspect-ratio: 4 / 4.2; } .persons .person-card__body { padding: var(--space-xs) var(--space-s) var(--space-s); } .person-card__department { font-size: var(--fs-650); letter-spacing: var(--ls-tight); } .person-card__name { color: var(--clr-text-muted); } .person-card__contact { display: inline-flex; align-items: center; gap: var(--space-2xs); margin-top: var(--space-2xs); padding-block: var(--space-3xs); color: var(--clr-text); text-decoration: none; font-size: var(--fs-500); } /* Zweiter Kontakt-Link (z. B. WhatsApp) sitzt enger unter dem ersten */ .person-card__contact + .person-card__contact { margin-top: 0; } .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; } /* === mitmachen / positions (Ehrenamt-Stellen) === */ /* Filter-Stripe (Alle/Fußball/Turnen) — Unterstrich-Tabbar wie group-tabs */ .filter-bar { display: flex; flex-wrap: wrap; margin-bottom: var(--space-2xl); } /* Gemeinsame Tab-Basis für Filter-Leiste und Gruppen-Tabs. Beide waren bis auf flex-shrink und 4px Innenabstand zeichengleich implementiert. Aktiv-Zustand kommt je nach Muster über aria-pressed (Filter) oder aria-selected (Tabs). Fokus liegt inset, damit der Ring nicht in den Nachbar-Tab ragt. */ .tab { display: inline-flex; align-items: center; min-height: var(--tap-min); padding: var(--space-xs) var(--space-m); background: none; border: none; box-shadow: inset 0 -2px 0 var(--clr-glass-border); font-family: var(--ff-body); font-size: var(--fs-500); color: var(--clr-text-muted); cursor: pointer; white-space: nowrap; transition: color var(--transition), box-shadow var(--transition); } .tab:hover { color: var(--clr-text); } .tab[aria-pressed="true"], .tab[aria-selected="true"] { color: var(--clr-text); box-shadow: inset 0 -2px 0 var(--clr-accent); } .tab:focus-visible { outline: var(--focus-ring); outline-offset: -2px; } /* Erster Filter bündig zur Textkante links. */ .filter-bar__tab:first-child { padding-inline-start: 0; } .positions__list { display: grid; gap: var(--space-l); } .positions__empty { margin: 0; padding: var(--space-3xl) 0; max-width: 60ch; color: var(--clr-text-muted); font-size: var(--fs-500); line-height: var(--lh-body); } .positions__empty[hidden] { display: none; } .positions__empty a { color: var(--clr-text); text-decoration: underline; text-underline-offset: 0.2em; } /* "Warum mithelfen?": geteiltes sponsor-arguments-Raster, hier mit Überschrift (nur auf dieser Seite — Partner-/Sportheim-Variante bleibt ohne Heading unberührt) */ #warum-mithelfen > .container { text-align: center; } #warum-mithelfen .sponsor-arguments__intro { max-width: 60ch; margin: var(--space-s) auto 0; color: var(--clr-text-muted); } #warum-mithelfen .sponsor-arguments__grid { margin-top: var(--space-3xl); text-align: left; } /* Aufklappbare Stelle (details/summary, FAQ-Mechanik): eingeklappt nur Bereich + Titel */ .position-card { background: var(--clr-glass-bg); border: 1px solid var(--clr-glass-border); border-radius: var(--radius-card); overflow: hidden; transition: border-color var(--transition); } .position-card[open] { border-color: var(--clr-glass-border-strong, var(--clr-glass-border)); } /* display:grid o. Ä. würde sonst [hidden]{display:none} überschreiben — explizit halten */ .position-card[hidden] { display: none; } /* Klickzeile: Icon + Bereich/Titel + Chevron */ .position-card__head { display: flex; align-items: center; gap: var(--space-s); padding: var(--space-m) var(--space-l); cursor: pointer; list-style: none; transition: background var(--transition); } .position-card__head::-webkit-details-marker { display: none; } .position-card__head:hover { background: rgb(255 255 255 / 0.04); } .position-card__head:focus-visible { outline: var(--focus-ring); outline-offset: -2px; } .position-card__icon { flex-shrink: 0; width: 2.5rem; height: 2.5rem; background: var(--clr-accent); border-radius: 8px; display: grid; place-items: center; font-size: var(--icon-m); color: #fff; } .position-card__heading { flex: 1; min-width: 0; } .position-card__area { display: block; font-family: var(--ff-body); font-size: var(--fs-300); font-weight: var(--fw-bold); letter-spacing: var(--ls-wide); text-transform: uppercase; color: var(--clr-text-muted); margin: 0 0 var(--space-3xs); } .position-card__title { font-family: var(--ff-heading); font-size: var(--fs-675); text-transform: uppercase; line-height: var(--lh-heading); margin: 0; } .position-card__chevron { flex: none; font-size: var(--icon-s); color: var(--clr-text-muted); transition: transform var(--transition), color var(--transition); } .position-card[open] .position-card__chevron { transform: rotate(180deg); color: var(--clr-text); } /* Aufgeklappter Inhalt: Detailspalte + Ansprechpartner */ .position-card__body { display: grid; grid-template-columns: 1fr minmax(0, 16rem); gap: var(--space-3xl); align-items: start; padding: 0 var(--space-l) var(--space-l) var(--space-6xl); animation: faq-reveal 260ms ease; } .position-card__main > :first-child { margin-top: 0; } .position-card__summary { color: var(--clr-text-muted); font-size: var(--fs-500); line-height: var(--lh-body); margin: 0; } .position-card__tasks { list-style: none; padding: 0; margin: var(--space-m) 0 0; display: flex; flex-direction: column; gap: var(--space-xs); } .position-card__tasks li { display: flex; align-items: flex-start; gap: var(--space-xs); font-size: var(--fs-500); line-height: var(--lh-body); } .position-card__check { flex-shrink: 0; margin-top: 0.2em; font-size: var(--icon-s); color: var(--clr-accent); } .position-card__meta { margin: var(--space-m) 0 0; display: grid; gap: var(--space-xs); } .position-card__meta-row { display: grid; gap: var(--space-3xs); } .position-card__meta dt { display: inline-flex; align-items: center; gap: var(--space-2xs); font-size: var(--fs-300); font-weight: var(--fw-bold); letter-spacing: var(--ls-caps); text-transform: uppercase; color: var(--clr-text-muted); } .position-card__meta-icon { color: var(--clr-accent); } .position-card__meta dd { margin: 0; font-size: var(--fs-500); line-height: var(--lh-body); } /* Kompakte Kontakt-Karte: flacheres Foto als im Ansprechpartner-Grid */ .position-card__contact .person-card__media img { aspect-ratio: 4 / 3.4; } @media (max-width: 768px) { .position-card__body { grid-template-columns: 1fr; gap: var(--space-l); padding: 0 var(--space-l) var(--space-l); } .position-card__contact { max-width: 18rem; } } /* === contact form === */ .contact__inner { display: grid; gap: var(--space-3xl); justify-items: center; } .contact__intro { max-width: 60ch; text-align: center; } .contact__intro p { margin-top: var(--space-s); } .form { display: grid; gap: var(--space-m); width: 100%; max-width: 720px; padding: var(--space-2xl); 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: var(--space-m); } @media (max-width: 600px) { .form__row { grid-template-columns: 1fr; } } /* Floating Label: Label liegt im leeren Feld wie ein Platzhalter und wandert bei Fokus oder Inhalt nach oben. Rein visuell — das echte