chore: Update nginx config and add static HTML pages

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Boenisch
2026-02-12 20:29:28 +01:00
parent 97373580a8
commit 3739d2b8b9
5 changed files with 3924 additions and 0 deletions

View File

@@ -639,6 +639,11 @@ server {
root /usr/share/nginx/html/portal;
location /compliance-hub/ {
alias /usr/share/nginx/html/portal/compliance-hub/;
try_files $uri $uri/ /compliance-hub/index.html;
}
location / {
try_files $uri $uri/ /index.html;
}

View File

@@ -0,0 +1,436 @@
<!DOCTYPE html>
<html lang="de" data-theme="light">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Datenschutzerklaerung — BreakPilot Comply</title>
<style>
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
:root {
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
--max-w: 760px;
--nav-h: 72px;
}
[data-theme="light"] {
--primary: #7c3aed;
--primary-light: #8b5cf6;
--bg: #faf9ff;
--bg-alt: #f3f0ff;
--surface: #ffffff;
--surface-glass: rgba(255, 255, 255, 0.7);
--border: #e5e1f5;
--text: #1e1b4b;
--text-secondary: #4c4578;
--text-muted: #8b83b3;
--shadow-md: 0 4px 16px rgba(124, 58, 237, 0.08);
--gradient-cta: linear-gradient(135deg, #7c3aed 0%, #8b5cf6 100%);
}
[data-theme="dark"] {
--primary: #a78bfa;
--primary-light: #c4b5fd;
--bg: #0c0a1d;
--bg-alt: #110e26;
--surface: rgba(255, 255, 255, 0.04);
--surface-glass: rgba(17, 14, 38, 0.8);
--border: rgba(167, 139, 250, 0.12);
--text: #e8e5ff;
--text-secondary: #b8b0d8;
--text-muted: #7a6fa8;
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4);
--gradient-cta: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%);
}
html { font-size: 16px; }
body {
font-family: var(--font-sans);
color: var(--text);
background: var(--bg);
line-height: 1.7;
-webkit-font-smoothing: antialiased;
transition: background 0.4s, color 0.4s;
}
.nav {
position: fixed;
top: 0; left: 0; right: 0;
height: var(--nav-h);
z-index: 1000;
background: var(--surface-glass);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-bottom: 1px solid var(--border);
transition: background 0.4s;
}
.nav-inner {
max-width: var(--max-w);
margin: 0 auto;
padding: 0 1.5rem;
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.nav-brand {
display: flex;
align-items: center;
gap: 0.6rem;
text-decoration: none;
color: var(--text);
font-weight: 700;
font-size: 1.2rem;
}
.nav-brand-icon {
width: 34px; height: 34px;
border-radius: 10px;
background: var(--gradient-cta);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.nav-brand-icon svg { width: 20px; height: 20px; }
.nav-badge {
font-size: 0.65rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
background: var(--gradient-cta);
color: white;
padding: 0.15rem 0.5rem;
border-radius: 99px;
margin-left: 0.25rem;
}
.nav-back {
font-size: 0.88rem;
color: var(--text-secondary);
text-decoration: none;
display: flex;
align-items: center;
gap: 0.3rem;
transition: color 0.2s;
}
.nav-back:hover { color: var(--primary); }
.nav-back svg { width: 16px; height: 16px; }
.theme-toggle {
background: rgba(124, 58, 237, 0.08);
border: 1px solid var(--border);
border-radius: 99px;
width: 44px; height: 26px;
cursor: pointer;
display: flex;
align-items: center;
padding: 0 3px;
transition: background 0.3s;
}
.theme-toggle .knob {
width: 20px; height: 20px;
border-radius: 50%;
background: var(--primary);
transition: transform 0.3s;
display: flex;
align-items: center;
justify-content: center;
}
.theme-toggle .knob svg { width: 12px; height: 12px; fill: white; }
[data-theme="light"] .theme-toggle .knob { transform: translateX(0); }
[data-theme="dark"] .theme-toggle .knob { transform: translateX(18px); }
.theme-toggle .icon-moon, [data-theme="dark"] .theme-toggle .icon-sun { display: none; }
[data-theme="dark"] .theme-toggle .icon-moon { display: block; }
.nav-right { display: flex; align-items: center; gap: 0.75rem; }
.content {
max-width: var(--max-w);
margin: 0 auto;
padding: calc(var(--nav-h) + 3rem) 1.5rem 4rem;
}
.content h1 {
font-size: 2rem;
font-weight: 800;
letter-spacing: -0.02em;
margin-bottom: 0.5rem;
}
.content .subtitle {
color: var(--text-muted);
font-size: 0.9rem;
margin-bottom: 3rem;
}
.content h2 {
font-size: 1.2rem;
font-weight: 700;
margin-top: 2.5rem;
margin-bottom: 0.75rem;
letter-spacing: -0.01em;
}
.content h3 {
font-size: 1.05rem;
font-weight: 600;
margin-top: 1.5rem;
margin-bottom: 0.5rem;
}
.content p, .content li {
color: var(--text-secondary);
font-size: 0.95rem;
margin-bottom: 0.75rem;
}
.content ul { margin-left: 1.25rem; margin-bottom: 1rem; }
.content li { margin-bottom: 0.4rem; }
.content a { color: var(--primary); text-decoration: underline; }
.content a:hover { color: var(--primary-light); }
.placeholder {
background: rgba(124, 58, 237, 0.08);
color: var(--primary);
padding: 0.1rem 0.4rem;
border-radius: 4px;
font-weight: 600;
font-size: 0.88rem;
}
[data-theme="dark"] .placeholder {
background: rgba(167, 139, 250, 0.15);
}
.footer {
border-top: 1px solid var(--border);
padding: 2rem 1.5rem;
text-align: center;
font-size: 0.82rem;
color: var(--text-muted);
}
.footer a { color: var(--text-secondary); text-decoration: none; }
.footer a:hover { color: var(--primary); }
</style>
</head>
<body>
<nav class="nav">
<div class="nav-inner">
<a href="index.html" class="nav-brand">
<span class="nav-brand-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
</svg>
</span>
BreakPilot <span class="nav-badge">Comply</span>
</a>
<div class="nav-right">
<a href="index.html" class="nav-back">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"/></svg>
Zurueck
</a>
<button class="theme-toggle" id="themeToggle" aria-label="Theme umschalten">
<span class="knob">
<svg class="icon-sun" viewBox="0 0 24 24"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>
<svg class="icon-moon" viewBox="0 0 24 24"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</span>
</button>
</div>
</div>
</nav>
<main class="content">
<h1>Datenschutzerklaerung</h1>
<p class="subtitle">nach Art. 13 und 14 DSGVO — Stand: Februar 2025</p>
<h2>1. Verantwortlicher</h2>
<p>
<span class="placeholder">[FIRMENNAME]</span> <span class="placeholder">[RECHTSFORM]</span><br>
<span class="placeholder">[STRASSE HAUSNUMMER]</span><br>
<span class="placeholder">[PLZ ORT]</span><br>
Deutschland<br><br>
Telefon: <span class="placeholder">[+49 XXX XXXXXXX]</span><br>
E-Mail: <span class="placeholder">[E-MAIL-ADRESSE]</span>
</p>
<h2>2. Datenschutzbeauftragter</h2>
<p>
<span class="placeholder">[VORNAME NACHNAME]</span><br>
E-Mail: <span class="placeholder">[DSB-E-MAIL]</span><br>
Telefon: <span class="placeholder">[DSB-TELEFON]</span>
</p>
<p>
Sie koennen sich jederzeit bei Fragen zum Datenschutz direkt an unseren Datenschutzbeauftragten wenden.
</p>
<h2>3. Ueberblick der Verarbeitungen</h2>
<p>
Die nachfolgende Uebersicht fasst die Arten der verarbeiteten Daten und die Zwecke ihrer Verarbeitung zusammen und verweist auf die betroffenen Personen.
</p>
<h3>Arten der verarbeiteten Daten</h3>
<ul>
<li>Bestandsdaten (z.B. Namen, Adressen)</li>
<li>Kontaktdaten (z.B. E-Mail, Telefonnummern)</li>
<li>Inhaltsdaten (z.B. Eingaben in Kontaktformularen)</li>
<li>Nutzungsdaten (z.B. besuchte Webseiten, Zugriffszeiten)</li>
<li>Meta-/Kommunikationsdaten (z.B. IP-Adressen, Browser-Informationen)</li>
</ul>
<h3>Kategorien betroffener Personen</h3>
<ul>
<li>Nutzer der Website</li>
<li>Kommunikationspartner (E-Mail, Kontaktformular)</li>
<li>Interessenten und Geschaeftskunden</li>
</ul>
<h2>4. Rechtsgrundlagen</h2>
<p>Im Folgenden erhalten Sie eine Uebersicht der Rechtsgrundlagen der DSGVO, auf deren Basis wir personenbezogene Daten verarbeiten:</p>
<ul>
<li><strong>Einwilligung (Art. 6 Abs. 1 lit. a DSGVO)</strong> — Die betroffene Person hat ihre Einwilligung in die Verarbeitung der sie betreffenden personenbezogenen Daten gegeben.</li>
<li><strong>Vertragserfuellung (Art. 6 Abs. 1 lit. b DSGVO)</strong> — Die Verarbeitung ist fuer die Erfuellung eines Vertrags erforderlich.</li>
<li><strong>Rechtliche Verpflichtung (Art. 6 Abs. 1 lit. c DSGVO)</strong> — Die Verarbeitung ist zur Erfuellung einer rechtlichen Verpflichtung erforderlich.</li>
<li><strong>Berechtigte Interessen (Art. 6 Abs. 1 lit. f DSGVO)</strong> — Die Verarbeitung ist zur Wahrung berechtigter Interessen erforderlich, sofern nicht die Interessen der betroffenen Person ueberwiegen.</li>
</ul>
<h2>5. Hosting und Bereitstellung der Website</h2>
<p>
Unsere Website wird auf Servern in Deutschland gehostet. Bei jedem Zugriff auf unsere Website werden durch den Browser automatisch Informationen an den Server uebermittelt. Diese Informationen werden temporaer in sogenannten Server-Log-Dateien gespeichert:
</p>
<ul>
<li>IP-Adresse des anfragenden Rechners</li>
<li>Datum und Uhrzeit des Zugriffs</li>
<li>Name und URL der abgerufenen Datei</li>
<li>Uebertragene Datenmenge</li>
<li>Meldung, ob der Abruf erfolgreich war (HTTP-Statuscode)</li>
<li>Browsertyp und -version</li>
<li>Verwendetes Betriebssystem</li>
<li>Referrer URL (die zuvor besuchte Seite)</li>
</ul>
<p>
Die genannten Daten werden zu folgenden Zwecken verarbeitet:
</p>
<ul>
<li>Gewaehrleistung eines reibungslosen Verbindungsaufbaus der Website</li>
<li>Gewaehrleistung einer komfortablen Nutzung unserer Website</li>
<li>Auswertung der Systemsicherheit und -stabilitaet</li>
</ul>
<p>
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der sicheren und effizienten Bereitstellung unserer Website).
</p>
<p>
<strong>Speicherdauer:</strong> Die Server-Log-Dateien werden nach maximal 30 Tagen automatisch geloescht, sofern keine weitere Aufbewahrung zu Beweiszwecken erforderlich ist.
</p>
<h2>6. Kontaktaufnahme</h2>
<p>
Wenn Sie uns per E-Mail oder ueber ein Kontaktformular kontaktieren, werden die von Ihnen mitgeteilten Daten (Name, E-Mail-Adresse, ggf. Telefonnummer sowie der Inhalt Ihrer Anfrage) von uns gespeichert, um Ihre Anfrage zu bearbeiten.
</p>
<p>
<strong>Rechtsgrundlage:</strong> Art. 6 Abs. 1 lit. b DSGVO (vorvertragliche Massnahmen) bzw. Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der Beantwortung von Anfragen).
</p>
<p>
<strong>Speicherdauer:</strong> Die im Rahmen der Kontaktaufnahme uebermittelten Daten werden geloescht, sobald Ihre Anfrage vollstaendig bearbeitet wurde und keine weitere Speicherung erforderlich ist. Eine Pruefung erfolgt alle 12 Monate.
</p>
<h2>7. Cookies</h2>
<p>
Unsere Website verwendet ausschliesslich technisch notwendige Cookies. Diese dienen dazu, unsere Website funktionsfaehig zu machen (z.B. Theme-Praeferenz fuer Dark/Light Mode). Es werden <strong>keine Tracking-Cookies, Analyse-Cookies oder Werbe-Cookies</strong> verwendet.
</p>
<p>
Technisch notwendige Cookies werden auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO gespeichert. Wir haben ein berechtigtes Interesse an der Speicherung technisch notwendiger Cookies zur technisch fehlerfreien und optimierten Bereitstellung unserer Dienste.
</p>
<p>
Konkret verwenden wir:
</p>
<ul>
<li><strong>localStorage (bp-comply-theme)</strong> — Speichert Ihre Theme-Praeferenz (Hell/Dunkel). Keine personenbezogenen Daten. Loeschbar ueber die Browsereinstellungen.</li>
</ul>
<h2>8. SSL/TLS-Verschluesselung</h2>
<p>
Diese Website nutzt aus Sicherheitsgruenden und zum Schutz der Uebertragung vertraulicher Inhalte eine SSL- bzw. TLS-Verschluesselung. Sie erkennen eine verschluesselte Verbindung am Schloss-Symbol in der Adresszeile Ihres Browsers und daran, dass die Adresszeile mit "https://" beginnt.
</p>
<p>
Wenn die SSL- bzw. TLS-Verschluesselung aktiviert ist, koennen die Daten, die Sie an uns uebermitteln, nicht von Dritten mitgelesen werden.
</p>
<h2>9. Rechte der betroffenen Personen</h2>
<p>Ihnen stehen als betroffene Person folgende Rechte zu:</p>
<h3>Auskunftsrecht (Art. 15 DSGVO)</h3>
<p>Sie haben das Recht, eine Bestaetigung darueber zu verlangen, ob personenbezogene Daten verarbeitet werden, und auf Auskunft ueber diese Daten sowie auf weitere Informationen und Kopie der Daten.</p>
<h3>Recht auf Berichtigung (Art. 16 DSGVO)</h3>
<p>Sie haben das Recht, die Vervollstaendigung oder Berichtigung der Sie betreffenden unrichtigen Daten zu verlangen.</p>
<h3>Recht auf Loeschung (Art. 17 DSGVO)</h3>
<p>Sie haben das Recht zu verlangen, dass die Sie betreffenden Daten unverzueglich geloescht werden, sofern einer der in Art. 17 DSGVO genannten Gruende zutrifft.</p>
<h3>Recht auf Einschraenkung der Verarbeitung (Art. 18 DSGVO)</h3>
<p>Sie haben das Recht, die Einschraenkung der Verarbeitung zu verlangen, wenn eine der in Art. 18 DSGVO genannten Voraussetzungen gegeben ist.</p>
<h3>Recht auf Datenuebertragbarkeit (Art. 20 DSGVO)</h3>
<p>Sie haben das Recht, die Sie betreffenden Daten in einem strukturierten, gaengigen und maschinenlesbaren Format zu erhalten und diese Daten einem anderen Verantwortlichen zu uebermitteln.</p>
<h3>Widerspruchsrecht (Art. 21 DSGVO)</h3>
<p>Sie haben das Recht, aus Gruenden, die sich aus Ihrer besonderen Situation ergeben, jederzeit gegen die Verarbeitung der Sie betreffenden Daten Widerspruch einzulegen. Der Verantwortliche verarbeitet die Daten dann nicht mehr, es sei denn, er kann zwingende schutzwuerdige Gruende nachweisen.</p>
<h3>Recht auf Widerruf einer Einwilligung (Art. 7 Abs. 3 DSGVO)</h3>
<p>Sie haben das Recht, eine einmal erteilte Einwilligung jederzeit zu widerrufen. Die Rechtmaessigkeit der aufgrund der Einwilligung bis zum Widerruf erfolgten Verarbeitung wird dadurch nicht beruehrt.</p>
<h2>10. Beschwerderecht bei einer Aufsichtsbehoerde</h2>
<p>
Unbeschadet eines anderweitigen verwaltungsrechtlichen oder gerichtlichen Rechtsbehelfs steht Ihnen das Recht auf Beschwerde bei einer Aufsichtsbehoerde zu, insbesondere in dem Mitgliedstaat Ihres gewoehnlichen Aufenthaltsorts, Ihres Arbeitsplatzes oder des Orts des mutmasslichen Verstosses, wenn Sie der Ansicht sind, dass die Verarbeitung der Sie betreffenden personenbezogenen Daten gegen die DSGVO verstoesst.
</p>
<p>
Die zustaendige Aufsichtsbehoerde fuer Datenschutzfragen ist:<br>
<span class="placeholder">[NAME DER AUFSICHTSBEHOERDE, z.B. Bayerisches Landesamt fuer Datenschutzaufsicht]</span><br>
<span class="placeholder">[ADRESSE DER AUFSICHTSBEHOERDE]</span>
</p>
<h2>11. Aenderung dieser Datenschutzerklaerung</h2>
<p>
Wir behalten uns vor, diese Datenschutzerklaerung anzupassen, damit sie stets den aktuellen rechtlichen Anforderungen entspricht oder um Aenderungen unserer Leistungen in der Datenschutzerklaerung umzusetzen. Fuer Ihren erneuten Besuch gilt dann die neue Datenschutzerklaerung.
</p>
</main>
<footer class="footer">
<a href="index.html">Startseite</a> &middot;
<a href="datenschutz.html">Datenschutz</a> &middot;
<a href="impressum.html">Impressum</a>
<br><br>
&copy; 2025 BreakPilot. Alle Rechte vorbehalten.
</footer>
<script>
(function() {
var toggle = document.getElementById('themeToggle');
var html = document.documentElement;
var stored = localStorage.getItem('bp-comply-theme');
if (stored) { html.setAttribute('data-theme', stored); }
else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
html.setAttribute('data-theme', 'dark');
}
toggle.addEventListener('click', function() {
var current = html.getAttribute('data-theme');
var next = current === 'dark' ? 'light' : 'dark';
html.setAttribute('data-theme', next);
localStorage.setItem('bp-comply-theme', next);
});
})();
</script>
</body>
</html>

View File

@@ -0,0 +1,360 @@
<!DOCTYPE html>
<html lang="de" data-theme="light">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Impressum — BreakPilot Comply</title>
<style>
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
:root {
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
--max-w: 760px;
--nav-h: 72px;
--radius-md: 14px;
}
[data-theme="light"] {
--primary: #7c3aed;
--primary-light: #8b5cf6;
--bg: #faf9ff;
--bg-alt: #f3f0ff;
--surface: #ffffff;
--surface-glass: rgba(255, 255, 255, 0.7);
--border: #e5e1f5;
--text: #1e1b4b;
--text-secondary: #4c4578;
--text-muted: #8b83b3;
--shadow-md: 0 4px 16px rgba(124, 58, 237, 0.08);
--gradient-cta: linear-gradient(135deg, #7c3aed 0%, #8b5cf6 100%);
}
[data-theme="dark"] {
--primary: #a78bfa;
--primary-light: #c4b5fd;
--bg: #0c0a1d;
--bg-alt: #110e26;
--surface: rgba(255, 255, 255, 0.04);
--surface-glass: rgba(17, 14, 38, 0.8);
--border: rgba(167, 139, 250, 0.12);
--text: #e8e5ff;
--text-secondary: #b8b0d8;
--text-muted: #7a6fa8;
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4);
--gradient-cta: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%);
}
html { font-size: 16px; }
body {
font-family: var(--font-sans);
color: var(--text);
background: var(--bg);
line-height: 1.7;
-webkit-font-smoothing: antialiased;
transition: background 0.4s, color 0.4s;
}
/* Nav */
.nav {
position: fixed;
top: 0; left: 0; right: 0;
height: var(--nav-h);
z-index: 1000;
background: var(--surface-glass);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-bottom: 1px solid var(--border);
transition: background 0.4s;
}
.nav-inner {
max-width: var(--max-w);
margin: 0 auto;
padding: 0 1.5rem;
height: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.nav-brand {
display: flex;
align-items: center;
gap: 0.6rem;
text-decoration: none;
color: var(--text);
font-weight: 700;
font-size: 1.2rem;
}
.nav-brand-icon {
width: 34px; height: 34px;
border-radius: 10px;
background: var(--gradient-cta);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.nav-brand-icon svg { width: 20px; height: 20px; }
.nav-badge {
font-size: 0.65rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
background: var(--gradient-cta);
color: white;
padding: 0.15rem 0.5rem;
border-radius: 99px;
margin-left: 0.25rem;
}
.nav-back {
font-size: 0.88rem;
color: var(--text-secondary);
text-decoration: none;
display: flex;
align-items: center;
gap: 0.3rem;
transition: color 0.2s;
}
.nav-back:hover { color: var(--primary); }
.nav-back svg { width: 16px; height: 16px; }
.theme-toggle {
background: rgba(124, 58, 237, 0.08);
border: 1px solid var(--border);
border-radius: 99px;
width: 44px; height: 26px;
cursor: pointer;
display: flex;
align-items: center;
padding: 0 3px;
transition: background 0.3s;
}
.theme-toggle .knob {
width: 20px; height: 20px;
border-radius: 50%;
background: var(--primary);
transition: transform 0.3s;
display: flex;
align-items: center;
justify-content: center;
}
.theme-toggle .knob svg { width: 12px; height: 12px; fill: white; }
[data-theme="light"] .theme-toggle .knob { transform: translateX(0); }
[data-theme="dark"] .theme-toggle .knob { transform: translateX(18px); }
.theme-toggle .icon-moon, [data-theme="dark"] .theme-toggle .icon-sun { display: none; }
[data-theme="dark"] .theme-toggle .icon-moon { display: block; }
.nav-right { display: flex; align-items: center; gap: 0.75rem; }
/* Content */
.content {
max-width: var(--max-w);
margin: 0 auto;
padding: calc(var(--nav-h) + 3rem) 1.5rem 4rem;
}
.content h1 {
font-size: 2rem;
font-weight: 800;
letter-spacing: -0.02em;
margin-bottom: 0.5rem;
}
.content .subtitle {
color: var(--text-muted);
font-size: 0.9rem;
margin-bottom: 3rem;
}
.content h2 {
font-size: 1.2rem;
font-weight: 700;
margin-top: 2.5rem;
margin-bottom: 0.75rem;
letter-spacing: -0.01em;
}
.content p, .content li {
color: var(--text-secondary);
font-size: 0.95rem;
margin-bottom: 0.75rem;
}
.content ul { margin-left: 1.25rem; margin-bottom: 1rem; }
.content li { margin-bottom: 0.4rem; }
.content a { color: var(--primary); text-decoration: underline; }
.content a:hover { color: var(--primary-light); }
.placeholder {
background: rgba(124, 58, 237, 0.08);
color: var(--primary);
padding: 0.1rem 0.4rem;
border-radius: 4px;
font-weight: 600;
font-size: 0.88rem;
}
[data-theme="dark"] .placeholder {
background: rgba(167, 139, 250, 0.15);
}
/* Footer */
.footer {
border-top: 1px solid var(--border);
padding: 2rem 1.5rem;
text-align: center;
font-size: 0.82rem;
color: var(--text-muted);
}
.footer a { color: var(--text-secondary); text-decoration: none; }
.footer a:hover { color: var(--primary); }
</style>
</head>
<body>
<nav class="nav">
<div class="nav-inner">
<a href="index.html" class="nav-brand">
<span class="nav-brand-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
</svg>
</span>
BreakPilot <span class="nav-badge">Comply</span>
</a>
<div class="nav-right">
<a href="index.html" class="nav-back">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 18 9 12 15 6"/></svg>
Zurueck
</a>
<button class="theme-toggle" id="themeToggle" aria-label="Theme umschalten">
<span class="knob">
<svg class="icon-sun" viewBox="0 0 24 24"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>
<svg class="icon-moon" viewBox="0 0 24 24"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
</span>
</button>
</div>
</div>
</nav>
<main class="content">
<h1>Impressum</h1>
<p class="subtitle">Angaben gemaess &sect;5 DDG (Digitale-Dienste-Gesetz)</p>
<h2>Angaben zum Diensteanbieter</h2>
<p>
<span class="placeholder">[FIRMENNAME]</span> <span class="placeholder">[RECHTSFORM, z.B. GmbH]</span><br>
<span class="placeholder">[STRASSE HAUSNUMMER]</span><br>
<span class="placeholder">[PLZ ORT]</span><br>
Deutschland
</p>
<h2>Vertretungsberechtigte Person(en)</h2>
<p>
Geschaeftsfuehrer: <span class="placeholder">[VORNAME NACHNAME]</span>
</p>
<h2>Kontakt</h2>
<p>
Telefon: <span class="placeholder">[+49 XXX XXXXXXX]</span><br>
E-Mail: <span class="placeholder">[E-MAIL-ADRESSE]</span><br>
Website: <a href="index.html">www.breakpilot.de</a>
</p>
<h2>Handelsregister</h2>
<p>
Registergericht: <span class="placeholder">[AMTSGERICHT ORT]</span><br>
Registernummer: <span class="placeholder">[HRB XXXXXX]</span>
</p>
<h2>Umsatzsteuer-Identifikationsnummer</h2>
<p>
Umsatzsteuer-Identifikationsnummer gemaess &sect;27a Umsatzsteuergesetz:<br>
<span class="placeholder">[DE XXXXXXXXX]</span>
</p>
<h2>Verantwortlich fuer den Inhalt</h2>
<p>
Verantwortlich nach &sect;18 Abs. 2 MStV:<br>
<span class="placeholder">[VORNAME NACHNAME]</span><br>
<span class="placeholder">[STRASSE HAUSNUMMER]</span><br>
<span class="placeholder">[PLZ ORT]</span>
</p>
<h2>EU-Streitschlichtung</h2>
<p>
Die Europaeische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit:
<a href="https://ec.europa.eu/consumers/odr/" target="_blank" rel="noopener">https://ec.europa.eu/consumers/odr/</a>
</p>
<p>
Unsere E-Mail-Adresse finden Sie oben im Impressum.
</p>
<h2>Verbraucherstreitbeilegung / Universalschlichtungsstelle</h2>
<p>
Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.
</p>
<h2>Haftung fuer Inhalte</h2>
<p>
Als Diensteanbieter sind wir gemaess &sect;7 Abs. 1 DDG fuer eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach &sect;&sect;8 bis 10 DDG sind wir als Diensteanbieter jedoch nicht verpflichtet, uebermittelte oder gespeicherte fremde Informationen zu ueberwachen oder nach Umstaenden zu forschen, die auf eine rechtswidrige Taetigkeit hinweisen.
</p>
<p>
Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberuehrt. Eine diesbezuegliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung moeglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
</p>
<h2>Haftung fuer Links</h2>
<p>
Unser Angebot enthaelt Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb koennen wir fuer diese fremden Inhalte auch keine Gewaehr uebernehmen. Fuer die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf moegliche Rechtsverstoesse ueberprueft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar.
</p>
<p>
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>Urheberrecht</h2>
<p>
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfaeltigung, Bearbeitung, Verbreitung und jede Art der Verwertung ausserhalb der Grenzen des Urheberrechtes beduerfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur fuer den privaten, nicht kommerziellen Gebrauch gestattet.
</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. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
</p>
</main>
<footer class="footer">
<a href="index.html">Startseite</a> &middot;
<a href="datenschutz.html">Datenschutz</a> &middot;
<a href="impressum.html">Impressum</a>
<br><br>
&copy; 2025 BreakPilot. Alle Rechte vorbehalten.
</footer>
<script>
(function() {
var toggle = document.getElementById('themeToggle');
var html = document.documentElement;
var stored = localStorage.getItem('bp-comply-theme');
if (stored) { html.setAttribute('data-theme', stored); }
else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
html.setAttribute('data-theme', 'dark');
}
toggle.addEventListener('click', function() {
var current = html.getAttribute('data-theme');
var next = current === 'dark' ? 'light' : 'dark';
html.setAttribute('data-theme', next);
localStorage.setItem('bp-comply-theme', next);
});
})();
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

1245
nginx/html/index.html Normal file

File diff suppressed because it is too large Load Diff