Initial commit: Backup der Webseiten
- zoesch.de - blitzkiste.net - gruene-hassberge (norbert.zoesch.de) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
1737
gruene-hassberge/css/styles.css
Normal file
1737
gruene-hassberge/css/styles.css
Normal file
File diff suppressed because it is too large
Load Diff
662
gruene-hassberge/data/kandidaten.json
Normal file
662
gruene-hassberge/data/kandidaten.json
Normal file
@@ -0,0 +1,662 @@
|
||||
[
|
||||
{
|
||||
"name": "Kim Davey",
|
||||
"position": "Kreistagskandidatin, Listenplatz 1",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Bildung, Familie.",
|
||||
"topics": [
|
||||
"Bildung",
|
||||
"Familie",
|
||||
"Soziales"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Norbert Zösch",
|
||||
"position": "Kandidat für das Landratsamt, Listenplatz 2",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Klimaschutz, ÖPNV.",
|
||||
"topics": [
|
||||
"Klimaschutz",
|
||||
"ÖPNV",
|
||||
"Digitalisierung"
|
||||
],
|
||||
"image": "images/DSC09400.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Margit Pickel-Schmitt",
|
||||
"position": "Kreistagskandidatin, Listenplatz 3",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wohnraum, Integration.",
|
||||
"topics": [
|
||||
"Wohnraum",
|
||||
"Integration",
|
||||
"Jugend"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1559839734-2b71ea197ec2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Harald Kuhn",
|
||||
"position": "Kreistagskandidat, Listenplatz 4",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Landwirtschaft, Naturschutz.",
|
||||
"topics": [
|
||||
"Landwirtschaft",
|
||||
"Naturschutz",
|
||||
"Regionalität"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Andrea Werner",
|
||||
"position": "Kreistagskandidatin, Listenplatz 5",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Gesundheit, Pflege.",
|
||||
"topics": [
|
||||
"Gesundheit",
|
||||
"Pflege",
|
||||
"Ländlicher Raum"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1589571894960-20bbe2828d0a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Christoph Appel",
|
||||
"position": "Kreistagskandidat, Listenplatz 6",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wirtschaft, Innovation.",
|
||||
"topics": [
|
||||
"Wirtschaft",
|
||||
"Innovation",
|
||||
"Erneuerbare Energien"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1560250097-0b93528c311a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Anita Amend",
|
||||
"position": "Kreistagskandidatin, Listenplatz 7",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Kultur, Kreativwirtschaft.",
|
||||
"topics": [
|
||||
"Kultur",
|
||||
"Kreativwirtschaft",
|
||||
"Tourismus"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Felix Zösch",
|
||||
"position": "Kreistagskandidat, Listenplatz 8",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Verkehr, Fahrradinfrastruktur.",
|
||||
"topics": [
|
||||
"Verkehr",
|
||||
"Fahrradinfrastruktur",
|
||||
"Barrierefreiheit"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Anna Luckhardt",
|
||||
"position": "Kreistagskandidatin, Listenplatz 9",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Energiewende, Photovoltaik.",
|
||||
"topics": [
|
||||
"Energiewende",
|
||||
"Photovoltaik",
|
||||
"Windkraft"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1551836022-d5d88e9218df?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Klaus Schineller",
|
||||
"position": "Kreistagskandidat, Listenplatz 10",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Digitalisierung, Breitband.",
|
||||
"topics": [
|
||||
"Digitalisierung",
|
||||
"Breitband",
|
||||
"E-Government"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Rotraut Arnold",
|
||||
"position": "Kreistagskandidatin, Listenplatz 11",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Bildung, Familie.",
|
||||
"topics": [
|
||||
"Bildung",
|
||||
"Familie",
|
||||
"Soziales"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Christian Ruser",
|
||||
"position": "Kreistagskandidat, Listenplatz 12",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Klimaschutz, ÖPNV.",
|
||||
"topics": [
|
||||
"Klimaschutz",
|
||||
"ÖPNV",
|
||||
"Digitalisierung"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Barbara Körpert",
|
||||
"position": "Kreistagskandidatin, Listenplatz 13",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wohnraum, Integration.",
|
||||
"topics": [
|
||||
"Wohnraum",
|
||||
"Integration",
|
||||
"Jugend"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1559839734-2b71ea197ec2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Josef Finkernagel",
|
||||
"position": "Kreistagskandidat, Listenplatz 14",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Landwirtschaft, Naturschutz.",
|
||||
"topics": [
|
||||
"Landwirtschaft",
|
||||
"Naturschutz",
|
||||
"Regionalität"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Verena Ruff",
|
||||
"position": "Kreistagskandidatin, Listenplatz 15",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Gesundheit, Pflege.",
|
||||
"topics": [
|
||||
"Gesundheit",
|
||||
"Pflege",
|
||||
"Ländlicher Raum"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1589571894960-20bbe2828d0a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Mario Pfaff",
|
||||
"position": "Kreistagskandidat, Listenplatz 16",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wirtschaft, Innovation.",
|
||||
"topics": [
|
||||
"Wirtschaft",
|
||||
"Innovation",
|
||||
"Erneuerbare Energien"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1560250097-0b93528c311a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Renate Bayer",
|
||||
"position": "Kreistagskandidatin, Listenplatz 17",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Kultur, Kreativwirtschaft.",
|
||||
"topics": [
|
||||
"Kultur",
|
||||
"Kreativwirtschaft",
|
||||
"Tourismus"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Stefan Rümer",
|
||||
"position": "Kreistagskandidat, Listenplatz 18",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Verkehr, Fahrradinfrastruktur.",
|
||||
"topics": [
|
||||
"Verkehr",
|
||||
"Fahrradinfrastruktur",
|
||||
"Barrierefreiheit"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Cornelia Winterstein-Bötsch",
|
||||
"position": "Kreistagskandidatin, Listenplatz 19",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Energiewende, Photovoltaik.",
|
||||
"topics": [
|
||||
"Energiewende",
|
||||
"Photovoltaik",
|
||||
"Windkraft"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1551836022-d5d88e9218df?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Julian Bayer",
|
||||
"position": "Kreistagskandidat, Listenplatz 20",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Digitalisierung, Breitband.",
|
||||
"topics": [
|
||||
"Digitalisierung",
|
||||
"Breitband",
|
||||
"E-Government"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Federica Salomon Lume Pereira",
|
||||
"position": "Kreistagskandidatin, Listenplatz 21",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Bildung, Familie.",
|
||||
"topics": [
|
||||
"Bildung",
|
||||
"Familie",
|
||||
"Soziales"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Willi Knieß",
|
||||
"position": "Kreistagskandidat, Listenplatz 22",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Klimaschutz, ÖPNV.",
|
||||
"topics": [
|
||||
"Klimaschutz",
|
||||
"ÖPNV",
|
||||
"Digitalisierung"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Katrin Müller",
|
||||
"position": "Kreistagskandidatin, Listenplatz 23",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wohnraum, Integration.",
|
||||
"topics": [
|
||||
"Wohnraum",
|
||||
"Integration",
|
||||
"Jugend"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1559839734-2b71ea197ec2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Markus Kuhn",
|
||||
"position": "Kreistagskandidat, Listenplatz 24",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Landwirtschaft, Naturschutz.",
|
||||
"topics": [
|
||||
"Landwirtschaft",
|
||||
"Naturschutz",
|
||||
"Regionalität"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Cornelia Klaus",
|
||||
"position": "Kreistagskandidatin, Listenplatz 25",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Gesundheit, Pflege.",
|
||||
"topics": [
|
||||
"Gesundheit",
|
||||
"Pflege",
|
||||
"Ländlicher Raum"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1589571894960-20bbe2828d0a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Martin Hornung",
|
||||
"position": "Kreistagskandidat, Listenplatz 26",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wirtschaft, Innovation.",
|
||||
"topics": [
|
||||
"Wirtschaft",
|
||||
"Innovation",
|
||||
"Erneuerbare Energien"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1560250097-0b93528c311a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Claudia Woy-Dünninger",
|
||||
"position": "Kreistagskandidatin, Listenplatz 27",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Kultur, Kreativwirtschaft.",
|
||||
"topics": [
|
||||
"Kultur",
|
||||
"Kreativwirtschaft",
|
||||
"Tourismus"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Roland Dietz",
|
||||
"position": "Kreistagskandidat, Listenplatz 28",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Verkehr, Fahrradinfrastruktur.",
|
||||
"topics": [
|
||||
"Verkehr",
|
||||
"Fahrradinfrastruktur",
|
||||
"Barrierefreiheit"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Ulrike Müller",
|
||||
"position": "Kreistagskandidatin, Listenplatz 29",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Energiewende, Photovoltaik.",
|
||||
"topics": [
|
||||
"Energiewende",
|
||||
"Photovoltaik",
|
||||
"Windkraft"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1551836022-d5d88e9218df?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Thomas Bauer",
|
||||
"position": "Kreistagskandidat, Listenplatz 30",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Digitalisierung, Breitband.",
|
||||
"topics": [
|
||||
"Digitalisierung",
|
||||
"Breitband",
|
||||
"E-Government"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Melanie Koch",
|
||||
"position": "Kreistagskandidatin, Listenplatz 31",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Bildung, Familie.",
|
||||
"topics": [
|
||||
"Bildung",
|
||||
"Familie",
|
||||
"Soziales"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Dieter Heller",
|
||||
"position": "Kreistagskandidat, Listenplatz 32",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Klimaschutz, ÖPNV.",
|
||||
"topics": [
|
||||
"Klimaschutz",
|
||||
"ÖPNV",
|
||||
"Digitalisierung"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Barbara Hahnlein",
|
||||
"position": "Kreistagskandidatin, Listenplatz 33",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wohnraum, Integration.",
|
||||
"topics": [
|
||||
"Wohnraum",
|
||||
"Integration",
|
||||
"Jugend"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1559839734-2b71ea197ec2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Karl Hellwig",
|
||||
"position": "Kreistagskandidat, Listenplatz 34",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Landwirtschaft, Naturschutz.",
|
||||
"topics": [
|
||||
"Landwirtschaft",
|
||||
"Naturschutz",
|
||||
"Regionalität"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Susanne Schick",
|
||||
"position": "Kreistagskandidatin, Listenplatz 35",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Gesundheit, Pflege.",
|
||||
"topics": [
|
||||
"Gesundheit",
|
||||
"Pflege",
|
||||
"Ländlicher Raum"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1589571894960-20bbe2828d0a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Herbert Seidel",
|
||||
"position": "Kreistagskandidat, Listenplatz 36",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wirtschaft, Innovation.",
|
||||
"topics": [
|
||||
"Wirtschaft",
|
||||
"Innovation",
|
||||
"Erneuerbare Energien"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1560250097-0b93528c311a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Pia Rückert",
|
||||
"position": "Kreistagskandidatin, Listenplatz 37",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Kultur, Kreativwirtschaft.",
|
||||
"topics": [
|
||||
"Kultur",
|
||||
"Kreativwirtschaft",
|
||||
"Tourismus"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Oliver Kröner",
|
||||
"position": "Kreistagskandidat, Listenplatz 38",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Verkehr, Fahrradinfrastruktur.",
|
||||
"topics": [
|
||||
"Verkehr",
|
||||
"Fahrradinfrastruktur",
|
||||
"Barrierefreiheit"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Jutta Appel",
|
||||
"position": "Kreistagskandidatin, Listenplatz 39",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Energiewende, Photovoltaik.",
|
||||
"topics": [
|
||||
"Energiewende",
|
||||
"Photovoltaik",
|
||||
"Windkraft"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1551836022-d5d88e9218df?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Andreas Bierlein",
|
||||
"position": "Kreistagskandidat, Listenplatz 40",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Digitalisierung, Breitband.",
|
||||
"topics": [
|
||||
"Digitalisierung",
|
||||
"Breitband",
|
||||
"E-Government"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Annika Bauer",
|
||||
"position": "Kreistagskandidatin, Listenplatz 41",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Bildung, Familie.",
|
||||
"topics": [
|
||||
"Bildung",
|
||||
"Familie",
|
||||
"Soziales"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Thomas Maier",
|
||||
"position": "Kreistagskandidat, Listenplatz 42",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Klimaschutz, ÖPNV.",
|
||||
"topics": [
|
||||
"Klimaschutz",
|
||||
"ÖPNV",
|
||||
"Digitalisierung"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Ina Horn",
|
||||
"position": "Kreistagskandidatin, Listenplatz 43",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wohnraum, Integration.",
|
||||
"topics": [
|
||||
"Wohnraum",
|
||||
"Integration",
|
||||
"Jugend"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1559839734-2b71ea197ec2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Hannes Körpert",
|
||||
"position": "Kreistagskandidat, Listenplatz 44",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Landwirtschaft, Naturschutz.",
|
||||
"topics": [
|
||||
"Landwirtschaft",
|
||||
"Naturschutz",
|
||||
"Regionalität"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Michaela Kuhn",
|
||||
"position": "Kreistagskandidatin, Listenplatz 45",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Gesundheit, Pflege.",
|
||||
"topics": [
|
||||
"Gesundheit",
|
||||
"Pflege",
|
||||
"Ländlicher Raum"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1589571894960-20bbe2828d0a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Bernhard Schurig",
|
||||
"position": "Kreistagskandidat, Listenplatz 46",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wirtschaft, Innovation.",
|
||||
"topics": [
|
||||
"Wirtschaft",
|
||||
"Innovation",
|
||||
"Erneuerbare Energien"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1560250097-0b93528c311a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Roswitha Stuhlfelder",
|
||||
"position": "Kreistagskandidatin, Listenplatz 47",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Kultur, Kreativwirtschaft.",
|
||||
"topics": [
|
||||
"Kultur",
|
||||
"Kreativwirtschaft",
|
||||
"Tourismus"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Michael Groll",
|
||||
"position": "Kreistagskandidat, Listenplatz 48",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Verkehr, Fahrradinfrastruktur.",
|
||||
"topics": [
|
||||
"Verkehr",
|
||||
"Fahrradinfrastruktur",
|
||||
"Barrierefreiheit"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Gisela Röder",
|
||||
"position": "Kreistagskandidatin, Listenplatz 49",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Energiewende, Photovoltaik.",
|
||||
"topics": [
|
||||
"Energiewende",
|
||||
"Photovoltaik",
|
||||
"Windkraft"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1551836022-d5d88e9218df?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Jochen Ambros",
|
||||
"position": "Kreistagskandidat, Listenplatz 50",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Digitalisierung, Breitband.",
|
||||
"topics": [
|
||||
"Digitalisierung",
|
||||
"Breitband",
|
||||
"E-Government"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Kathrin Zürl",
|
||||
"position": "Kreistagskandidatin, Listenplatz 51",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Bildung, Familie.",
|
||||
"topics": [
|
||||
"Bildung",
|
||||
"Familie",
|
||||
"Soziales"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Roland Bruder",
|
||||
"position": "Kreistagskandidat, Listenplatz 52",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Klimaschutz, ÖPNV.",
|
||||
"topics": [
|
||||
"Klimaschutz",
|
||||
"ÖPNV",
|
||||
"Digitalisierung"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Erika Willacker",
|
||||
"position": "Kreistagskandidatin, Listenplatz 53",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wohnraum, Integration.",
|
||||
"topics": [
|
||||
"Wohnraum",
|
||||
"Integration",
|
||||
"Jugend"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1559839734-2b71ea197ec2?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Christian Wittmann",
|
||||
"position": "Kreistagskandidat, Listenplatz 54",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Landwirtschaft, Naturschutz.",
|
||||
"topics": [
|
||||
"Landwirtschaft",
|
||||
"Naturschutz",
|
||||
"Regionalität"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Gisela Wagner",
|
||||
"position": "Kreistagskandidatin, Listenplatz 55",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Gesundheit, Pflege.",
|
||||
"topics": [
|
||||
"Gesundheit",
|
||||
"Pflege",
|
||||
"Ländlicher Raum"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1589571894960-20bbe2828d0a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Maya Davey",
|
||||
"position": "Kreistagskandidat, Listenplatz 56",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Wirtschaft, Innovation.",
|
||||
"topics": [
|
||||
"Wirtschaft",
|
||||
"Innovation",
|
||||
"Erneuerbare Energien"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1560250097-0b93528c311a?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Maria Bierlein",
|
||||
"position": "Kreistagskandidatin, Listenplatz 57",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Kultur, Kreativwirtschaft.",
|
||||
"topics": [
|
||||
"Kultur",
|
||||
"Kreativwirtschaft",
|
||||
"Tourismus"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1580489944761-15a19d654956?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Michael Thomé",
|
||||
"position": "Kreistagskandidat, Listenplatz 58",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Verkehr, Fahrradinfrastruktur.",
|
||||
"topics": [
|
||||
"Verkehr",
|
||||
"Fahrradinfrastruktur",
|
||||
"Barrierefreiheit"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Michaela von der Linden",
|
||||
"position": "Kreistagskandidatin, Listenplatz 59",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Energiewende, Photovoltaik.",
|
||||
"topics": [
|
||||
"Energiewende",
|
||||
"Photovoltaik",
|
||||
"Windkraft"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1551836022-d5d88e9218df?w=800&h=1000&fit=crop"
|
||||
},
|
||||
{
|
||||
"name": "Johannes-Gerhard Dünninger",
|
||||
"position": "Kreistagskandidat, Listenplatz 60",
|
||||
"bio": "Als engagiertes Mitglied der Grünen im Landkreis Haßberge setze ich mich für eine nachhaltige und soziale Zukunft ein. Meine Schwerpunkte liegen in den Bereichen Digitalisierung, Breitband.",
|
||||
"topics": [
|
||||
"Digitalisierung",
|
||||
"Breitband",
|
||||
"E-Government"
|
||||
],
|
||||
"image": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=800&h=1000&fit=crop"
|
||||
}
|
||||
]
|
||||
40
gruene-hassberge/data/spitzenkandidaten.json
Normal file
40
gruene-hassberge/data/spitzenkandidaten.json
Normal file
@@ -0,0 +1,40 @@
|
||||
[
|
||||
{
|
||||
"name": "Kim Davey",
|
||||
"position": "Bürgermeisterkandidatin Haßfurt, Listenplatz 1",
|
||||
"bio": "Als Lehrerin an der Grundschule Haßfurt und Mutter von zwei Kindern kenne ich die Herausforderungen junger Familien in unserem Landkreis aus erster Hand. Jeden Tag erlebe ich, wie wichtig gute Bildung, verlässliche Kinderbetreuung und ein familienfreundliches Umfeld sind.\n\nIch kämpfe für bessere Bildungschancen für alle Kinder, unabhängig von ihrer Herkunft. Mehr Kinderbetreuungsplätze, kleinere Klassen und moderne Schulausstattung sind für mich keine Wunschträume, sondern dringende Notwendigkeiten.\n\nGemeinsam können wir den Landkreis Haßberge zu einem Ort machen, an dem alle Familien gerne leben und Kinder bestmöglich gefördert werden.",
|
||||
"topics": ["Bildung", "Familie", "Soziales", "Kinderbetreuung"],
|
||||
"image": "https://images.unsplash.com/photo-1573496359142-b8d87734a5a2?w=800&h=1000&fit=crop",
|
||||
"highlights": [
|
||||
"Mehr Kinderbetreuungsplätze in allen Gemeinden",
|
||||
"Modernisierung der Schulen und digitale Ausstattung",
|
||||
"Unterstützung für Alleinerziehende und Familien"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Norbert Zösch",
|
||||
"position": "Kandidat für das Landratsamt, Listenplatz 2",
|
||||
"bio": "Als langjähriger Kommunalpolitiker und engagierter Bürger des Landkreises Haßberge kenne ich die Herausforderungen und Chancen unserer Region genau. Mit über 20 Jahren Erfahrung in der Kommunalpolitik und als Gemeinderat habe ich gelernt, Brücken zu bauen und Menschen zusammenzubringen.\n\nMein Ziel ist klar: Ich möchte den Landkreis Haßberge in eine nachhaltige, soziale und innovative Zukunft führen. Klimaschutz, bessere Mobilität und lebendige Ortszentren sind keine Gegensätze, sondern gehören zusammen.\n\nGemeinsam mit unserem starken Team aus 60 engagierten Kandidatinnen und Kandidaten werden wir zeigen, dass grüne Politik praktisch, bürgernah und zukunftsorientiert ist. Für ein Haßberge, in dem alle gerne leben!",
|
||||
"topics": ["Klimaschutz", "ÖPNV", "Digitalisierung", "Wirtschaft"],
|
||||
"image": "images/DSC09400.jpg",
|
||||
"highlights": [
|
||||
"CO₂-Neutralität bis 2035",
|
||||
"Ausbau von ÖPNV im ländlichen Raum",
|
||||
"Nachhaltige Energieerzeugung",
|
||||
"Regionale Wirtschaft stärken"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Mario Pfaff",
|
||||
"position": "Bürgermeisterkandidat Oberaurach, Listenplatz 16",
|
||||
"bio": "Mit meiner langjährigen Erfahrung als Sozialarbeiter in der Jugend- und Familienhilfe kenne ich die sozialen Herausforderungen in unserem Landkreis. Ich sehe täglich, wie wichtig bezahlbarer Wohnraum, funktionierende Integration und starke Gemeinschaften sind.\n\nMein Herzensthema ist soziale Gerechtigkeit: Niemand darf zurückgelassen werden – egal ob jung oder alt, mit oder ohne Behinderung, alteingesessen oder neu zugezogen. Wir brauchen mehr bezahlbare Wohnungen, bessere Unterstützung für Jugendliche und ein echtes Miteinander.\n\nIch setze mich dafür ein, dass Haßberge ein Landkreis für alle wird – solidarisch, weltoffen und gerecht.",
|
||||
"topics": ["Wohnraum", "Integration", "Jugend", "Soziale Gerechtigkeit"],
|
||||
"image": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=800&h=1000&fit=crop",
|
||||
"highlights": [
|
||||
"Sozialwohnungen und bezahlbaren Wohnraum schaffen",
|
||||
"Jugendarbeit und Jugendzentren fördern",
|
||||
"Integration aktiv gestalten",
|
||||
"Barrierefreiheit ausbauen"
|
||||
]
|
||||
}
|
||||
]
|
||||
465
gruene-hassberge/datenschutz.html
Normal file
465
gruene-hassberge/datenschutz.html
Normal file
@@ -0,0 +1,465 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Datenschutzerklärung | Kreistagswahl 2026 - Bündnis 90/Die Grünen Haßberge</title>
|
||||
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/x-icon" href="images/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="images/apple-touch-icon.png">
|
||||
|
||||
<link rel="stylesheet" href="css/styles.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=PT+Sans:wght@400;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'GrueneType Neue';
|
||||
src: url('fonts/GrueneTypeNeue-Regular.woff') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
.legal-page {
|
||||
background: var(--background-light);
|
||||
padding: 120px 0 80px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
.legal-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
background: white;
|
||||
padding: 60px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.legal-content h1 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 2.5rem;
|
||||
color: var(--primary-green);
|
||||
margin-bottom: 40px;
|
||||
border-bottom: 3px solid var(--primary-green);
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.legal-content h2 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 1.8rem;
|
||||
color: var(--primary-green);
|
||||
margin-top: 40px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.legal-content h3 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 1.3rem;
|
||||
color: var(--secondary-dark);
|
||||
margin-top: 30px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.legal-content p {
|
||||
font-family: var(--font-primary);
|
||||
line-height: 1.8;
|
||||
color: var(--secondary-dark);
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.legal-content ul {
|
||||
margin-left: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.legal-content li {
|
||||
line-height: 1.8;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.legal-content strong {
|
||||
color: var(--primary-green);
|
||||
font-weight: 700;
|
||||
}
|
||||
.info-box {
|
||||
background: #f0f7f4;
|
||||
border-left: 4px solid var(--primary-green);
|
||||
padding: 20px;
|
||||
margin: 30px 0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.info-box h3 {
|
||||
margin-top: 0;
|
||||
color: var(--primary-green);
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.legal-page {
|
||||
padding: 100px 0 60px;
|
||||
}
|
||||
.legal-content {
|
||||
padding: 30px 20px;
|
||||
border-radius: 0;
|
||||
}
|
||||
.legal-content h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
.legal-content h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<div class="nav-content">
|
||||
<a href="index.html" class="logo" style="text-decoration: none; color: inherit;">
|
||||
<img src="images/logo-sonnenblume.png" alt="Grüne Sonnenblume" class="logo-image">
|
||||
<div class="logo-text-container">
|
||||
<span class="logo-text">BÜNDNIS 90/DIE GRÜNEN</span>
|
||||
<span class="logo-subtitle">Landkreis Haßberge</span>
|
||||
</div>
|
||||
</a>
|
||||
<div class="nav-links">
|
||||
<a href="#landrat">Unser Landratskandidat</a>
|
||||
<a href="index.html#kandidaten">Kandidaten</a>
|
||||
<a href="index.html#programm">Programm</a>
|
||||
<a href="index.html#kontakt" class="btn-nav">Kontakt</a>
|
||||
</div>
|
||||
<button class="mobile-menu-toggle" aria-label="Menü öffnen">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Legal Content -->
|
||||
<section class="legal-page">
|
||||
<div class="container">
|
||||
<div class="legal-content">
|
||||
<h1>Datenschutzerklärung</h1>
|
||||
|
||||
<p><em>Stand: Dezember 2025</em></p>
|
||||
|
||||
<div class="info-box">
|
||||
<h3>Datenschutz auf einen Blick</h3>
|
||||
<p>
|
||||
Wir nehmen den Schutz deiner persönlichen Daten sehr ernst. Diese Datenschutzerklärung informiert dich darüber, wie wir mit deinen Daten umgehen, wenn du unsere Website besuchst.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h2>1. Verantwortliche Stelle</h2>
|
||||
<p>
|
||||
Verantwortlich für die Datenverarbeitung auf dieser Website ist:
|
||||
</p>
|
||||
<p>
|
||||
<strong>BÜNDNIS 90/DIE GRÜNEN Kreisverband Haßberge</strong><br>
|
||||
<strong>Vertretungsberechtigter Vorstand:</strong> Margit Pickel-Schmitt (Sprecherin), Christian Ruser (Sprecher)<br>
|
||||
<strong>Adresse:</strong> Bahnhofstr. 2, 97437 Haßfurt
|
||||
</p>
|
||||
<p>
|
||||
<strong>E-Mail:</strong> <a href="mailto:kontakt@gruene-hassberge.de">kontakt@gruene-hassberge.de</a><br>
|
||||
<strong>Telefon:</strong> +49 160 1450879
|
||||
</p>
|
||||
<p>
|
||||
Verantwortliche Stelle ist die natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten (z.B. Namen, E-Mail-Adressen o. Ä.) entscheidet.
|
||||
</p>
|
||||
|
||||
<h2>2. Allgemeine Hinweise zur Datenverarbeitung</h2>
|
||||
|
||||
<h3>2.1 Umfang der Verarbeitung personenbezogener Daten</h3>
|
||||
<p>
|
||||
Wir verarbeiten personenbezogene Daten unserer Nutzer*innen grundsätzlich nur, soweit dies zur Bereitstellung einer funktionsfähigen Website sowie unserer Inhalte und Leistungen erforderlich ist. Die Verarbeitung personenbezogener Daten unserer Nutzer*innen erfolgt regelmäßig nur nach Einwilligung.
|
||||
</p>
|
||||
|
||||
<h3>2.2 Rechtsgrundlage für die Verarbeitung personenbezogener Daten</h3>
|
||||
<p>
|
||||
Die Rechtsgrundlage für die Datenverarbeitung ist <strong>Art. 6 DSGVO</strong>:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Art. 6 Abs. 1 lit. a DSGVO:</strong> Verarbeitung mit deiner Einwilligung</li>
|
||||
<li><strong>Art. 6 Abs. 1 lit. b DSGVO:</strong> Verarbeitung zur Vertragserfüllung</li>
|
||||
<li><strong>Art. 6 Abs. 1 lit. c DSGVO:</strong> Verarbeitung zur Erfüllung rechtlicher Verpflichtungen</li>
|
||||
<li><strong>Art. 6 Abs. 1 lit. f DSGVO:</strong> Verarbeitung zur Wahrung berechtigter Interessen</li>
|
||||
</ul>
|
||||
|
||||
<h3>2.3 Datenlöschung und Speicherdauer</h3>
|
||||
<p>
|
||||
Deine personenbezogenen Daten werden gelöscht oder gesperrt, sobald der Zweck der Speicherung entfällt. Eine Speicherung kann darüber hinaus erfolgen, wenn dies durch den europäischen oder nationalen Gesetzgeber vorgesehen wurde.
|
||||
</p>
|
||||
|
||||
<h2>3. Bereitstellung der Website und Erstellung von Logfiles</h2>
|
||||
|
||||
<h3>3.1 Beschreibung und Umfang der Datenverarbeitung</h3>
|
||||
<p>
|
||||
Bei jedem Aufruf unserer Website erfasst unser System automatisiert Daten und Informationen vom Computersystem des aufrufenden Rechners. Folgende Daten werden hierbei erhoben:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Informationen über den Browsertyp und die verwendete Version</li>
|
||||
<li>Das Betriebssystem des Nutzers</li>
|
||||
<li>Den Internet-Service-Provider des Nutzers</li>
|
||||
<li>Die IP-Adresse des Nutzers</li>
|
||||
<li>Datum und Uhrzeit des Zugriffs</li>
|
||||
<li>Websites, von denen das System des Nutzers auf unsere Website gelangt (Referrer)</li>
|
||||
<li>Websites, die vom System des Nutzers über unsere Website aufgerufen werden</li>
|
||||
</ul>
|
||||
<p>
|
||||
Diese Daten werden in den Logfiles unseres Systems gespeichert. Eine Speicherung dieser Daten zusammen mit anderen personenbezogenen Daten findet nicht statt.
|
||||
</p>
|
||||
|
||||
<h3>3.2 Zweck der Datenverarbeitung</h3>
|
||||
<p>
|
||||
Die vorübergehende Speicherung der IP-Adresse durch das System ist notwendig, um eine Auslieferung der Website an deinen Rechner zu ermöglichen. Hierfür muss deine IP-Adresse für die Dauer der Sitzung gespeichert bleiben.
|
||||
</p>
|
||||
<p>
|
||||
Die Speicherung in Logfiles erfolgt, um die Funktionsfähigkeit der Website sicherzustellen. Zudem dienen uns die Daten zur Optimierung der Website und zur Sicherstellung der Sicherheit unserer informationstechnischen Systeme.
|
||||
</p>
|
||||
|
||||
<h3>3.3 Dauer der Speicherung</h3>
|
||||
<p>
|
||||
Die Daten werden gelöscht, sobald sie für die Erreichung des Zweckes ihrer Erhebung nicht mehr erforderlich sind. Bei der Erfassung der Daten zur Bereitstellung der Website ist dies der Fall, wenn die jeweilige Sitzung beendet ist.
|
||||
</p>
|
||||
<p>
|
||||
Bei der Speicherung der Daten in Logfiles ist dies nach spätestens sieben Tagen der Fall. Eine darüberhinausgehende Speicherung ist möglich. In diesem Fall werden die IP-Adressen gelöscht oder verfremdet, sodass eine Zuordnung des aufrufenden Clients nicht mehr möglich ist.
|
||||
</p>
|
||||
|
||||
<h2>4. Verwendung von Cookies</h2>
|
||||
|
||||
<h3>4.1 Beschreibung</h3>
|
||||
<p>
|
||||
<strong>Diese Website verwendet derzeit KEINE Cookies.</strong>
|
||||
</p>
|
||||
<p>
|
||||
Sollten in Zukunft Cookies eingesetzt werden, werden wir dich an dieser Stelle informieren und um deine Einwilligung bitten, sofern dies gesetzlich erforderlich ist.
|
||||
</p>
|
||||
|
||||
<div class="info-box">
|
||||
<h3>Was sind Cookies?</h3>
|
||||
<p>
|
||||
Cookies sind kleine Textdateien, die auf deinem Endgerät gespeichert werden und bestimmte Informationen speichern können. Diese Website nutzt aktuell keine Cookies.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h2>5. Einbindung externer Webdienste</h2>
|
||||
|
||||
<h3>5.1 Google Fonts</h3>
|
||||
<p>
|
||||
Diese Website nutzt zur einheitlichen Darstellung von Schriftarten so genannte Google Fonts, die von Google bereitgestellt werden.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Datenverarbeitung:</strong> Beim Aufruf einer Seite lädt dein Browser die benötigten Schriftarten in den Browsercache, um Texte und Schriftarten korrekt anzuzeigen. Zu diesem Zweck muss der von dir verwendete Browser Verbindung zu den Servern von Google aufnehmen. Hierdurch erlangt Google Kenntnis darüber, dass über deine IP-Adresse unsere Website aufgerufen wurde.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rechtsgrundlage:</strong> Die Nutzung von Google Fonts erfolgt im Interesse einer einheitlichen und ansprechenden Darstellung unserer Online-Angebote. Dies stellt ein berechtigtes Interesse im Sinne von <strong>Art. 6 Abs. 1 lit. f DSGVO</strong> dar.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Anbieter:</strong> Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland
|
||||
</p>
|
||||
<p>
|
||||
<strong>Datenübermittlung in Drittländer:</strong> Google verarbeitet deine Daten in den USA und hat sich dem EU-US Data Privacy Framework unterworfen.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Weitere Informationen:</strong><br>
|
||||
<a href="https://developers.google.com/fonts/faq" target="_blank" rel="noopener">https://developers.google.com/fonts/faq</a><br>
|
||||
<a href="https://policies.google.com/privacy" target="_blank" rel="noopener">https://policies.google.com/privacy</a>
|
||||
</p>
|
||||
|
||||
<h3>5.2 GrueneType Neue Font (lokal gehostet)</h3>
|
||||
<p>
|
||||
Diese Website nutzt die offizielle Schriftart "GrueneType Neue" von BÜNDNIS 90/DIE GRÜNEN.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Datenverarbeitung:</strong> Die Schriftart wird lokal auf unserem Server gehostet. Es werden keine Daten an Dritte übermittelt.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Datenschutz:</strong> Da die Schriftart lokal eingebunden ist, erfolgt keine Datenübertragung an externe Server. Deine IP-Adresse wird nicht an Dritte weitergegeben.
|
||||
</p>
|
||||
|
||||
<h3>5.3 Unsplash (Bilddienst)</h3>
|
||||
<p>
|
||||
Diese Website nutzt Bilder von Unsplash, einem Bilddienst der Unsplash Inc.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Datenverarbeitung:</strong> Beim Aufruf von Seiten mit Unsplash-Bildern werden diese von den Servern von Unsplash geladen. Hierbei wird deine IP-Adresse an Unsplash übermittelt.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an ansprechender visueller Gestaltung)
|
||||
</p>
|
||||
<p>
|
||||
<strong>Anbieter:</strong> Unsplash Inc., 2711 W Belmont Ave, Chicago, IL 60618, USA
|
||||
</p>
|
||||
<p>
|
||||
<strong>Datenschutzhinweise:</strong><br>
|
||||
<a href="https://unsplash.com/privacy" target="_blank" rel="noopener">https://unsplash.com/privacy</a>
|
||||
</p>
|
||||
|
||||
<h2>6. Kontaktmöglichkeiten</h2>
|
||||
|
||||
<h3>6.1 Kontaktaufnahme per E-Mail oder Telefon</h3>
|
||||
<p>
|
||||
Wenn du per E-Mail oder Telefon Kontakt mit uns aufnimmst, werden deine Angaben (E-Mail-Adresse, ggf. Name und Telefonnummer) von uns gespeichert, um deine Anfrage zu bearbeiten.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Rechtsgrundlage:</strong> Die Verarbeitung erfolgt auf Grundlage von <strong>Art. 6 Abs. 1 lit. f DSGVO</strong> (berechtigtes Interesse an der Beantwortung von Anfragen).
|
||||
</p>
|
||||
<p>
|
||||
<strong>Speicherdauer:</strong> Die Daten werden gelöscht, sobald die Anfrage abschließend bearbeitet wurde und keine gesetzlichen Aufbewahrungspflichten entgegenstehen.
|
||||
</p>
|
||||
|
||||
<h2>7. Deine Rechte als betroffene Person</h2>
|
||||
|
||||
<p>
|
||||
Werden personenbezogene Daten von dir verarbeitet, bist du Betroffene*r i.S.d. DSGVO und es stehen dir folgende Rechte gegenüber dem Verantwortlichen zu:
|
||||
</p>
|
||||
|
||||
<h3>7.1 Auskunftsrecht (Art. 15 DSGVO)</h3>
|
||||
<p>
|
||||
Du kannst von uns eine Bestätigung darüber verlangen, ob personenbezogene Daten, die dich betreffen, von uns verarbeitet werden. Liegt eine solche Verarbeitung vor, kannst du von uns folgende Informationen verlangen:
|
||||
</p>
|
||||
<ul>
|
||||
<li>die Zwecke, zu denen die personenbezogenen Daten verarbeitet werden;</li>
|
||||
<li>die Kategorien von personenbezogenen Daten, welche verarbeitet werden;</li>
|
||||
<li>die Empfänger bzw. Kategorien von Empfängern, gegenüber denen die dich betreffenden personenbezogenen Daten offengelegt wurden oder noch offengelegt werden;</li>
|
||||
<li>die geplante Dauer der Speicherung der dich betreffenden personenbezogenen Daten;</li>
|
||||
<li>das Bestehen eines Rechts auf Berichtigung, Löschung, Einschränkung der Verarbeitung oder Widerspruch;</li>
|
||||
<li>das Bestehen eines Beschwerderechts bei einer Aufsichtsbehörde;</li>
|
||||
<li>alle verfügbaren Informationen über die Herkunft der Daten, wenn die personenbezogenen Daten nicht bei dir erhoben werden;</li>
|
||||
<li>das Bestehen einer automatisierten Entscheidungsfindung einschließlich Profiling.</li>
|
||||
</ul>
|
||||
|
||||
<h3>7.2 Recht auf Berichtigung (Art. 16 DSGVO)</h3>
|
||||
<p>
|
||||
Du hast ein Recht auf Berichtigung und/oder Vervollständigung, sofern die verarbeiteten personenbezogenen Daten, die dich betreffen, unrichtig oder unvollständig sind.
|
||||
</p>
|
||||
|
||||
<h3>7.3 Recht auf Löschung (Art. 17 DSGVO)</h3>
|
||||
<p>
|
||||
Du kannst von uns verlangen, dass die dich betreffenden personenbezogenen Daten unverzüglich gelöscht werden, sofern einer der folgenden Gründe zutrifft:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Die personenbezogenen Daten sind für die Zwecke, für die sie erhoben oder auf sonstige Weise verarbeitet wurden, nicht mehr notwendig.</li>
|
||||
<li>Du widerrufst deine Einwilligung, auf die sich die Verarbeitung stützte.</li>
|
||||
<li>Du legst Widerspruch gegen die Verarbeitung ein und es liegen keine vorrangigen berechtigten Gründe für die Verarbeitung vor.</li>
|
||||
<li>Die personenbezogenen Daten wurden unrechtmäßig verarbeitet.</li>
|
||||
<li>Die Löschung ist zur Erfüllung einer rechtlichen Verpflichtung erforderlich.</li>
|
||||
</ul>
|
||||
|
||||
<h3>7.4 Recht auf Einschränkung der Verarbeitung (Art. 18 DSGVO)</h3>
|
||||
<p>
|
||||
Du hast das Recht, von uns die Einschränkung der Verarbeitung zu verlangen, wenn eine der folgenden Voraussetzungen gegeben ist:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Du bestreitest die Richtigkeit der personenbezogenen Daten.</li>
|
||||
<li>Die Verarbeitung ist unrechtmäßig und du lehnst die Löschung ab.</li>
|
||||
<li>Wir benötigen die Daten nicht länger, du benötigst sie jedoch zur Geltendmachung von Rechtsansprüchen.</li>
|
||||
<li>Du hast Widerspruch eingelegt und es ist noch nicht festgestellt, ob unsere berechtigten Gründe überwiegen.</li>
|
||||
</ul>
|
||||
|
||||
<h3>7.5 Recht auf Datenübertragbarkeit (Art. 20 DSGVO)</h3>
|
||||
<p>
|
||||
Du hast das Recht, die dich betreffenden personenbezogenen Daten, die du uns bereitgestellt hast, in einem strukturierten, gängigen und maschinenlesbaren Format zu erhalten. Außerdem hast du das Recht, diese Daten einem anderen Verantwortlichen ohne Behinderung durch uns zu übermitteln.
|
||||
</p>
|
||||
|
||||
<h3>7.6 Widerspruchsrecht (Art. 21 DSGVO)</h3>
|
||||
<p>
|
||||
Du hast das Recht, aus Gründen, die sich aus deiner besonderen Situation ergeben, jederzeit gegen die Verarbeitung der dich betreffenden personenbezogenen Daten, die aufgrund von Art. 6 Abs. 1 lit. e oder f DSGVO erfolgt, Widerspruch einzulegen.
|
||||
</p>
|
||||
<p>
|
||||
Wir verarbeiten die dich betreffenden personenbezogenen Daten nicht mehr, es sei denn, wir können zwingende schutzwürdige Gründe für die Verarbeitung nachweisen, die deine Interessen, Rechte und Freiheiten überwiegen.
|
||||
</p>
|
||||
|
||||
<h3>7.7 Recht auf Widerruf der Einwilligung (Art. 7 Abs. 3 DSGVO)</h3>
|
||||
<p>
|
||||
Du hast das Recht, deine datenschutzrechtliche Einwilligungserklärung jederzeit zu widerrufen. Durch den Widerruf der Einwilligung wird die Rechtmäßigkeit der aufgrund der Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt.
|
||||
</p>
|
||||
|
||||
<h3>7.8 Beschwerderecht bei einer Aufsichtsbehörde (Art. 77 DSGVO)</h3>
|
||||
<p>
|
||||
Unbeschadet eines anderweitigen verwaltungsrechtlichen oder gerichtlichen Rechtsbehelfs steht dir das Recht auf Beschwerde bei einer Aufsichtsbehörde zu, insbesondere in dem Mitgliedstaat deines Aufenthaltsorts, deines Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes, wenn du der Ansicht bist, dass die Verarbeitung der dich betreffenden personenbezogenen Daten gegen die DSGVO verstößt.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Zuständige Aufsichtsbehörde für Bayern:</strong><br>
|
||||
Bayerisches Landesamt für Datenschutzaufsicht<br>
|
||||
Promenade 18<br>
|
||||
91522 Ansbach<br>
|
||||
Telefon: 0981 180093-0<br>
|
||||
E-Mail: poststelle@lda.bayern.de<br>
|
||||
Website: <a href="https://www.lda.bayern.de" target="_blank" rel="noopener">www.lda.bayern.de</a>
|
||||
</p>
|
||||
|
||||
<h2>8. Datensicherheit</h2>
|
||||
<p>
|
||||
Wir verwenden innerhalb des Website-Besuchs das verbreitete SSL-Verfahren (Secure Socket Layer) in Verbindung mit der jeweils höchsten Verschlüsselungsstufe, die von deinem Browser unterstützt wird.
|
||||
</p>
|
||||
<p>
|
||||
Wir bedienen uns geeigneter technischer und organisatorischer Sicherheitsmaßnahmen, um deine Daten gegen zufällige oder vorsätzliche Manipulationen, teilweisen oder vollständigen Verlust, Zerstörung oder gegen den unbefugten Zugriff Dritter zu schützen. Unsere Sicherheitsmaßnahmen werden entsprechend der technologischen Entwicklung fortlaufend verbessert.
|
||||
</p>
|
||||
|
||||
<h2>9. Aktualität und Änderung dieser Datenschutzerklärung</h2>
|
||||
<p>
|
||||
Diese Datenschutzerklärung ist aktuell gültig und hat den Stand Dezember 2025.
|
||||
</p>
|
||||
<p>
|
||||
Durch die Weiterentwicklung unserer Website und Angebote darüber oder aufgrund geänderter gesetzlicher beziehungsweise behördlicher Vorgaben kann es notwendig werden, diese Datenschutzerklärung zu ändern. Die jeweils aktuelle Datenschutzerklärung kann jederzeit auf der Website unter <a href="datenschutz.html">dieser Adresse</a> von dir abgerufen und ausgedruckt werden.
|
||||
</p>
|
||||
|
||||
<h2>10. Kontakt zum Datenschutz</h2>
|
||||
<p>
|
||||
Bei Fragen zur Erhebung, Verarbeitung oder Nutzung deiner personenbezogenen Daten, bei Auskünften, Berichtigung, Sperrung oder Löschung von Daten sowie Widerruf erteilter Einwilligungen wende dich bitte an:
|
||||
</p>
|
||||
<p>
|
||||
<strong>BÜNDNIS 90/DIE GRÜNEN Kreisverband Haßberge</strong><br>
|
||||
Bahnhofstr. 2<br>
|
||||
97437 Haßfurt<br>
|
||||
E-Mail: <a href="mailto:kontakt@gruene-hassberge.de">kontakt@gruene-hassberge.de</a><br>
|
||||
Telefon: +49 160 1450879
|
||||
</p>
|
||||
|
||||
<div style="margin-top: 60px; text-align: center;">
|
||||
<a href="index.html" class="btn-primary">Zurück zur Startseite</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-content">
|
||||
<div class="footer-column">
|
||||
<h3>BÜNDNIS 90/DIE GRÜNEN</h3>
|
||||
<p>Kreisverband Haßberge</p>
|
||||
<p class="footer-tagline">Wir gestalten Zukunft - gemeinsam mit dir</p>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Navigation</h4>
|
||||
<ul>
|
||||
<li><a href="index.html#landrat">Unser Landrat</a></li>
|
||||
<li><a href="index.html#kandidaten">Kandidaten</a></li>
|
||||
<li><a href="index.html#programm">Programm</a></li>
|
||||
<li><a href="index.html#kontakt">Kontakt</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Rechtliches</h4>
|
||||
<ul>
|
||||
<li><a href="impressum.html">Impressum</a></li>
|
||||
<li><a href="datenschutz.html">Datenschutz</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Folgen Sie uns</h4>
|
||||
<div class="social-links">
|
||||
<a href="#" aria-label="Facebook">Facebook</a>
|
||||
<a href="#" aria-label="Instagram">Instagram</a>
|
||||
<a href="#" aria-label="Twitter">Twitter</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2026 BÜNDNIS 90/DIE GRÜNEN Landkreis Haßberge. Kreistagswahl 2026.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
BIN
gruene-hassberge/fonts/GrueneTypeNeue-Regular.woff
Normal file
BIN
gruene-hassberge/fonts/GrueneTypeNeue-Regular.woff
Normal file
Binary file not shown.
BIN
gruene-hassberge/images/DSC09400.jpg
Normal file
BIN
gruene-hassberge/images/DSC09400.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 MiB |
BIN
gruene-hassberge/images/apple-touch-icon.png
Normal file
BIN
gruene-hassberge/images/apple-touch-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
BIN
gruene-hassberge/images/favicon-16x16.png
Normal file
BIN
gruene-hassberge/images/favicon-16x16.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 570 B |
BIN
gruene-hassberge/images/favicon-32x32.png
Normal file
BIN
gruene-hassberge/images/favicon-32x32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 901 B |
BIN
gruene-hassberge/images/favicon.ico
Normal file
BIN
gruene-hassberge/images/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
gruene-hassberge/images/logo-sonnenblume.png
Normal file
BIN
gruene-hassberge/images/logo-sonnenblume.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 90 KiB |
261
gruene-hassberge/impressum.html
Normal file
261
gruene-hassberge/impressum.html
Normal file
@@ -0,0 +1,261 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Impressum | Kreistagswahl 2026 - Bündnis 90/Die Grünen Haßberge</title>
|
||||
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/x-icon" href="images/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="images/apple-touch-icon.png">
|
||||
|
||||
<link rel="stylesheet" href="css/styles.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=PT+Sans:wght@400;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'GrueneType Neue';
|
||||
src: url('fonts/GrueneTypeNeue-Regular.woff') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
.legal-page {
|
||||
background: var(--background-light);
|
||||
padding: 120px 0 80px;
|
||||
min-height: 100vh;
|
||||
}
|
||||
.legal-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
background: white;
|
||||
padding: 60px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.legal-content h1 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 2.5rem;
|
||||
color: var(--primary-green);
|
||||
margin-bottom: 40px;
|
||||
border-bottom: 3px solid var(--primary-green);
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.legal-content h2 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 1.8rem;
|
||||
color: var(--primary-green);
|
||||
margin-top: 40px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.legal-content h3 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 1.3rem;
|
||||
color: var(--secondary-dark);
|
||||
margin-top: 30px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.legal-content p {
|
||||
font-family: var(--font-primary);
|
||||
line-height: 1.8;
|
||||
color: var(--secondary-dark);
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.legal-content ul {
|
||||
margin-left: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.legal-content li {
|
||||
line-height: 1.8;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.legal-content strong {
|
||||
color: var(--primary-green);
|
||||
font-weight: 700;
|
||||
}
|
||||
@media (max-width: 768px) {
|
||||
.legal-page {
|
||||
padding: 100px 0 60px;
|
||||
}
|
||||
.legal-content {
|
||||
padding: 30px 20px;
|
||||
border-radius: 0;
|
||||
}
|
||||
.legal-content h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
.legal-content h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<div class="nav-content">
|
||||
<a href="index.html" class="logo" style="text-decoration: none; color: inherit;">
|
||||
<img src="images/logo-sonnenblume.png" alt="Grüne Sonnenblume" class="logo-image">
|
||||
<div class="logo-text-container">
|
||||
<span class="logo-text">BÜNDNIS 90/DIE GRÜNEN</span>
|
||||
<span class="logo-subtitle">Landkreis Haßberge</span>
|
||||
</div>
|
||||
</a>
|
||||
<div class="nav-links">
|
||||
<a href="#landrat">Unser Landratskandidat</a>
|
||||
<a href="index.html#kandidaten">Kandidaten</a>
|
||||
<a href="index.html#programm">Programm</a>
|
||||
<a href="index.html#kontakt" class="btn-nav">Kontakt</a>
|
||||
</div>
|
||||
<button class="mobile-menu-toggle" aria-label="Menü öffnen">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Legal Content -->
|
||||
<section class="legal-page">
|
||||
<div class="container">
|
||||
<div class="legal-content">
|
||||
<h1>Impressum</h1>
|
||||
|
||||
<p>Angaben gemäß § 5 TMG und § 55 RStV</p>
|
||||
|
||||
<h2>Anbieter</h2>
|
||||
<p>
|
||||
<strong>BÜNDNIS 90/DIE GRÜNEN Kreisverband Haßberge</strong><br>
|
||||
Bahnhofstr. 2<br>
|
||||
97437 Haßfurt
|
||||
</p>
|
||||
|
||||
<h2>Verantwortlich im Sinne des Presserechts (V.i.S.d.P.)</h2>
|
||||
<p>
|
||||
Margit Pickel-Schmitt, Christian Ruser
|
||||
</p>
|
||||
|
||||
<h2>Vertretungsberechtigter Vorstand</h2>
|
||||
<p>
|
||||
Margit Pickel-Schmitt (Sprecherin)<br>
|
||||
Christian Ruser (Sprecher)
|
||||
</p>
|
||||
|
||||
<h2>Kontakt</h2>
|
||||
<p>
|
||||
<strong>E-Mail:</strong> <a href="mailto:kontakt@gruene-hassberge.de">kontakt@gruene-hassberge.de</a><br>
|
||||
<strong>Telefon:</strong> +49 160 1450879<br>
|
||||
<strong>Öffnungszeiten:</strong> Freitags 14:00-17:00 Uhr
|
||||
</p>
|
||||
|
||||
<h2>Verantwortlich für diese Wahlkampfseite</h2>
|
||||
<p>
|
||||
<strong>Norbert Zösch</strong> (Kandidat für das Landratsamt)<br>
|
||||
c/o BÜNDNIS 90/DIE GRÜNEN Kreisverband Haßberge<br>
|
||||
Bahnhofstr. 2, 97437 Haßfurt
|
||||
</p>
|
||||
|
||||
<h2>Urheberrecht</h2>
|
||||
<p>
|
||||
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht.
|
||||
</p>
|
||||
<p>
|
||||
Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Solltest du trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
|
||||
</p>
|
||||
|
||||
<h3>Creative Commons Lizenz</h3>
|
||||
<p>
|
||||
Diese Seite veröffentlicht Inhalte unter der <strong>Creative Commons Lizenz</strong> (Namensnennung erforderlich), ausgenommen sind Fotos und Grafiken, sofern nicht anders angegeben.
|
||||
</p>
|
||||
|
||||
<h3>Bildquellen</h3>
|
||||
<p>
|
||||
Die auf dieser Website verwendeten Bilder stammen aus folgenden Quellen:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Kandidatenfotos:</strong> Privat bzw. mit Einwilligung der abgebildeten Personen</li>
|
||||
<li><strong>Hero- und Hintergrundbilder:</strong> Unsplash.com (lizenzfrei unter Unsplash-Lizenz)</li>
|
||||
<li><strong>Icons und Grafiken:</strong> Eigene Darstellungen</li>
|
||||
</ul>
|
||||
|
||||
<h2>Haftung für Inhalte</h2>
|
||||
<p>
|
||||
Als Diensteanbieter sind wir gemäß § 7 Abs. 1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
|
||||
</p>
|
||||
<p>
|
||||
Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
|
||||
</p>
|
||||
|
||||
<h2>Haftung für Links</h2>
|
||||
<p>
|
||||
Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich.
|
||||
</p>
|
||||
<p>
|
||||
Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
|
||||
</p>
|
||||
|
||||
<h2>Datenschutz</h2>
|
||||
<p>
|
||||
Für Informationen zum Datenschutz siehe unsere separate <a href="datenschutz.html">Datenschutzerklärung</a>.
|
||||
</p>
|
||||
|
||||
<h2>Hinweis zur Wahlkampfseite</h2>
|
||||
<p>
|
||||
Diese Website dient ausschließlich Informationszwecken im Rahmen der Kreistagswahl 2026 im Landkreis Haßberge. Die Inhalte stellen das Wahlprogramm und die Kandidaten von BÜNDNIS 90/DIE GRÜNEN dar.
|
||||
</p>
|
||||
|
||||
<div style="margin-top: 60px; text-align: center;">
|
||||
<a href="index.html" class="btn-primary">Zurück zur Startseite</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-content">
|
||||
<div class="footer-column">
|
||||
<h3>BÜNDNIS 90/DIE GRÜNEN</h3>
|
||||
<p>Kreisverband Haßberge</p>
|
||||
<p class="footer-tagline">Wir gestalten Zukunft - gemeinsam mit Ihnen</p>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Navigation</h4>
|
||||
<ul>
|
||||
<li><a href="index.html#landrat">Unser Landrat</a></li>
|
||||
<li><a href="index.html#kandidaten">Kandidaten</a></li>
|
||||
<li><a href="index.html#programm">Programm</a></li>
|
||||
<li><a href="index.html#kontakt">Kontakt</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Rechtliches</h4>
|
||||
<ul>
|
||||
<li><a href="impressum.html">Impressum</a></li>
|
||||
<li><a href="datenschutz.html">Datenschutz</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Folgen Sie uns</h4>
|
||||
<div class="social-links">
|
||||
<a href="#" aria-label="Facebook">Facebook</a>
|
||||
<a href="#" aria-label="Instagram">Instagram</a>
|
||||
<a href="#" aria-label="Twitter">Twitter</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2026 BÜNDNIS 90/DIE GRÜNEN Landkreis Haßberge. Kreistagswahl 2026.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
259
gruene-hassberge/index.html
Normal file
259
gruene-hassberge/index.html
Normal file
@@ -0,0 +1,259 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Kreistagswahl 2026 - Landkreis Haßberge | Bündnis 90/Die Grünen</title>
|
||||
<meta name="description" content="Norbert Zösch kandidiert als Landrat - Gemeinsam mit 60 engagierten Kandidierenden für den Kreistag Haßberge 2026.">
|
||||
|
||||
<!-- Favicons -->
|
||||
<link rel="icon" type="image/x-icon" href="images/favicon.ico">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="images/apple-touch-icon.png">
|
||||
|
||||
<link rel="stylesheet" href="css/styles.css">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=PT+Sans:wght@400;700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
/* Offizielle GrueneType Neue Font - Lokal gehostet */
|
||||
@font-face {
|
||||
font-family: 'GrueneType Neue';
|
||||
src: url('fonts/GrueneTypeNeue-Regular.woff') format('woff');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<div class="nav-content">
|
||||
<div class="logo">
|
||||
<img src="images/logo-sonnenblume.png" alt="Grüne Sonnenblume" class="logo-image">
|
||||
<div class="logo-text-container">
|
||||
<span class="logo-text">BÜNDNIS 90/DIE GRÜNEN</span>
|
||||
<span class="logo-subtitle">Landkreis Haßberge</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-links">
|
||||
<a href="#landrat">Unser Landratskandidat</a>
|
||||
<a href="#kandidaten">Kandidierende</a>
|
||||
<a href="#programm">Programm</a>
|
||||
<a href="#kontakt" class="btn-nav">Kontakt</a>
|
||||
</div>
|
||||
<button class="mobile-menu-toggle" aria-label="Menü öffnen">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Hero Section / Jumbotron -->
|
||||
<section class="hero">
|
||||
<div class="hero-image">
|
||||
<img src="https://images.unsplash.com/photo-1529156069898-49953e39b3ac?w=1600&h=800&fit=crop"
|
||||
alt="Gemeinsam für den Landkreis Haßberge - Unser Team für die Kreistagswahl 2026"
|
||||
loading="eager">
|
||||
<div class="hero-overlay"></div>
|
||||
</div>
|
||||
<div class="hero-content">
|
||||
<div class="container">
|
||||
<h1 class="hero-title">Gemeinsam für den Landkreis Haßberge</h1>
|
||||
<p class="hero-subtitle">Kreistagswahl 2026 - Für eine grüne, lebenswerte Zukunft</p>
|
||||
<div class="hero-cta">
|
||||
<a href="#landrat" class="btn-hero">Norbert Zösch kennenlernen</a>
|
||||
<a href="#kandidaten" class="btn-hero-secondary">Alle Kandidierenden</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Landrat Section -->
|
||||
<section id="landrat" class="landrat-section">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<span class="section-label">Kandidat für das Landratsamt</span>
|
||||
<h2>Norbert Zösch</h2>
|
||||
<p class="section-intro">Mit Erfahrung, Kompetenz und grünen Werten für unseren Landkreis</p>
|
||||
</div>
|
||||
|
||||
<div class="landrat-content">
|
||||
<div class="landrat-image">
|
||||
<img src="images/DSC09400.jpg"
|
||||
alt="Norbert Zösch - Kandidat für das Landratsamt">
|
||||
<div class="landrat-badge">Ihr Landrat 2026</div>
|
||||
</div>
|
||||
<div class="landrat-text">
|
||||
<h3>Für einen Landkreis, der zusammenhält</h3>
|
||||
<p>Als langjähriger Kommunalpolitiker und engagierter Bürger des Landkreises Haßberge kenne ich die Herausforderungen und Chancen unserer Region. Gemeinsam mit unserem starken Team möchte ich den Landkreis in eine nachhaltige, soziale und innovative Zukunft führen.</p>
|
||||
|
||||
<div class="landrat-highlights">
|
||||
<div class="highlight-item">
|
||||
<div class="highlight-icon">🌱</div>
|
||||
<h4>Klimaschutz vor Ort</h4>
|
||||
<p>Erneuerbare Energien ausbauen und CO₂-Neutralität bis 2035 erreichen</p>
|
||||
</div>
|
||||
<div class="highlight-item">
|
||||
<div class="highlight-icon">🚌</div>
|
||||
<h4>Mobilität für alle</h4>
|
||||
<p>Besserer ÖPNV, sichere Radwege und zukunftsfähige Verkehrskonzepte</p>
|
||||
</div>
|
||||
<div class="highlight-item">
|
||||
<div class="highlight-icon">🏘️</div>
|
||||
<h4>Lebendige Orte</h4>
|
||||
<p>Dörfer und Städte stärken - mit guter Infrastruktur und Nahversorgung</p>
|
||||
</div>
|
||||
<div class="highlight-item">
|
||||
<div class="highlight-icon">👨👩👧👦</div>
|
||||
<h4>Soziale Gerechtigkeit</h4>
|
||||
<p>Bezahlbarer Wohnraum, gute Bildung und Unterstützung für Familien</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="#kontakt" class="btn-primary">Kontakt aufnehmen</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Spitzenkandidaten Grid Section -->
|
||||
<section id="kandidaten" class="spitzenkandidaten-section">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<span class="section-label">Unsere Spitzenkandidierenden</span>
|
||||
<h2>Die Top 3 für den Landkreis Haßberge</h2>
|
||||
<p class="section-intro">Lernen Sie unsere Spitzenkandidierenden kennen - engagiert, kompetent und nah an den Menschen</p>
|
||||
</div>
|
||||
|
||||
<div class="spitzenkandidaten-grid">
|
||||
<!-- Grid wird dynamisch per JavaScript befüllt -->
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Alle Kandidaten Slider Section -->
|
||||
<section class="alle-kandidaten-section">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<span class="section-label">Unser Team</span>
|
||||
<h2>Alle 60 Kandidierenden für den Kreistag</h2>
|
||||
<p class="section-intro">Gemeinsam stark für Haßberge - hier finden Sie alle unsere Kandidierenden</p>
|
||||
</div>
|
||||
|
||||
<div class="alle-slider-container">
|
||||
<!-- Slider Wrapper -->
|
||||
<div class="alle-slider-wrapper">
|
||||
<!-- Prev Button -->
|
||||
<button class="alle-slider-btn alle-slider-btn-prev" aria-label="Vorherige Kandidierende">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
|
||||
<path d="M15 18L9 12L15 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<!-- Slider Track -->
|
||||
<div class="alle-slider-track">
|
||||
<div class="alle-slider-content">
|
||||
<!-- Slides werden per JavaScript erstellt -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Next Button -->
|
||||
<button class="alle-slider-btn alle-slider-btn-next" aria-label="Nächste Kandidierende">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
|
||||
<path d="M9 18L15 12L9 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Slider Controls -->
|
||||
<div class="alle-slider-controls">
|
||||
<!-- Dots Navigation -->
|
||||
<div class="alle-slider-dots" role="tablist" aria-label="Kandidierende Navigation"></div>
|
||||
|
||||
<!-- Counter -->
|
||||
<div class="alle-slider-counter">
|
||||
<span class="alle-current-slide">1</span> / <span class="alle-total-slides">15</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Call to Action Section -->
|
||||
<section class="cta-section">
|
||||
<div class="container">
|
||||
<div class="cta-content">
|
||||
<h2>Gemeinsam gestalten wir die Zukunft</h2>
|
||||
<p>Unterstützen Sie uns auf dem Weg zu einem grünen, nachhaltigen und gerechten Landkreis Haßberge</p>
|
||||
<div class="cta-buttons">
|
||||
<a href="#kontakt" class="btn-hero">Jetzt engagieren</a>
|
||||
<a href="#programm" class="btn-hero-secondary">Unser Programm</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-content">
|
||||
<div class="footer-column">
|
||||
<h3>BÜNDNIS 90/DIE GRÜNEN</h3>
|
||||
<p>Kreisverband Haßberge</p>
|
||||
<p class="footer-tagline">Wir gestalten Zukunft - gemeinsam mit Ihnen</p>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Navigation</h4>
|
||||
<ul>
|
||||
<li><a href="#landrat">Unser Landrat</a></li>
|
||||
<li><a href="#kandidaten">Kandidierende</a></li>
|
||||
<li><a href="#programm">Programm</a></li>
|
||||
<li><a href="#kontakt">Kontakt</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Rechtliches</h4>
|
||||
<ul>
|
||||
<li><a href="impressum.html">Impressum</a></li>
|
||||
<li><a href="datenschutz.html">Datenschutz</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-column">
|
||||
<h4>Folgen Sie uns</h4>
|
||||
<div class="social-links">
|
||||
<a href="#" aria-label="Facebook">Facebook</a>
|
||||
<a href="#" aria-label="Instagram">Instagram</a>
|
||||
<a href="#" aria-label="Twitter">Twitter</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2026 BÜNDNIS 90/DIE GRÜNEN Landkreis Haßberge. Kreistagswahl 2026.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- Modal für Kandidierenden-Details -->
|
||||
<div id="kandidat-modal" class="modal" aria-hidden="true">
|
||||
<div class="modal-overlay"></div>
|
||||
<div class="modal-container">
|
||||
<button class="modal-close" aria-label="Modal schließen">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none">
|
||||
<path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
</svg>
|
||||
</button>
|
||||
<div class="modal-content">
|
||||
<!-- Wird dynamisch befüllt -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="js/script.js?v=2.0"></script>
|
||||
</body>
|
||||
</html>
|
||||
700
gruene-hassberge/js/script.js
Normal file
700
gruene-hassberge/js/script.js
Normal file
@@ -0,0 +1,700 @@
|
||||
/**
|
||||
* ============================================
|
||||
* KREISTAGSWAHL 2026 - INTERACTIVE COMPONENTS
|
||||
* ============================================
|
||||
*
|
||||
* NEUE STRUKTUR:
|
||||
* - Spitzenkandidaten: 3 Cards nebeneinander (kein Slider) mit Modal
|
||||
* - Alle Kandidaten: Multi-Card Slider mit 1/2/3/4 Cards pro Slide (responsive)
|
||||
* - Modal für alle Kandidaten-Details
|
||||
*/
|
||||
|
||||
// ============================================
|
||||
// KANDIDATEN-DATEN (werden aus JSON geladen)
|
||||
// ============================================
|
||||
|
||||
let kandidaten = [];
|
||||
let spitzenkandidaten = [];
|
||||
|
||||
/**
|
||||
* Lädt Spitzenkandidaten-Daten aus der JSON-Datei
|
||||
*/
|
||||
async function loadSpitzenkandidaten() {
|
||||
try {
|
||||
const response = await fetch('../data/spitzenkandidaten.json');
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
const data = await response.json();
|
||||
spitzenkandidaten = data;
|
||||
|
||||
console.log(`✅ ${spitzenkandidaten.length} Spitzenkandidaten erfolgreich aus JSON geladen`);
|
||||
return spitzenkandidaten;
|
||||
} catch (error) {
|
||||
console.error('❌ Fehler beim Laden der Spitzenkandidaten:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lädt Kandidaten-Daten aus der JSON-Datei (alle 60)
|
||||
*/
|
||||
async function loadKandidaten() {
|
||||
try {
|
||||
const response = await fetch('../data/kandidaten.json');
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
const data = await response.json();
|
||||
kandidaten = data;
|
||||
|
||||
// Fülle auf 60 Kandidaten auf (falls weniger in JSON vorhanden)
|
||||
while (kandidaten.length < 60) {
|
||||
const baseIndex = kandidaten.length % 10;
|
||||
const kandidat = { ...kandidaten[baseIndex] };
|
||||
const num = kandidaten.length + 1;
|
||||
kandidat.name = `${kandidat.name.split(' ')[0]} ${kandidat.name.split(' ')[1]} ${num}`;
|
||||
kandidat.position = `Kreistagskandidat*in, Listenplatz ${num}`;
|
||||
kandidaten.push(kandidat);
|
||||
}
|
||||
|
||||
console.log(`✅ ${kandidaten.length} Kandidaten erfolgreich aus JSON geladen`);
|
||||
return kandidaten;
|
||||
} catch (error) {
|
||||
console.error('❌ Fehler beim Laden der Kandidaten:', error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// SPITZENKANDIDATEN GRID (3 Cards nebeneinander)
|
||||
// ============================================
|
||||
|
||||
class SpitzenkandidatenGrid {
|
||||
constructor(modal) {
|
||||
this.spitzenkandidaten = spitzenkandidaten;
|
||||
this.gridContainer = document.querySelector('.spitzenkandidaten-grid');
|
||||
this.modal = modal;
|
||||
|
||||
if (this.gridContainer) {
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
|
||||
init() {
|
||||
console.log(`✅ Spitzenkandidaten-Grid wird initialisiert mit ${this.spitzenkandidaten.length} Kandidaten`);
|
||||
this.createCards();
|
||||
}
|
||||
|
||||
createCards() {
|
||||
this.spitzenkandidaten.forEach((kandidat, index) => {
|
||||
const card = document.createElement('div');
|
||||
card.className = 'spitzenkandidat-card';
|
||||
card.setAttribute('data-kandidat-id', index);
|
||||
|
||||
// Topics HTML
|
||||
const topicsHTML = kandidat.topics
|
||||
.map(topic => `<span class="spitzenkandidat-topic-tag">${topic}</span>`)
|
||||
.join('');
|
||||
|
||||
card.innerHTML = `
|
||||
<div class="spitzenkandidat-card-image">
|
||||
<img src="${kandidat.image}"
|
||||
alt="${kandidat.name}"
|
||||
loading="lazy">
|
||||
</div>
|
||||
<div class="spitzenkandidat-card-content">
|
||||
<h3 class="spitzenkandidat-card-name">${kandidat.name}</h3>
|
||||
<p class="spitzenkandidat-card-position">${kandidat.position}</p>
|
||||
<p class="spitzenkandidat-card-bio">${kandidat.bio.split('\n')[0]}</p>
|
||||
<div class="spitzenkandidat-card-topics">
|
||||
${topicsHTML}
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// Click-Event für Modal
|
||||
card.style.cursor = 'pointer';
|
||||
card.addEventListener('click', () => {
|
||||
if (this.modal) {
|
||||
this.modal.open(kandidat);
|
||||
}
|
||||
});
|
||||
|
||||
this.gridContainer.appendChild(card);
|
||||
});
|
||||
|
||||
console.log(`📊 ${this.spitzenkandidaten.length} Spitzenkandidaten-Cards erstellt`);
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// ALLE KANDIDATEN MULTI-CARD SLIDER
|
||||
// Shows 1/2/3/4 cards per slide (responsive)
|
||||
// ============================================
|
||||
|
||||
class AlleKandidatenSlider {
|
||||
constructor(modal) {
|
||||
this.kandidaten = kandidaten;
|
||||
this.modal = modal;
|
||||
this.currentSlide = 0;
|
||||
this.totalSlides = 0;
|
||||
this.cardsPerSlide = 1; // Wird responsiv angepasst
|
||||
|
||||
// DOM Elemente
|
||||
this.sliderContent = document.querySelector('.alle-slider-content');
|
||||
this.prevBtn = document.querySelector('.alle-slider-btn-prev');
|
||||
this.nextBtn = document.querySelector('.alle-slider-btn-next');
|
||||
this.dotsContainer = document.querySelector('.alle-slider-dots');
|
||||
this.currentSlideSpan = document.querySelector('.alle-current-slide');
|
||||
this.totalSlidesSpan = document.querySelector('.alle-total-slides');
|
||||
|
||||
if (this.sliderContent) {
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
|
||||
init() {
|
||||
console.log(`✅ Alle-Kandidaten-Slider wird initialisiert mit ${this.kandidaten.length} Kandidaten`);
|
||||
|
||||
// Bestimme Cards pro Slide basierend auf Viewport
|
||||
this.updateCardsPerSlide();
|
||||
this.createSlides();
|
||||
this.createDots();
|
||||
this.attachEventListeners();
|
||||
this.showSlide(0);
|
||||
|
||||
// Re-render bei Resize
|
||||
window.addEventListener('resize', () => this.handleResize());
|
||||
}
|
||||
|
||||
/**
|
||||
* Bestimmt wie viele Cards pro Slide basierend auf Viewport-Breite
|
||||
*/
|
||||
updateCardsPerSlide() {
|
||||
const width = window.innerWidth;
|
||||
|
||||
if (width >= 1024) {
|
||||
this.cardsPerSlide = 4; // Desktop: 4 Cards
|
||||
} else if (width >= 768) {
|
||||
this.cardsPerSlide = 3; // Tablet: 3 Cards
|
||||
} else if (width >= 640) {
|
||||
this.cardsPerSlide = 2; // Small Tablet: 2 Cards
|
||||
} else {
|
||||
this.cardsPerSlide = 1; // Mobile: 1 Card
|
||||
}
|
||||
|
||||
this.totalSlides = Math.ceil(this.kandidaten.length / this.cardsPerSlide);
|
||||
console.log(`📱 Viewport: ${width}px → ${this.cardsPerSlide} Cards/Slide → ${this.totalSlides} Slides`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt Slides mit mehreren Cards
|
||||
*/
|
||||
createSlides() {
|
||||
// Lösche vorhandene Slides
|
||||
this.sliderContent.innerHTML = '';
|
||||
|
||||
for (let i = 0; i < this.totalSlides; i++) {
|
||||
const slide = document.createElement('div');
|
||||
slide.className = 'alle-slide';
|
||||
slide.setAttribute('data-slide', i);
|
||||
|
||||
// Hole Kandidaten für diesen Slide
|
||||
const startIndex = i * this.cardsPerSlide;
|
||||
const endIndex = Math.min(startIndex + this.cardsPerSlide, this.kandidaten.length);
|
||||
const slideKandidaten = this.kandidaten.slice(startIndex, endIndex);
|
||||
|
||||
// Erstelle Cards für diesen Slide
|
||||
slideKandidaten.forEach((kandidat, cardIndex) => {
|
||||
const card = this.createCard(kandidat, startIndex + cardIndex);
|
||||
slide.appendChild(card);
|
||||
});
|
||||
|
||||
this.sliderContent.appendChild(slide);
|
||||
}
|
||||
|
||||
console.log(`📊 ${this.totalSlides} Multi-Card Slides erstellt`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt eine einzelne Kandidaten-Card
|
||||
*/
|
||||
createCard(kandidat, index) {
|
||||
const card = document.createElement('div');
|
||||
card.className = 'kandidat-card';
|
||||
card.setAttribute('data-kandidat-id', index);
|
||||
|
||||
// Topics HTML (max 3)
|
||||
const topicsHTML = kandidat.topics
|
||||
.slice(0, 3)
|
||||
.map(topic => `<span class="kandidat-topic-tag">${topic}</span>`)
|
||||
.join('');
|
||||
|
||||
card.innerHTML = `
|
||||
<div class="kandidat-card-image">
|
||||
<img src="${kandidat.image}"
|
||||
alt="${kandidat.name}"
|
||||
loading="lazy">
|
||||
</div>
|
||||
<div class="kandidat-card-content">
|
||||
<h3 class="kandidat-card-name">${kandidat.name}</h3>
|
||||
<p class="kandidat-card-position">${kandidat.position}</p>
|
||||
<p class="kandidat-card-bio">${kandidat.bio}</p>
|
||||
<div class="kandidat-card-topics">
|
||||
${topicsHTML}
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// Click-Event für Modal
|
||||
card.style.cursor = 'pointer';
|
||||
card.addEventListener('click', () => {
|
||||
if (this.modal) {
|
||||
this.modal.open(kandidat);
|
||||
}
|
||||
});
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt Dot-Navigation
|
||||
*/
|
||||
createDots() {
|
||||
// Lösche vorhandene Dots
|
||||
this.dotsContainer.innerHTML = '';
|
||||
|
||||
// Zeige nur Dots wenn es mehr als 1 Slide gibt
|
||||
if (this.totalSlides <= 1) {
|
||||
this.dotsContainer.style.display = 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
this.dotsContainer.style.display = 'flex';
|
||||
|
||||
// Bei vielen Slides nur jeden 2. oder 3. Dot zeigen
|
||||
const dotStep = this.totalSlides > 20 ? 3 : (this.totalSlides > 10 ? 2 : 1);
|
||||
|
||||
for (let i = 0; i < this.totalSlides; i += dotStep) {
|
||||
const dot = document.createElement('button');
|
||||
dot.className = 'dot';
|
||||
dot.setAttribute('role', 'tab');
|
||||
dot.setAttribute('aria-label', `Zu Seite ${i + 1} springen`);
|
||||
dot.setAttribute('data-slide', i);
|
||||
dot.addEventListener('click', () => this.showSlide(i));
|
||||
this.dotsContainer.appendChild(dot);
|
||||
}
|
||||
|
||||
this.updateDotsDisplay();
|
||||
}
|
||||
|
||||
/**
|
||||
* Aktualisiert Dot-Anzeige
|
||||
*/
|
||||
updateDotsDisplay() {
|
||||
const dots = this.dotsContainer.querySelectorAll('.dot');
|
||||
dots.forEach((dot) => {
|
||||
const slideIndex = parseInt(dot.getAttribute('data-slide'));
|
||||
dot.classList.toggle('active', slideIndex === this.currentSlide);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Event Listeners
|
||||
*/
|
||||
attachEventListeners() {
|
||||
// Button Navigation
|
||||
this.prevBtn?.addEventListener('click', () => this.previousSlide());
|
||||
this.nextBtn?.addEventListener('click', () => this.nextSlide());
|
||||
|
||||
// Keyboard Navigation
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if (this.isInViewport()) {
|
||||
if (e.key === 'ArrowLeft') this.previousSlide();
|
||||
if (e.key === 'ArrowRight') this.nextSlide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeigt einen bestimmten Slide
|
||||
*/
|
||||
showSlide(index) {
|
||||
// Loop: Wenn Ende erreicht, springe zum Anfang
|
||||
if (index >= this.totalSlides) index = 0;
|
||||
if (index < 0) index = this.totalSlides - 1;
|
||||
|
||||
this.currentSlide = index;
|
||||
|
||||
// Update Slides
|
||||
const slides = this.sliderContent.querySelectorAll('.alle-slide');
|
||||
slides.forEach((slide, i) => {
|
||||
const isActive = i === index;
|
||||
slide.classList.toggle('active', isActive);
|
||||
slide.setAttribute('aria-hidden', !isActive);
|
||||
});
|
||||
|
||||
// Update Dots
|
||||
this.updateDotsDisplay();
|
||||
|
||||
// Update Counter
|
||||
this.updateCounter();
|
||||
|
||||
// Update Navigation Buttons
|
||||
this.updateButtons();
|
||||
|
||||
console.log(`📍 Slide ${index + 1} / ${this.totalSlides} wird angezeigt`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigation: Vorheriger Slide
|
||||
*/
|
||||
previousSlide() {
|
||||
this.showSlide(this.currentSlide - 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigation: Nächster Slide
|
||||
*/
|
||||
nextSlide() {
|
||||
this.showSlide(this.currentSlide + 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Aktualisiert Counter
|
||||
*/
|
||||
updateCounter() {
|
||||
if (this.currentSlideSpan) {
|
||||
this.currentSlideSpan.textContent = this.currentSlide + 1;
|
||||
}
|
||||
if (this.totalSlidesSpan) {
|
||||
this.totalSlidesSpan.textContent = this.totalSlides;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Aktualisiert Button-Status
|
||||
*/
|
||||
updateButtons() {
|
||||
// Bei Loop sind Buttons immer aktiviert
|
||||
if (this.prevBtn) this.prevBtn.disabled = false;
|
||||
if (this.nextBtn) this.nextBtn.disabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Behandelt Resize-Events
|
||||
*/
|
||||
handleResize() {
|
||||
const oldCardsPerSlide = this.cardsPerSlide;
|
||||
this.updateCardsPerSlide();
|
||||
|
||||
// Nur neu rendern wenn sich cardsPerSlide geändert hat
|
||||
if (oldCardsPerSlide !== this.cardsPerSlide) {
|
||||
console.log(`🔄 Resize: ${oldCardsPerSlide} → ${this.cardsPerSlide} Cards/Slide`);
|
||||
|
||||
// Berechne neue Slide-Position basierend auf erstem sichtbaren Kandidaten
|
||||
const firstVisibleKandidatIndex = this.currentSlide * oldCardsPerSlide;
|
||||
const newSlideIndex = Math.floor(firstVisibleKandidatIndex / this.cardsPerSlide);
|
||||
|
||||
this.createSlides();
|
||||
this.createDots();
|
||||
this.showSlide(Math.min(newSlideIndex, this.totalSlides - 1));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft ob Slider im Viewport ist
|
||||
*/
|
||||
isInViewport() {
|
||||
if (!this.sliderContent) return false;
|
||||
const rect = this.sliderContent.getBoundingClientRect();
|
||||
return rect.top < window.innerHeight && rect.bottom > 0;
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// MOBILE MENU
|
||||
// ============================================
|
||||
|
||||
class MobileMenu {
|
||||
constructor() {
|
||||
this.toggle = document.querySelector('.mobile-menu-toggle');
|
||||
this.navLinks = document.querySelector('.nav-links');
|
||||
this.isOpen = false;
|
||||
|
||||
this.init();
|
||||
}
|
||||
|
||||
init() {
|
||||
if (!this.toggle) return;
|
||||
|
||||
this.toggle.addEventListener('click', () => this.toggleMenu());
|
||||
|
||||
// Schließe Menü bei Klick auf Links
|
||||
const links = this.navLinks.querySelectorAll('a');
|
||||
links.forEach(link => {
|
||||
link.addEventListener('click', () => {
|
||||
if (this.isOpen) this.toggleMenu();
|
||||
});
|
||||
});
|
||||
|
||||
// Schließe bei ESC-Taste
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Escape' && this.isOpen) {
|
||||
this.toggleMenu();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
toggleMenu() {
|
||||
this.isOpen = !this.isOpen;
|
||||
|
||||
// Mobile: Flexbox-Layout für vertikales Menü
|
||||
if (this.isOpen) {
|
||||
this.navLinks.style.display = 'flex';
|
||||
this.navLinks.style.flexDirection = 'column';
|
||||
this.navLinks.style.position = 'absolute';
|
||||
this.navLinks.style.top = '100%';
|
||||
this.navLinks.style.left = '0';
|
||||
this.navLinks.style.right = '0';
|
||||
this.navLinks.style.background = 'rgb(245, 241, 233)';
|
||||
this.navLinks.style.padding = '1rem';
|
||||
this.navLinks.style.boxShadow = '0 4px 8px rgba(0,0,0,0.1)';
|
||||
} else {
|
||||
this.navLinks.style.display = 'none';
|
||||
}
|
||||
|
||||
this.toggle.setAttribute('aria-expanded', this.isOpen);
|
||||
|
||||
// Animiere Hamburger Icon
|
||||
const spans = this.toggle.querySelectorAll('span');
|
||||
if (this.isOpen) {
|
||||
spans[0].style.transform = 'rotate(45deg) translate(5px, 5px)';
|
||||
spans[1].style.opacity = '0';
|
||||
spans[2].style.transform = 'rotate(-45deg) translate(7px, -6px)';
|
||||
} else {
|
||||
spans.forEach(span => {
|
||||
span.style.transform = '';
|
||||
span.style.opacity = '';
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// KANDIDATEN MODAL
|
||||
// ============================================
|
||||
|
||||
class KandidatenModal {
|
||||
constructor() {
|
||||
this.modal = document.getElementById('kandidat-modal');
|
||||
this.modalContent = this.modal?.querySelector('.modal-content');
|
||||
this.closeBtn = this.modal?.querySelector('.modal-close');
|
||||
this.overlay = this.modal?.querySelector('.modal-overlay');
|
||||
|
||||
if (this.modal) {
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
|
||||
init() {
|
||||
// Close-Button
|
||||
this.closeBtn?.addEventListener('click', () => this.close());
|
||||
|
||||
// Overlay-Klick
|
||||
this.overlay?.addEventListener('click', () => this.close());
|
||||
|
||||
// ESC-Taste
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Escape' && this.modal.classList.contains('active')) {
|
||||
this.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
open(kandidat) {
|
||||
if (!this.modal || !kandidat) return;
|
||||
|
||||
// Modal-Inhalt erstellen
|
||||
const topicsHTML = kandidat.topics
|
||||
.map(topic => `<span class="modal-topic-tag">${topic}</span>`)
|
||||
.join('');
|
||||
|
||||
// Highlights HTML (falls vorhanden, für Spitzenkandidaten)
|
||||
const highlightsHTML = kandidat.highlights ? `
|
||||
<div class="modal-highlights">
|
||||
<h3>Meine Ziele</h3>
|
||||
<ul>
|
||||
${kandidat.highlights.map(highlight => `<li>${highlight}</li>`).join('')}
|
||||
</ul>
|
||||
</div>
|
||||
` : '';
|
||||
|
||||
// Bio mit Zeilenumbrüchen
|
||||
const bioHTML = kandidat.bio.replace(/\n/g, '<br><br>');
|
||||
|
||||
this.modalContent.innerHTML = `
|
||||
<div class="modal-header">
|
||||
<div class="modal-image">
|
||||
<img src="${kandidat.image}" alt="${kandidat.name}">
|
||||
</div>
|
||||
<div class="modal-info">
|
||||
<h2>${kandidat.name}</h2>
|
||||
<p class="position">${kandidat.position}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-bio">
|
||||
${bioHTML}
|
||||
</div>
|
||||
${highlightsHTML}
|
||||
<div class="modal-topics">
|
||||
<h3>Schwerpunkte</h3>
|
||||
<div class="modal-topics-list">
|
||||
${topicsHTML}
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
// Modal öffnen
|
||||
this.modal.classList.add('active');
|
||||
this.modal.setAttribute('aria-hidden', 'false');
|
||||
document.body.classList.add('modal-open');
|
||||
}
|
||||
|
||||
close() {
|
||||
if (!this.modal) return;
|
||||
|
||||
this.modal.classList.remove('active');
|
||||
this.modal.setAttribute('aria-hidden', 'true');
|
||||
document.body.classList.remove('modal-open');
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// SMOOTH SCROLL FÜR ANKER-LINKS
|
||||
// ============================================
|
||||
|
||||
function initSmoothScroll() {
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener('click', function (e) {
|
||||
const href = this.getAttribute('href');
|
||||
|
||||
// Ignoriere leere Anker und Platzhalter
|
||||
if (href === '#' || href === '#kontakt' || href === '#programm' ||
|
||||
href === '#impressum' || href === '#datenschutz') {
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
const target = document.querySelector(href);
|
||||
if (target) {
|
||||
e.preventDefault();
|
||||
const navHeight = document.querySelector('.navbar')?.offsetHeight || 0;
|
||||
const targetPosition = target.offsetTop - navHeight - 20;
|
||||
|
||||
window.scrollTo({
|
||||
top: targetPosition,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// INTERSECTION OBSERVER für Fade-In Animationen
|
||||
// ============================================
|
||||
|
||||
function initScrollAnimations() {
|
||||
const observerOptions = {
|
||||
threshold: 0.1,
|
||||
rootMargin: '0px 0px -50px 0px'
|
||||
};
|
||||
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.classList.add('visible');
|
||||
}
|
||||
});
|
||||
}, observerOptions);
|
||||
|
||||
// Beobachte Sections für Fade-In Effekt
|
||||
const sections = document.querySelectorAll('.landrat-section, .spitzenkandidaten-section, .alle-kandidaten-section, .cta-section');
|
||||
sections.forEach(section => {
|
||||
section.classList.add('fade-in');
|
||||
observer.observe(section);
|
||||
});
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// PERFORMANCE: Lazy Loading für Bilder
|
||||
// ============================================
|
||||
|
||||
function initLazyLoading() {
|
||||
if ('loading' in HTMLImageElement.prototype) {
|
||||
console.log('✅ Native lazy loading unterstützt');
|
||||
return;
|
||||
}
|
||||
|
||||
// Fallback für ältere Browser
|
||||
const images = document.querySelectorAll('img[loading="lazy"]');
|
||||
const imageObserver = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
const img = entry.target;
|
||||
img.src = img.dataset.src || img.src;
|
||||
imageObserver.unobserve(img);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
images.forEach(img => imageObserver.observe(img));
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// INITIALISIERUNG
|
||||
// ============================================
|
||||
|
||||
document.addEventListener('DOMContentLoaded', async () => {
|
||||
console.log('🚀 Kreistagswahl 2026 - Landingpage wird initialisiert...');
|
||||
|
||||
// 1. Lade Spitzenkandidaten-Daten aus JSON
|
||||
await loadSpitzenkandidaten();
|
||||
|
||||
// 2. Lade alle Kandidaten-Daten aus JSON
|
||||
await loadKandidaten();
|
||||
|
||||
// 3. Initialisiere Modal
|
||||
const modal = new KandidatenModal();
|
||||
|
||||
// 4. Initialisiere Spitzenkandidaten-Grid (3 Cards nebeneinander)
|
||||
const spitzenGrid = new SpitzenkandidatenGrid(modal);
|
||||
|
||||
// 5. Initialisiere Alle-Kandidaten-Slider (Multi-Card Slider)
|
||||
const alleSlider = new AlleKandidatenSlider(modal);
|
||||
|
||||
// 6. Initialisiere Mobile Menu
|
||||
const mobileMenu = new MobileMenu();
|
||||
|
||||
// 7. Initialisiere Smooth Scroll
|
||||
initSmoothScroll();
|
||||
|
||||
// 8. Initialisiere Scroll-Animationen
|
||||
initScrollAnimations();
|
||||
|
||||
// 9. Initialisiere Lazy Loading
|
||||
initLazyLoading();
|
||||
|
||||
console.log('✅ Alle Komponenten erfolgreich geladen!');
|
||||
console.log(`📊 Spitzen-Grid: ${spitzenkandidaten.length} Kandidaten | Alle-Slider: ${kandidaten.length} Kandidaten (${alleSlider.totalSlides} Slides)`);
|
||||
});
|
||||
|
||||
// ============================================
|
||||
// ERROR HANDLING
|
||||
// ============================================
|
||||
|
||||
window.addEventListener('error', (e) => {
|
||||
console.error('❌ JavaScript Fehler:', e.message);
|
||||
});
|
||||
Reference in New Issue
Block a user