Zweiter Teil der Konsolidierung. Vorher standen 31 font-size-Werte außerhalb der Skala — beim Durchgehen stellte sich heraus, dass 20 davon gar keine Textgrößen sind: der icon()-Helper rendert 1em, also steuerte font-size dort die Icon-Größe. Dafür gibt es jetzt eine eigene, kleine Skala (--icon-s/m/l/xl in rem, --icon-inline-sm/--icon-inline/--icon-inline-lg in em für Icons, die im Textfluss mitwachsen sollen). Elf Ad-hoc-Werte fallen damit auf sieben Stufen. h4–h6 laufen nicht mehr über Coolvetica. Sie lagen mit 26px und 21px unter der --fs-650-Grenze aus CLAUDE.md, ab der der Condensed-Schnitt in Uppercase unleserlich wird — die Regel war also nur dokumentiert, nicht durchsetzbar. Jetzt tragen h1–h3 Coolvetica (alle über der Grenze) und h4–h6 Abel mit Sperrung. Bezeichnend: das einzige <h4> im Markup hatte sich genau dieses Muster bereits von Hand gebaut. Die Basisregel liefert es jetzt, die Komponente gibt ihre drei Duplikat-Deklarationen ab — sichtbar ändert sich dadurch nichts. Neue Stufen schließen die Lücken: --fs-550 (fluider Lead), --fs-690 (Karten- Überschrift) und --fs-1000 (Display-Hero). Vier fast deckungsgleiche clamp()- Rampen für Karten-Überschriften (bento__heading, bento__stat-value, group-card__name, team-card__name) laufen jetzt über --fs-690; team-card__name wächst dabei am Desktop um ~5px, die anderen drei bleiben im 1px-Bereich. Die Wappen-Initialen im Matchcenter hingen an zwei Mini-Schriftgrößen (10,4 und 11,2px) unterhalb der Skala. Sie sind in Wahrheit ~0,4 × Kreisdurchmesser, folgen jetzt also --crest-size statt einer eigenen font-size. Nebenbei fallen drei redundante Doppel-Selektoren weg: .crest--initials trägt immer auch .crest. Ebenfalls tokenisiert: 27 letter-spacing-Werte mit elf verschiedenen Zahlen auf vier Stufen (--ls-tight/caps/wide/wider), maximale Abweichung 0,02em. Danach steht kein font-size- und kein letter-spacing-Wert mehr außerhalb von tokens.css. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MSsVdooFLgPA8gPFp7HwZU
280 lines
16 KiB
PHP
280 lines
16 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
/**
|
||
* Datenschutzerklärung — zugeschnitten auf den tatsächlichen Stack:
|
||
* komplett self-hosted, keine Tracker/Analyse/Werbe-Dienste, keine externen
|
||
* Fonts/Maps/Embeds. Einzige Verarbeitungen: Server-Logs (Hoster), die drei
|
||
* Formulare (Versand über den All-Inkl-Mailserver, also derselbe Auftrags-
|
||
* verarbeiter wie beim Hosting), server-seitig gecachter Instagram-Feed
|
||
* (Bilder von unserer Domain). Vereinsdaten aus club.json.
|
||
*/
|
||
$club = json_load('club');
|
||
$addr = $club['address'] ?? [];
|
||
$dpo = $club['data_protection_contact'] ?? '';
|
||
|
||
$meta = [
|
||
'title' => 'Datenschutzerklärung',
|
||
'description' => 'Datenschutzerklärung des TSV 1908 Kulmbach e. V. – welche Daten beim Besuch der Website verarbeitet werden. Self-hosted, ohne Tracking und Drittanbieter.',
|
||
'schema' => page_schema([
|
||
['name' => 'Startseite', 'slug' => ''],
|
||
['name' => 'Datenschutz', 'slug' => 'datenschutz'],
|
||
]),
|
||
];
|
||
?>
|
||
<section class="section legal">
|
||
<div class="container">
|
||
<div class="legal__head">
|
||
<p class="legal__kicker">Rechtliches</p>
|
||
<h1>Datenschutzerklärung</h1>
|
||
<p class="legal__lead">
|
||
Der Schutz deiner persönlichen Daten ist uns wichtig. Diese Website ist
|
||
bewusst datensparsam gebaut: Sie lädt keine externen Schriften, Karten,
|
||
Skripte oder Tracking-Dienste – dein Browser kontaktiert ausschließlich
|
||
unseren eigenen Server.
|
||
</p>
|
||
</div>
|
||
|
||
<div class="legal__body">
|
||
<section>
|
||
<h2>Verantwortlicher</h2>
|
||
<p>Verantwortlich für die Datenverarbeitung auf dieser Website ist:</p>
|
||
<div class="legal__card">
|
||
<address>
|
||
<strong><?= e($club['legal_name']) ?></strong><br>
|
||
<?= e($addr['street']) ?><br>
|
||
<?= e($addr['zip']) ?> <?= e($addr['city']) ?><br>
|
||
<br>
|
||
E-Mail: <a href="mailto:<?= e($club['email']) ?>"><?= e($club['email']) ?></a>
|
||
</address>
|
||
</div>
|
||
<?php if ($dpo !== ''): ?>
|
||
<p class="legal__muted">
|
||
Ansprechpartner für Fragen zum Datenschutz: <?= e($dpo) ?>,
|
||
erreichbar unter <a href="mailto:<?= e($club['email']) ?>"><?= e($club['email']) ?></a>.
|
||
</p>
|
||
<?php endif; ?>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Grundsätzliches</h2>
|
||
<p>
|
||
Wir verarbeiten personenbezogene Daten nur im Rahmen der geltenden
|
||
Datenschutzgesetze, insbesondere der Datenschutz-Grundverordnung (DSGVO)
|
||
und des Bundesdatenschutzgesetzes (BDSG). „Personenbezogene Daten“ sind
|
||
alle Informationen, die sich auf eine identifizierte oder identifizierbare
|
||
Person beziehen. Eine Nutzung unserer Website ist grundsätzlich ohne Angabe
|
||
personenbezogener Daten möglich.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Aufruf der Website & Server-Logfiles</h2>
|
||
<p>
|
||
Unsere Website wird bei folgendem Dienstleister gehostet:
|
||
</p>
|
||
<div class="legal__card">
|
||
<address>
|
||
<strong>ALL-INKL.COM – Neue Medien Münnich</strong><br>
|
||
Inhaber: René Münnich<br>
|
||
Hauptstraße 68<br>
|
||
02742 Friedersdorf
|
||
</address>
|
||
</div>
|
||
<p>
|
||
Bei jedem Aufruf unserer Website werden durch unseren Webhoster automatisch
|
||
Informationen erfasst, die dein Browser übermittelt und die technisch
|
||
erforderlich sind, um die Seite auszuliefern. Erfasst werden:
|
||
</p>
|
||
<ul>
|
||
<li>die aufgerufene Adresse (URL) und die zuvor besuchte Seite (Referrer)</li>
|
||
<li>Datum und Uhrzeit des Zugriffs</li>
|
||
<li>verwendeter Browser und Betriebssystem</li>
|
||
<li>die IP-Adresse des anfragenden Geräts</li>
|
||
</ul>
|
||
<p>
|
||
Diese Daten dienen ausschließlich dem technischen Betrieb, der Sicherheit
|
||
und der Stabilität der Website und werden nicht mit anderen Datenquellen
|
||
zusammengeführt. Rechtsgrundlage ist unser berechtigtes Interesse an einer
|
||
sicheren und funktionsfähigen Website (Art. 6 Abs. 1 lit. f DSGVO). Die
|
||
Logdaten werden nach kurzer Zeit automatisch gelöscht.
|
||
</p>
|
||
<p class="legal__muted">
|
||
Unser Webhoster verarbeitet diese Daten in unserem Auftrag auf Grundlage
|
||
eines Vertrags zur Auftragsverarbeitung (Art. 28 DSGVO).
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Verschlüsselung (SSL/TLS)</h2>
|
||
<p>
|
||
Diese Website nutzt aus Sicherheitsgründen eine SSL- bzw. TLS-Verschlüsselung.
|
||
Eine verschlüsselte Verbindung erkennst du am „https://“ in der Adresszeile
|
||
deines Browsers. Daten, die du an uns übermittelst, können dadurch nicht ohne
|
||
Weiteres von Dritten mitgelesen werden.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Cookies</h2>
|
||
<p>
|
||
Diese Website setzt <strong>keine Cookies zu Analyse-, Marketing- oder
|
||
Tracking-Zwecken</strong> und bindet keine Dienste ein, die solche Cookies
|
||
setzen würden. Aus diesem Grund benötigen wir auch kein Cookie-Banner.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Formulare & Kontaktaufnahme</h2>
|
||
<p>
|
||
Wenn du uns über eines unserer Formulare oder per E-Mail kontaktierst,
|
||
verarbeiten wir die von dir angegebenen Daten, um deine Anfrage zu bearbeiten.
|
||
Über das <strong>Kontaktformular</strong> sind das:
|
||
</p>
|
||
<ul>
|
||
<li>Name (Pflichtangabe)</li>
|
||
<li>E-Mail-Adresse (Pflichtangabe)</li>
|
||
<li>Telefonnummer (freiwillig)</li>
|
||
<li>dein Interessensgebiet, Betreff und deine Nachricht</li>
|
||
</ul>
|
||
<p>
|
||
Über den <strong>Mitgliedsantrag</strong> verarbeiten wir zusätzlich Vorname,
|
||
Nachname, Geburtsdatum, Anschrift und die gewählte Beitragsklasse. Diese Angaben
|
||
brauchen wir, um die Mitgliedschaft vorzubereiten; die Beitrittserklärung senden
|
||
wir dir anschließend per Post zu. Bankdaten erheben wir online bewusst nicht.
|
||
Rechtsgrundlage ist hier Art. 6 Abs. 1 lit. b DSGVO (Anbahnung und Durchführung
|
||
der Mitgliedschaft). An die von dir angegebene Adresse senden wir außerdem eine
|
||
Eingangsbestätigung.
|
||
</p>
|
||
<p>
|
||
Über das Formular <strong>Sportheimbuchung</strong> verarbeiten wir Name,
|
||
E-Mail-Adresse, optional die Telefonnummer sowie Art, Datum und Personenzahl
|
||
deiner Veranstaltung, um dir ein Angebot machen zu können.
|
||
</p>
|
||
<p>
|
||
Rechtsgrundlage ist deine Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), die du
|
||
mit dem Absenden erteilst, sowie unser berechtigtes Interesse bzw. die
|
||
Anbahnung eines (Mitgliedschafts-)Verhältnisses an der Beantwortung deiner
|
||
Anfrage (Art. 6 Abs. 1 lit. f und b DSGVO). Die Daten werden gespeichert, bis
|
||
deine Anfrage abschließend bearbeitet ist und keine gesetzlichen
|
||
Aufbewahrungspflichten entgegenstehen.
|
||
</p>
|
||
<p>
|
||
Der technische Versand der Formular-Nachrichten als E-Mail läuft über den
|
||
Mailserver unseres Webhosters ALL-INKL.COM (siehe oben) — die Daten bleiben
|
||
damit innerhalb der dort genannten Auftragsverarbeitung. Die Übertragung zum
|
||
Mailserver ist verschlüsselt (STARTTLS). Einen zusätzlichen
|
||
E-Mail-Dienstleister setzen wir nicht ein.
|
||
</p>
|
||
<p class="legal__muted">
|
||
Hinweis: Zum Schutz vor automatisiertem Spam verwenden wir ein verstecktes
|
||
Pflichtfeld und einen signierten Zeitstempel. Außerdem begrenzen wir, wie oft
|
||
von einem Anschluss abgesendet werden kann. Dafür speichern wir deine
|
||
IP-Adresse nicht im Klartext, sondern nur als Hashwert, der mit einem
|
||
geheimen Schlüssel gebildet wird; die Zähler werden spätestens nach 24 Stunden
|
||
gelöscht. Externe Dienste (z. B. reCAPTCHA) binden wir nicht ein.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Keine Analyse-, Tracking- oder Werbedienste</h2>
|
||
<p>
|
||
Wir verzichten bewusst vollständig auf Dienste, die dein Verhalten
|
||
auswerten oder Daten an Dritte weitergeben. Insbesondere setzen wir
|
||
<strong>nicht</strong> ein:
|
||
</p>
|
||
<ul>
|
||
<li>keine Webanalyse (z. B. Google Analytics, Matomo, Hotjar)</li>
|
||
<li>keine externen Schriftarten – alle Fonts liegen auf unserem Server</li>
|
||
<li>keine eingebetteten Karten (z. B. Google Maps) und keine Video-Embeds</li>
|
||
<li>keine Social-Media-Plugins, „Like“-Buttons oder Tracking-Pixel</li>
|
||
<li>keine Werbenetzwerke oder Conversion-Tracking</li>
|
||
</ul>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Instagram-Inhalte auf dieser Website</h2>
|
||
<p>
|
||
Auf unserer Website zeigen wir aktuelle Beiträge unseres öffentlichen
|
||
Instagram-Profils. Diese Inhalte werden <strong>nicht</strong> über ein
|
||
Instagram-Plugin oder einen externen Einbettungscode geladen. Stattdessen
|
||
rufen wir die Beiträge in regelmäßigen Abständen serverseitig ab, speichern
|
||
sie auf unserem eigenen Server und liefern Bilder und Texte ausschließlich von
|
||
unserer Domain aus. Beim Ansehen unserer Website wird dadurch
|
||
<strong>keine Verbindung zu Instagram oder Meta hergestellt</strong> und es
|
||
werden keine Daten an diese Anbieter übertragen. Erst wenn du aktiv einen
|
||
Link zu Instagram anklickst, verlässt du unsere Website (siehe nächster
|
||
Abschnitt).
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Externe Links & Social Media</h2>
|
||
<p>
|
||
Unsere Website enthält Links zu externen Angeboten, etwa zu unseren Profilen
|
||
bei Instagram und Facebook oder zu einer Routenplanung über Google Maps. Wenn
|
||
du einen solchen Link anklickst, verlässt du unsere Website und es gelten die
|
||
Datenschutzbestimmungen des jeweiligen Anbieters. Auf deren Datenverarbeitung
|
||
haben wir keinen Einfluss.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Foto- und Videoaufnahmen</h2>
|
||
<p>
|
||
Im Rahmen unseres Vereinslebens, von Spielen und Veranstaltungen entstehen
|
||
Foto- und Videoaufnahmen, die wir zur Darstellung des Vereins auf dieser
|
||
Website, in unseren Social-Media-Kanälen und in Printmedien verwenden. Die
|
||
Veröffentlichung erfolgt auf Grundlage einer Einwilligung
|
||
(Art. 6 Abs. 1 lit. a DSGVO) bzw. unseres berechtigten Interesses an der
|
||
Vereinsöffentlichkeitsarbeit (Art. 6 Abs. 1 lit. f DSGVO). Wenn du mit der
|
||
Veröffentlichung einer dich zeigenden Aufnahme nicht einverstanden bist,
|
||
genügt eine formlose Nachricht an
|
||
<a href="mailto:<?= e($club['email']) ?>"><?= e($club['email']) ?></a> – wir
|
||
entfernen die entsprechende Aufnahme dann zeitnah.
|
||
</p>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Deine Rechte</h2>
|
||
<p>Dir stehen hinsichtlich deiner personenbezogenen Daten folgende Rechte zu:</p>
|
||
<ul>
|
||
<li>Recht auf Auskunft (Art. 15 DSGVO)</li>
|
||
<li>Recht auf Berichtigung (Art. 16 DSGVO)</li>
|
||
<li>Recht auf Löschung (Art. 17 DSGVO)</li>
|
||
<li>Recht auf Einschränkung der Verarbeitung (Art. 18 DSGVO)</li>
|
||
<li>Recht auf Datenübertragbarkeit (Art. 20 DSGVO)</li>
|
||
<li>Recht auf Widerspruch gegen die Verarbeitung (Art. 21 DSGVO)</li>
|
||
</ul>
|
||
<p>
|
||
Eine erteilte Einwilligung kannst du jederzeit mit Wirkung für die Zukunft
|
||
widerrufen. Zur Ausübung deiner Rechte genügt eine Nachricht an die oben
|
||
genannten Kontaktdaten.
|
||
</p>
|
||
<p>
|
||
Außerdem hast du das Recht, dich bei einer Datenschutz-Aufsichtsbehörde zu
|
||
beschweren. Die für uns zuständige Behörde ist:
|
||
</p>
|
||
<div class="legal__card">
|
||
<address>
|
||
<strong>Bayerisches Landesamt für Datenschutzaufsicht (BayLDA)</strong><br>
|
||
Promenade 18<br>
|
||
91522 Ansbach
|
||
</address>
|
||
</div>
|
||
</section>
|
||
|
||
<section>
|
||
<h2>Aktualität dieser Datenschutzerklärung</h2>
|
||
<p class="legal__muted">
|
||
Stand: <?= e(date('m/Y')) ?>. Durch die Weiterentwicklung unserer Website
|
||
oder geänderte gesetzliche Vorgaben kann es nötig werden, diese
|
||
Datenschutzerklärung anzupassen. Es gilt jeweils die hier veröffentlichte
|
||
aktuelle Fassung.
|
||
</p>
|
||
</section>
|
||
</div>
|
||
</div>
|
||
</section>
|