diff --git a/datenschutz.html b/datenschutz.html new file mode 100644 index 0000000..96e2618 --- /dev/null +++ b/datenschutz.html @@ -0,0 +1,142 @@ + + + + + + + +Datenschutzerklärung — clip2md + + + + + + + +
+

Datenschutzerklärung

+ +

+ Der Text, den Sie auf dieser Seite einfügen, wird ausschließlich in Ihrem Browser + umgewandelt. Er wird nicht übertragen, nicht gespeichert und nicht ausgewertet. Es gibt + keine Cookies, keine Analyse-Werkzeuge, keine eingebundenen Dienste Dritter und keine + extern geladenen Schriftarten. Erhoben werden nur die technischen Zugriffsdaten, die beim + Abruf jeder Website anfallen. +

+ +

1. Verantwortlicher

+

+ Till Heidrich – Content Creation
+ Till Heidrich
+ Rotdornweg 17, 21255 Tostedt, Deutschland
+ E-Mail: info@tillheidrich.de
+ Telefon: +49 1577 3953819 +

+

Ein Datenschutzbeauftragter ist gesetzlich nicht zu bestellen.

+ +

2. Verarbeitung der eingefügten Inhalte

+

+ Die Umwandlung von formatiertem Text in Markdown erfolgt vollständig clientseitig durch + JavaScript in Ihrem Browser. Die von Ihnen eingefügten Inhalte verlassen Ihr Gerät zu + keinem Zeitpunkt und werden beim Schließen oder Neuladen der Seite verworfen. Eine + Verarbeitung personenbezogener Daten im Sinne der DSGVO findet insoweit durch uns nicht + statt. +

+

+ Das Speichern des Ergebnisses als .md-Datei sowie das Kopieren in die + Zwischenablage erfolgen ebenfalls lokal über die entsprechenden Browser-Schnittstellen. + Auch dabei werden keine Daten an uns übermittelt. +

+ +

3. Lokale Speicherung Ihrer Einstellungen

+

+ Damit die Seite sich Ihre Vorlieben merkt, legt sie Werte im lokalen Speicher Ihres + Browsers ab (localStorage), etwa die gewählte Sprache, das + helle oder dunkle Erscheinungsbild und Ihre Konvertierungseinstellungen. Diese Werte + verbleiben auf Ihrem Gerät, werden nicht an uns übertragen und enthalten keine von Ihnen + eingefügten Inhalte. Es handelt sich nicht um Cookies. Sie können die Werte jederzeit über + die Einstellungen Ihres Browsers löschen. +

+

+ Rechtsgrundlage für diese ausschließlich lokale Speicherung ist Ihr Wunsch nach einer + funktionsfähigen Bedienoberfläche; ein Zugriff unsererseits findet nicht statt. +

+ +

4. Offline-Nutzung (Progressive Web App)

+

+ Die Seite registriert einen Service Worker, der die benötigten Programmdateien im + Zwischenspeicher Ihres Browsers ablegt. Dadurch funktioniert clip2md auch ohne + Internetverbindung. Zwischengespeichert werden ausschließlich Programmdateien dieser + Seite, niemals Ihre Inhalte. Sie können den Zwischenspeicher über die Website-Daten Ihres + Browsers entfernen. +

+ +

5. Server-Logfiles

+

+ Beim Abruf dieser Seite werden durch den Hosting-Anbieter automatisch Daten in + Protokolldateien gespeichert: +

+ +

+ Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO. Das berechtigte Interesse liegt im + technisch fehlerfreien Betrieb und in der Sicherheit des Angebots. Die Daten werden nach + spätestens sieben Tagen gelöscht und nicht mit anderen Datenquellen zusammengeführt. +

+ +

6. Hosting

+

+ Diese Seite wird auf Servern der Hetzner Online GmbH, Industriestr. 25, 91710 + Gunzenhausen, in Deutschland betrieben. Mit dem Anbieter besteht ein Vertrag über die + Auftragsverarbeitung nach Art. 28 DSGVO. Die Verarbeitung findet ausschließlich innerhalb + der Europäischen Union statt. Die Datenübertragung zu dieser Seite erfolgt verschlüsselt + über HTTPS. +

+ +

7. Keine Cookies, kein Tracking

+

+ Diese Seite setzt keine Cookies und verwendet keine Analyse-, Werbe- oder + Reichweitenmessungsdienste. Es werden keine Inhalte von fremden Servern nachgeladen, + insbesondere keine Schriftarten und keine Skripte von Content-Delivery-Netzwerken. Eine + Einwilligungsabfrage ist deshalb nicht erforderlich. +

+ +

8. Ihre Rechte

+

+ Sie haben das Recht auf Auskunft (Art. 15 DSGVO), Berichtigung (Art. 16), Löschung + (Art. 17), Einschränkung der Verarbeitung (Art. 18), Datenübertragbarkeit (Art. 20) sowie + das Recht, der Verarbeitung auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO zu widersprechen + (Art. 21). Wenden Sie sich dafür an die oben genannte Adresse. +

+ +

9. Beschwerderecht

+

+ Sie können sich bei einer Datenschutz-Aufsichtsbehörde beschweren. Zuständig ist die + Landesbeauftragte für den Datenschutz Niedersachsen, Prinzenstraße 5, 30159 Hannover. +

+ +

10. Stand

+

Diese Datenschutzerklärung hat den Stand September 2026.

+ + +
+ + diff --git a/impressum.html b/impressum.html new file mode 100644 index 0000000..0d5edda --- /dev/null +++ b/impressum.html @@ -0,0 +1,77 @@ + + + + + + + +Impressum — clip2md + + + + + + + +
+

Impressum

+ +

Angaben gemäß § 5 DDG

+ + + + + + + + + + +

Umsatzsteuer

+

+ Als Kleinunternehmer im Sinne von § 19 Abs. 1 UStG wird keine Umsatzsteuer + berechnet und daher auch keine Umsatzsteuer-Identifikationsnummer geführt. +

+ +

Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV

+

Till Heidrich, Anschrift wie oben.

+ +

Streitbeilegung

+

+ Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung bereit: + ec.europa.eu/consumers/odr. + Zur Teilnahme an einem Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle + sind wir nicht verpflichtet und nicht bereit. +

+ +

Haftung für Links

+

+ Dieses Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen + Einfluss haben. Für diese fremden Inhalte ist stets der jeweilige Anbieter verantwortlich. + Zum Zeitpunkt der Verlinkung waren keine Rechtsverstöße erkennbar. Bei Bekanntwerden von + Rechtsverletzungen werden wir derartige Links umgehend entfernen. +

+ +

Urheberrecht und Lizenz

+

+ Der Quellcode von clip2md steht unter der MIT-Lizenz. Die eingebundenen Bibliotheken + (Turndown, Marked, DOMPurify) und die Schriftfamilie Geist stehen unter ihren jeweiligen + freien Lizenzen. Texte und Gestaltung dieser Seite unterliegen dem deutschen Urheberrecht. +

+ + +
+ + diff --git a/index.html b/index.html index 40a2eff..8346f90 100644 --- a/index.html +++ b/index.html @@ -289,6 +289,9 @@ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; } } + footer .legal-links { display: inline-flex; gap: 0.5rem; align-items: center; } + footer .legal-links a { color: var(--ink-3); text-decoration: none; } + footer .legal-links a:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; } @@ -355,6 +358,7 @@ client-side · nothing is uploaded + Impressum · Datenschutz diff --git a/legal.css b/legal.css new file mode 100644 index 0000000..04dfe55 --- /dev/null +++ b/legal.css @@ -0,0 +1,66 @@ +@font-face { font-family: "Geist"; src: url("vendor/fonts/Geist-Variable.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; } +@font-face { font-family: "Geist Mono"; src: url("vendor/fonts/GeistMono-Variable.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; } + +:root { + --paper: oklch(98.4% 0.006 80); + --surface: oklch(99.6% 0.003 80); + --line: oklch(89% 0.008 75); + --ink: oklch(26% 0.02 55); + --ink-2: oklch(44% 0.018 55); + --ink-3: oklch(58% 0.014 55); + --accent: oklch(56% 0.168 34); + --accent-hi: oklch(52% 0.18 33); + --r: 10px; + --font: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; + --mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace; +} +[data-theme="dark"] { + --paper: oklch(19% 0.008 60); + --surface: oklch(22% 0.01 60); + --line: oklch(30% 0.012 60); + --ink: oklch(93% 0.006 75); + --ink-2: oklch(72% 0.012 70); + --ink-3: oklch(60% 0.012 65); + --accent: oklch(70% 0.15 40); + --accent-hi: oklch(76% 0.14 42); +} + +*, *::before, *::after { box-sizing: border-box; } +html { -webkit-text-size-adjust: 100%; } +body { + margin: 0; background: var(--paper); color: var(--ink); + font-family: var(--font); font-size: 1rem; line-height: 1.62; + -webkit-font-smoothing: antialiased; +} + +.legal-head { border-bottom: 1px solid var(--line); background: var(--surface); } +.legal-head .inner, main.legal { width: min(100% - 2.5rem, 46rem); margin-inline: auto; } +.legal-head .inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.9rem 0; } +.legal-head a.back { display: inline-flex; align-items: center; gap: 0.45rem; text-decoration: none; color: var(--ink); font-weight: 500; } +.legal-head .wordmark { font-family: var(--mono); font-size: 1.02rem; letter-spacing: -0.03em; } +.legal-head .wordmark b { color: var(--accent); } +.legal-head nav { display: flex; gap: 1.25rem; font-size: 0.875rem; } +.legal-head nav a { color: var(--ink-3); text-decoration: none; } +.legal-head nav a:hover, .legal-head nav a[aria-current="page"] { color: var(--accent); } + +main.legal { padding: 3rem 0 5rem; } +h1 { font-size: clamp(1.9rem, 1.5rem + 1.6vw, 2.5rem); letter-spacing: -0.03em; line-height: 1.12; margin: 0 0 1.5rem; } +h2 { font-size: 1.0625rem; letter-spacing: -0.015em; margin: 2.4rem 0 0.6rem; } +p { margin: 0 0 1em; color: var(--ink-2); } +p.intro { color: var(--ink); } +ul { padding-left: 1.15rem; margin: 0 0 1em; color: var(--ink-2); } +li { margin-bottom: 0.32em; } +a { color: var(--accent); text-underline-offset: 3px; } +a:hover { color: var(--accent-hi); } +:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 3px; } +code, .mono { font-family: var(--mono); font-size: 0.92em; } + +table.legal-table { border-collapse: collapse; margin: 0 0 1em; } +table.legal-table th { text-align: left; font-weight: 500; color: var(--ink-3); padding: 0.22rem 1.6rem 0.22rem 0; vertical-align: top; white-space: nowrap; font-size: 0.9375rem; } +table.legal-table td { padding: 0.22rem 0; vertical-align: top; color: var(--ink-2); } + +.legal-foot { border-top: 1px solid var(--line); margin-top: 3rem; padding-top: 1.25rem; font-size: 0.875rem; color: var(--ink-3); } +.legal-foot a { color: var(--ink-3); } +.legal-foot a:hover { color: var(--accent); } + +@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; } } diff --git a/nginx.conf b/nginx.conf index 957e4a2..f50bdd8 100644 --- a/nginx.conf +++ b/nginx.conf @@ -37,7 +37,7 @@ server { } location / { - try_files $uri $uri/ /index.html; + try_files $uri $uri.html $uri/ /index.html; } # Minimal hardening headers. diff --git a/sw.js b/sw.js index 49e4b14..d8183db 100644 --- a/sw.js +++ b/sw.js @@ -1,8 +1,11 @@ /* clip2md service worker — offline shell cache. Bump CACHE on any asset change. */ -var CACHE = 'clip2md-v2'; +var CACHE = 'clip2md-v3'; var ASSETS = [ './', './index.html', + './impressum.html', + './datenschutz.html', + './legal.css', './icon.svg', './manifest.webmanifest', './vendor/turndown.js',