Compare commits
7 Commits
1.6.3
..
bc07c71f39
| Author | SHA1 | Date | |
|---|---|---|---|
| bc07c71f39 | |||
| 47e98b88ef | |||
| 799d3dc2ba | |||
| 938fc9bfeb | |||
| ea7fbaf8b8 | |||
| 9a2fb45802 | |||
| 1501f8208d |
@@ -0,0 +1,154 @@
|
||||
---
|
||||
name: dep-update-check
|
||||
description: Prüft manuell, ob Python-Version und Projekt-Dependencies aktualisiert werden können, und testet die Kompatibilität. Verwende diesen Skill AUSSCHLIESSLICH wenn der Benutzer explizit danach fragt – z.B. '/dep-update-check', 'Prüfe Dependencies', 'Sind Updates verfügbar?', 'Kann ich Python updaten?'. Niemals automatisch auslösen.
|
||||
---
|
||||
|
||||
# Dependency & Python Update Check
|
||||
|
||||
Dieser Skill prüft systematisch, welche Updates für das DocuMentor-Projekt verfügbar sind und ob sie kompatibel miteinander sind. Verwendete Werkzeuge: `uv`, `pyproject.toml`.
|
||||
|
||||
## Ablauf
|
||||
|
||||
Führe alle Schritte der Reihe nach aus und erstelle am Ende einen übersichtlichen Report.
|
||||
|
||||
---
|
||||
|
||||
## Schritt 1: Python-Versionscheck
|
||||
|
||||
Lies die Python-Constraint aus `pyproject.toml` (Feld `requires-python`).
|
||||
|
||||
```bash
|
||||
grep "requires-python" pyproject.toml
|
||||
```
|
||||
|
||||
Prüfe dann, welche stabilen Python-Versionen im erlaubten Bereich verfügbar sind:
|
||||
|
||||
```bash
|
||||
uv python list
|
||||
```
|
||||
|
||||
**Stabile Versionen** sind jene ohne Suffix wie `b1`, `rc1`, `a1` oder `+freethreaded`. Filtere Beta- und Release-Candidate-Versionen heraus.
|
||||
|
||||
Vergleiche:
|
||||
- Aktuell verwendete Version: `uv run python --version`
|
||||
- Neueste stabile verfügbare Version innerhalb der Constraints
|
||||
|
||||
Falls eine neuere stabile Version verfügbar ist, notiere dies für den Report.
|
||||
|
||||
---
|
||||
|
||||
## Schritt 2: Veraltete Dependencies ermitteln
|
||||
|
||||
```bash
|
||||
uv tree --outdated
|
||||
```
|
||||
|
||||
Extrahiere daraus die **direkten** Projektabhängigkeiten (aus `pyproject.toml`, Abschnitte `[project] dependencies` und `[dependency-groups]`) und trenne sie von transitiven Abhängigkeiten.
|
||||
|
||||
Erstelle eine strukturierte Liste:
|
||||
- Direkte Dependencies: Name, aktuelle Version, neueste Version
|
||||
- Transitive Dependencies mit Updates (nur zur Information)
|
||||
|
||||
---
|
||||
|
||||
## Schritt 3: Kompatibilitätstest
|
||||
|
||||
Sichere zunächst die aktuelle Lock-Datei:
|
||||
|
||||
```bash
|
||||
cp uv.lock uv.lock.backup
|
||||
```
|
||||
|
||||
Versuche dann, alle Dependencies auf die neuesten kompatiblen Versionen aufzulösen:
|
||||
|
||||
```bash
|
||||
uv lock --upgrade 2>&1
|
||||
```
|
||||
|
||||
**Interpretation:**
|
||||
- `Resolved X packages` ohne Fehler → alle Updates sind kompatibel
|
||||
- Fehlermeldungen über Versionskonflikte → notiere welche Pakete sich gegenseitig blockieren
|
||||
- Prüfe ob `uv.lock` verändert wurde: `diff uv.lock.backup uv.lock | head -50`
|
||||
|
||||
Stelle die Lock-Datei wieder her (wir wollen die Umgebung nicht tatsächlich ändern):
|
||||
|
||||
```bash
|
||||
mv uv.lock.backup uv.lock
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 4: Report erstellen
|
||||
|
||||
Gib den Report im folgenden Format aus:
|
||||
|
||||
---
|
||||
|
||||
### 🐍 Python-Version
|
||||
|
||||
| | Version |
|
||||
|---|---|
|
||||
| Aktuell in Verwendung | z.B. 3.13.11 |
|
||||
| Neueste stabile im erlaubten Bereich | z.B. 3.13.13 |
|
||||
| Update empfohlen? | Ja / Nein |
|
||||
|
||||
Falls ein Python-Update verfügbar ist, zeige den Befehl:
|
||||
```bash
|
||||
uv python install 3.X.Y
|
||||
# Dann in pyproject.toml requires-python anpassen falls nötig
|
||||
# Danach: uv sync
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 📦 Direkte Dependencies
|
||||
|
||||
Tabelle mit Spalten: Paket | Aktuell | Verfügbar | Status
|
||||
|
||||
Status-Symbole:
|
||||
- ✅ Aktuell
|
||||
- ⬆️ Update verfügbar
|
||||
- ⚠️ Update verfügbar, aber Kompatibilitätsproblem
|
||||
|
||||
---
|
||||
|
||||
### 🔗 Transitive Dependencies (Auswahl)
|
||||
|
||||
Nur falls es relevante Updates gibt, kurze Liste.
|
||||
|
||||
---
|
||||
|
||||
### 🔄 Kompatibilitäts-Ergebnis
|
||||
|
||||
Klares Fazit:
|
||||
- Können alle direkten Dependencies gleichzeitig aktualisiert werden? Ja/Nein
|
||||
- Falls Nein: Welche Konflikte bestehen und warum?
|
||||
|
||||
---
|
||||
|
||||
### 📋 Empfohlene Aktion
|
||||
|
||||
Falls Updates verfügbar und kompatibel:
|
||||
```bash
|
||||
uv sync --upgrade
|
||||
```
|
||||
|
||||
Falls nur einzelne Pakete aktualisiert werden sollen:
|
||||
```bash
|
||||
uv add paketname>=neue.version
|
||||
```
|
||||
|
||||
Falls Python aktualisiert werden soll (nur wenn innerhalb der Constraints):
|
||||
```bash
|
||||
uv python install 3.X.Y
|
||||
uv sync
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Hinweise
|
||||
|
||||
- **Nie `uv sync --upgrade` automatisch ausführen** – nur im Report vorschlagen, der Benutzer entscheidet.
|
||||
- Beta/RC-Python-Versionen werden nicht empfohlen (erkennbar an Suffixen wie `b1`, `rc1`).
|
||||
- `pyarrow` und andere native Pakete können bei Python-Upgrades besondere Anforderungen haben – darauf hinweisen falls relevant.
|
||||
- Wenn der `uv lock --upgrade`-Test fehlschlägt, die Lock-Datei **immer** aus dem Backup wiederherstellen.
|
||||
@@ -142,46 +142,6 @@ Externe Tools (separat zu installieren):
|
||||
|
||||
Vollständige Lizenzanalyse: [LICENSES.md](LICENSES.md)
|
||||
|
||||
## Beiträge
|
||||
|
||||
Beiträge sind willkommen! Bitte beachten Sie:
|
||||
|
||||
1. Fork des Repositories
|
||||
2. Feature-Branch erstellen (`git checkout -b feature/amazing-feature`)
|
||||
3. Änderungen committen (`git commit -m 'Add amazing feature'`)
|
||||
4. Branch pushen (`git push origin feature/amazing-feature`)
|
||||
5. Pull Request öffnen
|
||||
|
||||
### Code-Konventionen
|
||||
|
||||
- Deutsche Sprache für UI-Texte und Kommentare
|
||||
- `pathlib.Path` für Dateipfade
|
||||
- Zeilenlänge: 120 Zeichen (Ruff-Konfiguration)
|
||||
- UI-Dateien (`*_ui.py`) werden automatisch generiert - nicht manuell bearbeiten!
|
||||
|
||||
## Support
|
||||
|
||||
Bei Fragen, Problemen oder Feature-Requests:
|
||||
|
||||
- GitHub Issues: [Issue Tracker](https://github.com/[your-repo]/issues)
|
||||
- Dokumentation: [docs/](docs/)
|
||||
|
||||
## Changelog
|
||||
|
||||
### Version 0.1.0 (2025-01)
|
||||
|
||||
- ✅ Hierarchische Projektverwaltung
|
||||
- ✅ Asynchrone Batch-Verarbeitung
|
||||
- ✅ Blake2b-Hash-basierte Duplikatserkennung
|
||||
- ✅ PDF-Vergleichsansicht
|
||||
- ✅ PostgreSQL-Integration
|
||||
- ✅ Worker-Pool für 4x schnellere Transformationen
|
||||
- ✅ Dark-Theme-Unterstützung
|
||||
|
||||
## Autoren
|
||||
|
||||
- [Ihr Name] - Initial work
|
||||
|
||||
## Danksagungen
|
||||
|
||||
Vielen Dank an alle Entwickler der verwendeten Open-Source-Bibliotheken!
|
||||
|
||||
@@ -1,290 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Datenschutzerklärung - DocuMentor</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<style>
|
||||
.legal-page {
|
||||
padding: 8rem 0 4rem;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.legal-content {
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
background: var(--surface);
|
||||
padding: 3rem;
|
||||
border-radius: 1rem;
|
||||
border: 1px solid var(--surface-light);
|
||||
}
|
||||
|
||||
.legal-content h1 {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
background: var(--gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.legal-content h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-top: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.legal-content h3 {
|
||||
font-size: 1.25rem;
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 0.75rem;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.legal-content p {
|
||||
color: var(--text-secondary);
|
||||
line-height: 1.8;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.legal-content ul {
|
||||
color: var(--text-secondary);
|
||||
line-height: 1.8;
|
||||
margin-left: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.legal-content ul li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.legal-content a {
|
||||
color: var(--primary-color);
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: border-color 0.3s;
|
||||
}
|
||||
|
||||
.legal-content a:hover {
|
||||
border-bottom-color: var(--primary-color);
|
||||
}
|
||||
|
||||
.back-link {
|
||||
display: inline-block;
|
||||
margin-bottom: 2rem;
|
||||
color: var(--text-secondary);
|
||||
text-decoration: none;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.back-link:hover {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.last-updated {
|
||||
color: var(--text-muted);
|
||||
font-size: 0.875rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<div class="nav-brand">
|
||||
<h1><a href="index.html" style="text-decoration: none; color: inherit;">DocuMentor</a></h1>
|
||||
</div>
|
||||
<ul class="nav-menu">
|
||||
<li><a href="index.html#features">Features</a></li>
|
||||
<li><a href="index.html#workflow">Workflow</a></li>
|
||||
<li><a href="index.html#technologie">Technologie</a></li>
|
||||
<li><a href="index.html#download">Download</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Datenschutz Content -->
|
||||
<section class="legal-page">
|
||||
<div class="container">
|
||||
<div class="legal-content">
|
||||
<a href="index.html" class="back-link">← Zurück zur Startseite</a>
|
||||
|
||||
<h1>Datenschutzerklärung</h1>
|
||||
<p class="last-updated">Stand: Januar 2025</p>
|
||||
|
||||
<h2>1. Datenschutz auf einen Blick</h2>
|
||||
|
||||
<h3>Allgemeine Hinweise</h3>
|
||||
<p>
|
||||
Die folgenden Hinweise geben einen einfachen Überblick darüber, was mit Ihren personenbezogenen
|
||||
Daten passiert, wenn Sie DocuMentor nutzen. Personenbezogene Daten sind alle Daten, mit denen
|
||||
Sie persönlich identifiziert werden können.
|
||||
</p>
|
||||
|
||||
<h3>DocuMentor als Desktop-Anwendung</h3>
|
||||
<p>
|
||||
DocuMentor ist eine Desktop-Anwendung, die lokal auf Ihrem Computer ausgeführt wird. Die
|
||||
Anwendung sammelt, speichert oder überträgt keine personenbezogenen Daten an externe Server.
|
||||
</p>
|
||||
|
||||
<h2>2. Datenerfassung durch die Anwendung</h2>
|
||||
|
||||
<h3>Welche Daten werden erfasst?</h3>
|
||||
<p>
|
||||
DocuMentor speichert ausschließlich lokal auf Ihrem Computer:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Anwendungskonfigurationen (Tool-Pfade, Einstellungen)</li>
|
||||
<li>Projektdaten (XSL-Transformations-Workflows, XML-Dateien)</li>
|
||||
<li>Datei-Hashwerte (Blake2b) zur Duplikatserkennung</li>
|
||||
<li>Datenbankverbindungsinformationen (falls konfiguriert)</li>
|
||||
</ul>
|
||||
|
||||
<h3>Wo werden diese Daten gespeichert?</h3>
|
||||
<p>
|
||||
Alle Daten werden lokal in folgenden Verzeichnissen gespeichert:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Linux:</strong> ~/.config/DocuMentor/</li>
|
||||
<li><strong>Windows:</strong> %APPDATA%\DocuMentor\</li>
|
||||
<li><strong>macOS:</strong> ~/Library/Application Support/DocuMentor/</li>
|
||||
</ul>
|
||||
<p>
|
||||
Zusätzlich werden projektspezifische Daten in dem von Ihnen gewählten Projektverzeichnis
|
||||
als <code>project.yaml</code> gespeichert.
|
||||
</p>
|
||||
|
||||
<h3>Keine Datenübertragung</h3>
|
||||
<p>
|
||||
DocuMentor überträgt keine Daten an externe Server oder Dritte. Die Anwendung funktioniert
|
||||
vollständig offline. Eine Internetverbindung ist weder für die Installation noch für die
|
||||
Nutzung erforderlich.
|
||||
</p>
|
||||
|
||||
<h2>3. Datenerfassung auf dieser Webseite</h2>
|
||||
|
||||
<h3>Server-Log-Dateien</h3>
|
||||
<p>
|
||||
Der Provider dieser Webseite erhebt und speichert automatisch Informationen in sogenannten
|
||||
Server-Log-Dateien, die Ihr Browser automatisch an uns übermittelt. Dies sind:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Browsertyp und Browserversion</li>
|
||||
<li>Verwendetes Betriebssystem</li>
|
||||
<li>Referrer URL</li>
|
||||
<li>Hostname des zugreifenden Rechners</li>
|
||||
<li>Uhrzeit der Serveranfrage</li>
|
||||
<li>IP-Adresse</li>
|
||||
</ul>
|
||||
<p>
|
||||
Eine Zusammenführung dieser Daten mit anderen Datenquellen wird nicht vorgenommen.
|
||||
Die Erfassung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO.
|
||||
Der Webseitenbetreiber hat ein berechtigtes Interesse an der technisch fehlerfreien
|
||||
Darstellung und der Optimierung seiner Webseite.
|
||||
</p>
|
||||
|
||||
<h3>Keine Cookies</h3>
|
||||
<p>
|
||||
Diese Webseite verwendet keine Cookies. Es werden keine Tracking- oder Analytics-Dienste
|
||||
eingesetzt.
|
||||
</p>
|
||||
|
||||
<h2>4. Datenbankverbindungen</h2>
|
||||
|
||||
<h3>PostgreSQL-Integration</h3>
|
||||
<p>
|
||||
DocuMentor bietet die Möglichkeit, sich mit PostgreSQL-Datenbanken zu verbinden. Die
|
||||
Verbindungsinformationen (Server, Port, Benutzername, Passwort) werden ausschließlich
|
||||
lokal in der Anwendungskonfiguration gespeichert.
|
||||
</p>
|
||||
<p>
|
||||
Die Verbindung zur Datenbank erfolgt direkt von Ihrem Computer aus. DocuMentor fungiert
|
||||
nicht als Vermittler und speichert keine Datenbankabfragen oder -ergebnisse außerhalb
|
||||
Ihres lokalen Systems.
|
||||
</p>
|
||||
|
||||
<h2>5. Ihre Rechte</h2>
|
||||
|
||||
<h3>Recht auf Auskunft, Löschung und Berichtigung</h3>
|
||||
<p>
|
||||
Da alle Daten ausschließlich lokal auf Ihrem Computer gespeichert werden, haben Sie
|
||||
jederzeit volle Kontrolle über diese Daten:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Auskunft:</strong> Sie können jederzeit in die Konfigurationsdateien einsehen</li>
|
||||
<li><strong>Löschung:</strong> Sie können die Anwendung und alle Konfigurationsdateien jederzeit löschen</li>
|
||||
<li><strong>Berichtigung:</strong> Sie können alle gespeicherten Einstellungen jederzeit ändern</li>
|
||||
</ul>
|
||||
|
||||
<h3>Widerruf Ihrer Einwilligung zur Datenverarbeitung</h3>
|
||||
<p>
|
||||
Viele Datenverarbeitungsvorgänge sind nur mit Ihrer ausdrücklichen Einwilligung möglich.
|
||||
Sie können eine bereits erteilte Einwilligung jederzeit widerrufen, indem Sie die
|
||||
Anwendung deinstallieren und die Konfigurationsdateien löschen.
|
||||
</p>
|
||||
|
||||
<h2>6. Open Source</h2>
|
||||
<p>
|
||||
DocuMentor ist eine Open-Source-Software. Der Quellcode ist öffentlich einsehbar, sodass
|
||||
Sie jederzeit überprüfen können, wie Ihre Daten verarbeitet werden.
|
||||
</p>
|
||||
|
||||
<h2>7. Kontakt</h2>
|
||||
<p>
|
||||
Bei Fragen zum Datenschutz oder zur Datenverarbeitung in DocuMentor können Sie sich
|
||||
jederzeit an uns wenden. Die Kontaktdaten finden Sie im <a href="impressum.html">Impressum</a>.
|
||||
</p>
|
||||
|
||||
<h2>8. Änderungen dieser Datenschutzerklärung</h2>
|
||||
<p>
|
||||
Wir behalten uns vor, diese Datenschutzerklärung anzupassen, damit sie stets den aktuellen
|
||||
rechtlichen Anforderungen entspricht oder um Änderungen unserer Leistungen in der
|
||||
Datenschutzerklärung umzusetzen. Für Ihren erneuten Besuch gilt dann die neue
|
||||
Datenschutzerklärung.
|
||||
</p>
|
||||
|
||||
<div style="margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--surface-light);">
|
||||
<p style="color: var(--text-muted); font-size: 0.875rem;">
|
||||
Diese Datenschutzerklärung wurde erstellt für die Desktop-Anwendung DocuMentor
|
||||
und die zugehörige Webseite.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-content">
|
||||
<div class="footer-section">
|
||||
<h3>DocuMentor</h3>
|
||||
<p>Professionelle XSL-Transformations-Verwaltung für anspruchsvolle Projekte.</p>
|
||||
</div>
|
||||
<div class="footer-section">
|
||||
<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-section">
|
||||
<h4>Ressourcen</h4>
|
||||
<ul>
|
||||
<li><a href="index.html#features">Features</a></li>
|
||||
<li><a href="index.html#download">Download</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2025 DocuMentor. Alle Rechte vorbehalten.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,299 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Impressum - DocuMentor</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<style>
|
||||
.legal-page {
|
||||
padding: 8rem 0 4rem;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.legal-content {
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
background: var(--surface);
|
||||
padding: 3rem;
|
||||
border-radius: 1rem;
|
||||
border: 1px solid var(--surface-light);
|
||||
}
|
||||
|
||||
.legal-content h1 {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
background: var(--gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.legal-content h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-top: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.legal-content h3 {
|
||||
font-size: 1.25rem;
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 0.75rem;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.legal-content p {
|
||||
color: var(--text-secondary);
|
||||
line-height: 1.8;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.legal-content ul {
|
||||
color: var(--text-secondary);
|
||||
line-height: 1.8;
|
||||
margin-left: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.legal-content ul li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.legal-content a {
|
||||
color: var(--primary-color);
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: border-color 0.3s;
|
||||
}
|
||||
|
||||
.legal-content a:hover {
|
||||
border-bottom-color: var(--primary-color);
|
||||
}
|
||||
|
||||
.back-link {
|
||||
display: inline-block;
|
||||
margin-bottom: 2rem;
|
||||
color: var(--text-secondary);
|
||||
text-decoration: none;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.back-link:hover {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.contact-box {
|
||||
background: var(--background);
|
||||
padding: 1.5rem;
|
||||
border-radius: 0.5rem;
|
||||
border-left: 4px solid var(--primary-color);
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
.contact-box p {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.placeholder-notice {
|
||||
background: rgba(234, 179, 8, 0.1);
|
||||
border: 1px solid var(--warning);
|
||||
padding: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
color: var(--warning);
|
||||
margin: 2rem 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<div class="nav-brand">
|
||||
<h1><a href="index.html" style="text-decoration: none; color: inherit;">DocuMentor</a></h1>
|
||||
</div>
|
||||
<ul class="nav-menu">
|
||||
<li><a href="index.html#features">Features</a></li>
|
||||
<li><a href="index.html#workflow">Workflow</a></li>
|
||||
<li><a href="index.html#technologie">Technologie</a></li>
|
||||
<li><a href="index.html#download">Download</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Impressum Content -->
|
||||
<section class="legal-page">
|
||||
<div class="container">
|
||||
<div class="legal-content">
|
||||
<a href="index.html" class="back-link">← Zurück zur Startseite</a>
|
||||
|
||||
<h1>Impressum</h1>
|
||||
|
||||
<div class="placeholder-notice">
|
||||
<strong>Hinweis:</strong> Dies ist ein Platzhalter-Impressum. Bitte ersetzen Sie die folgenden
|
||||
Informationen mit Ihren tatsächlichen Angaben gemäß den gesetzlichen Anforderungen.
|
||||
</div>
|
||||
|
||||
<h2>Angaben gemäß § 5 TMG</h2>
|
||||
|
||||
<div class="contact-box">
|
||||
<p><strong>[Ihr Name / Firmenname]</strong></p>
|
||||
<p>[Straße und Hausnummer]</p>
|
||||
<p>[PLZ] [Ort]</p>
|
||||
<p>[Land]</p>
|
||||
</div>
|
||||
|
||||
<h2>Kontakt</h2>
|
||||
|
||||
<div class="contact-box">
|
||||
<p><strong>Telefon:</strong> [Ihre Telefonnummer]</p>
|
||||
<p><strong>E-Mail:</strong> <a href="mailto:[ihre-email]">[Ihre E-Mail-Adresse]</a></p>
|
||||
<p><strong>Webseite:</strong> <a href="[ihre-webseite]">[Ihre Webseite]</a></p>
|
||||
</div>
|
||||
|
||||
<h2>Umsatzsteuer-ID</h2>
|
||||
<p>
|
||||
Umsatzsteuer-Identifikationsnummer gemäß § 27 a Umsatzsteuergesetz:<br>
|
||||
<strong>[Ihre USt-IdNr.]</strong> (falls zutreffend)
|
||||
</p>
|
||||
|
||||
<h2>Wirtschafts-ID</h2>
|
||||
<p>
|
||||
<strong>[Ihre Wirtschafts-ID]</strong> (falls zutreffend)
|
||||
</p>
|
||||
|
||||
<h2>Verantwortlich für den Inhalt</h2>
|
||||
<p>
|
||||
Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV:
|
||||
</p>
|
||||
<div class="contact-box">
|
||||
<p><strong>[Name des Verantwortlichen]</strong></p>
|
||||
<p>[Adresse]</p>
|
||||
</div>
|
||||
|
||||
<h2>EU-Streitschlichtung</h2>
|
||||
<p>
|
||||
Die Europäische 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 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. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf
|
||||
mögliche Rechtsverstöße überprüft. 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 Vervielfältigung, Bearbeitung, Verbreitung und jede Art
|
||||
der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen
|
||||
Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind
|
||||
nur für 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>
|
||||
|
||||
<h2>Open Source Software</h2>
|
||||
<p>
|
||||
DocuMentor ist eine Open-Source-Software. Der Quellcode ist unter einer Open-Source-Lizenz
|
||||
verfügbar. Details zur Lizenzierung finden Sie im GitHub-Repository der Anwendung.
|
||||
</p>
|
||||
|
||||
<h2>Verwendete Technologien</h2>
|
||||
<p>
|
||||
DocuMentor verwendet folgende Technologien und Bibliotheken:
|
||||
</p>
|
||||
<ul>
|
||||
<li>PySide6 (Qt für Python)</li>
|
||||
<li>Pydantic (Datenvalidierung)</li>
|
||||
<li>Saxon (XSLT-Prozessor)</li>
|
||||
<li>Apache FOP (PDF-Generierung)</li>
|
||||
<li>PostgreSQL (Datenbank, optional)</li>
|
||||
<li>Polars (Datenverarbeitung)</li>
|
||||
</ul>
|
||||
<p>
|
||||
Für diese Technologien gelten die jeweiligen Lizenzbedingungen der Urheber.
|
||||
</p>
|
||||
|
||||
<div style="margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--surface-light);">
|
||||
<p style="color: var(--text-muted); font-size: 0.875rem;">
|
||||
Quelle: Erstellt für DocuMentor<br>
|
||||
Stand: Januar 2025
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-content">
|
||||
<div class="footer-section">
|
||||
<h3>DocuMentor</h3>
|
||||
<p>Professionelle XSL-Transformations-Verwaltung für anspruchsvolle Projekte.</p>
|
||||
</div>
|
||||
<div class="footer-section">
|
||||
<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-section">
|
||||
<h4>Ressourcen</h4>
|
||||
<ul>
|
||||
<li><a href="index.html#features">Features</a></li>
|
||||
<li><a href="index.html#download">Download</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2025 DocuMentor. Alle Rechte vorbehalten.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
-310
@@ -1,310 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>DocuMentor - Professionelle XSL-Transformations-Verwaltung</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<div class="nav-brand">
|
||||
<h1>DocuMentor</h1>
|
||||
</div>
|
||||
<ul class="nav-menu">
|
||||
<li><a href="#features">Features</a></li>
|
||||
<li><a href="#workflow">Workflow</a></li>
|
||||
<li><a href="#technologie">Technologie</a></li>
|
||||
<li><a href="#download">Download</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Hero Section -->
|
||||
<section class="hero">
|
||||
<div class="container">
|
||||
<div class="hero-content">
|
||||
<h1 class="hero-title">Professionelle XSL-Transformations-Verwaltung</h1>
|
||||
<p class="hero-subtitle">
|
||||
DocuMentor ist Ihre leistungsstarke Desktop-Anwendung zur effizienten Verwaltung
|
||||
und Validierung von XSL-Transformationen mit automatischer PDF-Generierung.
|
||||
</p>
|
||||
<div class="hero-buttons">
|
||||
<a href="#download" class="btn btn-primary">Jetzt Herunterladen</a>
|
||||
<a href="#features" class="btn btn-secondary">Mehr Erfahren</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero-image">
|
||||
<div class="screenshot-placeholder">
|
||||
<svg viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="800" height="600" fill="#1e293b" rx="8"/>
|
||||
<rect x="20" y="20" width="760" height="50" fill="#334155" rx="4"/>
|
||||
<circle cx="40" cy="45" r="8" fill="#ef4444"/>
|
||||
<circle cx="70" cy="45" r="8" fill="#eab308"/>
|
||||
<circle cx="100" cy="45" r="8" fill="#22c55e"/>
|
||||
<rect x="20" y="90" width="250" height="490" fill="#334155" rx="4"/>
|
||||
<rect x="290" y="90" width="490" height="150" fill="#334155" rx="4"/>
|
||||
<rect x="290" y="260" width="490" height="320" fill="#334155" rx="4"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Features Section -->
|
||||
<section id="features" class="features">
|
||||
<div class="container">
|
||||
<h2 class="section-title">Leistungsstarke Features</h2>
|
||||
<p class="section-subtitle">Alles, was Sie für professionelle XSL-Transformationen benötigen</p>
|
||||
|
||||
<div class="features-grid">
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>Hierarchische Projektverwaltung</h3>
|
||||
<p>Organisieren Sie Ihre XSL-Transformationen in einer übersichtlichen Baumstruktur mit flexiblen Workflow-Definitionen.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>Asynchrone Batch-Verarbeitung</h3>
|
||||
<p>Verarbeiten Sie große Mengen von XML-Dateien im Hintergrund mit Fortschrittsanzeige und optimaler Performance.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>Intelligente Duplikatserkennung</h3>
|
||||
<p>Automatische Hash-basierte Erkennung von identischen XML-Dateien verhindert Redundanzen und spart Speicherplatz.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
||||
<path d="M9 3v18M15 3v18M3 9h18M3 15h18"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>PDF-Vergleichsansicht</h3>
|
||||
<p>Drei-Panel-Ansicht mit Referenz-, Diff- und Neu-PDF inkl. Alpha-Blending für präzise visuelle Vergleiche.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>PostgreSQL-Integration</h3>
|
||||
<p>Nahtlose Datenbankanbindung mit Polars und ConnectorX für performante SQL-Abfragen und Datenverarbeitung.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>Konfigurierbare Toolchains</h3>
|
||||
<p>Flexible Verwaltung von Saxon, Apache FOP und diff-pdf mit Versionierung und plattformübergreifender Unterstützung.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>Drag & Drop-Unterstützung</h3>
|
||||
<p>Intuitive Bedienung durch Drag-and-Drop für XML-Dateien mit automatischer Hash-Prüfung und Zuordnung.</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3>Blake2b-Hash-Validierung</h3>
|
||||
<p>Robuste Integritätsprüfung mit automatischer Hash-Berechnung für alle XML-Dateien im Hintergrund.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Workflow Section -->
|
||||
<section id="workflow" class="workflow">
|
||||
<div class="container">
|
||||
<h2 class="section-title">Ihr Workflow mit DocuMentor</h2>
|
||||
<div class="workflow-steps">
|
||||
<div class="workflow-step">
|
||||
<div class="step-number">1</div>
|
||||
<h3>Projekt erstellen</h3>
|
||||
<p>Legen Sie ein neues Projekt an und konfigurieren Sie Ihre Transformations-Tools (Saxon, Apache FOP).</p>
|
||||
</div>
|
||||
<div class="workflow-arrow">→</div>
|
||||
<div class="workflow-step">
|
||||
<div class="step-number">2</div>
|
||||
<h3>Struktur aufbauen</h3>
|
||||
<p>Organisieren Sie Ihre XSL-Stylesheets und XML-Dateien in der hierarchischen Baumstruktur.</p>
|
||||
</div>
|
||||
<div class="workflow-arrow">→</div>
|
||||
<div class="workflow-step">
|
||||
<div class="step-number">3</div>
|
||||
<h3>Transformationen ausführen</h3>
|
||||
<p>Führen Sie Batch-Transformationen aus und profitieren Sie von der Worker-Pool-Performance.</p>
|
||||
</div>
|
||||
<div class="workflow-arrow">→</div>
|
||||
<div class="workflow-step">
|
||||
<div class="step-number">4</div>
|
||||
<h3>PDFs vergleichen</h3>
|
||||
<p>Nutzen Sie die Drei-Panel-Ansicht für präzise Vergleiche zwischen Referenz und generierten PDFs.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Technology Section -->
|
||||
<section id="technologie" class="technology">
|
||||
<div class="container">
|
||||
<h2 class="section-title">Moderne Technologie</h2>
|
||||
<div class="tech-grid">
|
||||
<div class="tech-item">
|
||||
<h3>PySide6</h3>
|
||||
<p>Native Qt-basierte Benutzeroberfläche für beste Performance und plattformübergreifende Kompatibilität</p>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<h3>Pydantic</h3>
|
||||
<p>Typsichere Konfigurationsverwaltung mit automatischer Validierung und Serialisierung</p>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<h3>Saxon</h3>
|
||||
<p>Industrie-Standard XSLT-Prozessor für höchste Transformations-Qualität</p>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<h3>Apache FOP</h3>
|
||||
<p>Professionelle PDF-Generierung aus XSL-FO mit umfangreichen Formatierungsoptionen</p>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<h3>PostgreSQL</h3>
|
||||
<p>Enterprise-Datenbankintegration mit Polars für schnelle Datenverarbeitung</p>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<h3>Blake2b</h3>
|
||||
<p>Kryptographische Hash-Funktion für sichere Integritätsprüfung und Duplikatserkennung</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Key Benefits Section -->
|
||||
<section class="benefits">
|
||||
<div class="container">
|
||||
<h2 class="section-title">Ihre Vorteile</h2>
|
||||
<div class="benefits-grid">
|
||||
<div class="benefit-item">
|
||||
<div class="benefit-number">4x</div>
|
||||
<p>Schnellere XSLT-Transformationen durch Worker-Pool-Architektur</p>
|
||||
</div>
|
||||
<div class="benefit-item">
|
||||
<div class="benefit-number">100%</div>
|
||||
<p>Automatische Duplikatserkennung verhindert redundante Dateien</p>
|
||||
</div>
|
||||
<div class="benefit-item">
|
||||
<div class="benefit-number">∞</div>
|
||||
<p>Unbegrenzte Projektgröße durch effiziente Hash-basierte Verwaltung</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Download Section -->
|
||||
<section id="download" class="download">
|
||||
<div class="container">
|
||||
<h2 class="section-title">Jetzt Starten</h2>
|
||||
<p class="section-subtitle">DocuMentor ist verfügbar für Windows, macOS und Linux</p>
|
||||
<div class="download-buttons">
|
||||
<div class="download-card">
|
||||
<h3>Linux</h3>
|
||||
<p>Ubuntu, Debian, Fedora, Arch</p>
|
||||
<a href="#" class="btn btn-download">Download für Linux</a>
|
||||
</div>
|
||||
<div class="download-card">
|
||||
<h3>Windows</h3>
|
||||
<p>Windows 10/11</p>
|
||||
<a href="#" class="btn btn-download">Download für Windows</a>
|
||||
</div>
|
||||
<div class="download-card">
|
||||
<h3>macOS</h3>
|
||||
<p>macOS 10.15+</p>
|
||||
<a href="#" class="btn btn-download">Download für macOS</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="installation-note">
|
||||
<h3>Installation</h3>
|
||||
<div class="code-block">
|
||||
<code>
|
||||
# Installation mit uv Paketmanager<br>
|
||||
uv sync<br>
|
||||
<br>
|
||||
# Anwendung starten<br>
|
||||
uv run python src/main.py
|
||||
</code>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-content">
|
||||
<div class="footer-section">
|
||||
<h3>DocuMentor</h3>
|
||||
<p>Professionelle XSL-Transformations-Verwaltung für anspruchsvolle Projekte.</p>
|
||||
</div>
|
||||
<div class="footer-section">
|
||||
<h4>Ressourcen</h4>
|
||||
<ul>
|
||||
<li><a href="#">Dokumentation</a></li>
|
||||
<li><a href="#">GitHub Repository</a></li>
|
||||
<li><a href="#">Issue Tracker</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-section">
|
||||
<h4>Community</h4>
|
||||
<ul>
|
||||
<li><a href="#">Forum</a></li>
|
||||
<li><a href="#">Support</a></li>
|
||||
<li><a href="#">Changelog</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-section">
|
||||
<h4>Rechtliches</h4>
|
||||
<ul>
|
||||
<li><a href="impressum.html">Impressum</a></li>
|
||||
<li><a href="datenschutz.html">Datenschutz</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>© 2025 DocuMentor. Alle Rechte vorbehalten.</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
-275
@@ -1,275 +0,0 @@
|
||||
// Smooth Scrolling für Navigation
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
const target = document.querySelector(this.getAttribute('href'));
|
||||
if (target) {
|
||||
const navHeight = document.querySelector('.navbar').offsetHeight;
|
||||
const targetPosition = target.getBoundingClientRect().top + window.pageYOffset - navHeight;
|
||||
window.scrollTo({
|
||||
top: targetPosition,
|
||||
behavior: 'smooth'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Intersection Observer für Fade-In Animationen
|
||||
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);
|
||||
|
||||
// Füge Fade-In Klassen zu Elementen hinzu
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const animatedElements = document.querySelectorAll(
|
||||
'.feature-card, .workflow-step, .tech-item, .benefit-item, .download-card'
|
||||
);
|
||||
|
||||
animatedElements.forEach((el, index) => {
|
||||
el.classList.add('fade-in');
|
||||
el.style.transitionDelay = `${index * 0.1}s`;
|
||||
observer.observe(el);
|
||||
});
|
||||
});
|
||||
|
||||
// Navbar Scroll-Effekt
|
||||
let lastScroll = 0;
|
||||
const navbar = document.querySelector('.navbar');
|
||||
|
||||
window.addEventListener('scroll', () => {
|
||||
const currentScroll = window.pageYOffset;
|
||||
|
||||
if (currentScroll <= 0) {
|
||||
navbar.style.boxShadow = 'none';
|
||||
} else {
|
||||
navbar.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.3)';
|
||||
}
|
||||
|
||||
lastScroll = currentScroll;
|
||||
});
|
||||
|
||||
// Feature-Card Parallax-Effekt
|
||||
document.querySelectorAll('.feature-card').forEach(card => {
|
||||
card.addEventListener('mousemove', (e) => {
|
||||
const rect = card.getBoundingClientRect();
|
||||
const x = e.clientX - rect.left;
|
||||
const y = e.clientY - rect.top;
|
||||
|
||||
const centerX = rect.width / 2;
|
||||
const centerY = rect.height / 2;
|
||||
|
||||
const deltaX = (x - centerX) / centerX;
|
||||
const deltaY = (y - centerY) / centerY;
|
||||
|
||||
card.style.transform = `perspective(1000px) rotateY(${deltaX * 5}deg) rotateX(${-deltaY * 5}deg) translateY(-5px)`;
|
||||
});
|
||||
|
||||
card.addEventListener('mouseleave', () => {
|
||||
card.style.transform = 'perspective(1000px) rotateY(0deg) rotateX(0deg) translateY(0)';
|
||||
});
|
||||
});
|
||||
|
||||
// Download-Button Analytics (Placeholder)
|
||||
document.querySelectorAll('.btn-download').forEach(button => {
|
||||
button.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
const platform = e.target.closest('.download-card').querySelector('h3').textContent;
|
||||
console.log(`Download initiated for: ${platform}`);
|
||||
|
||||
// Hier könnte eine echte Download-Logik oder Analytics-Tracking erfolgen
|
||||
alert(`Download für ${platform} würde hier starten.\nBitte konfigurieren Sie die Download-Links in der index.html.`);
|
||||
});
|
||||
});
|
||||
|
||||
// Mobile Navigation Toggle (für zukünftige Erweiterung)
|
||||
const createMobileMenu = () => {
|
||||
const navMenu = document.querySelector('.nav-menu');
|
||||
const navbar = document.querySelector('.navbar .container');
|
||||
|
||||
// Erstelle Hamburger-Button nur auf mobilen Geräten
|
||||
if (window.innerWidth <= 768) {
|
||||
const existingToggle = document.querySelector('.nav-toggle');
|
||||
if (existingToggle) return;
|
||||
|
||||
const toggle = document.createElement('button');
|
||||
toggle.className = 'nav-toggle';
|
||||
toggle.innerHTML = '☰';
|
||||
toggle.style.cssText = `
|
||||
background: none;
|
||||
border: none;
|
||||
color: var(--text-primary);
|
||||
font-size: 1.5rem;
|
||||
cursor: pointer;
|
||||
padding: 0.5rem;
|
||||
`;
|
||||
|
||||
toggle.addEventListener('click', () => {
|
||||
navMenu.style.display = navMenu.style.display === 'flex' ? 'none' : 'flex';
|
||||
if (navMenu.style.display === 'flex') {
|
||||
navMenu.style.cssText = `
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: var(--surface);
|
||||
padding: 1rem;
|
||||
border-top: 1px solid var(--surface-light);
|
||||
`;
|
||||
}
|
||||
});
|
||||
|
||||
navbar.appendChild(toggle);
|
||||
}
|
||||
};
|
||||
|
||||
// Responsive Handling
|
||||
window.addEventListener('resize', createMobileMenu);
|
||||
createMobileMenu();
|
||||
|
||||
// Particle Background Animation (optional, dezent)
|
||||
const createParticles = () => {
|
||||
const hero = document.querySelector('.hero');
|
||||
const particlesContainer = document.createElement('div');
|
||||
particlesContainer.className = 'particles';
|
||||
particlesContainer.style.cssText = `
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
opacity: 0.3;
|
||||
`;
|
||||
|
||||
for (let i = 0; i < 20; i++) {
|
||||
const particle = document.createElement('div');
|
||||
particle.style.cssText = `
|
||||
position: absolute;
|
||||
width: 4px;
|
||||
height: 4px;
|
||||
background: var(--primary-color);
|
||||
border-radius: 50%;
|
||||
left: ${Math.random() * 100}%;
|
||||
top: ${Math.random() * 100}%;
|
||||
animation: float-particle ${5 + Math.random() * 10}s infinite ease-in-out;
|
||||
animation-delay: ${Math.random() * 5}s;
|
||||
`;
|
||||
particlesContainer.appendChild(particle);
|
||||
}
|
||||
|
||||
// Füge Animation hinzu
|
||||
if (!document.querySelector('#particle-animation')) {
|
||||
const style = document.createElement('style');
|
||||
style.id = 'particle-animation';
|
||||
style.textContent = `
|
||||
@keyframes float-particle {
|
||||
0%, 100% {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
25% {
|
||||
transform: translate(20px, -20px);
|
||||
}
|
||||
50% {
|
||||
transform: translate(-20px, -40px);
|
||||
}
|
||||
75% {
|
||||
transform: translate(20px, -60px);
|
||||
}
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
|
||||
hero.style.position = 'relative';
|
||||
hero.insertBefore(particlesContainer, hero.firstChild);
|
||||
};
|
||||
|
||||
// Initialisiere Partikel nur auf Desktop
|
||||
if (window.innerWidth > 768) {
|
||||
createParticles();
|
||||
}
|
||||
|
||||
// Counter Animation für Benefits
|
||||
const animateCounters = () => {
|
||||
const counters = document.querySelectorAll('.benefit-number');
|
||||
|
||||
counters.forEach(counter => {
|
||||
const target = counter.textContent;
|
||||
|
||||
// Prüfe ob es eine Zahl ist
|
||||
if (!isNaN(parseInt(target))) {
|
||||
const targetNum = parseInt(target);
|
||||
const duration = 2000;
|
||||
const increment = targetNum / (duration / 16);
|
||||
let current = 0;
|
||||
|
||||
const updateCounter = () => {
|
||||
current += increment;
|
||||
if (current < targetNum) {
|
||||
counter.textContent = Math.floor(current) + 'x';
|
||||
requestAnimationFrame(updateCounter);
|
||||
} else {
|
||||
counter.textContent = target;
|
||||
}
|
||||
};
|
||||
|
||||
// Starte Animation wenn Element sichtbar wird
|
||||
const counterObserver = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
updateCounter();
|
||||
counterObserver.unobserve(entry.target);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
counterObserver.observe(counter);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
animateCounters();
|
||||
|
||||
// Easter Egg: Konami Code
|
||||
let konamiCode = [];
|
||||
const konamiSequence = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'];
|
||||
|
||||
document.addEventListener('keydown', (e) => {
|
||||
konamiCode.push(e.key);
|
||||
konamiCode = konamiCode.slice(-10);
|
||||
|
||||
if (konamiCode.join(',') === konamiSequence.join(',')) {
|
||||
document.body.style.animation = 'rainbow 2s infinite';
|
||||
|
||||
if (!document.querySelector('#rainbow-animation')) {
|
||||
const style = document.createElement('style');
|
||||
style.id = 'rainbow-animation';
|
||||
style.textContent = `
|
||||
@keyframes rainbow {
|
||||
0% { filter: hue-rotate(0deg); }
|
||||
100% { filter: hue-rotate(360deg); }
|
||||
}
|
||||
`;
|
||||
document.head.appendChild(style);
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
document.body.style.animation = '';
|
||||
}, 5000);
|
||||
}
|
||||
});
|
||||
|
||||
console.log('%c🚀 DocuMentor', 'font-size: 24px; font-weight: bold; background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%); -webkit-background-clip: text; color: transparent;');
|
||||
console.log('%cProfessionelle XSL-Transformations-Verwaltung', 'font-size: 14px; color: #94a3b8;');
|
||||
-542
@@ -1,542 +0,0 @@
|
||||
/* Reset und Basis-Styles */
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
--primary-color: #3b82f6;
|
||||
--primary-dark: #2563eb;
|
||||
--secondary-color: #8b5cf6;
|
||||
--background: #0f172a;
|
||||
--surface: #1e293b;
|
||||
--surface-light: #334155;
|
||||
--text-primary: #f1f5f9;
|
||||
--text-secondary: #cbd5e1;
|
||||
--text-muted: #94a3b8;
|
||||
--accent: #06b6d4;
|
||||
--success: #22c55e;
|
||||
--warning: #eab308;
|
||||
--error: #ef4444;
|
||||
--gradient: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%);
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||
background-color: var(--background);
|
||||
color: var(--text-primary);
|
||||
line-height: 1.6;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 2rem;
|
||||
}
|
||||
|
||||
/* Navigation */
|
||||
.navbar {
|
||||
background-color: rgba(15, 23, 42, 0.95);
|
||||
backdrop-filter: blur(10px);
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 1000;
|
||||
border-bottom: 1px solid var(--surface-light);
|
||||
}
|
||||
|
||||
.navbar .container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 1rem 2rem;
|
||||
}
|
||||
|
||||
.nav-brand h1 {
|
||||
font-size: 1.5rem;
|
||||
background: var(--gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.nav-menu {
|
||||
display: flex;
|
||||
list-style: none;
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
.nav-menu a {
|
||||
color: var(--text-secondary);
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.nav-menu a:hover {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
/* Hero Section */
|
||||
.hero {
|
||||
margin-top: 80px;
|
||||
padding: 6rem 0;
|
||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(139, 92, 246, 0.1) 100%);
|
||||
}
|
||||
|
||||
.hero .container {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 4rem;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.hero-title {
|
||||
font-size: 3.5rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
margin-bottom: 1.5rem;
|
||||
background: var(--gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.hero-subtitle {
|
||||
font-size: 1.25rem;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 2rem;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.hero-buttons {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 0.875rem 2rem;
|
||||
border-radius: 0.5rem;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.3s;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background: var(--gradient);
|
||||
color: white;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background: transparent;
|
||||
color: var(--text-primary);
|
||||
border: 2px solid var(--primary-color);
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
background: var(--primary-color);
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.screenshot-placeholder {
|
||||
width: 100%;
|
||||
border-radius: 1rem;
|
||||
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
|
||||
overflow: hidden;
|
||||
animation: float 6s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes float {
|
||||
0%, 100% { transform: translateY(0px); }
|
||||
50% { transform: translateY(-20px); }
|
||||
}
|
||||
|
||||
/* Features Section */
|
||||
.features {
|
||||
padding: 6rem 0;
|
||||
background-color: var(--background);
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 2.5rem;
|
||||
text-align: center;
|
||||
margin-bottom: 1rem;
|
||||
background: var(--gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.section-subtitle {
|
||||
text-align: center;
|
||||
color: var(--text-secondary);
|
||||
font-size: 1.125rem;
|
||||
margin-bottom: 4rem;
|
||||
}
|
||||
|
||||
.features-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
.feature-card {
|
||||
background: var(--surface);
|
||||
padding: 2rem;
|
||||
border-radius: 1rem;
|
||||
border: 1px solid var(--surface-light);
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.feature-card:hover {
|
||||
transform: translateY(-5px);
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 10px 30px rgba(59, 130, 246, 0.2);
|
||||
}
|
||||
|
||||
.feature-icon {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
margin-bottom: 1.5rem;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.feature-icon svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.feature-card h3 {
|
||||
font-size: 1.25rem;
|
||||
margin-bottom: 1rem;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.feature-card p {
|
||||
color: var(--text-secondary);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Workflow Section */
|
||||
.workflow {
|
||||
padding: 6rem 0;
|
||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.05) 0%, rgba(139, 92, 246, 0.05) 100%);
|
||||
}
|
||||
|
||||
.workflow-steps {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
.workflow-step {
|
||||
flex: 1;
|
||||
background: var(--surface);
|
||||
padding: 2rem;
|
||||
border-radius: 1rem;
|
||||
text-align: center;
|
||||
border: 1px solid var(--surface-light);
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.workflow-step:hover {
|
||||
transform: translateY(-5px);
|
||||
border-color: var(--primary-color);
|
||||
}
|
||||
|
||||
.step-number {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
background: var(--gradient);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 0 auto 1.5rem;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.workflow-arrow {
|
||||
font-size: 2rem;
|
||||
color: var(--primary-color);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.workflow-step h3 {
|
||||
margin-bottom: 1rem;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.workflow-step p {
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* Technology Section */
|
||||
.technology {
|
||||
padding: 6rem 0;
|
||||
background-color: var(--background);
|
||||
}
|
||||
|
||||
.tech-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
.tech-item {
|
||||
background: var(--surface);
|
||||
padding: 2rem;
|
||||
border-radius: 1rem;
|
||||
border-left: 4px solid var(--primary-color);
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.tech-item:hover {
|
||||
border-left-color: var(--secondary-color);
|
||||
transform: translateX(5px);
|
||||
}
|
||||
|
||||
.tech-item h3 {
|
||||
color: var(--primary-color);
|
||||
margin-bottom: 0.75rem;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.tech-item p {
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* Benefits Section */
|
||||
.benefits {
|
||||
padding: 6rem 0;
|
||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(139, 92, 246, 0.1) 100%);
|
||||
}
|
||||
|
||||
.benefits-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
gap: 2rem;
|
||||
margin-top: 3rem;
|
||||
}
|
||||
|
||||
.benefit-item {
|
||||
text-align: center;
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
.benefit-number {
|
||||
font-size: 4rem;
|
||||
font-weight: 700;
|
||||
background: var(--gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.benefit-item p {
|
||||
font-size: 1.125rem;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* Download Section */
|
||||
.download {
|
||||
padding: 6rem 0;
|
||||
background-color: var(--background);
|
||||
}
|
||||
|
||||
.download-buttons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 2rem;
|
||||
margin: 3rem 0;
|
||||
}
|
||||
|
||||
.download-card {
|
||||
background: var(--surface);
|
||||
padding: 2rem;
|
||||
border-radius: 1rem;
|
||||
text-align: center;
|
||||
border: 1px solid var(--surface-light);
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.download-card:hover {
|
||||
border-color: var(--primary-color);
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
|
||||
.download-card h3 {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.download-card p {
|
||||
color: var(--text-muted);
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.btn-download {
|
||||
background: var(--gradient);
|
||||
color: white;
|
||||
border: none;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.btn-download:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
|
||||
}
|
||||
|
||||
.installation-note {
|
||||
background: var(--surface);
|
||||
padding: 2rem;
|
||||
border-radius: 1rem;
|
||||
margin-top: 3rem;
|
||||
border: 1px solid var(--surface-light);
|
||||
}
|
||||
|
||||
.installation-note h3 {
|
||||
margin-bottom: 1.5rem;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.code-block {
|
||||
background: var(--background);
|
||||
padding: 1.5rem;
|
||||
border-radius: 0.5rem;
|
||||
border: 1px solid var(--surface-light);
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.code-block code {
|
||||
color: var(--accent);
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
background-color: var(--surface);
|
||||
padding: 4rem 0 2rem;
|
||||
border-top: 1px solid var(--surface-light);
|
||||
}
|
||||
|
||||
.footer-content {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
gap: 3rem;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.footer-section h3 {
|
||||
margin-bottom: 1rem;
|
||||
background: var(--gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.footer-section h4 {
|
||||
margin-bottom: 1rem;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.footer-section p {
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.footer-section ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.footer-section ul li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.footer-section ul li a {
|
||||
color: var(--text-secondary);
|
||||
text-decoration: none;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.footer-section ul li a:hover {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.footer-bottom {
|
||||
text-align: center;
|
||||
padding-top: 2rem;
|
||||
border-top: 1px solid var(--surface-light);
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* Responsive Design */
|
||||
@media (max-width: 768px) {
|
||||
.hero .container {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
.hero-title {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
.workflow-steps {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.workflow-arrow {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
.nav-menu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.features-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.download-buttons {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
/* Scroll Animations */
|
||||
.fade-in {
|
||||
opacity: 0;
|
||||
transform: translateY(20px);
|
||||
transition: opacity 0.6s, transform 0.6s;
|
||||
}
|
||||
|
||||
.fade-in.visible {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
/* Smooth Scrolling */
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
/* Selection */
|
||||
::selection {
|
||||
background-color: var(--primary-color);
|
||||
color: white;
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 38 KiB |
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 153 KiB |
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 605 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,951 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Datenschutz — DocuMentor</title>
|
||||
<link rel="stylesheet" href="fonts/fonts.css">
|
||||
<style>
|
||||
/* ============================================================
|
||||
RESET & BASE
|
||||
============================================================ */
|
||||
*, *::before, *::after {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
--concrete-dark: #1a1a1a;
|
||||
--concrete-mid: #2a2a2a;
|
||||
--concrete-light: #3a3a3a;
|
||||
--concrete-surface: #444444;
|
||||
--warning-yellow: #f0c030;
|
||||
--warning-yellow-dim: #e8b800;
|
||||
--safety-orange: #e05020;
|
||||
--steel-text: #b0b0b0;
|
||||
--steel-bright: #d0d0d0;
|
||||
--white: #f0efe8;
|
||||
--grid-line: rgba(240, 192, 48, 0.07);
|
||||
--grid-dot: rgba(240, 192, 48, 0.12);
|
||||
--led-green: #30e060;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Barlow', sans-serif;
|
||||
background-color: var(--concrete-dark);
|
||||
color: var(--steel-text);
|
||||
line-height: 1.6;
|
||||
overflow-x: hidden;
|
||||
background-image:
|
||||
repeating-linear-gradient(
|
||||
0deg,
|
||||
transparent,
|
||||
transparent 2px,
|
||||
rgba(255,255,255,0.008) 2px,
|
||||
rgba(255,255,255,0.008) 4px
|
||||
),
|
||||
repeating-linear-gradient(
|
||||
90deg,
|
||||
transparent,
|
||||
transparent 2px,
|
||||
rgba(255,255,255,0.005) 2px,
|
||||
rgba(255,255,255,0.005) 4px
|
||||
);
|
||||
}
|
||||
|
||||
body::before {
|
||||
content: '';
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
background-image:
|
||||
radial-gradient(circle, var(--grid-dot) 1px, transparent 1px);
|
||||
background-size: 40px 40px;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
UTILITY
|
||||
============================================================ */
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 2rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
section {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
STENCIL SECTION LABELS
|
||||
============================================================ */
|
||||
.section-label {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 0.75rem;
|
||||
letter-spacing: 0.3em;
|
||||
text-transform: uppercase;
|
||||
color: var(--warning-yellow-dim);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.section-label::before {
|
||||
content: attr(data-num);
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.65rem;
|
||||
color: var(--concrete-surface);
|
||||
border: 1px dashed var(--concrete-surface);
|
||||
padding: 0.15rem 0.4rem;
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 2.5rem;
|
||||
color: var(--white);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
line-height: 1.1;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
HAZARD STRIPE
|
||||
============================================================ */
|
||||
.hazard-stripe {
|
||||
height: 6px;
|
||||
background: repeating-linear-gradient(
|
||||
-45deg,
|
||||
var(--warning-yellow),
|
||||
var(--warning-yellow) 8px,
|
||||
var(--concrete-dark) 8px,
|
||||
var(--concrete-dark) 16px
|
||||
);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.hazard-stripe-thin {
|
||||
height: 3px;
|
||||
background: repeating-linear-gradient(
|
||||
-45deg,
|
||||
var(--warning-yellow-dim),
|
||||
var(--warning-yellow-dim) 5px,
|
||||
var(--concrete-mid) 5px,
|
||||
var(--concrete-mid) 10px
|
||||
);
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
CORNER BRACKETS
|
||||
============================================================ */
|
||||
.corner-brackets {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.corner-brackets::before,
|
||||
.corner-brackets::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.corner-brackets::before {
|
||||
top: -1px;
|
||||
left: -1px;
|
||||
border-top: 2px solid var(--warning-yellow-dim);
|
||||
border-left: 2px solid var(--warning-yellow-dim);
|
||||
}
|
||||
|
||||
.corner-brackets::after {
|
||||
bottom: -1px;
|
||||
right: -1px;
|
||||
border-bottom: 2px solid var(--warning-yellow-dim);
|
||||
border-right: 2px solid var(--warning-yellow-dim);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
RIVET DECORATIONS
|
||||
============================================================ */
|
||||
.riveted {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.riveted .rivet {
|
||||
position: absolute;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background: radial-gradient(circle at 35% 35%, #555, #2a2a2a 60%, #1a1a1a);
|
||||
box-shadow: inset 0 1px 1px rgba(255,255,255,0.15), 0 1px 2px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.riveted .rivet-tl { top: 10px; left: 10px; }
|
||||
.riveted .rivet-tr { top: 10px; right: 10px; }
|
||||
.riveted .rivet-bl { bottom: 10px; left: 10px; }
|
||||
.riveted .rivet-br { bottom: 10px; right: 10px; }
|
||||
|
||||
/* ============================================================
|
||||
LED INDICATOR
|
||||
============================================================ */
|
||||
.led {
|
||||
display: inline-block;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
margin-right: 6px;
|
||||
vertical-align: middle;
|
||||
box-shadow: 0 0 4px currentColor;
|
||||
}
|
||||
|
||||
.led-green {
|
||||
background-color: var(--led-green);
|
||||
color: var(--led-green);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
SCROLL REVEAL
|
||||
============================================================ */
|
||||
.reveal {
|
||||
opacity: 0;
|
||||
transform: translateY(30px);
|
||||
transition: opacity 0.6s linear, transform 0.6s linear;
|
||||
}
|
||||
|
||||
.reveal.visible {
|
||||
opacity: 1;
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
NAVBAR
|
||||
============================================================ */
|
||||
.navbar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
background: rgba(26, 26, 26, 0.92);
|
||||
backdrop-filter: blur(10px);
|
||||
border-bottom: 1px solid rgba(240, 192, 48, 0.12);
|
||||
}
|
||||
|
||||
.navbar-inner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 2rem;
|
||||
height: 56px;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.navbar-brand-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border: 2px solid var(--warning-yellow);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 0.85rem;
|
||||
color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
.navbar-brand-text {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 1.1rem;
|
||||
color: var(--white);
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.navbar-links {
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.navbar-links a {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.75rem;
|
||||
color: var(--steel-text);
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.15em;
|
||||
padding: 0.25rem 0;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: color 0.2s linear, border-color 0.2s linear;
|
||||
}
|
||||
|
||||
.navbar-links a:hover,
|
||||
.navbar-links a.active {
|
||||
color: var(--warning-yellow);
|
||||
border-bottom-color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
.navbar-mobile-toggle {
|
||||
display: none;
|
||||
background: none;
|
||||
border: 1px solid var(--concrete-surface);
|
||||
color: var(--steel-text);
|
||||
padding: 0.4rem 0.6rem;
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.75rem;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
PAGE HEADER
|
||||
============================================================ */
|
||||
.page-header {
|
||||
padding-top: 56px;
|
||||
background: linear-gradient(135deg, var(--concrete-dark) 0%, var(--concrete-mid) 50%, var(--concrete-dark) 100%);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.page-header::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image:
|
||||
linear-gradient(var(--grid-line) 1px, transparent 1px),
|
||||
linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
|
||||
background-size: 80px 80px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.page-header-inner {
|
||||
padding: 3rem 0 2.5rem;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.page-header-tag {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.7rem;
|
||||
color: var(--concrete-surface);
|
||||
letter-spacing: 0.2em;
|
||||
margin-bottom: 1rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.page-header-title {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 3rem;
|
||||
color: var(--white);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.page-header-title span {
|
||||
color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
.page-header-sub {
|
||||
font-family: 'Barlow Condensed', sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 1.1rem;
|
||||
color: var(--steel-text);
|
||||
margin-top: 0.5rem;
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
LEGAL CONTENT
|
||||
============================================================ */
|
||||
.legal-section {
|
||||
padding: 5rem 0;
|
||||
background: var(--concrete-dark);
|
||||
}
|
||||
|
||||
.legal-panel {
|
||||
background: var(--concrete-mid);
|
||||
border: 1px solid rgba(240, 192, 48, 0.12);
|
||||
padding: 3rem;
|
||||
max-width: 860px;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.legal-block {
|
||||
margin-bottom: 2.5rem;
|
||||
}
|
||||
|
||||
.legal-block:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.legal-block-label {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.65rem;
|
||||
color: var(--concrete-surface);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.2em;
|
||||
margin-bottom: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.legal-block-label::before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 1px;
|
||||
background: var(--concrete-surface);
|
||||
}
|
||||
|
||||
.legal-block h2 {
|
||||
font-family: 'Barlow Condensed', sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 1.3rem;
|
||||
color: var(--steel-bright);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.legal-block p {
|
||||
font-family: 'Barlow', sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 0.95rem;
|
||||
color: var(--steel-text);
|
||||
line-height: 1.7;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.legal-block p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.legal-block a {
|
||||
color: var(--warning-yellow-dim);
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: border-color 0.2s linear;
|
||||
}
|
||||
|
||||
.legal-block a:hover {
|
||||
border-bottom-color: var(--warning-yellow-dim);
|
||||
}
|
||||
|
||||
.legal-block ul {
|
||||
margin: 0.5rem 0 0.5rem 1.5rem;
|
||||
font-family: 'Barlow', sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 0.95rem;
|
||||
color: var(--steel-text);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.legal-block ul li {
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.legal-divider {
|
||||
height: 1px;
|
||||
background: linear-gradient(90deg,
|
||||
transparent 0%,
|
||||
rgba(240, 192, 48, 0.15) 20%,
|
||||
rgba(240, 192, 48, 0.15) 80%,
|
||||
transparent 100%
|
||||
);
|
||||
margin: 2.5rem 0;
|
||||
}
|
||||
|
||||
.legal-address {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.85rem;
|
||||
color: var(--steel-text);
|
||||
line-height: 2;
|
||||
padding: 1rem 1.25rem;
|
||||
background: rgba(26, 26, 26, 0.6);
|
||||
border: 1px dashed rgba(240, 192, 48, 0.1);
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.legal-address strong {
|
||||
color: var(--steel-bright);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.legal-note {
|
||||
margin-top: 1.5rem;
|
||||
padding: 1rem 1.25rem;
|
||||
border-left: 3px solid var(--safety-orange);
|
||||
background: rgba(224, 80, 32, 0.05);
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.75rem;
|
||||
color: var(--steel-text);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.legal-note strong {
|
||||
color: var(--safety-orange);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
FOOTER
|
||||
============================================================ */
|
||||
.footer {
|
||||
padding: 3rem 0 2rem;
|
||||
background: var(--concrete-dark);
|
||||
border-top: 1px solid rgba(240, 192, 48, 0.08);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.footer-inner {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.footer-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.footer-brand-icon {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border: 1.5px solid var(--warning-yellow-dim);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 0.7rem;
|
||||
color: var(--warning-yellow-dim);
|
||||
}
|
||||
|
||||
.footer-brand-text {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 500;
|
||||
font-size: 0.85rem;
|
||||
color: var(--steel-text);
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.footer-meta {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.65rem;
|
||||
color: var(--concrete-surface);
|
||||
letter-spacing: 0.1em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
display: flex;
|
||||
gap: 1.5rem;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.footer-links a {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.7rem;
|
||||
color: var(--steel-text);
|
||||
text-decoration: none;
|
||||
letter-spacing: 0.1em;
|
||||
transition: color 0.2s linear;
|
||||
}
|
||||
|
||||
.footer-links a:hover,
|
||||
.footer-links a.active {
|
||||
color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
RESPONSIVE
|
||||
============================================================ */
|
||||
@media (max-width: 768px) {
|
||||
.navbar-links {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 56px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: rgba(26, 26, 26, 0.97);
|
||||
flex-direction: column;
|
||||
padding: 1rem 2rem;
|
||||
gap: 0.75rem;
|
||||
border-bottom: 1px solid rgba(240, 192, 48, 0.12);
|
||||
}
|
||||
|
||||
.navbar-links.open {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.navbar-mobile-toggle {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.page-header-title {
|
||||
font-size: 2.2rem;
|
||||
}
|
||||
|
||||
.legal-panel {
|
||||
padding: 2rem 1.5rem;
|
||||
}
|
||||
|
||||
.footer-inner {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.footer-meta {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.container {
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.page-header-title {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
.legal-panel {
|
||||
padding: 1.5rem 1rem;
|
||||
}
|
||||
|
||||
.navbar-inner {
|
||||
padding: 0 1rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ============================================================
|
||||
NAVBAR
|
||||
============================================================ -->
|
||||
<nav class="navbar">
|
||||
<div class="navbar-inner">
|
||||
<a href="index.html" class="navbar-brand">
|
||||
<div class="navbar-brand-icon">D</div>
|
||||
<span class="navbar-brand-text">DocuMentor</span>
|
||||
</a>
|
||||
<button class="navbar-mobile-toggle" id="navToggle">MENU</button>
|
||||
<ul class="navbar-links" id="navLinks">
|
||||
<li><a href="index.html#features">Features</a></li>
|
||||
<li><a href="index.html#workflow">Workflow</a></li>
|
||||
<li><a href="index.html#techstack">Technik</a></li>
|
||||
<li><a href="index.html#download">Download</a></li>
|
||||
<li><a href="datenschutz.html" class="active">Datenschutz</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- ============================================================
|
||||
PAGE HEADER
|
||||
============================================================ -->
|
||||
<div class="page-header">
|
||||
<div class="hazard-stripe"></div>
|
||||
<div class="container">
|
||||
<div class="page-header-inner">
|
||||
<div class="page-header-tag">
|
||||
<span class="led led-green"></span>
|
||||
SYSTEM AKTIV — DATENSCHUTZINFORMATIONEN
|
||||
</div>
|
||||
<h1 class="page-header-title">Daten<span>schutz</span></h1>
|
||||
<p class="page-header-sub">Datenschutzerklärung gemäß DSGVO / BDSG</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hazard-stripe-thin"></div>
|
||||
</div>
|
||||
|
||||
<!-- ============================================================
|
||||
LEGAL CONTENT
|
||||
============================================================ -->
|
||||
<section class="legal-section">
|
||||
<div class="container">
|
||||
<div class="section-label reveal" data-num="DSE-01">Datenschutzerklärung</div>
|
||||
<h2 class="section-title reveal" style="margin-bottom: 2rem;">Datenschutz</h2>
|
||||
|
||||
<div class="legal-panel corner-brackets riveted reveal">
|
||||
<span class="rivet rivet-tl"></span>
|
||||
<span class="rivet rivet-tr"></span>
|
||||
<span class="rivet rivet-bl"></span>
|
||||
<span class="rivet rivet-br"></span>
|
||||
|
||||
<!-- 1. Verantwortlicher -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">§ 1 — VERANTWORTLICHER</div>
|
||||
<h2>Verantwortlicher</h2>
|
||||
<p>Verantwortlicher im Sinne der Datenschutz-Grundverordnung (DSGVO) und des Bundesdatenschutzgesetzes (BDSG) ist:</p>
|
||||
<div class="legal-address" style="margin-top: 0.75rem;">
|
||||
<strong>Vitali Graf</strong><br>
|
||||
Kulenkampffallee 65b<br>
|
||||
28213 Bremen<br>
|
||||
Deutschland
|
||||
E-Mail: <a href="mailto:info@vitaligraf.de">info@vitaligraf.de</a>
|
||||
</div>
|
||||
<!-- <div class="legal-note" style="margin-top: 1rem;">
|
||||
<strong>HINWEIS:</strong> Bitte Adresse vor Veröffentlichung ergänzen.
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- 2. Allgemeines -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">§ 2 — GRUNDSATZ</div>
|
||||
<h2>Allgemeines zur Datenverarbeitung</h2>
|
||||
<p>
|
||||
Diese Website ist eine statische Informationsseite über das Open-Source-Projekt
|
||||
DocuMentor. Es werden <strong style="color: var(--steel-bright); font-weight: 400;">keine Cookies</strong>,
|
||||
<strong style="color: var(--steel-bright); font-weight: 400;">keine Tracking-Skripte</strong> und
|
||||
<strong style="color: var(--steel-bright); font-weight: 400;">keine Webanalyse-Dienste</strong> verwendet.
|
||||
</p>
|
||||
<p>
|
||||
Alle Schriftarten werden lokal ausgeliefert. Es werden keine externen
|
||||
Ressourcen von Drittanbietern geladen. Es findet keine Verarbeitung
|
||||
personenbezogener Daten durch diese Website statt.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- 3. Server-Log -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">§ 3 — SERVER-LOGDATEIEN</div>
|
||||
<h2>Server-Logdateien</h2>
|
||||
<p>
|
||||
Beim Abruf dieser Website werden durch den Hosting-Anbieter automatisch
|
||||
technische Zugriffsdaten in sogenannten Server-Logdateien erfasst.
|
||||
Diese Daten werden nicht aktiv durch uns erhoben und umfassen:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Browsertyp und Browserversion</li>
|
||||
<li>Verwendetes Betriebssystem</li>
|
||||
<li>Referrer-URL (zuvor besuchte Seite)</li>
|
||||
<li>Hostname des zugreifenden Rechners</li>
|
||||
<li>Uhrzeit der Serveranfrage</li>
|
||||
<li>IP-Adresse</li>
|
||||
</ul>
|
||||
<p>
|
||||
Die Rechtsgrundlage für diese technisch notwendige Verarbeitung ist
|
||||
Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse am sicheren Betrieb
|
||||
der Website). Die Daten werden nicht mit anderen Datenquellen zusammengeführt
|
||||
und nach kurzer Zeit automatisch gelöscht.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- 4. Kontakt per E-Mail -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">§ 4 — KONTAKTAUFNAHME</div>
|
||||
<h2>Kontaktaufnahme per E-Mail</h2>
|
||||
<p>
|
||||
Wenn Sie uns per E-Mail kontaktieren, werden die übermittelten Daten
|
||||
(E-Mail-Adresse, Inhalt Ihrer Nachricht sowie ggf. weitere von Ihnen
|
||||
angegebene Daten) zur Bearbeitung Ihrer Anfrage und für den Fall von
|
||||
Anschlussfragen gespeichert.
|
||||
</p>
|
||||
<p>
|
||||
Die Verarbeitung dieser Daten erfolgt auf Grundlage von Art. 6 Abs. 1
|
||||
lit. b DSGVO, sofern Ihre Anfrage im Zusammenhang mit der Erfüllung
|
||||
eines Vertrages steht oder zur Durchführung vorvertraglicher Maßnahmen
|
||||
erforderlich ist. In allen übrigen Fällen beruht die Verarbeitung auf
|
||||
unserem berechtigten Interesse an der effektiven Bearbeitung der an uns
|
||||
gerichteten Anfragen (Art. 6 Abs. 1 lit. f DSGVO).
|
||||
</p>
|
||||
<p>
|
||||
Die Daten werden gelöscht, sobald Ihre Anfrage abschließend bearbeitet
|
||||
wurde und keine gesetzlichen Aufbewahrungspflichten entgegenstehen.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- 5. Desktop-Anwendung -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">§ 5 — DESKTOP-ANWENDUNG</div>
|
||||
<h2>DocuMentor Desktop-Anwendung</h2>
|
||||
<p>
|
||||
Die DocuMentor-Anwendung selbst läuft ausschließlich lokal auf Ihrem
|
||||
Rechner. Sie überträgt keine Daten an externe Server. Alle
|
||||
Konfigurationsdaten und Projektdateien werden ausschließlich lokal
|
||||
gespeichert:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Linux: <code style="font-family: 'Share Tech Mono', monospace; font-size: 0.85em; color: var(--warning-yellow-dim);">~/.config/DocuMentor/config.json</code></li>
|
||||
<li>Windows: <code style="font-family: 'Share Tech Mono', monospace; font-size: 0.85em; color: var(--warning-yellow-dim);">%APPDATA%\DocuMentor\config.json</code></li>
|
||||
<li>macOS: <code style="font-family: 'Share Tech Mono', monospace; font-size: 0.85em; color: var(--warning-yellow-dim);">~/Library/Application Support/DocuMentor/config.json</code></li>
|
||||
</ul>
|
||||
<p>
|
||||
Datenbankverbindungen zu PostgreSQL werden nur auf ausdrückliche
|
||||
Konfiguration durch den Nutzer hergestellt und ausschließlich für den
|
||||
in der Anwendung angezeigten Zweck verwendet.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- 6. Betroffenenrechte -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">§ 6 — IHRE RECHTE</div>
|
||||
<h2>Ihre Rechte als betroffene Person</h2>
|
||||
<p>Sie haben gegenüber uns folgende Rechte hinsichtlich Ihrer personenbezogenen Daten:</p>
|
||||
<ul>
|
||||
<li><strong style="color: var(--steel-bright); font-weight: 400;">Auskunftsrecht</strong> (Art. 15 DSGVO)</li>
|
||||
<li><strong style="color: var(--steel-bright); font-weight: 400;">Recht auf Berichtigung</strong> (Art. 16 DSGVO)</li>
|
||||
<li><strong style="color: var(--steel-bright); font-weight: 400;">Recht auf Löschung</strong> (Art. 17 DSGVO)</li>
|
||||
<li><strong style="color: var(--steel-bright); font-weight: 400;">Recht auf Einschränkung der Verarbeitung</strong> (Art. 18 DSGVO)</li>
|
||||
<li><strong style="color: var(--steel-bright); font-weight: 400;">Recht auf Datenübertragbarkeit</strong> (Art. 20 DSGVO)</li>
|
||||
<li><strong style="color: var(--steel-bright); font-weight: 400;">Widerspruchsrecht</strong> (Art. 21 DSGVO)</li>
|
||||
</ul>
|
||||
<p>
|
||||
Zur Ausübung Ihrer Rechte wenden Sie sich bitte an:
|
||||
<a href="mailto:info@vitaligraf.de">info@vitaligraf.de</a>
|
||||
</p>
|
||||
<p>
|
||||
Sie haben zudem das Recht, sich bei einer Datenschutz-Aufsichtsbehörde
|
||||
über die Verarbeitung Ihrer personenbezogenen Daten zu beschweren.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- 7. Aktualität -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">§ 7 — AKTUALITÄT</div>
|
||||
<h2>Aktualität dieser Datenschutzerklärung</h2>
|
||||
<p>
|
||||
Diese Datenschutzerklärung ist aktuell gültig und hat den Stand April 2026.
|
||||
Durch die Weiterentwicklung dieser Website oder aufgrund geänderter
|
||||
gesetzlicher bzw. behördlicher Vorgaben kann es notwendig werden,
|
||||
diese Datenschutzerklärung zu ändern.
|
||||
</p>
|
||||
<p>
|
||||
Die jeweils aktuelle Datenschutzerklärung kann jederzeit auf dieser
|
||||
Seite abgerufen werden.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="hazard-stripe-thin"></div>
|
||||
|
||||
<!-- ============================================================
|
||||
FOOTER
|
||||
============================================================ -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-inner">
|
||||
<div class="footer-brand">
|
||||
<div class="footer-brand-icon">D</div>
|
||||
<span class="footer-brand-text">DocuMentor</span>
|
||||
</div>
|
||||
<ul class="footer-links">
|
||||
<li><a href="index.html#features">Features</a></li>
|
||||
<li><a href="index.html#workflow">Workflow</a></li>
|
||||
<li><a href="index.html#techstack">Technik</a></li>
|
||||
<li><a href="index.html#download">Download</a></li>
|
||||
<li><a href="impressum.html">Impressum</a></li>
|
||||
<li><a href="datenschutz.html" class="active">Datenschutz</a></li>
|
||||
</ul>
|
||||
<div class="footer-meta">
|
||||
SYSTEM // DOCUMENTOR // BUILD 2026.02<br>
|
||||
PySide6 Desktop-Anwendung // Open Source
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
(function() {
|
||||
const toggle = document.getElementById('navToggle');
|
||||
const links = document.getElementById('navLinks');
|
||||
if (toggle && links) {
|
||||
toggle.addEventListener('click', function() {
|
||||
links.classList.toggle('open');
|
||||
toggle.textContent = links.classList.contains('open') ? 'CLOSE' : 'MENU';
|
||||
});
|
||||
}
|
||||
})();
|
||||
|
||||
(function() {
|
||||
const reveals = document.querySelectorAll('.reveal');
|
||||
const observer = new IntersectionObserver(function(entries) {
|
||||
entries.forEach(function(entry) {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.classList.add('visible');
|
||||
observer.unobserve(entry.target);
|
||||
}
|
||||
});
|
||||
}, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' });
|
||||
reveals.forEach(function(el) { observer.observe(el); });
|
||||
})();
|
||||
|
||||
(function() {
|
||||
const navbar = document.querySelector('.navbar');
|
||||
let ticking = false;
|
||||
window.addEventListener('scroll', function() {
|
||||
if (!ticking) {
|
||||
requestAnimationFrame(function() {
|
||||
navbar.style.borderBottomColor = window.scrollY > 80
|
||||
? 'rgba(240, 192, 48, 0.25)'
|
||||
: 'rgba(240, 192, 48, 0.12)';
|
||||
ticking = false;
|
||||
});
|
||||
ticking = true;
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,884 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Impressum — DocuMentor</title>
|
||||
<link rel="stylesheet" href="fonts/fonts.css">
|
||||
<style>
|
||||
/* ============================================================
|
||||
RESET & BASE
|
||||
============================================================ */
|
||||
*, *::before, *::after {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
--concrete-dark: #1a1a1a;
|
||||
--concrete-mid: #2a2a2a;
|
||||
--concrete-light: #3a3a3a;
|
||||
--concrete-surface: #444444;
|
||||
--warning-yellow: #f0c030;
|
||||
--warning-yellow-dim: #e8b800;
|
||||
--safety-orange: #e05020;
|
||||
--steel-text: #b0b0b0;
|
||||
--steel-bright: #d0d0d0;
|
||||
--white: #f0efe8;
|
||||
--grid-line: rgba(240, 192, 48, 0.07);
|
||||
--grid-dot: rgba(240, 192, 48, 0.12);
|
||||
--blueprint-line: rgba(240, 192, 48, 0.15);
|
||||
--led-green: #30e060;
|
||||
--led-red: #e03030;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Barlow', sans-serif;
|
||||
background-color: var(--concrete-dark);
|
||||
color: var(--steel-text);
|
||||
line-height: 1.6;
|
||||
overflow-x: hidden;
|
||||
background-image:
|
||||
repeating-linear-gradient(
|
||||
0deg,
|
||||
transparent,
|
||||
transparent 2px,
|
||||
rgba(255,255,255,0.008) 2px,
|
||||
rgba(255,255,255,0.008) 4px
|
||||
),
|
||||
repeating-linear-gradient(
|
||||
90deg,
|
||||
transparent,
|
||||
transparent 2px,
|
||||
rgba(255,255,255,0.005) 2px,
|
||||
rgba(255,255,255,0.005) 4px
|
||||
);
|
||||
}
|
||||
|
||||
body::before {
|
||||
content: '';
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
pointer-events: none;
|
||||
z-index: 0;
|
||||
background-image:
|
||||
radial-gradient(circle, var(--grid-dot) 1px, transparent 1px);
|
||||
background-size: 40px 40px;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
UTILITY
|
||||
============================================================ */
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 2rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
section {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
STENCIL SECTION LABELS
|
||||
============================================================ */
|
||||
.section-label {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 0.75rem;
|
||||
letter-spacing: 0.3em;
|
||||
text-transform: uppercase;
|
||||
color: var(--warning-yellow-dim);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.section-label::before {
|
||||
content: attr(data-num);
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.65rem;
|
||||
color: var(--concrete-surface);
|
||||
border: 1px dashed var(--concrete-surface);
|
||||
padding: 0.15rem 0.4rem;
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 2.5rem;
|
||||
color: var(--white);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
line-height: 1.1;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
HAZARD STRIPE
|
||||
============================================================ */
|
||||
.hazard-stripe {
|
||||
height: 6px;
|
||||
background: repeating-linear-gradient(
|
||||
-45deg,
|
||||
var(--warning-yellow),
|
||||
var(--warning-yellow) 8px,
|
||||
var(--concrete-dark) 8px,
|
||||
var(--concrete-dark) 16px
|
||||
);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.hazard-stripe-thin {
|
||||
height: 3px;
|
||||
background: repeating-linear-gradient(
|
||||
-45deg,
|
||||
var(--warning-yellow-dim),
|
||||
var(--warning-yellow-dim) 5px,
|
||||
var(--concrete-mid) 5px,
|
||||
var(--concrete-mid) 10px
|
||||
);
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
CORNER BRACKETS
|
||||
============================================================ */
|
||||
.corner-brackets {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.corner-brackets::before,
|
||||
.corner-brackets::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.corner-brackets::before {
|
||||
top: -1px;
|
||||
left: -1px;
|
||||
border-top: 2px solid var(--warning-yellow-dim);
|
||||
border-left: 2px solid var(--warning-yellow-dim);
|
||||
}
|
||||
|
||||
.corner-brackets::after {
|
||||
bottom: -1px;
|
||||
right: -1px;
|
||||
border-bottom: 2px solid var(--warning-yellow-dim);
|
||||
border-right: 2px solid var(--warning-yellow-dim);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
RIVET DECORATIONS
|
||||
============================================================ */
|
||||
.riveted {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.riveted .rivet {
|
||||
position: absolute;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background: radial-gradient(circle at 35% 35%, #555, #2a2a2a 60%, #1a1a1a);
|
||||
box-shadow: inset 0 1px 1px rgba(255,255,255,0.15), 0 1px 2px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.riveted .rivet-tl { top: 10px; left: 10px; }
|
||||
.riveted .rivet-tr { top: 10px; right: 10px; }
|
||||
.riveted .rivet-bl { bottom: 10px; left: 10px; }
|
||||
.riveted .rivet-br { bottom: 10px; right: 10px; }
|
||||
|
||||
/* ============================================================
|
||||
LED INDICATOR
|
||||
============================================================ */
|
||||
.led {
|
||||
display: inline-block;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
margin-right: 6px;
|
||||
vertical-align: middle;
|
||||
box-shadow: 0 0 4px currentColor;
|
||||
}
|
||||
|
||||
.led-green {
|
||||
background-color: var(--led-green);
|
||||
color: var(--led-green);
|
||||
}
|
||||
|
||||
.led-yellow {
|
||||
background-color: var(--warning-yellow);
|
||||
color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
SCROLL REVEAL
|
||||
============================================================ */
|
||||
.reveal {
|
||||
opacity: 0;
|
||||
transform: translateY(30px);
|
||||
transition: opacity 0.6s linear, transform 0.6s linear;
|
||||
}
|
||||
|
||||
.reveal.visible {
|
||||
opacity: 1;
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
NAVBAR
|
||||
============================================================ */
|
||||
.navbar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
background: rgba(26, 26, 26, 0.92);
|
||||
backdrop-filter: blur(10px);
|
||||
border-bottom: 1px solid rgba(240, 192, 48, 0.12);
|
||||
}
|
||||
|
||||
.navbar-inner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 2rem;
|
||||
height: 56px;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.navbar-brand-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border: 2px solid var(--warning-yellow);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 0.85rem;
|
||||
color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
.navbar-brand-text {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 1.1rem;
|
||||
color: var(--white);
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.navbar-links {
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.navbar-links a {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.75rem;
|
||||
color: var(--steel-text);
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.15em;
|
||||
padding: 0.25rem 0;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: color 0.2s linear, border-color 0.2s linear;
|
||||
}
|
||||
|
||||
.navbar-links a:hover,
|
||||
.navbar-links a.active {
|
||||
color: var(--warning-yellow);
|
||||
border-bottom-color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
.navbar-mobile-toggle {
|
||||
display: none;
|
||||
background: none;
|
||||
border: 1px solid var(--concrete-surface);
|
||||
color: var(--steel-text);
|
||||
padding: 0.4rem 0.6rem;
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.75rem;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
PAGE HEADER
|
||||
============================================================ */
|
||||
.page-header {
|
||||
padding-top: 56px;
|
||||
background: linear-gradient(135deg, var(--concrete-dark) 0%, var(--concrete-mid) 50%, var(--concrete-dark) 100%);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.page-header::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image:
|
||||
linear-gradient(var(--grid-line) 1px, transparent 1px),
|
||||
linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
|
||||
background-size: 80px 80px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.page-header-inner {
|
||||
padding: 3rem 0 2.5rem;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.page-header-tag {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.7rem;
|
||||
color: var(--concrete-surface);
|
||||
letter-spacing: 0.2em;
|
||||
margin-bottom: 1rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.page-header-title {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 3rem;
|
||||
color: var(--white);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.page-header-title span {
|
||||
color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
.page-header-sub {
|
||||
font-family: 'Barlow Condensed', sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 1.1rem;
|
||||
color: var(--steel-text);
|
||||
margin-top: 0.5rem;
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
LEGAL CONTENT
|
||||
============================================================ */
|
||||
.legal-section {
|
||||
padding: 5rem 0;
|
||||
background: var(--concrete-dark);
|
||||
}
|
||||
|
||||
.legal-panel {
|
||||
background: var(--concrete-mid);
|
||||
border: 1px solid rgba(240, 192, 48, 0.12);
|
||||
padding: 3rem;
|
||||
max-width: 860px;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.legal-block {
|
||||
margin-bottom: 2.5rem;
|
||||
}
|
||||
|
||||
.legal-block:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.legal-block-label {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.65rem;
|
||||
color: var(--concrete-surface);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.2em;
|
||||
margin-bottom: 0.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.legal-block-label::before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 1px;
|
||||
background: var(--concrete-surface);
|
||||
}
|
||||
|
||||
.legal-block h2 {
|
||||
font-family: 'Barlow Condensed', sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 1.3rem;
|
||||
color: var(--steel-bright);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.legal-block p {
|
||||
font-family: 'Barlow', sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 0.95rem;
|
||||
color: var(--steel-text);
|
||||
line-height: 1.7;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.legal-block p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.legal-block a {
|
||||
color: var(--warning-yellow-dim);
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: border-color 0.2s linear;
|
||||
}
|
||||
|
||||
.legal-block a:hover {
|
||||
border-bottom-color: var(--warning-yellow-dim);
|
||||
}
|
||||
|
||||
.legal-divider {
|
||||
height: 1px;
|
||||
background: linear-gradient(90deg,
|
||||
transparent 0%,
|
||||
rgba(240, 192, 48, 0.15) 20%,
|
||||
rgba(240, 192, 48, 0.15) 80%,
|
||||
transparent 100%
|
||||
);
|
||||
margin: 2.5rem 0;
|
||||
}
|
||||
|
||||
.legal-address {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.85rem;
|
||||
color: var(--steel-text);
|
||||
line-height: 2;
|
||||
padding: 1rem 1.25rem;
|
||||
background: rgba(26, 26, 26, 0.6);
|
||||
border: 1px dashed rgba(240, 192, 48, 0.1);
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.legal-address strong {
|
||||
color: var(--steel-bright);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.legal-note {
|
||||
margin-top: 1.5rem;
|
||||
padding: 1rem 1.25rem;
|
||||
border-left: 3px solid var(--safety-orange);
|
||||
background: rgba(224, 80, 32, 0.05);
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.75rem;
|
||||
color: var(--steel-text);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.legal-note strong {
|
||||
color: var(--safety-orange);
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
SECTION DIVIDER
|
||||
============================================================ */
|
||||
.section-divider {
|
||||
height: 1px;
|
||||
background: linear-gradient(90deg,
|
||||
transparent 0%,
|
||||
rgba(240, 192, 48, 0.2) 20%,
|
||||
rgba(240, 192, 48, 0.2) 80%,
|
||||
transparent 100%
|
||||
);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
FOOTER
|
||||
============================================================ */
|
||||
.footer {
|
||||
padding: 3rem 0 2rem;
|
||||
background: var(--concrete-dark);
|
||||
border-top: 1px solid rgba(240, 192, 48, 0.08);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.footer-inner {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.footer-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.footer-brand-icon {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border: 1.5px solid var(--warning-yellow-dim);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 0.7rem;
|
||||
color: var(--warning-yellow-dim);
|
||||
}
|
||||
|
||||
.footer-brand-text {
|
||||
font-family: 'Oswald', sans-serif;
|
||||
font-weight: 500;
|
||||
font-size: 0.85rem;
|
||||
color: var(--steel-text);
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.footer-meta {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.65rem;
|
||||
color: var(--concrete-surface);
|
||||
letter-spacing: 0.1em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
display: flex;
|
||||
gap: 1.5rem;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.footer-links a {
|
||||
font-family: 'Share Tech Mono', monospace;
|
||||
font-size: 0.7rem;
|
||||
color: var(--steel-text);
|
||||
text-decoration: none;
|
||||
letter-spacing: 0.1em;
|
||||
transition: color 0.2s linear;
|
||||
}
|
||||
|
||||
.footer-links a:hover,
|
||||
.footer-links a.active {
|
||||
color: var(--warning-yellow);
|
||||
}
|
||||
|
||||
/* ============================================================
|
||||
RESPONSIVE
|
||||
============================================================ */
|
||||
@media (max-width: 768px) {
|
||||
.navbar-links {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 56px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: rgba(26, 26, 26, 0.97);
|
||||
flex-direction: column;
|
||||
padding: 1rem 2rem;
|
||||
gap: 0.75rem;
|
||||
border-bottom: 1px solid rgba(240, 192, 48, 0.12);
|
||||
}
|
||||
|
||||
.navbar-links.open {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.navbar-mobile-toggle {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.page-header-title {
|
||||
font-size: 2.2rem;
|
||||
}
|
||||
|
||||
.legal-panel {
|
||||
padding: 2rem 1.5rem;
|
||||
}
|
||||
|
||||
.footer-inner {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.footer-meta {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.container {
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.page-header-title {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
|
||||
.legal-panel {
|
||||
padding: 1.5rem 1rem;
|
||||
}
|
||||
|
||||
.navbar-inner {
|
||||
padding: 0 1rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ============================================================
|
||||
NAVBAR
|
||||
============================================================ -->
|
||||
<nav class="navbar">
|
||||
<div class="navbar-inner">
|
||||
<a href="index.html" class="navbar-brand">
|
||||
<div class="navbar-brand-icon">D</div>
|
||||
<span class="navbar-brand-text">DocuMentor</span>
|
||||
</a>
|
||||
<button class="navbar-mobile-toggle" id="navToggle">MENU</button>
|
||||
<ul class="navbar-links" id="navLinks">
|
||||
<li><a href="index.html#features">Features</a></li>
|
||||
<li><a href="index.html#workflow">Workflow</a></li>
|
||||
<li><a href="index.html#techstack">Technik</a></li>
|
||||
<li><a href="index.html#download">Download</a></li>
|
||||
<li><a href="impressum.html" class="active">Impressum</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- ============================================================
|
||||
PAGE HEADER
|
||||
============================================================ -->
|
||||
<div class="page-header">
|
||||
<div class="hazard-stripe"></div>
|
||||
<div class="container">
|
||||
<div class="page-header-inner">
|
||||
<div class="page-header-tag">
|
||||
<span class="led led-green"></span>
|
||||
SYSTEM AKTIV — RECHTSHINWEISE
|
||||
</div>
|
||||
<h1 class="page-header-title">Im<span>pressum</span></h1>
|
||||
<p class="page-header-sub">Angaben gemäß § 5 DDG</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hazard-stripe-thin"></div>
|
||||
</div>
|
||||
|
||||
<!-- ============================================================
|
||||
LEGAL CONTENT
|
||||
============================================================ -->
|
||||
<section class="legal-section">
|
||||
<div class="container">
|
||||
<div class="section-label reveal" data-num="IMP-01">Anbieterkennzeichnung</div>
|
||||
<h2 class="section-title reveal" style="margin-bottom: 2rem;">Impressum</h2>
|
||||
|
||||
<div class="legal-panel corner-brackets riveted reveal">
|
||||
<span class="rivet rivet-tl"></span>
|
||||
<span class="rivet rivet-tr"></span>
|
||||
<span class="rivet rivet-bl"></span>
|
||||
<span class="rivet rivet-br"></span>
|
||||
|
||||
<!-- Verantwortlicher -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">§ 5 DDG — ANBIETER</div>
|
||||
<h2>Verantwortlicher</h2>
|
||||
<div class="legal-address">
|
||||
<strong>Vitali Graf</strong><br>
|
||||
Kulenkampffallee 65b<br>
|
||||
28213 Bremen<br>
|
||||
Deutschland
|
||||
</div>
|
||||
<!-- <div class="legal-note" style="margin-top: 1rem;">
|
||||
<strong>HINWEIS:</strong> Bitte Adresse vor Veröffentlichung ergänzen.
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- Kontakt -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">KONTAKT</div>
|
||||
<h2>Kontakt</h2>
|
||||
<p>
|
||||
E-Mail: <a href="mailto:info@vitaligraf.de">info@vitaligraf.de</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- Projekthinweis -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">PROJEKT</div>
|
||||
<h2>Hinweis zum Projekt</h2>
|
||||
<p>
|
||||
DocuMentor ist ein Open-Source-Softwareprojekt zur Verwaltung und Validierung von
|
||||
XSL-Transformationen. Die Software wird ohne Gewähr bereitgestellt.
|
||||
</p>
|
||||
<p>
|
||||
Der Quellcode steht unter einer Open-Source-Lizenz. Einzelheiten entnehmen Sie
|
||||
bitte der beiliegenden Lizenzdatei im Repository.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- Haftungsausschluss -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">HAFTUNG</div>
|
||||
<h2>Haftungsausschluss</h2>
|
||||
<p>
|
||||
Die Inhalte dieser Website wurden mit größtmöglicher Sorgfalt erstellt.
|
||||
Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte übernehme
|
||||
ich jedoch keine Gewähr. Als Diensteanbieter bin ich gemäß § 7 DDG
|
||||
für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen
|
||||
verantwortlich.
|
||||
</p>
|
||||
<p>
|
||||
Nach §§ 11 bis 13 DDG bin ich als Diensteanbieter nicht verpflichtet,
|
||||
übermittelte oder gespeicherte fremde Informationen zu überwachen oder
|
||||
nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="legal-divider"></div>
|
||||
|
||||
<!-- Urheberrecht -->
|
||||
<div class="legal-block">
|
||||
<div class="legal-block-label">URHEBERRECHT</div>
|
||||
<h2>Urheberrecht</h2>
|
||||
<p>
|
||||
Die durch den Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten
|
||||
unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung,
|
||||
Verbreitung und jede Art der Verwertung außerhalb der Grenzen des
|
||||
Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors
|
||||
bzw. Erstellers.
|
||||
</p>
|
||||
<p>
|
||||
Der Quellcode von DocuMentor ist unter den Bedingungen der zugehörigen
|
||||
Open-Source-Lizenz frei verwendbar. Detailangaben hierzu finden Sie im
|
||||
Repository.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="hazard-stripe-thin"></div>
|
||||
|
||||
<!-- ============================================================
|
||||
FOOTER
|
||||
============================================================ -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-inner">
|
||||
<div class="footer-brand">
|
||||
<div class="footer-brand-icon">D</div>
|
||||
<span class="footer-brand-text">DocuMentor</span>
|
||||
</div>
|
||||
<ul class="footer-links">
|
||||
<li><a href="index.html#features">Features</a></li>
|
||||
<li><a href="index.html#workflow">Workflow</a></li>
|
||||
<li><a href="index.html#techstack">Technik</a></li>
|
||||
<li><a href="index.html#download">Download</a></li>
|
||||
<li><a href="impressum.html" class="active">Impressum</a></li>
|
||||
<li><a href="datenschutz.html">Datenschutz</a></li>
|
||||
</ul>
|
||||
<div class="footer-meta">
|
||||
SYSTEM // DOCUMENTOR // BUILD 2026.02<br>
|
||||
PySide6 Desktop-Anwendung // Open Source
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
(function() {
|
||||
const toggle = document.getElementById('navToggle');
|
||||
const links = document.getElementById('navLinks');
|
||||
if (toggle && links) {
|
||||
toggle.addEventListener('click', function() {
|
||||
links.classList.toggle('open');
|
||||
toggle.textContent = links.classList.contains('open') ? 'CLOSE' : 'MENU';
|
||||
});
|
||||
}
|
||||
})();
|
||||
|
||||
(function() {
|
||||
const reveals = document.querySelectorAll('.reveal');
|
||||
const observer = new IntersectionObserver(function(entries) {
|
||||
entries.forEach(function(entry) {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.classList.add('visible');
|
||||
observer.unobserve(entry.target);
|
||||
}
|
||||
});
|
||||
}, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' });
|
||||
reveals.forEach(function(el) { observer.observe(el); });
|
||||
})();
|
||||
|
||||
(function() {
|
||||
const navbar = document.querySelector('.navbar');
|
||||
let ticking = false;
|
||||
window.addEventListener('scroll', function() {
|
||||
if (!ticking) {
|
||||
requestAnimationFrame(function() {
|
||||
navbar.style.borderBottomColor = window.scrollY > 80
|
||||
? 'rgba(240, 192, 48, 0.25)'
|
||||
: 'rgba(240, 192, 48, 0.12)';
|
||||
ticking = false;
|
||||
});
|
||||
ticking = true;
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
+17
-15
@@ -3,7 +3,7 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>DocuMentor — Industrielle XSL-Transformationskontrolle</title>
|
||||
<title>DocuMentor — XSL-Transformationen sicher im Griff</title>
|
||||
<link rel="stylesheet" href="fonts/fonts.css">
|
||||
<style>
|
||||
/* ============================================================
|
||||
@@ -1573,7 +1573,7 @@
|
||||
SYSTEM AKTIV — XSL TRANSFORMATIONS-KONTROLLE v2.0
|
||||
</div>
|
||||
<h1 class="hero-title">Docu<span>Mentor</span></h1>
|
||||
<p class="hero-tagline">Industrielle XSL-Transformationskontrolle</p>
|
||||
<p class="hero-tagline">XSL-Transformationen sicher im Griff</p>
|
||||
<p class="hero-desc">
|
||||
Desktop-Anwendung zur Verwaltung und Validierung von XSL-Transformationen.
|
||||
Erkennen Sie jede Auswirkung Ihrer XSL-Änderungen — bevor es zu spät ist.
|
||||
@@ -1824,24 +1824,24 @@
|
||||
<p class="section-subtitle reveal">Bewährte Industriekomponenten für maximale Zuverlässigkeit.</p>
|
||||
|
||||
<div class="tech-grid reveal from-bottom">
|
||||
<div class="tech-category">Kern</div>
|
||||
<!-- <div class="tech-category">Kern</div>
|
||||
<div class="tech-badge"><span class="led led-green"></span> Python 3</div>
|
||||
<div class="tech-badge"><span class="led led-green"></span> PySide6 / Qt</div>
|
||||
<div class="tech-badge"><span class="led led-green"></span> Pydantic</div>
|
||||
<div class="tech-badge"><span class="led led-green"></span> Pydantic</div> -->
|
||||
|
||||
<div class="tech-category">Transformation</div>
|
||||
<!-- <div class="tech-category">Transformation</div> -->
|
||||
<div class="tech-badge"><span class="led led-yellow"></span> Saxon XSLT</div>
|
||||
<div class="tech-badge"><span class="led led-yellow"></span> Apache FOP</div>
|
||||
<div class="tech-badge"><span class="led led-yellow"></span> diff-pdf</div>
|
||||
|
||||
<div class="tech-category">Daten</div>
|
||||
<!-- <div class="tech-category">Daten</div>
|
||||
<div class="tech-badge"><span class="led led-orange"></span> PostgreSQL</div>
|
||||
<div class="tech-badge"><span class="led led-orange"></span> Polars</div>
|
||||
<div class="tech-badge"><span class="led led-orange"></span> ConnectorX</div>
|
||||
|
||||
<div class="tech-category">Werkzeuge</div>
|
||||
<div class="tech-badge"><span class="led led-green"></span> blake2b</div>
|
||||
<div class="tech-badge"><span class="led led-green"></span> PyInstaller</div>
|
||||
<div class="tech-badge"><span class="led led-green"></span> PyInstaller</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -1873,8 +1873,8 @@
|
||||
<span class="download-card-badge">EMPFOHLEN</span>
|
||||
</div>
|
||||
<p class="download-card-desc">Windows-Installer mit automatischer Einrichtung. Erstellt Startmenü-Einträge und ermöglicht saubere Deinstallation über die Systemsteuerung.</p>
|
||||
<span class="download-card-meta">DocuMentor-2.0-win64.msi — ca. 85 MB</span>
|
||||
<a href="#" class="btn-download">▼ MSI herunterladen</a>
|
||||
<span class="download-card-meta">DocuMentor-1.6.3.msi — ca. 255 MB</span>
|
||||
<a href="https://code.vitaligraf.de/info/xsl-validator/releases/download/1.6.3/DocuMentor-1.6.3.msi" class="btn-download">▼ MSI herunterladen</a>
|
||||
</div>
|
||||
<div class="download-card corner-brackets">
|
||||
<div class="download-card-header">
|
||||
@@ -1882,15 +1882,15 @@
|
||||
<span class="download-card-badge">PORTABEL</span>
|
||||
</div>
|
||||
<p class="download-card-desc">Portable Version ohne Installation. Entpacken und direkt starten — ideal für eingeschränkte Umgebungen ohne Administratorrechte.</p>
|
||||
<span class="download-card-meta">DocuMentor-2.0-win64-portable.zip — ca. 80 MB</span>
|
||||
<a href="#" class="btn-download">▼ ZIP herunterladen</a>
|
||||
<span class="download-card-meta">DocuMentor-1.6.3.zip — ca. 315 MB</span>
|
||||
<a href="https://code.vitaligraf.de/info/xsl-validator/releases/download/1.6.3/DocuMentor-1.6.3.zip" class="btn-download">▼ ZIP herunterladen</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 2. Hinweis Windows -->
|
||||
<div class="requirements-note">
|
||||
<strong>HINWEIS:</strong> Die Windows-Pakete enthalten alle Abhängigkeiten inklusive Python-Runtime. Lediglich eine <strong>Java Runtime</strong> (für Saxon) muss separat installiert werden. Für die volle Performance der Pool-Worker wird ein <strong>Java JDK</strong> (statt nur JRE) empfohlen.
|
||||
<strong>HINWEIS:</strong> Die Windows-Pakete enthalten alle Abhängigkeiten inklusive Python-Runtime. Lediglich eine <strong>Java Runtime</strong> (für Saxon und Apache FOP) muss separat installiert werden. Für die volle Performance der Pool-Worker wird ein <strong>Java JDK</strong> (statt nur JRE) empfohlen.
|
||||
</div>
|
||||
|
||||
<!-- 3. Quellcode -->
|
||||
@@ -1901,7 +1901,7 @@
|
||||
<div class="install-step-num">01</div>
|
||||
<div class="install-step-content">
|
||||
<div class="install-step-label">Repository klonen</div>
|
||||
<div class="code-block"><span class="prompt">$ </span>git clone https://github.com/your-org/xsl-validator.git</div>
|
||||
<div class="code-block"><span class="prompt">$ </span>git clone https://code.vitaligraf.de/info/xsl-validator.git</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="install-step">
|
||||
@@ -1922,7 +1922,7 @@
|
||||
|
||||
<!-- 4. Hinweis Quellcode -->
|
||||
<div class="requirements-note">
|
||||
<strong>HINWEIS:</strong> Erfordert Python 3.13+, Java Runtime (für Saxon) und den Paketmanager <strong>uv</strong>. Für die volle Performance der Pool-Worker wird ein <strong>Java JDK</strong> (statt nur JRE) empfohlen.
|
||||
<strong>HINWEIS:</strong> Erfordert Python 3.13+, Java Runtime (für Saxon und Apache FOP) und den Paketmanager <strong>uv</strong>. Für die volle Performance der Pool-Worker wird ein <strong>Java JDK</strong> (statt nur JRE) empfohlen.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1945,9 +1945,11 @@
|
||||
<li><a href="#workflow">Workflow</a></li>
|
||||
<li><a href="#techstack">Technik</a></li>
|
||||
<li><a href="#download">Download</a></li>
|
||||
<li><a href="impressum.html">Impressum</a></li>
|
||||
<li><a href="datenschutz.html">Datenschutz</a></li>
|
||||
</ul>
|
||||
<div class="footer-meta">
|
||||
SYSTEM // DOCUMENTOR // BUILD 2026.02<br>
|
||||
SYSTEM // DOCUMENTOR // BUILD 1.6.3<br>
|
||||
PySide6 Desktop-Anwendung // Open Source
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user