diff --git a/src/main/resources/static/css/accessibility-placement.css b/src/main/resources/static/css/accessibility-placement.css
index 2e3760e..7a35b3b 100644
--- a/src/main/resources/static/css/accessibility-placement.css
+++ b/src/main/resources/static/css/accessibility-placement.css
@@ -1,4 +1,4 @@
-body{padding-left:0!important;padding-bottom:0!important}
+/* (Legacy-Dock-Padding-Reset entfallen – es gibt kein body-padding-Dock mehr.) */
.mf-a11y-trigger{position:static!important;width:42px;height:42px;z-index:auto;flex:0 0 42px;box-shadow:0 0 14px var(--glow-w);border-radius:10px}
.mf-a11y-trigger svg{width:20px;height:20px}
.mf-a11y-panel{inset:76px 16px auto auto!important;width:min(450px,calc(100vw - 32px));max-height:calc(100dvh - 92px)}
@@ -17,5 +17,5 @@ body[class*="mf-a11y-skin-"] .mf-a11y-trigger{border-color:color-mix(in srgb,var
body[class*="mf-a11y-skin-"] .mf-a11y-panel{border-color:color-mix(in srgb,var(--mf-a11y-accent) 56%,var(--border));box-shadow:0 12px 45px rgba(0,0,0,.55),0 0 22px var(--mf-a11y-glow)}
body[class*="mf-a11y-skin-"] .mf-a11y-head{background:color-mix(in srgb,var(--mf-a11y-accent) 28%,#07121f)}
body[class*="mf-a11y-skin-"] .mf-a11y-close{background:var(--mf-a11y-accent);color:var(--mf-a11y-ink)}
-body[class*="mf-a11y-skin-"] .mf-a11y-option[aria-pressed="true"]{border-color:var(--mf-a11y-accent);background:color-mix(in srgb,var(--mf-a11y-accent) 18%,var(--surface));box-shadow:inset 0 0 0 2px var(--mf-a11y-accent)}
+body[class*="mf-a11y-skin-"] .mf-a11y-option[aria-pressed="true"],body[class*="mf-a11y-skin-"] .mf-a11y-option.is-active{border-color:var(--mf-a11y-accent);background:color-mix(in srgb,var(--mf-a11y-accent) 18%,var(--surface));box-shadow:inset 0 0 0 2px var(--mf-a11y-accent)}
@media(max-width:700px){.mf-a11y-panel{inset:70px 6px auto 6px!important;width:auto;max-height:calc(100dvh - 82px)}}
diff --git a/src/main/resources/static/css/accessibility.css b/src/main/resources/static/css/accessibility.css
index a974006..3cb943c 100644
--- a/src/main/resources/static/css/accessibility.css
+++ b/src/main/resources/static/css/accessibility.css
@@ -3,6 +3,8 @@ html[data-mf-readable="true"] body,html[data-mf-readable="true"] button,html[dat
/* Die Tokens liegen je nach Spiel auf body bzw. der jeweiligen Spielwurzel.
Deshalb müssen die Overrides auf der ganzen Oberfläche gelten – ein Override
nur auf html wurde von den lokalen Themes bislang wieder überschrieben. */
+/* Hochkontrast ist BEWUSST immer dunkel (maximaler, deterministischer Kontrast) –
+ auch im Light Mode. Im Button-Untertitel als "immer dunkel" gekennzeichnet. */
html[data-mf-contrast="true"] body,html[data-mf-contrast="true"] body *{--bg:#000!important;--panel:#050505!important;--panel-2:#080808!important;--surface:#0b0b0b!important;--surface-2:#151515!important;--text:#fff!important;--heading:#fff!important;--muted:#f1f1f1!important;--border:#fff!important;--line:#fff!important;--border-accent:#6fffb5!important;--accent:#6fffb5!important;--accent-2:#fff!important;--secondary:#83dbff!important;--secondary-2:#fff!important;--success:#83dbff!important;--danger:#ff9caf!important;--esc-accent:#6fffb5!important;--bh-accent:#6fffb5!important;--sc-accent:#83dbff!important;--nw-accent:#83dbff!important;--mm-accent:#6fffb5!important;--mm-secondary:#83dbff!important;--tt-accent:#6fffb5!important;--tt-secondary:#83dbff!important;--dl-accent:#6fffb5!important;--dl-secondary:#83dbff!important;--ss-accent:#6fffb5!important;--ss-secondary:#83dbff!important;--ff-accent:#6fffb5!important;--ff-secondary:#83dbff!important;--glow-s:transparent!important;--glow-w:transparent!important;--esc-glow:transparent!important;--bh-glow:transparent!important;--sc-glow:transparent!important;--nw-glow:transparent!important;--mm-glow:transparent!important;--tt-glow:transparent!important;--dl-glow:transparent!important;--ss-glow:transparent!important;--ff-glow:transparent!important}
html[data-mf-contrast="true"] body{background:#000!important;color:#fff!important;color-scheme:dark}
html[data-mf-contrast="true"] body *,html[data-mf-contrast="true"] body *::before,html[data-mf-contrast="true"] body *::after{text-shadow:none!important;box-shadow:none!important}
@@ -22,6 +24,7 @@ html[data-mf-color="safe"].sn-platform body .mf-card-finalprotocol{--accent:#999
html[data-mf-mono="true"] body{filter:grayscale(1)}html[data-mf-links="true"] a{text-decoration:underline!important;text-underline-offset:.18em;text-decoration-thickness:.12em}
html[data-mf-motion="false"] *,html[data-mf-motion="false"] *::before,html[data-mf-motion="false"] *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}
html[data-mf-cursor="true"],html[data-mf-cursor="true"] *{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cpath d='M2 1v25l7-7 5 11 5-2-5-10h10z' fill='white' stroke='black' stroke-width='2'/%3E%3C/svg%3E") 2 1,auto!important}
-body{padding-left:72px}.mf-a11y-dock{position:fixed;inset:0 auto 0 0;z-index:1799;width:72px;display:flex;align-items:flex-end;justify-content:center;padding:0 0 18px;background:color-mix(in srgb,var(--panel) 94%,transparent);border-right:1px solid var(--border);box-shadow:5px 0 18px rgba(0,0,0,.16)}
+/* Legacy-Dock entfernt: der A11y-Trigger sitzt jetzt als 42px-Icon-Button im Header
+ (Platzierung in accessibility-placement.css). Kein body-padding / Fixed-Dock mehr. */
.mf-a11y-trigger{width:42px;height:42px;border:1px solid var(--border);border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface);color:var(--muted);cursor:pointer;transition:all .18s}.mf-a11y-trigger:hover{color:var(--accent);border-color:var(--border-accent);box-shadow:0 0 14px var(--glow-w)}.mf-a11y-trigger svg{width:20px;height:20px}.mf-a11y-trigger:focus-visible,.mf-a11y-panel button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
-.mf-a11y-panel{position:fixed;left:82px;bottom:18px;z-index:1801;width:min(450px,calc(100vw - 100px));max-height:calc(100dvh - 36px);overflow:auto;border:1px solid var(--border);border-radius:10px;background:var(--panel);color:var(--text);box-shadow:0 12px 45px rgba(0,0,0,.55)}.mf-a11y-panel[hidden]{display:none}.mf-a11y-head{position:sticky;top:0;display:flex;align-items:center;gap:1rem;padding:.65rem;background:#07121f;color:#fff;z-index:1}.mf-a11y-head h2{font:800 1.05rem Arial,sans-serif;margin:0 auto}.mf-a11y-close{width:44px;height:44px;border:0;border-radius:6px;background:#fff;color:#07121f;font-size:1.8rem;cursor:pointer}.mf-a11y-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:10px;background:var(--surface)}.mf-a11y-option{min-height:88px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);color:var(--text);padding:.65rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;font:inherit;cursor:pointer}.mf-a11y-option strong{font-size:1.35rem}.mf-a11y-option[aria-pressed="true"]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--surface));box-shadow:inset 0 0 0 2px var(--accent)}.mf-a11y-option small{color:var(--muted)}@media(max-width:700px){body{padding-left:0;padding-bottom:68px}.mf-a11y-dock{inset:auto 0 0 0;width:auto;height:68px;padding:0 10px;justify-content:flex-start;align-items:center;border-right:0;border-top:1px solid var(--border);box-shadow:0 -5px 18px rgba(0,0,0,.18)}.mf-a11y-trigger{width:52px;height:52px}.mf-a11y-panel{left:6px;bottom:74px;width:calc(100vw - 12px);max-height:calc(100dvh - 86px)}.mf-a11y-grid{grid-template-columns:1fr 1fr}.mf-a11y-option{min-height:78px;font-size:.82rem}}
+.mf-a11y-panel{position:fixed;left:82px;bottom:18px;z-index:1801;width:min(450px,calc(100vw - 100px));max-height:calc(100dvh - 36px);overflow:auto;border:1px solid var(--border);border-radius:10px;background:var(--panel);color:var(--text);box-shadow:0 12px 45px rgba(0,0,0,.55)}.mf-a11y-panel[hidden]{display:none}.mf-a11y-head{position:sticky;top:0;display:flex;align-items:center;gap:1rem;padding:.65rem;background:#07121f;color:#fff;z-index:1}.mf-a11y-head h2{font:800 1.05rem Arial,sans-serif;margin:0 auto}.mf-a11y-close{width:44px;height:44px;border:0;border-radius:6px;background:#fff;color:#07121f;font-size:1.8rem;cursor:pointer}.mf-a11y-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:10px;background:var(--surface)}.mf-a11y-option{min-height:88px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);color:var(--text);padding:.65rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;font:inherit;cursor:pointer}.mf-a11y-option strong{font-size:1.35rem}.mf-a11y-option[aria-pressed="true"],.mf-a11y-option.is-active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--surface));box-shadow:inset 0 0 0 2px var(--accent)}.mf-a11y-option small{color:var(--muted)}@media(max-width:700px){.mf-a11y-panel{left:6px;bottom:74px;width:calc(100vw - 12px);max-height:calc(100dvh - 86px)}.mf-a11y-grid{grid-template-columns:1fr 1fr}.mf-a11y-option{min-height:78px;font-size:.82rem}}
diff --git a/src/main/resources/static/finalflux/ap1/datenschutz.html b/src/main/resources/static/finalflux/ap1/datenschutz.html
index 8918893..a61fed7 100644
--- a/src/main/resources/static/finalflux/ap1/datenschutz.html
+++ b/src/main/resources/static/finalflux/ap1/datenschutz.html
@@ -5,9 +5,9 @@
Datenschutz - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap1/ip-berechnung.html b/src/main/resources/static/finalflux/ap1/ip-berechnung.html
index fbe30fd..25225a2 100644
--- a/src/main/resources/static/finalflux/ap1/ip-berechnung.html
+++ b/src/main/resources/static/finalflux/ap1/ip-berechnung.html
@@ -5,9 +5,9 @@
IP-Adressberechnung - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap1/projektmanagement.html b/src/main/resources/static/finalflux/ap1/projektmanagement.html
index 6079bdc..b0a5656 100644
--- a/src/main/resources/static/finalflux/ap1/projektmanagement.html
+++ b/src/main/resources/static/finalflux/ap1/projektmanagement.html
@@ -5,9 +5,9 @@
Projektmanagement - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap1/zahlensysteme.html b/src/main/resources/static/finalflux/ap1/zahlensysteme.html
index e2c621e..e5e5a6b 100644
--- a/src/main/resources/static/finalflux/ap1/zahlensysteme.html
+++ b/src/main/resources/static/finalflux/ap1/zahlensysteme.html
@@ -5,9 +5,9 @@
Zahlensysteme & Speicher - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fiae/algorithmen.html b/src/main/resources/static/finalflux/ap2-fiae/algorithmen.html
index 297c5b1..88640b6 100644
--- a/src/main/resources/static/finalflux/ap2-fiae/algorithmen.html
+++ b/src/main/resources/static/finalflux/ap2-fiae/algorithmen.html
@@ -5,9 +5,9 @@
Algorithmen - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fiae/entwurfsmuster.html b/src/main/resources/static/finalflux/ap2-fiae/entwurfsmuster.html
index 2c07344..624c5a0 100644
--- a/src/main/resources/static/finalflux/ap2-fiae/entwurfsmuster.html
+++ b/src/main/resources/static/finalflux/ap2-fiae/entwurfsmuster.html
@@ -5,9 +5,9 @@
Entwurfsmuster - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fiae/oop.html b/src/main/resources/static/finalflux/ap2-fiae/oop.html
index dbd63a5..f09c8f8 100644
--- a/src/main/resources/static/finalflux/ap2-fiae/oop.html
+++ b/src/main/resources/static/finalflux/ap2-fiae/oop.html
@@ -5,9 +5,9 @@
OOP - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fiae/sql.html b/src/main/resources/static/finalflux/ap2-fiae/sql.html
index 3348067..eb63a2f 100644
--- a/src/main/resources/static/finalflux/ap2-fiae/sql.html
+++ b/src/main/resources/static/finalflux/ap2-fiae/sql.html
@@ -5,9 +5,9 @@
SQL - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fiae/testverfahren.html b/src/main/resources/static/finalflux/ap2-fiae/testverfahren.html
index cb4d46a..af24109 100644
--- a/src/main/resources/static/finalflux/ap2-fiae/testverfahren.html
+++ b/src/main/resources/static/finalflux/ap2-fiae/testverfahren.html
@@ -5,9 +5,9 @@
Testverfahren - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fiae/uml.html b/src/main/resources/static/finalflux/ap2-fiae/uml.html
index b38ec0e..32a2df2 100644
--- a/src/main/resources/static/finalflux/ap2-fiae/uml.html
+++ b/src/main/resources/static/finalflux/ap2-fiae/uml.html
@@ -5,9 +5,9 @@
UML - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fisi/hochverfuegbarkeit.html b/src/main/resources/static/finalflux/ap2-fisi/hochverfuegbarkeit.html
index bca37bf..b1adf5e 100644
--- a/src/main/resources/static/finalflux/ap2-fisi/hochverfuegbarkeit.html
+++ b/src/main/resources/static/finalflux/ap2-fisi/hochverfuegbarkeit.html
@@ -5,9 +5,9 @@
Hochverfügbarkeit - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fisi/it-sicherheit.html b/src/main/resources/static/finalflux/ap2-fisi/it-sicherheit.html
index 932056c..7a77280 100644
--- a/src/main/resources/static/finalflux/ap2-fisi/it-sicherheit.html
+++ b/src/main/resources/static/finalflux/ap2-fisi/it-sicherheit.html
@@ -5,9 +5,9 @@
IT-Sicherheit - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fisi/monitoring-backup.html b/src/main/resources/static/finalflux/ap2-fisi/monitoring-backup.html
index f464ebc..79b77d6 100644
--- a/src/main/resources/static/finalflux/ap2-fisi/monitoring-backup.html
+++ b/src/main/resources/static/finalflux/ap2-fisi/monitoring-backup.html
@@ -5,9 +5,9 @@
Monitoring & Backup - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fisi/netzwerkplanung.html b/src/main/resources/static/finalflux/ap2-fisi/netzwerkplanung.html
index c4a6e6c..d0d52e2 100644
--- a/src/main/resources/static/finalflux/ap2-fisi/netzwerkplanung.html
+++ b/src/main/resources/static/finalflux/ap2-fisi/netzwerkplanung.html
@@ -5,9 +5,9 @@
Netzwerkplanung - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fisi/skripting.html b/src/main/resources/static/finalflux/ap2-fisi/skripting.html
index 2e0bffc..a4b5d25 100644
--- a/src/main/resources/static/finalflux/ap2-fisi/skripting.html
+++ b/src/main/resources/static/finalflux/ap2-fisi/skripting.html
@@ -5,9 +5,9 @@
Skripting - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/ap2-fisi/virtualisierung.html b/src/main/resources/static/finalflux/ap2-fisi/virtualisierung.html
index b22bd08..6da77d3 100644
--- a/src/main/resources/static/finalflux/ap2-fisi/virtualisierung.html
+++ b/src/main/resources/static/finalflux/ap2-fisi/virtualisierung.html
@@ -5,9 +5,9 @@
Virtualisierung - FinalProtocol AP2
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/backuparten.html b/src/main/resources/static/finalflux/systemintegration/backuparten.html
index c31eb19..d29ee2b 100644
--- a/src/main/resources/static/finalflux/systemintegration/backuparten.html
+++ b/src/main/resources/static/finalflux/systemintegration/backuparten.html
@@ -5,9 +5,9 @@
Backuparten - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/datenbank.html b/src/main/resources/static/finalflux/systemintegration/datenbank.html
index 509934c..f657fdc 100644
--- a/src/main/resources/static/finalflux/systemintegration/datenbank.html
+++ b/src/main/resources/static/finalflux/systemintegration/datenbank.html
@@ -5,9 +5,9 @@
Datenbanksysteme - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/dsl.html b/src/main/resources/static/finalflux/systemintegration/dsl.html
index 5718409..26a39d0 100644
--- a/src/main/resources/static/finalflux/systemintegration/dsl.html
+++ b/src/main/resources/static/finalflux/systemintegration/dsl.html
@@ -5,9 +5,9 @@
DSL und Internetanschluss - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/osi.html b/src/main/resources/static/finalflux/systemintegration/osi.html
index 85d36e0..e1aed51 100644
--- a/src/main/resources/static/finalflux/systemintegration/osi.html
+++ b/src/main/resources/static/finalflux/systemintegration/osi.html
@@ -5,9 +5,9 @@
OSI-Modell - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/storage.html b/src/main/resources/static/finalflux/systemintegration/storage.html
index 49ae599..46c6d2a 100644
--- a/src/main/resources/static/finalflux/systemintegration/storage.html
+++ b/src/main/resources/static/finalflux/systemintegration/storage.html
@@ -5,9 +5,9 @@
Storage Systeme - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/thin-client.html b/src/main/resources/static/finalflux/systemintegration/thin-client.html
index c18c244..c26bdfb 100644
--- a/src/main/resources/static/finalflux/systemintegration/thin-client.html
+++ b/src/main/resources/static/finalflux/systemintegration/thin-client.html
@@ -5,9 +5,9 @@
Thin Clients - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/topologien.html b/src/main/resources/static/finalflux/systemintegration/topologien.html
index 3f2efa3..86231c2 100644
--- a/src/main/resources/static/finalflux/systemintegration/topologien.html
+++ b/src/main/resources/static/finalflux/systemintegration/topologien.html
@@ -5,9 +5,9 @@
Netzwerktopologien - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/usv.html b/src/main/resources/static/finalflux/systemintegration/usv.html
index d7c1b56..53fc7cb 100644
--- a/src/main/resources/static/finalflux/systemintegration/usv.html
+++ b/src/main/resources/static/finalflux/systemintegration/usv.html
@@ -5,9 +5,9 @@
USV - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/vdi-daas.html b/src/main/resources/static/finalflux/systemintegration/vdi-daas.html
index 351293b..d740674 100644
--- a/src/main/resources/static/finalflux/systemintegration/vdi-daas.html
+++ b/src/main/resources/static/finalflux/systemintegration/vdi-daas.html
@@ -5,9 +5,9 @@
VDI & DaaS - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/systemintegration/vlan.html b/src/main/resources/static/finalflux/systemintegration/vlan.html
index f83fdd1..b8e28df 100644
--- a/src/main/resources/static/finalflux/systemintegration/vlan.html
+++ b/src/main/resources/static/finalflux/systemintegration/vlan.html
@@ -5,9 +5,9 @@
VLAN - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/amortisation.html b/src/main/resources/static/finalflux/wirtschaft/amortisation.html
index fa8f1d8..5c2c124 100644
--- a/src/main/resources/static/finalflux/wirtschaft/amortisation.html
+++ b/src/main/resources/static/finalflux/wirtschaft/amortisation.html
@@ -5,9 +5,9 @@
Amortisation - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/angebotsvergleich.html b/src/main/resources/static/finalflux/wirtschaft/angebotsvergleich.html
index de6c0ae..30ab09b 100644
--- a/src/main/resources/static/finalflux/wirtschaft/angebotsvergleich.html
+++ b/src/main/resources/static/finalflux/wirtschaft/angebotsvergleich.html
@@ -5,9 +5,9 @@
Angebotsvergleich - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/bezugskalkulation.html b/src/main/resources/static/finalflux/wirtschaft/bezugskalkulation.html
index b7cc710..4f16e4e 100644
--- a/src/main/resources/static/finalflux/wirtschaft/bezugskalkulation.html
+++ b/src/main/resources/static/finalflux/wirtschaft/bezugskalkulation.html
@@ -5,9 +5,9 @@
Bezugskalkulation - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/harvard_konzept.html b/src/main/resources/static/finalflux/wirtschaft/harvard_konzept.html
index 0114406..bd13caa 100644
--- a/src/main/resources/static/finalflux/wirtschaft/harvard_konzept.html
+++ b/src/main/resources/static/finalflux/wirtschaft/harvard_konzept.html
@@ -5,9 +5,9 @@
Harvard-Konzept - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/kosten_nutzen.html b/src/main/resources/static/finalflux/wirtschaft/kosten_nutzen.html
index a7f6c4d..a321797 100644
--- a/src/main/resources/static/finalflux/wirtschaft/kosten_nutzen.html
+++ b/src/main/resources/static/finalflux/wirtschaft/kosten_nutzen.html
@@ -5,9 +5,9 @@
Kosten-Nutzen-Vergleich - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/make_or_buy.html b/src/main/resources/static/finalflux/wirtschaft/make_or_buy.html
index c158abc..321ec2d 100644
--- a/src/main/resources/static/finalflux/wirtschaft/make_or_buy.html
+++ b/src/main/resources/static/finalflux/wirtschaft/make_or_buy.html
@@ -5,9 +5,9 @@
Make or Buy - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/marktformen.html b/src/main/resources/static/finalflux/wirtschaft/marktformen.html
index 9fcb16c..73ab465 100644
--- a/src/main/resources/static/finalflux/wirtschaft/marktformen.html
+++ b/src/main/resources/static/finalflux/wirtschaft/marktformen.html
@@ -5,9 +5,9 @@
Marktformen - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/nutzwertanalyse.html b/src/main/resources/static/finalflux/wirtschaft/nutzwertanalyse.html
index 3a1f68a..3cefb69 100644
--- a/src/main/resources/static/finalflux/wirtschaft/nutzwertanalyse.html
+++ b/src/main/resources/static/finalflux/wirtschaft/nutzwertanalyse.html
@@ -5,9 +5,9 @@
Nutzwertanalyse - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/ratendarlehen.html b/src/main/resources/static/finalflux/wirtschaft/ratendarlehen.html
index df3b436..c21bbaf 100644
--- a/src/main/resources/static/finalflux/wirtschaft/ratendarlehen.html
+++ b/src/main/resources/static/finalflux/wirtschaft/ratendarlehen.html
@@ -5,9 +5,9 @@
Ratendarlehen - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/rentabilitätsrechnung.html b/src/main/resources/static/finalflux/wirtschaft/rentabilitätsrechnung.html
index 75bb33c..1cf98fa 100644
--- a/src/main/resources/static/finalflux/wirtschaft/rentabilitätsrechnung.html
+++ b/src/main/resources/static/finalflux/wirtschaft/rentabilitätsrechnung.html
@@ -5,9 +5,9 @@
Rentabilitätsrechnung - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/roi.html b/src/main/resources/static/finalflux/wirtschaft/roi.html
index 7b72e44..5a5ea0e 100644
--- a/src/main/resources/static/finalflux/wirtschaft/roi.html
+++ b/src/main/resources/static/finalflux/wirtschaft/roi.html
@@ -5,9 +5,9 @@
Return on Investment - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/vertragsarten.html b/src/main/resources/static/finalflux/wirtschaft/vertragsarten.html
index 9f20f7f..c9a8ad4 100644
--- a/src/main/resources/static/finalflux/wirtschaft/vertragsarten.html
+++ b/src/main/resources/static/finalflux/wirtschaft/vertragsarten.html
@@ -5,9 +5,9 @@
Vertragsarten - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/win_win_strategie.html b/src/main/resources/static/finalflux/wirtschaft/win_win_strategie.html
index d89bf47..e137c9e 100644
--- a/src/main/resources/static/finalflux/wirtschaft/win_win_strategie.html
+++ b/src/main/resources/static/finalflux/wirtschaft/win_win_strategie.html
@@ -5,9 +5,9 @@
Win-Win-Strategie - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/finalflux/wirtschaft/wirtschaftssektoren.html b/src/main/resources/static/finalflux/wirtschaft/wirtschaftssektoren.html
index 570c1d3..7314e9f 100644
--- a/src/main/resources/static/finalflux/wirtschaft/wirtschaftssektoren.html
+++ b/src/main/resources/static/finalflux/wirtschaft/wirtschaftssektoren.html
@@ -5,9 +5,9 @@
Wirtschaftssektoren - FinalProtocol AP1
-
+
-
+
diff --git a/src/main/resources/static/js/accessibility.js b/src/main/resources/static/js/accessibility.js
index f4cd5c6..3e52b77 100644
--- a/src/main/resources/static/js/accessibility.js
+++ b/src/main/resources/static/js/accessibility.js
@@ -5,8 +5,17 @@ apply();
function applySkin(){var root=document.querySelector('[data-a11y-skin]'),skin=root&&root.getAttribute('data-a11y-skin');if(!skin&&document.querySelector('.mm-body'))skin='mindmatch';if(!skin&&document.querySelector('.tt-body'))skin='techtacular';if(!skin&&document.querySelector('.dl-body,.dlg-body'))skin='devlab';if(!skin&&document.querySelector('.ss-body'))skin='syntaxsaga';if(!skin&&document.querySelector('.finalflux-shell,.finalflux-page'))skin='finalflux';if(!skin&&document.querySelector('.esc-app'))skin='codeescape';if(!skin&&document.querySelector('.bh-app'))skin='bughunter';if(!skin&&document.querySelector('.sc-app'))skin='serviceclash';if(!skin&&document.querySelector('.nw-app'))skin='networker';if(skin)document.body.classList.add('mf-a11y-skin-'+skin);}
function button(id,icon,label,detail){return '';}
function init(){if(document.querySelector('.mf-a11y-trigger'))return;var trigger=document.createElement('button');trigger.type='button';trigger.className='mf-a11y-trigger';trigger.setAttribute('aria-label','Barrierefreiheit öffnen');trigger.setAttribute('aria-expanded','false');trigger.setAttribute('aria-controls','mf-a11y-panel');trigger.innerHTML='';
-var panel=document.createElement('section');panel.id='mf-a11y-panel';panel.className='mf-a11y-panel';panel.hidden=true;panel.setAttribute('role','dialog');panel.setAttribute('aria-modal','false');panel.setAttribute('aria-labelledby','mf-a11y-title');panel.innerHTML='Barrierefreiheit
'+button('font','T⁺','Text vergrößern','100 %')+button('contrast','◐','Hochkontrast')+button('color','◉','Farbenblind-Modus')+button('mono','◒','Monochrom')+button('readable','Aa','Lesemodus (Dyslexie)','Verdana + Abstände')+button('links','🔗','Links unterstreichen')+button('motion','Ⅱ','Animationen stoppen')+button('cursor','➤','Großer Cursor')+button('reset','↺','Alles zurücksetzen')+'
';
-document.body.appendChild(trigger);document.body.appendChild(panel);var close=panel.querySelector('.mf-a11y-close');function paint(){panel.querySelectorAll('[data-a11y]').forEach(function(b){var id=b.dataset.a11y,on=id==='font'?state.font>100:id==='motion'?!state.motion:id==='reset'?false:!!state[id];b.setAttribute('aria-pressed',on);if(id==='font')b.querySelector('small').textContent=state.font+' %';});}
+var panel=document.createElement('section');panel.id='mf-a11y-panel';panel.className='mf-a11y-panel';panel.hidden=true;panel.setAttribute('role','dialog');panel.setAttribute('aria-modal','false');panel.setAttribute('aria-labelledby','mf-a11y-title');panel.innerHTML='Barrierefreiheit
'+button('font','T⁺','Text vergrößern','100 %')+button('contrast','◐','Hochkontrast','immer dunkel')+button('color','◉','Farbenblind-Modus')+button('mono','◒','Monochrom')+button('readable','Aa','Lesemodus (Dyslexie)','Verdana + Abstände')+button('links','🔗','Links unterstreichen')+button('motion','Ⅱ','Animationen stoppen')+button('cursor','➤','Großer Cursor')+button('reset','↺','Alles zurücksetzen')+'
';
+document.body.appendChild(trigger);document.body.appendChild(panel);var close=panel.querySelector('.mf-a11y-close');
+function paint(){panel.querySelectorAll('[data-a11y]').forEach(function(b){var id=b.dataset.a11y;
+if(id==='font'){var on=state.font>100;b.classList.toggle('is-active',on);b.removeAttribute('aria-pressed');b.setAttribute('aria-label','Textgröße ändern – aktuell '+state.font+' %');var s=b.querySelector('small');if(s)s.textContent=state.font+' %';}
+else if(id==='reset'){b.removeAttribute('aria-pressed');}
+else{b.setAttribute('aria-pressed',id==='motion'?!state.motion:!!state[id]);}});}
var host=document.querySelector('.mf-a11y-host,.mf-tools,.tt-header-tools,.mm-header-tools,.ss-header-tools,.dlg-header-tools,.mf-theme-float');if(host){host.insertBefore(trigger,host.firstChild);}else{var utility=document.createElement('div');utility.className='mf-a11y-utility';utility.setAttribute('aria-label','Globale Werkzeuge');utility.appendChild(trigger);document.body.insertBefore(utility,document.body.firstChild);}
-function hide(){panel.hidden=true;trigger.setAttribute('aria-expanded','false');trigger.focus();}function show(){panel.hidden=false;trigger.setAttribute('aria-expanded','true');paint();close.focus();}trigger.addEventListener('click',function(){panel.hidden?show():hide();});close.addEventListener('click',hide);window.addEventListener('keydown',function(e){if(e.key==='Escape'&&!panel.hidden)hide();});panel.addEventListener('click',function(e){var b=e.target.closest('[data-a11y]');if(!b)return;var id=b.dataset.a11y;if(id==='reset')state=Object.assign({},defaults);else if(id==='font')state.font=levels[(levels.indexOf(state.font)+1)%levels.length];else if(id==='motion')state.motion=!state.motion;else state[id]=!state[id];apply();paint();});paint();}
+function focusables(){return Array.prototype.slice.call(panel.querySelectorAll('button:not([disabled])'));}
+function trap(e){if(e.key!=='Tab')return;var f=focusables();if(!f.length)return;var first=f[0],last=f[f.length-1];if(e.shiftKey&&document.activeElement===first){e.preventDefault();last.focus();}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first.focus();}}
+function onDocPointer(e){if(panel.hidden)return;if(panel.contains(e.target)||trigger.contains(e.target))return;hide();}
+function hide(){panel.hidden=true;panel.setAttribute('aria-modal','false');trigger.setAttribute('aria-expanded','false');document.removeEventListener('keydown',trap,true);document.removeEventListener('mousedown',onDocPointer,true);trigger.focus();}
+function show(){panel.hidden=false;panel.setAttribute('aria-modal','true');trigger.setAttribute('aria-expanded','true');paint();document.addEventListener('keydown',trap,true);document.addEventListener('mousedown',onDocPointer,true);close.focus();}
+trigger.addEventListener('click',function(){panel.hidden?show():hide();});close.addEventListener('click',hide);window.addEventListener('keydown',function(e){if(e.key==='Escape'&&!panel.hidden)hide();});panel.addEventListener('click',function(e){var b=e.target.closest('[data-a11y]');if(!b)return;var id=b.dataset.a11y;if(id==='reset')state=Object.assign({},defaults);else if(id==='font')state.font=levels[(levels.indexOf(state.font)+1)%levels.length];else if(id==='motion')state.motion=!state.motion;else state[id]=!state[id];apply();paint();});paint();}
function start(){applySkin();init();}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start);else start();})();
diff --git a/src/main/resources/static/js/theme.js b/src/main/resources/static/js/theme.js
index 2ca9adf..52a6a53 100644
--- a/src/main/resources/static/js/theme.js
+++ b/src/main/resources/static/js/theme.js
@@ -21,7 +21,7 @@
if (!document.querySelector('link[data-fluxtimer]')) {
var timerCss = document.createElement('link');
timerCss.rel = 'stylesheet';
- timerCss.href = '/css/fluxtimer.css?v=4';
+ timerCss.href = '/css/fluxtimer.css?v=5';
timerCss.setAttribute('data-fluxtimer', '');
document.head.appendChild(timerCss);
}
@@ -35,18 +35,18 @@
if (!document.querySelector('link[data-accessibility]')) {
var accessibilityCss = document.createElement('link');
accessibilityCss.rel = 'stylesheet';
- accessibilityCss.href = '/css/accessibility.css?v=5';
+ accessibilityCss.href = '/css/accessibility.css?v=6';
accessibilityCss.setAttribute('data-accessibility', '');
document.head.appendChild(accessibilityCss);
var accessibilityPlacementCss = document.createElement('link');
accessibilityPlacementCss.rel = 'stylesheet';
- accessibilityPlacementCss.href = '/css/accessibility-placement.css?v=9';
+ accessibilityPlacementCss.href = '/css/accessibility-placement.css?v=10';
accessibilityPlacementCss.setAttribute('data-accessibility', '');
document.head.appendChild(accessibilityPlacementCss);
}
if (!document.querySelector('script[data-accessibility]')) {
var accessibilityScript = document.createElement('script');
- accessibilityScript.src = '/js/accessibility.js?v=8';
+ accessibilityScript.src = '/js/accessibility.js?v=9';
accessibilityScript.defer = true;
accessibilityScript.setAttribute('data-accessibility', '');
document.head.appendChild(accessibilityScript);
diff --git a/src/main/resources/templates/achievements.html b/src/main/resources/templates/achievements.html
index 21e1595..3eae94a 100644
--- a/src/main/resources/templates/achievements.html
+++ b/src/main/resources/templates/achievements.html
@@ -4,8 +4,8 @@
SysnaptiK Neural – Trophäen
-
-
+
+
diff --git a/src/main/resources/templates/legal/datenschutz.html b/src/main/resources/templates/legal/datenschutz.html
index 7c187d6..2b0da69 100644
--- a/src/main/resources/templates/legal/datenschutz.html
+++ b/src/main/resources/templates/legal/datenschutz.html
@@ -5,8 +5,8 @@
SysnaptiK Neural – Datenschutzerklärung
-
-
+
+