'use client'

import { LegalPage } from '@/components/legal/legal-page'
import { legal, isPlaceholder } from '@/config/legal'

function Val({ value }: { value: string }) {
  if (isPlaceholder(value)) {
    return <span className="text-amber-600 dark:text-amber-400 font-medium">{value}</span>
  }
  return <span className="text-foreground font-medium">{value}</span>
}

export default function DatenschutzPage() {
  const d = legal.documents.privacy
  return (
    <LegalPage
      title="Datenschutzerklärung"
      version={d.version}
      publishedAt={d.publishedAt}
      intro={`Diese Erklärung informiert transparent darüber, welche Personendaten ${legal.projectName} bearbeitet, zu welchem Zweck und wer daran beteiligt ist. Sie orientiert sich am Schweizer Datenschutzgesetz (DSG).`}
    >
      <section>
        <h2>1. Verantwortlicher</h2>
        <p>
          Verantwortlich für die Datenbearbeitung ist der Betreiber der Plattform{' '}
          <Val value={legal.operatorName} /> (<Val value={legal.operatorLegalForm} />),{' '}
          <Val value={legal.postalAddress} />.
        </p>
        <p><strong>Datenschutzkontakt:</strong> <Val value={legal.privacyContactEmail} /></p>
      </section>

      <section>
        <h2>2. Welche Daten werden bearbeitet?</h2>
        <ul>
          <li><strong>Registrierungs-/Kontodaten:</strong> Name, E-Mail-Adresse, Organisationsname, Rolle. Das Passwort wird mit einem geeigneten Einwegverfahren (bcrypt) gehasht und nie im Klartext gespeichert.</li>
          <li><strong>Einsatz-/Inhaltsdaten:</strong> Lagepläne, Journaleinträge, Zeichnungen, Koordinaten, Symbole, hochgeladene Dateien (Logos, Planbilder, Symbole) sowie zugehörige Projekt- und Organisationsdaten.</li>
          <li><strong>Protokoll-/Sicherheitsdaten:</strong> technische Zugriffs- und Fehlerprotokolle (z.B. Zeitpunkt, ungefähre technische Angaben) zur Gewährleistung von Betrieb und Sicherheit.</li>
          <li><strong>Zustimmungsnachweise:</strong> welche Version der Nutzungsbedingungen/Datenschutzerklärung/Organisationsbestätigung wann akzeptiert wurde — zu Beweiszwecken zusammen mit IP-Adresse und Gerät/Browser (User-Agent) sowie dem Dokument-Prüfwert (Hash).</li>
          <li><strong>Unterstützungsbeiträge (optional):</strong> bei freiwilligen Beiträgen der Betrag sowie freiwillig angegebener Name/Nachricht (Zahlungsabwicklung siehe Ziffer 9).</li>
        </ul>
      </section>

      <section>
        <h2>3. Zwecke</h2>
        <ul>
          <li>Bereitstellung und Betrieb der Applikation, Authentifizierung und Benutzer-/Organisationsverwaltung</li>
          <li>Echtzeit-Synchronisierung von Einsatzdaten zwischen berechtigten Teammitgliedern</li>
          <li>Erstellung von Rapporten und PDF-/PNG-Exporten</li>
          <li>Gewährleistung von Sicherheit, Stabilität und Missbrauchsprävention</li>
          <li>Technischer Support und Fehlerbehebung</li>
          <li>Erfüllung rechtlicher Pflichten (soweit anwendbar)</li>
        </ul>
      </section>

      <section>
        <h2>4. Grundlagen der Bearbeitung</h2>
        <p>
          Die Bearbeitung erfolgt insbesondere zur Erfüllung des Nutzungsverhältnisses (Vertrag), aufgrund
          berechtigter Interessen am sicheren und stabilen Betrieb sowie – wo erforderlich – gestützt auf Ihre
          Einwilligung. Zwingende gesetzliche Bestimmungen bleiben vorbehalten.
        </p>
      </section>

      <section id="dienstleister" className="scroll-mt-20">
        <h2>5. Empfänger und Dienstleister (Subprozessoren)</h2>
        <p>
          Für den technischen Betrieb können sorgfältig ausgewählte Dienstleister eingesetzt werden. Nachfolgend
          die tatsächlich eingesetzten bzw. optional konfigurierbaren Dienste. Einige Karten-, Geocoding- und
          Wetterdienste werden direkt aus Ihrem Browser aufgerufen; dabei kann die aufgerufene Kachel-/Standort-
          Anfrage (und damit Ihre IP-Adresse) an den jeweiligen Anbieter übermittelt werden.
        </p>
        <div className="overflow-x-auto">
          <table className="w-full text-xs border-collapse mt-2">
            <thead>
              <tr className="text-left text-foreground border-b border-border">
                <th className="py-1.5 pr-3">Dienst</th>
                <th className="py-1.5 pr-3">Zweck</th>
                <th className="py-1.5 pr-3">Daten</th>
                <th className="py-1.5">Region</th>
              </tr>
            </thead>
            <tbody>
              {legal.processors.map(p => (
                <tr key={p.name} className="border-b border-border/50 align-top">
                  <td className="py-1.5 pr-3 text-foreground font-medium">{p.name}{p.optional ? ' *' : ''}</td>
                  <td className="py-1.5 pr-3">{p.purpose}</td>
                  <td className="py-1.5 pr-3">{p.data}</td>
                  <td className="py-1.5">{isPlaceholder(p.region) ? <span className="text-amber-600 dark:text-amber-400">{p.region}</span> : p.region}</td>
                </tr>
              ))}
            </tbody>
          </table>
        </div>
        <p className="text-xs">* nur aktiv, sofern konfiguriert/genutzt (z.B. Zahlungsabwicklung, E-Mail-Versand).</p>
        <p>Personendaten werden nicht zu Werbezwecken an Dritte verkauft.</p>
      </section>

      <section>
        <h2>6. Bekanntgabe ins Ausland</h2>
        <p>
          Je nach eingesetztem Dienstleister (z.B. Zahlungsanbieter, konfigurierter E-Mail-Anbieter, globale
          Kartendienste) kann eine Bearbeitung ausserhalb der Schweiz erfolgen. Der Betreiber wählt Dienstleister
          sorgfältig aus. Eine ausschliessliche Speicherung in der Schweiz wird nicht pauschal zugesichert; die
          konkreten Verarbeitungsregionen sind – soweit bekannt – in der Tabelle unter Ziffer 5 bzw. in{' '}
          <code>docs/legal/subprocessors.md</code> aufgeführt. Offene Punkte sind mit Platzhaltern gekennzeichnet.
        </p>
      </section>

      <section>
        <h2>7. Sicherheit</h2>
        <p>
          Es werden angemessene technische und organisatorische Massnahmen eingesetzt (u.a. Rollen- und
          Mandantentrennung, Passwort-Hashing, verschlüsselte Übertragung via HTTPS/TLS, Zugriffskontrollen,
          Rate-Limiting). Ein vollständiger Schutz vor allen Risiken kann jedoch nicht garantiert werden.
        </p>
      </section>

      <section>
        <h2>8. Aufbewahrung und Löschung</h2>
        <p>
          Personendaten werden so lange aufbewahrt, wie es für die genannten Zwecke oder gesetzliche Pflichten
          erforderlich ist. Produktivdaten werden nach Abschluss des Löschvorgangs entfernt. Daten in
          Sicherungskopien (Backups) können bis zum Ablauf des regulären Backup-Zyklus fortbestehen
          (Aufbewahrungsfrist der Backups: <Val value={legal.backupRetention} />). Die detaillierten Fristen sind in{' '}
          <code>docs/legal/retention-and-deletion.md</code> dokumentiert.
        </p>
      </section>

      <section>
        <h2>9. Zahlungsabwicklung (freiwillige Beiträge)</h2>
        <p>
          Freiwillige Unterstützungsbeiträge werden über <strong>Stripe</strong> abgewickelt. Zahlungsdaten
          (z.B. Kreditkarte, Twint) werden direkt bei Stripe erfasst und nicht in der Applikation gespeichert.
          An Stripe werden der Betrag sowie ein freiwillig angegebener Name/Nachricht übermittelt. Es werden keine
          wiederkehrenden Zahlungen eingerichtet. Details siehe{' '}
          <a href="/unterstuetzen">Unterstützungsseite</a>.
        </p>
      </section>

      <section>
        <h2>10. Karten- und Geodienste</h2>
        <p>
          Für Karten, Adresssuche und Wetter-/Höhendaten werden Dienste von OpenStreetMap (Tiles/Nominatim),
          Esri (Satellitenbilder), swisstopo (Landeskarte) sowie Open-Meteo/Open-Elevation genutzt. Diese Aufrufe
          erfolgen aus Ihrem Browser; dabei kann Ihre IP-Adresse an die jeweiligen Anbieter übermittelt werden.
          Karten-, Adress- und Geodaten können unvollständig, ungenau oder veraltet sein.
        </p>
      </section>

      <section>
        <h2>11. Cookies und lokale Speichertechnologien</h2>
        <p>
          Es wird ein einziges, technisch notwendiges Cookie gesetzt: <code>auth-token</code> (Session/Anmeldung,
          httpOnly). Es werden keine Tracking-, Analyse- oder Werbe-Cookies eingesetzt.
        </p>
        <p>
          Im lokalen Speicher (localStorage) Ihres Geräts werden zur Funktion technisch notwendige Angaben
          abgelegt, u.a.: zwischengespeicherte Zeichnungen/Offline-Warteschlange, Cache-Zeitstempel für
          Offline-Karten, Theme-Einstellung, zuletzt geöffnetes Projekt, Onboarding-Status und der Zustand des
          Cookie-Hinweises. Diese Daten verbleiben auf Ihrem Gerät.
        </p>
      </section>

      <section>
        <h2>12. Protokolldaten</h2>
        <p>
          Zum Betrieb und zur Sicherheit können technische Protokolle anfallen. Diese werden auf das notwendige
          Mass beschränkt; sensible Inhalte werden nach Möglichkeit von Protokollen ferngehalten.
        </p>
      </section>

      <section>
        <h2>13. Ihre Rechte</h2>
        <p>Im Rahmen des anwendbaren Rechts stehen Ihnen insbesondere folgende Rechte zu:</p>
        <ul>
          <li><strong>Auskunft</strong> über die bearbeiteten Daten</li>
          <li><strong>Berichtigung</strong> unrichtiger Daten</li>
          <li><strong>Löschung</strong> (im Rahmen gesetzlicher Pflichten)</li>
          <li><strong>Datenherausgabe/-export</strong> in einem gängigen Format</li>
          <li><strong>Widerspruch</strong> gegen bestimmte Bearbeitungen</li>
          <li><strong>Beschwerde</strong> bei der zuständigen Datenschutzbehörde (in der Schweiz: EDÖB)</li>
        </ul>
        <p>
          Angemeldete Nutzer können Zustimmungen, Datenexport und Kontolöschung unter{' '}
          <a href="/konto/datenschutz">Konto &amp; Datenschutz</a> einsehen bzw. anfordern. Anfragen richten Sie an{' '}
          <Val value={legal.privacyContactEmail} />; der Eingang wird bestätigt.
        </p>
      </section>

      <section>
        <h2>14. Sicherheitsvorfälle</h2>
        <p>
          Bei einem Sicherheitsvorfall mit Risiko für betroffene Personen prüft der Betreiber die erforderlichen
          Massnahmen und Informationspflichten nach einem definierten internen Prozess.
        </p>
      </section>

      <section>
        <h2>15. Änderungen dieser Datenschutzerklärung</h2>
        <p>
          Diese Datenschutzerklärung kann angepasst werden. Massgebend ist die jeweils veröffentlichte Version
          (siehe Kopf dieser Seite). Bei wesentlichen Änderungen wird angemessen informiert.
        </p>
      </section>
    </LegalPage>
  )
}
