Restore Neural light theme and update contrast colors
mindflux-ci / build (push) Successful in 23s

This commit is contained in:
AliceDarkest
2026-07-14 17:02:30 +02:00
parent ad94c232f6
commit 3f23f223ce
44 changed files with 81 additions and 42 deletions
+3
View File
@@ -7,6 +7,9 @@ Versionierung [semantisch](https://semver.org/lang/de/).
## [Unreleased] – 2026-07-14 · SysnaptiK Neural Rebrand
### Marke & Plattform
- **Neural Lightmode & Kontrast:** Die helle Plattformvariante ist wieder ein
vollständiges Mint-/Blau-Neural-Theme, inklusive Sidebar, Karten und Login.
Hochkontrast nutzt jetzt dieselbe Mint-/Cyan-Sprache statt der alten Amber-Palette.
- **NeuralNet aufgeräumt:** Der leere Gesprächshinweis verschwindet beim Öffnen
wirklich, die letzte Verbindung wird pro Konto gespeichert und beim nächsten
Besuch direkt wieder geöffnet. Die Sprechblase bleibt neutral und invertiert
+1
View File
@@ -494,6 +494,7 @@ Der Verdacht „Profilbutton fehlt / Einstellungen nicht im Profil / irgendwas i
> Der Chatbereich hält Kopf, Verlauf und Eingabe als zusammenhängende Spalte.
> Die Dashboard-Sprechblase zeigt im 30-Sekunden-Takt echte ungelesene Nachrichten.
> Die zuletzt geöffnete bestätigte Verbindung wird pro Konto lokal wiederhergestellt.
> Der Plattform-Lightmode und der Hochkontrastmodus nutzen die Neural-Palette.
> Blockieren, Melden/Moderation, Duelle und Lernlobby bleiben die nächsten Ausbauschritte.
> Ersetzt den `/soziales`-Platzhalter („Straßen? Wo wir hingehen, brauchen wir keine Straßen!"). Ziel: User können sich befreunden, intern miteinander schreiben, gemeinsam lernen und Achievements vergleichen – **vollständig selbst gehostet, ohne einen einzigen externen Dienst**, und DSGVO-konform von Grund auf.
@@ -3,10 +3,10 @@ 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. */
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:#ffd21a!important;--accent:#ffd21a!important;--accent-2:#fff!important;--secondary:#65d9ff!important;--secondary-2:#fff!important;--success:#65d9ff!important;--danger:#ff9d3d!important;--esc-accent:#ffd21a!important;--bh-accent:#ffd21a!important;--sc-accent:#65d9ff!important;--nw-accent:#65d9ff!important;--mm-accent:#ffd21a!important;--mm-secondary:#65d9ff!important;--tt-accent:#ffd21a!important;--tt-secondary:#65d9ff!important;--dl-accent:#ffd21a!important;--dl-secondary:#65d9ff!important;--ss-accent:#ffd21a!important;--ss-secondary:#65d9ff!important;--ff-accent:#ffd21a!important;--ff-secondary:#65d9ff!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,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}
html[data-mf-contrast="true"] body :focus-visible{outline:3px solid #ffd21a!important;outline-offset:3px}
html[data-mf-contrast="true"] body :focus-visible{outline:3px solid #6fffb5!important;outline-offset:3px}
/* Okabe-Ito-nahe Palette: die Karten und die Spieltokens ändern sich sichtbar,
ohne sich für Rot-/Grün-Sehschwächen nur über Farbe unterscheiden zu müssen. */
html[data-mf-color="safe"] body,html[data-mf-color="safe"] body *{--success:#0072b2!important;--danger:#e69f00!important;--secondary:#cc79a7!important;--secondary-2:#56b4e9!important;--esc-accent:#e69f00!important;--bh-accent:#d55e00!important;--sc-accent:#56b4e9!important;--nw-accent:#0072b2!important;--mm-accent:#cc79a7!important;--mm-secondary:#56b4e9!important;--tt-accent:#f0e442!important;--tt-secondary:#0072b2!important;--dl-accent:#009e73!important;--dl-secondary:#56b4e9!important;--ss-accent:#0072b2!important;--ss-secondary:#e69f00!important;--ff-accent:#d55e00!important;--ff-secondary:#cc79a7!important}
@@ -59,4 +59,39 @@ html.sn-platform body.finalflux-shell, html.sn-platform body.finalflux-page {
--glow-s:rgba(240,144,67,.40); --glow-w:rgba(240,144,67,.14);
}
html.sn-platform body .finalflux-shell, html.sn-platform body.finalflux-shell, html.sn-platform body.finalflux-page { background:transparent; }
/* Helle Plattformvariante: dieselbe Neural-Sprache, nur auf lichtem Grund.
Spielrouten erhalten diese Regeln nicht und behalten ihre eigenen Welten. */
html[data-theme="light"].sn-platform body {
--accent:#167a52; --accent-2:#79cfa6; --accent-ink:#fff;
--secondary:#176f9e; --secondary-2:#68b8df;
--bg:#edf7f2; --bg-glow:radial-gradient(900px 560px at 58% -12%,rgba(35,143,96,.15),transparent 61%);
--panel:#f8fcfa; --panel-2:#eff8f3; --surface:#fff; --surface-2:#e8f4ee;
--border:#bed8cb; --line:#d2e6dc; --border-accent:rgba(22,122,82,.48);
--text:#18382c; --muted:#587166; --heading:#10291f;
--glow-s:rgba(22,122,82,.30); --glow-w:rgba(22,122,82,.13);
--fluxtimer-primary:#176f9e; --fluxtimer-secondary:#167a52;
--fluxtimer-display:#e4f3ed; --fluxtimer-segment:#126b48;
background:
radial-gradient(circle at 12% 86%,rgba(39,150,103,.13),transparent 27%),
radial-gradient(circle at 82% 8%,rgba(44,137,178,.12),transparent 29%),
linear-gradient(135deg,#f7fcf9,#e8f5ef 54%,#edf8f4);
}
html[data-theme="light"].sn-platform body::before { opacity:.3; background:
radial-gradient(circle at 8% 12%,#167a52 0 1px,transparent 2px),
radial-gradient(circle at 27% 24%,#167a52 0 2px,transparent 3px),
radial-gradient(circle at 61% 14%,#176f9e 0 1px,transparent 2px),
radial-gradient(circle at 88% 31%,#167a52 0 2px,transparent 3px),
linear-gradient(24deg,transparent 0 17%,rgba(22,122,82,.15) 17.1% 17.2%,transparent 17.3% 100%),
linear-gradient(145deg,transparent 0 52%,rgba(23,111,158,.12) 52.1% 52.2%,transparent 52.3% 100%); }
html[data-theme="light"].sn-platform body .mf-sidebar { background:linear-gradient(180deg,#f5fbf7,#ecf6f0); border-color:#bfd8cc; }
html[data-theme="light"].sn-platform body .mf-logo .mark,html[data-theme="light"].sn-platform body .auth-head .mark,html[data-theme="light"].sn-platform body .overlay-panel .o-emblem { background:#167a52; filter:drop-shadow(0 0 8px rgba(22,122,82,.32)); }
html[data-theme="light"].sn-platform body .mf-logo .txt b { color:#163c2d; }
html[data-theme="light"].sn-platform body .mf-logo .txt span { color:#167a52; }
html[data-theme="light"].sn-platform body .mf-nav a.active { background:linear-gradient(100deg,rgba(22,122,82,.19),rgba(22,122,82,.08)); color:#123626; box-shadow:inset 0 0 0 1px rgba(22,122,82,.34),0 0 13px rgba(22,122,82,.12); }
html[data-theme="light"].sn-platform body .mf-panel,html[data-theme="light"].sn-platform body .mf-card,html[data-theme="light"].sn-platform body .mf-profile { background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(241,250,245,.96)); border-color:#c4dbd0; box-shadow:0 13px 28px rgba(28,75,54,.10); }
html[data-theme="light"].sn-platform body .mf-footer { background:rgba(244,251,247,.82); border-color:#c5ddd1; }
html[data-theme="light"].sn-platform body .auth-container { background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(239,249,243,.98)); border-color:rgba(22,122,82,.38); }
html[data-theme="light"].sn-platform body .overlay { background:radial-gradient(520px 320px at 62% 18%,rgba(22,122,82,.15),transparent 62%),linear-gradient(150deg,#e8f6ef,#f7fcf9); }
html[data-theme="light"].sn-platform body .auth-head b { color:#167a52; }
@media (max-width:820px) { html.sn-platform body .mf-sidebar { background:#061114; } }
@media (max-width:820px) { html[data-theme="light"].sn-platform body .mf-sidebar { background:#f5fbf7; } }
+1 -1
View File
@@ -35,7 +35,7 @@
if (!document.querySelector('link[data-accessibility]')) {
var accessibilityCss = document.createElement('link');
accessibilityCss.rel = 'stylesheet';
accessibilityCss.href = '/css/accessibility.css?v=4';
accessibilityCss.href = '/css/accessibility.css?v=5';
accessibilityCss.setAttribute('data-accessibility', '');
document.head.appendChild(accessibilityCss);
var accessibilityPlacementCss = document.createElement('link');
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Trophäen</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mf-ach-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:1rem; }
.achievement-card { background:var(--surface-2); border:1px solid var(--border); border-radius:13px; padding:1.3rem 1.1rem; text-align:center; transition:transform .16s ease, box-shadow .25s ease; }
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>BugHunter Fallakte</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=3"></script></head><body><main class="mf-container" th:if="${hunt != null}"><a class="mf-back" href="/admin/bughunter">← Fallakten</a><h1 th:text="${hunt.title}" style="margin:1rem 0;color:var(--heading)"></h1><div class="mf-grid"><form class="mf-panel" method="post" th:action="@{/admin/bughunter/{id}/files(id=${hunt.id})}"><h2>Datei hinzufügen</h2><div class="mf-field"><label class="mf-label">Dateiname</label><input class="mf-input" name="filename" required></div><div class="mf-field"><label class="mf-label">Code</label><textarea class="mf-input" rows="14" name="content" required></textarea></div><button class="mf-btn">Datei speichern</button></form><form class="mf-panel" method="post" th:action="@{/admin/bughunter/{id}/bugs(id=${hunt.id})}"><h2>Bug hinzufügen</h2><div class="mf-field"><label class="mf-label">Punkte</label><input class="mf-input" type="number" name="points" value="100"></div><div class="mf-field"><label class="mf-label">Payload JSON</label><textarea class="mf-input" rows="14" name="payload" required>{"file":"Datei.java","line":1,"category":"logik","evidence":"...","fixOptions":["..."],"fixIndex":0,"fixedLine":"...","explanation":"..."}</textarea></div><p style="color:var(--muted);font-size:.85rem">Dateiname und Zeile müssen zu einer vorhandenen Datei passen; Kategorie: syntax, logik, laufzeit oder sicherheit.</p><button class="mf-btn">Bug speichern</button></form></div><section class="mf-panel" style="margin-top:1rem"><h2>Dateien</h2><table class="mf-table"><tr><th>Datei</th><th>Zeilen</th><th></th></tr><tr th:each="f:${hunt.files}"><td th:text="${f.filename}"></td><td th:text="${#strings.arrayLength(#strings.arraySplit(f.content, '\n'))}"></td><td><form method="post" th:action="@{/admin/bughunter/files/{id}/delete(id=${f.id})}"><input type="hidden" name="huntId" th:value="${hunt.id}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></section><section class="mf-panel" style="margin-top:1rem"><h2>Bugs</h2><table class="mf-table"><tr><th>Punkte</th><th>Payload</th><th></th></tr><tr th:each="b:${hunt.bugs}"><td th:text="${b.points}"></td><td><code th:text="${b.payload}"></code></td><td><form method="post" th:action="@{/admin/bughunter/bugs/{id}/delete(id=${b.id})}"><input type="hidden" name="huntId" th:value="${hunt.id}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></section></main><main class="mf-container" th:unless="${hunt != null}"><p>Fallakte nicht gefunden.</p></main></body></html>
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>BugHunter Fallakte</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=4"></script></head><body><main class="mf-container" th:if="${hunt != null}"><a class="mf-back" href="/admin/bughunter">← Fallakten</a><h1 th:text="${hunt.title}" style="margin:1rem 0;color:var(--heading)"></h1><div class="mf-grid"><form class="mf-panel" method="post" th:action="@{/admin/bughunter/{id}/files(id=${hunt.id})}"><h2>Datei hinzufügen</h2><div class="mf-field"><label class="mf-label">Dateiname</label><input class="mf-input" name="filename" required></div><div class="mf-field"><label class="mf-label">Code</label><textarea class="mf-input" rows="14" name="content" required></textarea></div><button class="mf-btn">Datei speichern</button></form><form class="mf-panel" method="post" th:action="@{/admin/bughunter/{id}/bugs(id=${hunt.id})}"><h2>Bug hinzufügen</h2><div class="mf-field"><label class="mf-label">Punkte</label><input class="mf-input" type="number" name="points" value="100"></div><div class="mf-field"><label class="mf-label">Payload JSON</label><textarea class="mf-input" rows="14" name="payload" required>{"file":"Datei.java","line":1,"category":"logik","evidence":"...","fixOptions":["..."],"fixIndex":0,"fixedLine":"...","explanation":"..."}</textarea></div><p style="color:var(--muted);font-size:.85rem">Dateiname und Zeile müssen zu einer vorhandenen Datei passen; Kategorie: syntax, logik, laufzeit oder sicherheit.</p><button class="mf-btn">Bug speichern</button></form></div><section class="mf-panel" style="margin-top:1rem"><h2>Dateien</h2><table class="mf-table"><tr><th>Datei</th><th>Zeilen</th><th></th></tr><tr th:each="f:${hunt.files}"><td th:text="${f.filename}"></td><td th:text="${#strings.arrayLength(#strings.arraySplit(f.content, '\n'))}"></td><td><form method="post" th:action="@{/admin/bughunter/files/{id}/delete(id=${f.id})}"><input type="hidden" name="huntId" th:value="${hunt.id}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></section><section class="mf-panel" style="margin-top:1rem"><h2>Bugs</h2><table class="mf-table"><tr><th>Punkte</th><th>Payload</th><th></th></tr><tr th:each="b:${hunt.bugs}"><td th:text="${b.points}"></td><td><code th:text="${b.payload}"></code></td><td><form method="post" th:action="@{/admin/bughunter/bugs/{id}/delete(id=${b.id})}"><input type="hidden" name="huntId" th:value="${hunt.id}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></section></main><main class="mf-container" th:unless="${hunt != null}"><p>Fallakte nicht gefunden.</p></main></body></html>
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>Admin · BugHunter</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=3"></script></head><body><main class="mf-container"><a class="mf-back" href="/admin">← Admin</a><h1 style="margin:1rem 0;color:var(--heading)">BugHunter · Fallakten</h1><form class="mf-panel" method="post" action="/admin/bughunter/add"><div class="mf-field"><label class="mf-label">Titel</label><input class="mf-input" name="title" required></div><div class="mf-field"><label class="mf-label">Code-Sprache</label><input class="mf-input" name="language" value="Java"></div><div class="mf-field"><label class="mf-label">Stufe</label><select class="mf-select" name="difficulty"><option>junior</option><option>senior</option><option>principal</option></select></div><div class="mf-field"><label class="mf-label">Prüfungsbereich</label><select class="mf-select" name="examScope"><option>AP1</option><option>AP2_FIAE</option><option>AP2_FISI</option><option>CROSS</option></select></div><div class="mf-field"><label class="mf-label">Kurzbeschreibung</label><textarea class="mf-input" name="description"></textarea></div><div class="mf-field"><label class="mf-label">Briefing</label><textarea class="mf-input" name="briefing"></textarea></div><div class="mf-field"><label class="mf-label">Konsolen-Ausgabe</label><textarea class="mf-input" name="consoleOutput"></textarea></div><button class="mf-btn">Fallakte anlegen</button></form><table class="mf-table" style="margin-top:1rem"><tr><th>Titel</th><th>Stufe</th><th>Scope</th><th>Fälle</th><th>Status</th><th></th></tr><tr th:each="h:${hunts}"><td><a th:href="@{/admin/bughunter/{id}(id=${h.id})}" th:text="${h.title}"></a></td><td th:text="${h.difficulty}"></td><td th:text="${h.examScope}"></td><td th:text="${h.bugs.size}"></td><td th:text="${h.active?'aktiv':'inaktiv'}"></td><td><form style="display:inline" method="post" th:action="@{/admin/bughunter/{id}/toggle(id=${h.id})}"><button class="mf-btn outline">Toggle</button></form> <form style="display:inline" method="post" th:action="@{/admin/bughunter/{id}/delete(id=${h.id})}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></main></body></html>
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>Admin · BugHunter</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=4"></script></head><body><main class="mf-container"><a class="mf-back" href="/admin">← Admin</a><h1 style="margin:1rem 0;color:var(--heading)">BugHunter · Fallakten</h1><form class="mf-panel" method="post" action="/admin/bughunter/add"><div class="mf-field"><label class="mf-label">Titel</label><input class="mf-input" name="title" required></div><div class="mf-field"><label class="mf-label">Code-Sprache</label><input class="mf-input" name="language" value="Java"></div><div class="mf-field"><label class="mf-label">Stufe</label><select class="mf-select" name="difficulty"><option>junior</option><option>senior</option><option>principal</option></select></div><div class="mf-field"><label class="mf-label">Prüfungsbereich</label><select class="mf-select" name="examScope"><option>AP1</option><option>AP2_FIAE</option><option>AP2_FISI</option><option>CROSS</option></select></div><div class="mf-field"><label class="mf-label">Kurzbeschreibung</label><textarea class="mf-input" name="description"></textarea></div><div class="mf-field"><label class="mf-label">Briefing</label><textarea class="mf-input" name="briefing"></textarea></div><div class="mf-field"><label class="mf-label">Konsolen-Ausgabe</label><textarea class="mf-input" name="consoleOutput"></textarea></div><button class="mf-btn">Fallakte anlegen</button></form><table class="mf-table" style="margin-top:1rem"><tr><th>Titel</th><th>Stufe</th><th>Scope</th><th>Fälle</th><th>Status</th><th></th></tr><tr th:each="h:${hunts}"><td><a th:href="@{/admin/bughunter/{id}(id=${h.id})}" th:text="${h.title}"></a></td><td th:text="${h.difficulty}"></td><td th:text="${h.examScope}"></td><td th:text="${h.bugs.size}"></td><td th:text="${h.active?'aktiv':'inaktiv'}"></td><td><form style="display:inline" method="post" th:action="@{/admin/bughunter/{id}/toggle(id=${h.id})}"><button class="mf-btn outline">Toggle</button></form> <form style="display:inline" method="post" th:action="@{/admin/bughunter/{id}/delete(id=${h.id})}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></main></body></html>
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>CodeEscape Raum</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=3"></script></head><body><main class="mf-container"><a class="mf-back" th:href="@{/admin/codeescape/{id}(id=${room.scenario.id})}">← Szenario</a><h1 th:text="${room.title}" style="margin:1rem 0;color:var(--heading)"></h1><form class="mf-panel" method="post" th:action="@{/admin/codeescape/rooms/{id}/puzzles(id=${room.id})}"><h2>Rätsel hinzufügen</h2><div class="mf-field"><label class="mf-label">Typ</label><select class="mf-select" name="type"><option>code</option><option>choice</option><option>order</option><option>match</option></select></div><div class="mf-field"><label class="mf-label">Titel</label><input class="mf-input" name="prompt" required></div><div class="mf-field"><label class="mf-label">Punkte</label><input class="mf-input" type="number" name="points" value="100"></div><div class="mf-field"><label class="mf-label">Fragment</label><input class="mf-input" name="codeFragment" required></div><div class="mf-field"><label class="mf-label">Payload JSON</label><textarea class="mf-input" rows="10" name="payload" required>{"instruction":"...","solutions":["..."]}</textarea></div><button class="mf-btn">Rätsel anlegen</button></form><table class="mf-table" style="margin-top:1rem"><tr><th>Typ</th><th>Titel</th><th>Fragment</th><th></th></tr><tr th:each="p:${room.puzzles}"><td th:text="${p.type}"></td><td th:text="${p.prompt}"></td><td th:text="${p.codeFragment}"></td><td><form method="post" th:action="@{/admin/codeescape/puzzles/{id}/delete(id=${p.id})}"><input type="hidden" name="roomId" th:value="${room.id}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></main></body></html>
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>CodeEscape Raum</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=4"></script></head><body><main class="mf-container"><a class="mf-back" th:href="@{/admin/codeescape/{id}(id=${room.scenario.id})}">← Szenario</a><h1 th:text="${room.title}" style="margin:1rem 0;color:var(--heading)"></h1><form class="mf-panel" method="post" th:action="@{/admin/codeescape/rooms/{id}/puzzles(id=${room.id})}"><h2>Rätsel hinzufügen</h2><div class="mf-field"><label class="mf-label">Typ</label><select class="mf-select" name="type"><option>code</option><option>choice</option><option>order</option><option>match</option></select></div><div class="mf-field"><label class="mf-label">Titel</label><input class="mf-input" name="prompt" required></div><div class="mf-field"><label class="mf-label">Punkte</label><input class="mf-input" type="number" name="points" value="100"></div><div class="mf-field"><label class="mf-label">Fragment</label><input class="mf-input" name="codeFragment" required></div><div class="mf-field"><label class="mf-label">Payload JSON</label><textarea class="mf-input" rows="10" name="payload" required>{"instruction":"...","solutions":["..."]}</textarea></div><button class="mf-btn">Rätsel anlegen</button></form><table class="mf-table" style="margin-top:1rem"><tr><th>Typ</th><th>Titel</th><th>Fragment</th><th></th></tr><tr th:each="p:${room.puzzles}"><td th:text="${p.type}"></td><td th:text="${p.prompt}"></td><td th:text="${p.codeFragment}"></td><td><form method="post" th:action="@{/admin/codeescape/puzzles/{id}/delete(id=${p.id})}"><input type="hidden" name="roomId" th:value="${room.id}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></main></body></html>
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>CodeEscape Szenario</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=3"></script></head><body><main class="mf-container"><a class="mf-back" href="/admin/codeescape">← Szenarien</a><h1 th:text="${scenario.title}" style="margin:1rem 0;color:var(--heading)"></h1><form class="mf-panel" method="post" th:action="@{/admin/codeescape/{id}/rooms(id=${scenario.id})}"><h2>Raum hinzufügen</h2><div class="mf-field"><label class="mf-label">Titel</label><input class="mf-input" name="title" required></div><div class="mf-field"><label class="mf-label">Intro</label><textarea class="mf-input" name="intro"></textarea></div><div class="mf-field"><label class="mf-label">Tür-Hinweis</label><input class="mf-input" name="doorPrompt"></div><div class="mf-field"><label class="mf-label">Türcode</label><input class="mf-input" name="doorCode" required></div><div class="mf-field"><label class="mf-label">Erfolgstext</label><input class="mf-input" name="successText"></div><button class="mf-btn">Raum anlegen</button></form><div class="mf-grid" style="margin-top:1rem"><article class="mf-panel" th:each="r:${scenario.rooms}"><h2><a th:href="@{/admin/codeescape/rooms/{id}(id=${r.id})}" th:text="${r.title}"></a></h2><p th:text="${r.intro}"></p><form method="post" th:action="@{/admin/codeescape/rooms/{id}/delete(id=${r.id})}"><button class="mf-btn danger">Raum löschen</button></form></article></div></main></body></html>
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>CodeEscape Szenario</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=4"></script></head><body><main class="mf-container"><a class="mf-back" href="/admin/codeescape">← Szenarien</a><h1 th:text="${scenario.title}" style="margin:1rem 0;color:var(--heading)"></h1><form class="mf-panel" method="post" th:action="@{/admin/codeescape/{id}/rooms(id=${scenario.id})}"><h2>Raum hinzufügen</h2><div class="mf-field"><label class="mf-label">Titel</label><input class="mf-input" name="title" required></div><div class="mf-field"><label class="mf-label">Intro</label><textarea class="mf-input" name="intro"></textarea></div><div class="mf-field"><label class="mf-label">Tür-Hinweis</label><input class="mf-input" name="doorPrompt"></div><div class="mf-field"><label class="mf-label">Türcode</label><input class="mf-input" name="doorCode" required></div><div class="mf-field"><label class="mf-label">Erfolgstext</label><input class="mf-input" name="successText"></div><button class="mf-btn">Raum anlegen</button></form><div class="mf-grid" style="margin-top:1rem"><article class="mf-panel" th:each="r:${scenario.rooms}"><h2><a th:href="@{/admin/codeescape/rooms/{id}(id=${r.id})}" th:text="${r.title}"></a></h2><p th:text="${r.intro}"></p><form method="post" th:action="@{/admin/codeescape/rooms/{id}/delete(id=${r.id})}"><button class="mf-btn danger">Raum löschen</button></form></article></div></main></body></html>
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>Admin · CodeEscape</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=3"></script></head><body><main class="mf-container"><a class="mf-back" href="/admin">← Admin</a><h1 style="margin:1rem 0;color:var(--heading)">CodeEscape · Szenarien</h1><form class="mf-panel" method="post" action="/admin/codeescape/add"><div class="mf-field"><label class="mf-label">Titel</label><input class="mf-input" name="title" required></div><div class="mf-field"><label class="mf-label">Schwierigkeit</label><select class="mf-select" name="difficulty"><option>leicht</option><option>mittel</option><option>schwer</option></select></div><div class="mf-field"><label class="mf-label">Prüfungsbereich</label><select class="mf-select" name="examScope"><option>AP1</option><option>AP2_FIAE</option><option>AP2_FISI</option><option>CROSS</option></select></div><div class="mf-field"><label class="mf-label">Beschreibung</label><textarea class="mf-input" name="description"></textarea></div><div class="mf-field"><label class="mf-label">Zeitlimit Sekunden</label><input class="mf-input" type="number" name="timeLimitSeconds" value="900"></div><button class="mf-btn">Szenario anlegen</button></form><table class="mf-table" style="margin-top:1rem"><tr><th>Titel</th><th>Scope</th><th>Status</th><th>Aktion</th></tr><tr th:each="s:${scenarios}"><td><a th:href="@{/admin/codeescape/{id}(id=${s.id})}" th:text="${s.title}"></a></td><td th:text="${s.examScope}"></td><td th:text="${s.active?'aktiv':'inaktiv'}"></td><td><form style="display:inline" method="post" th:action="@{/admin/codeescape/{id}/toggle(id=${s.id})}"><button class="mf-btn outline">Toggle</button></form> <form style="display:inline" method="post" th:action="@{/admin/codeescape/{id}/delete(id=${s.id})}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></main></body></html>
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><title>Admin · CodeEscape</title><link rel="stylesheet" href="/css/theme.css?v=3"><script src="/js/theme.js?v=4"></script></head><body><main class="mf-container"><a class="mf-back" href="/admin">← Admin</a><h1 style="margin:1rem 0;color:var(--heading)">CodeEscape · Szenarien</h1><form class="mf-panel" method="post" action="/admin/codeescape/add"><div class="mf-field"><label class="mf-label">Titel</label><input class="mf-input" name="title" required></div><div class="mf-field"><label class="mf-label">Schwierigkeit</label><select class="mf-select" name="difficulty"><option>leicht</option><option>mittel</option><option>schwer</option></select></div><div class="mf-field"><label class="mf-label">Prüfungsbereich</label><select class="mf-select" name="examScope"><option>AP1</option><option>AP2_FIAE</option><option>AP2_FISI</option><option>CROSS</option></select></div><div class="mf-field"><label class="mf-label">Beschreibung</label><textarea class="mf-input" name="description"></textarea></div><div class="mf-field"><label class="mf-label">Zeitlimit Sekunden</label><input class="mf-input" type="number" name="timeLimitSeconds" value="900"></div><button class="mf-btn">Szenario anlegen</button></form><table class="mf-table" style="margin-top:1rem"><tr><th>Titel</th><th>Scope</th><th>Status</th><th>Aktion</th></tr><tr th:each="s:${scenarios}"><td><a th:href="@{/admin/codeescape/{id}(id=${s.id})}" th:text="${s.title}"></a></td><td th:text="${s.examScope}"></td><td th:text="${s.active?'aktiv':'inaktiv'}"></td><td><form style="display:inline" method="post" th:action="@{/admin/codeescape/{id}/toggle(id=${s.id})}"><button class="mf-btn outline">Toggle</button></form> <form style="display:inline" method="post" th:action="@{/admin/codeescape/{id}/delete(id=${s.id})}"><button class="mf-btn danger">Löschen</button></form></td></tr></table></main></body></html>
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural Admin Dashboard</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.admin-actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:1rem; margin-top:1.1rem; }
.admin-card {
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title th:text="${game.title} + ' – Dev Lab'">Dev-Lab-Spiel</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.dlg { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
.dlg .grid2 { display: grid; grid-template-columns: 160px 1fr; gap: 0.7rem; }
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dev-Lab-Verwaltung – Admin</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.dla { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
.dla .new-game { margin-bottom: 1.6rem; }
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MindMatch-Verwaltung – Admin</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mmadmin { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
.mmadmin .deck {
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title th:text="${mission.title} + ' – Syntax Saga'">Syntax-Saga-Mission</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.ssm { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
.ssm .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.7rem; }
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Syntax-Saga-Verwaltung – Admin</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.ssadmin { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
.ssadmin .new-mission { margin-bottom: 1.6rem; }
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title th:text="${category.title} + ' – TechTacular'">TechTacular-Kategorie</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.ttcat { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
.ttcat .q {
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TechTacular-Verwaltung – Admin</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.ttadmin { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
.ttadmin .new-cat { margin-bottom: 1.6rem; }
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Benutzer bearbeiten</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
</head>
<body>
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Benutzerverwaltung</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
</head>
<body>
+1 -1
View File
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>BugHunter · SysnaptiK Neural</title><link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/bughunter.css?v=2"><script src="/js/theme.js?v=3"></script></head><body><main class="bh-app"><header class="bh-top"><div style="display:flex;align-items:center;gap:.65rem"><a href="/dashboard" class="bh-back">← Dashboard</a><a href="/bughunter" class="bh-btn">AKTENSCHRANK</a></div><div class="bh-brand"><b>BUGHUNTER</b><span>DEBUG-FALLAKTEN</span></div><span class="mf-a11y-host"></span></header><section id="bhView" class="bh-view"><div class="bh-loading">FALLAKTEN WERDEN GEÖFFNET …</div></section></main><script src="/js/bughunter.js?v=5"></script></body></html>
<!doctype html><html lang="de" data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>BugHunter · SysnaptiK Neural</title><link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/bughunter.css?v=2"><script src="/js/theme.js?v=4"></script></head><body><main class="bh-app"><header class="bh-top"><div style="display:flex;align-items:center;gap:.65rem"><a href="/dashboard" class="bh-back">← Dashboard</a><a href="/bughunter" class="bh-btn">AKTENSCHRANK</a></div><div class="bh-brand"><b>BUGHUNTER</b><span>DEBUG-FALLAKTEN</span></div><span class="mf-a11y-host"></span></header><section id="bhView" class="bh-view"><div class="bh-loading">FALLAKTEN WERDEN GEÖFFNET …</div></section></main><script src="/js/bughunter.js?v=5"></script></body></html>
+1 -1
View File
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>SystemEscape · SysnaptiK Neural</title><link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/codeescape.css?v=2"><link rel="stylesheet" href="/css/codeescape-guide.css?v=3"><link rel="stylesheet" href="/css/codeescape-global.css?v=1"><script src="/js/theme.js?v=3"></script></head><body><main class="esc-app"><header class="esc-top"><a href="/dashboard" class="esc-back">← Dashboard</a><div class="esc-brand"><b>SYSTEMESCAPE</b><span>FACILITY ACCESS PROTOCOL</span></div><div class="esc-global-tools"><span class="mf-a11y-host"></span><div class="esc-timer" id="escTimer">--:--</div></div></header><section id="escView" class="esc-view"><div class="esc-loading">FACILITY WIRD INITIALISIERT …</div></section></main><script src="/js/codeescape.js?v=2"></script></body></html>
<!doctype html><html lang="de" data-theme="dark" xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>SystemEscape · SysnaptiK Neural</title><link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/codeescape.css?v=2"><link rel="stylesheet" href="/css/codeescape-guide.css?v=3"><link rel="stylesheet" href="/css/codeescape-global.css?v=1"><script src="/js/theme.js?v=4"></script></head><body><main class="esc-app"><header class="esc-top"><a href="/dashboard" class="esc-back">← Dashboard</a><div class="esc-brand"><b>SYSTEMESCAPE</b><span>FACILITY ACCESS PROTOCOL</span></div><div class="esc-global-tools"><span class="mf-a11y-host"></span><div class="esc-timer" id="escTimer">--:--</div></div></header><section id="escView" class="esc-view"><div class="esc-loading">FACILITY WIRD INITIALISIERT …</div></section></main><script src="/js/codeescape.js?v=2"></script></body></html>
+1 -1
View File
@@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural Dashboard</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
/* Dashboard-spezifische Widgets (rechte Spalte) */
.network-status { display:grid; grid-template-columns:auto 1fr; gap:.85rem; align-items:start; }
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dev Lab Spiel – SysnaptiK Neural</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<link rel="stylesheet" href="/css/devlabgame.css?v=5">
</head>
<body class="dlg-body" th:attr="data-game=${gameSlug}">
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dev Lab - SysnaptiK Neural</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<link rel="stylesheet" href="/css/devlab.css?v=3">
</head>
<body class="dl-body">
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – In Arbeit</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mf-cardbox { max-width:560px; text-align:center; }
.mf-cardbox h1 { color:var(--heading); font-size:1.5rem; font-weight:800; margin-bottom:.5rem; }
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Fehler</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
</head>
<body>
+1 -1
View File
@@ -7,7 +7,7 @@
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/css/theme.css?v=3">
<link rel="stylesheet" href="/css/finalflux.css?v=2">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
</head>
<body class="finalflux-shell">
<aside class="finalflux-sidebar">
+1 -1
View File
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Impressum</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mf-cardbox { max-width:620px; text-align:center; }
.mf-doc { font-size:3rem; margin-bottom:.6rem; filter:drop-shadow(0 0 14px var(--glow-s)); }
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Deine Zukunft beginnt hier</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<link rel="stylesheet" href="/css/auth.css">
</head>
<body>
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Knowledge Core – SysnaptiK Neural</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.kc-intro{max-width:720px;color:var(--muted);line-height:1.6}.kc-stats,.kc-routes{display:grid;gap:1rem}.kc-stats{grid-template-columns:repeat(3,1fr);margin:1.2rem 0}.kc-stat{padding:1rem;border:1px solid var(--border);border-radius:10px;background:var(--surface-2)}.kc-stat span,.kc-route small{display:block;color:var(--muted);font-size:.74rem}.kc-stat b{display:block;margin-top:.25rem;color:var(--heading);font-size:1.35rem}.kc-routes{grid-template-columns:repeat(3,1fr)}.kc-route{display:flex;flex-direction:column;gap:.7rem;padding:1.2rem;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.kc-route h2{color:var(--heading);font-size:1.05rem;margin:0}.kc-route p{color:var(--muted);font-size:.86rem;line-height:1.5;flex:1;margin:0}.kc-links{display:flex;flex-wrap:wrap;gap:.5rem}.kc-links a{color:var(--accent);font-size:.76rem;text-decoration:none;border:1px solid var(--border-accent);border-radius:7px;padding:.42rem .55rem}.kc-links a:hover{background:var(--accent);color:var(--accent-ink)}.kc-history{margin-top:1rem}.kc-history li{display:flex;justify-content:space-between;gap:1rem;padding:.65rem 0;border-bottom:1px solid var(--border);color:var(--text)}.kc-history li span{color:var(--muted);font-size:.82rem}.mf-footer{text-align:center;color:var(--muted);font-size:.82rem;padding:1.6rem 1rem}.mf-footer a{color:var(--muted);text-decoration:none;margin:0 .15rem}.mf-footer a:hover{color:var(--accent)}@media(max-width:720px){.kc-stats,.kc-routes{grid-template-columns:1fr}}
</style>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Datenschutzerklärung</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mf-legal { max-width:860px; }
.mf-legal h1 { color:var(--heading); font-size:1.7rem; font-weight:800; margin:.2rem 0 .3rem; }
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Nutzungsbedingungen (AGB)</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mf-legal { max-width:860px; }
.mf-legal h1 { color:var(--heading); font-size:1.7rem; font-weight:800; margin:.2rem 0 .3rem; }
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Richtlinien</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mf-legal { max-width:860px; }
.mf-legal h1 { color:var(--heading); font-size:1.7rem; font-weight:800; margin:.2rem 0 .3rem; }
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MindMatch – SysnaptiK Neural</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<link rel="stylesheet" href="/css/mindmatch.css?v=5">
</head>
<body class="mm-body">
+1 -1
View File
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>NetWorker · SysnaptiK Neural</title><link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/networker.css?v=1"><link rel="stylesheet" href="/css/networker-guide.css?v=1"><script src="/js/theme.js?v=3"></script></head><body><main class="nw-app"><header class="nw-top"><div style="display:flex;align-items:center;gap:.65rem"><a href="/dashboard" class="nw-back">← Dashboard</a><a href="/networker" class="nw-btn">NETZPLÄNE</a></div><div class="nw-brand"><b>NetWorker</b><span>NETZPLAN · DIAGNOSE</span></div><span class="mf-a11y-host"></span></header><section id="nwView" class="nw-view"><div class="nw-loading">NETZWERKPLÄNE WERDEN KALIBRIERT …</div></section></main><script src="/js/networker.js?v=1"></script><script src="/js/networker-guide.js?v=1"></script></body></html>
<!doctype html><html lang="de" data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>NetWorker · SysnaptiK Neural</title><link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/networker.css?v=1"><link rel="stylesheet" href="/css/networker-guide.css?v=1"><script src="/js/theme.js?v=4"></script></head><body><main class="nw-app"><header class="nw-top"><div style="display:flex;align-items:center;gap:.65rem"><a href="/dashboard" class="nw-back">← Dashboard</a><a href="/networker" class="nw-btn">NETZPLÄNE</a></div><div class="nw-brand"><b>NetWorker</b><span>NETZPLAN · DIAGNOSE</span></div><span class="mf-a11y-host"></span></header><section id="nwView" class="nw-view"><div class="nw-loading">NETZWERKPLÄNE WERDEN KALIBRIERT …</div></section></main><script src="/js/networker.js?v=1"></script><script src="/js/networker-guide.js?v=1"></script></body></html>
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Profil</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mf-profile-pic { display:flex; justify-content:center; margin-bottom:1.3rem; }
.mf-profile-pic img { width:140px; height:140px; border-radius:50%; object-fit:cover; border:2px solid var(--border-accent); box-shadow:0 0 22px var(--glow-w); }
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Fortschritt – SysnaptiK Neural</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
.mf-progress-summary { display:flex; flex-wrap:wrap; align-items:center; gap:2rem; }
@@ -1 +1 @@
<!doctype html><html lang="de" data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ServiceClash · SysnaptiK Neural</title><link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/serviceclash.css?v=1"><script src="/js/theme.js?v=3"></script></head><body><main class="sc-app"><header class="sc-top"><div class="sc-nav"><a href="/dashboard">← Dashboard</a><a href="/serviceclash" class="sc-nav-button">SCHICHTEN</a></div><div class="sc-brand"><b>ServiceClash</b><span>LEITSTAND · TRIAGE</span></div><span class="mf-a11y-host"></span></header><section id="scView" class="sc-view"><p class="sc-loading">LEITSTAND WIRD HOCHGEFAHREN …</p></section></main><script src="/js/serviceclash.js?v=2"></script></body></html>
<!doctype html><html lang="de" data-theme="dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>ServiceClash · SysnaptiK Neural</title><link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/serviceclash.css?v=1"><script src="/js/theme.js?v=4"></script></head><body><main class="sc-app"><header class="sc-top"><div class="sc-nav"><a href="/dashboard">← Dashboard</a><a href="/serviceclash" class="sc-nav-button">SCHICHTEN</a></div><div class="sc-brand"><b>ServiceClash</b><span>LEITSTAND · TRIAGE</span></div><span class="mf-a11y-host"></span></header><section id="scView" class="sc-view"><p class="sc-loading">LEITSTAND WIRD HOCHGEFAHREN …</p></section></main><script src="/js/serviceclash.js?v=2"></script></body></html>
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SysnaptiK Neural – Einstellungen</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<style>
.mf-section-title { color:var(--accent); font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; margin-bottom:.9rem; }
.mf-check { display:flex; align-items:center; gap:.55rem; color:var(--text); font-size:.92rem; margin:.5rem 0; cursor:pointer; }
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NeuralNet – SysnaptiK Neural</title>
<link rel="stylesheet" href="/css/theme.css?v=3"><link rel="stylesheet" href="/css/neuralnet.css?v=3">
<script src="/js/theme.js?v=3"></script><script src="/js/neuralnet.js?v=5" defer></script>
<script src="/js/theme.js?v=4"></script><script src="/js/neuralnet.js?v=5" defer></script>
</head>
<body>
<div class="mf-theme-float"><button class="mf-theme"></button></div>
+1 -1
View File
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Syntax Saga – SysnaptiK Neural</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<link rel="stylesheet" href="/css/syntaxsaga.css?v=2">
</head>
<body class="ss-body">
@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TechTacular – SysnaptiK Neural</title>
<link rel="stylesheet" href="/css/theme.css?v=3">
<script src="/js/theme.js?v=3"></script>
<script src="/js/theme.js?v=4"></script>
<link rel="stylesheet" href="/css/techtacular.css?v=4">
</head>
<body class="tt-body">