diff --git a/src/main/java/de/oaa/libredeck/web/controller/PlaylistController.java b/src/main/java/de/oaa/libredeck/web/controller/PlaylistController.java index 4de3c54..c60cd9d 100644 --- a/src/main/java/de/oaa/libredeck/web/controller/PlaylistController.java +++ b/src/main/java/de/oaa/libredeck/web/controller/PlaylistController.java @@ -12,4 +12,14 @@ public class PlaylistController { public String index() { return "index"; } + + @GetMapping("/impressum") + public String impressum() { + return "impressum"; + } + + @GetMapping("/datenschutz") + public String datenschutz() { + return "datenschutz"; + } } diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index f6f1eeb..5946a61 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -1203,3 +1203,139 @@ body { padding-top: 4rem; } width: 100%; max-width: 260px; } + +/* ── Footer links ── */ +.footer-links { + display: flex; + gap: .6rem; + align-items: center; + font-size: .82rem; + color: var(--text-muted); + margin-top: .4rem; +} +.footer-links a { + color: var(--text-muted); + transition: color .15s; +} +.footer-links a:hover { color: var(--teal); } + +/* ── Cookie Banner ── */ +.cookie-banner { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 800; + background: var(--surface-2); + border-top: 1px solid var(--border); + padding: 1rem 1.5rem; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1.25rem; + flex-wrap: wrap; + box-shadow: 0 -4px 24px rgba(0,0,0,.4); +} +.cookie-text { + font-size: .88rem; + color: var(--text-muted); + flex: 1; + min-width: 200px; +} +.cookie-text a { + color: var(--teal); + text-decoration: underline; + text-underline-offset: 2px; +} +.cookie-btn { white-space: nowrap; flex-shrink: 0; } + +/* ── Legal pages ── */ +.legal-header { + padding: 1rem 0; + background: var(--bg-2); + border-bottom: 1px solid var(--border); +} +.legal-header .section-inner { + display: flex; + align-items: center; + gap: 1.25rem; +} +.legal-back { + display: inline-flex; + align-items: center; + gap: .35rem; + color: var(--text-muted); + font-size: .9rem; + transition: color .15s; +} +.legal-back:hover { color: var(--teal); } +.legal-logo { + height: 32px; + width: auto; + margin-left: auto; + opacity: .75; +} +.legal-main { + padding: 4rem 0 6rem; + min-height: calc(100vh - 200px); +} +.legal-inner h1 { + font-size: clamp(1.8rem, 4vw, 2.6rem); + font-weight: 900; + letter-spacing: -.5px; + margin-bottom: 2.5rem; + background: var(--grad); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} +.legal-section { + margin-bottom: 2.25rem; + padding-bottom: 2.25rem; + border-bottom: 1px solid var(--border); +} +.legal-section:last-child { + border-bottom: none; + padding-bottom: 0; +} +.legal-section h2 { + font-size: 1.05rem; + font-weight: 700; + color: var(--teal); + margin-bottom: .75rem; + text-transform: uppercase; + letter-spacing: .05em; + font-size: .82rem; +} +.legal-section p { + color: var(--text-muted); + line-height: 1.8; + margin-bottom: .75rem; +} +.legal-section p:last-child { margin-bottom: 0; } +.legal-section ul { + list-style: none; + margin: .5rem 0 .75rem; + display: flex; + flex-direction: column; + gap: .5rem; +} +.legal-section ul li { + color: var(--text-muted); + padding-left: 1.1rem; + position: relative; + line-height: 1.7; +} +.legal-section ul li::before { + content: '–'; + position: absolute; + left: 0; + color: var(--teal); +} +.legal-section a { + color: var(--teal); + text-decoration: underline; + text-underline-offset: 2px; + transition: color .15s; +} +.legal-section a:hover { color: var(--teal-h); } diff --git a/src/main/resources/static/downloads/libredeck.apk b/src/main/resources/static/downloads/libredeck.apk index 92bbb24..cbeb211 100644 Binary files a/src/main/resources/static/downloads/libredeck.apk and b/src/main/resources/static/downloads/libredeck.apk differ diff --git a/src/main/resources/templates/datenschutz.html b/src/main/resources/templates/datenschutz.html new file mode 100644 index 0000000..f09ad3b --- /dev/null +++ b/src/main/resources/templates/datenschutz.html @@ -0,0 +1,142 @@ + + + + + + Datenschutzerklärung – LibreDeck + + + + + + + +
+ +
+ + + + + diff --git a/src/main/resources/templates/impressum.html b/src/main/resources/templates/impressum.html new file mode 100644 index 0000000..e59ad85 --- /dev/null +++ b/src/main/resources/templates/impressum.html @@ -0,0 +1,94 @@ + + + + + + Impressum – LibreDeck + + + + + + + +
+ +
+ + + + + diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index f18713a..ddd222b 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -216,6 +216,28 @@ + + +
@@ -458,36 +480,40 @@
- -
-
- -
-

Android-App

-

Scanne deine Karten direkt mit der App – öffnet den richtigen Streaming-Dienst per Tap.

- - - APK herunterladen - -

Android · Sideload · Einstellungen → Apps → Unbekannte Quellen erlauben

-
-
-
- + + + +