This commit is contained in:
@@ -10,15 +10,15 @@ html[data-mf-contrast="true"] body :focus-visible{outline:3px solid #ffd21a!impo
|
||||
/* 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}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-mindmatch{--accent:#cc79a7!important;--accent-2:#f4b9dd!important;--glow-s:rgba(204,121,167,.38)!important}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-techtacular{--accent:#f0e442!important;--accent-2:#fff6a5!important;--glow-s:rgba(240,228,66,.36)!important}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-devlab{--accent:#009e73!important;--accent-2:#8de2c6!important;--glow-s:rgba(0,158,115,.38)!important}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-syntaxsaga{--accent:#0072b2!important;--accent-2:#9dd9fa!important;--glow-s:rgba(0,114,178,.38)!important}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-codeescape{--accent:#e69f00!important;--accent-2:#ffd889!important;--glow-s:rgba(230,159,0,.38)!important}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-serviceclash{--accent:#56b4e9!important;--accent-2:#b5e5ff!important;--glow-s:rgba(86,180,233,.38)!important}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-bughunter{--accent:#d55e00!important;--accent-2:#ffb584!important;--glow-s:rgba(213,94,0,.38)!important}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-networker{--accent:#0072b2!important;--accent-2:#9dd9fa!important;--glow-s:rgba(0,114,178,.38)!important}
|
||||
html[data-mf-color="safe"] body.sn-platform .mf-card-finalprotocol{--accent:#999!important;--accent-2:#e1e1e1!important;--glow-s:rgba(190,190,190,.30)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-mindmatch{--accent:#cc79a7!important;--accent-2:#f4b9dd!important;--glow-s:rgba(204,121,167,.38)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-techtacular{--accent:#f0e442!important;--accent-2:#fff6a5!important;--glow-s:rgba(240,228,66,.36)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-devlab{--accent:#009e73!important;--accent-2:#8de2c6!important;--glow-s:rgba(0,158,115,.38)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-syntaxsaga{--accent:#0072b2!important;--accent-2:#9dd9fa!important;--glow-s:rgba(0,114,178,.38)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-codeescape{--accent:#e69f00!important;--accent-2:#ffd889!important;--glow-s:rgba(230,159,0,.38)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-serviceclash{--accent:#56b4e9!important;--accent-2:#b5e5ff!important;--glow-s:rgba(86,180,233,.38)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-bughunter{--accent:#d55e00!important;--accent-2:#ffb584!important;--glow-s:rgba(213,94,0,.38)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-networker{--accent:#0072b2!important;--accent-2:#9dd9fa!important;--glow-s:rgba(0,114,178,.38)!important}
|
||||
html[data-mf-color="safe"].sn-platform body .mf-card-finalprotocol{--accent:#999!important;--accent-2:#e1e1e1!important;--glow-s:rgba(190,190,190,.30)!important}
|
||||
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}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* SysnaptiK Neural – Plattformhülle. Spielwelten werden über sn-platform bewusst nicht berührt. */
|
||||
body.sn-platform {
|
||||
html.sn-platform body {
|
||||
--accent:#78d7a0; --accent-2:#b4ebc8; --accent-ink:#06130d;
|
||||
--secondary:#6fbbe8; --secondary-2:#9fd9f6;
|
||||
--bg:#030b0d; --bg-glow:radial-gradient(900px 560px at 58% -12%,rgba(73,183,135,.14),transparent 61%);
|
||||
@@ -14,7 +14,7 @@ body.sn-platform {
|
||||
radial-gradient(circle at 82% 8%,rgba(52,158,181,.10),transparent 29%),
|
||||
linear-gradient(135deg,#030b0d,#061216 54%,#02090b);
|
||||
}
|
||||
body.sn-platform::before {
|
||||
html.sn-platform body::before {
|
||||
content:""; position:fixed; inset:0; z-index:-1; pointer-events:none; opacity:.55;
|
||||
background:
|
||||
radial-gradient(circle at 8% 12%,#78d7a0 0 1px,transparent 2px),
|
||||
@@ -24,39 +24,39 @@ body.sn-platform::before {
|
||||
linear-gradient(24deg,transparent 0 17%,rgba(120,215,160,.13) 17.1% 17.2%,transparent 17.3% 100%),
|
||||
linear-gradient(145deg,transparent 0 52%,rgba(104,185,221,.10) 52.1% 52.2%,transparent 52.3% 100%);
|
||||
}
|
||||
body.sn-platform .mf-sidebar { background:linear-gradient(180deg,#061114,#071518); border-color:#17373a; }
|
||||
body.sn-platform .mf-logo { gap:.8rem; }
|
||||
html.sn-platform body .mf-sidebar { background:linear-gradient(180deg,#061114,#071518); border-color:#17373a; }
|
||||
html.sn-platform body .mf-logo { gap:.8rem; }
|
||||
/* Das bestehende Emblem bleibt die Marke: seine verbundenen Punkte lesen sich bereits
|
||||
als neuronales Netz. Die Plattform ändert nur Farbe, Glow und Wortmarke. */
|
||||
body.sn-platform .mf-logo .mark, body.sn-platform .auth-head .mark, body.sn-platform .overlay-panel .o-emblem {
|
||||
html.sn-platform body .mf-logo .mark, html.sn-platform body .auth-head .mark, html.sn-platform body .overlay-panel .o-emblem {
|
||||
background:#78d7a0; filter:drop-shadow(0 0 10px rgba(120,215,160,.65));
|
||||
}
|
||||
body.sn-platform .mf-logo .txt b { color:#e5f8ed; letter-spacing:.18em; font-size:.88rem; }
|
||||
body.sn-platform .mf-logo .txt span { color:#78d7a0; letter-spacing:.25em; font-size:.53rem; }
|
||||
body.sn-platform .mf-nav a.active { background:linear-gradient(100deg,rgba(120,215,160,.28),rgba(120,215,160,.12)); color:#e5f8ed; box-shadow:inset 0 0 0 1px rgba(180,235,200,.42),0 0 18px rgba(120,215,160,.18); }
|
||||
body.sn-platform .mf-panel, body.sn-platform .mf-card, body.sn-platform .mf-profile { background:linear-gradient(145deg,rgba(10,29,32,.92),rgba(5,16,19,.94)); border-color:#193a3e; box-shadow:0 13px 28px rgba(0,0,0,.22); }
|
||||
body.sn-platform .mf-card { overflow:hidden; }
|
||||
body.sn-platform .mf-card::after { content:""; position:absolute; inset:0; pointer-events:none; opacity:.55; background:radial-gradient(circle at 90% 8%,color-mix(in srgb,var(--accent) 22%,transparent) 0 1px,transparent 2px),linear-gradient(132deg,transparent 0 45%,color-mix(in srgb,var(--accent) 12%,transparent) 45.2% 45.4%,transparent 45.6%); }
|
||||
body.sn-platform .mf-card > * { position:relative; z-index:1; }
|
||||
body.sn-platform .mf-card-mindmatch { --accent:#df68b9; --accent-2:#ffc0e7; --glow-s:rgba(223,104,185,.40); }
|
||||
body.sn-platform .mf-card-techtacular { --accent:#d6db47; --accent-2:#f2f58a; --glow-s:rgba(214,219,71,.36); }
|
||||
body.sn-platform .mf-card-devlab { --accent:#78d7a0; --accent-2:#b4ebc8; --glow-s:rgba(120,215,160,.40); }
|
||||
body.sn-platform .mf-card-syntaxsaga { --accent:#9276f0; --accent-2:#d1c8ff; --glow-s:rgba(146,118,240,.40); }
|
||||
body.sn-platform .mf-card-codeescape { --accent:#edcb4c; --accent-2:#fff0a8; --glow-s:rgba(237,203,76,.38); }
|
||||
body.sn-platform .mf-card-serviceclash { --accent:#3abec5; --accent-2:#9de9e6; --glow-s:rgba(58,190,197,.38); }
|
||||
body.sn-platform .mf-card-bughunter { --accent:#e85e68; --accent-2:#ffb6bd; --glow-s:rgba(232,94,104,.38); }
|
||||
body.sn-platform .mf-card-networker { --accent:#55bdf0; --accent-2:#b2e7ff; --glow-s:rgba(85,189,240,.38); }
|
||||
body.sn-platform .mf-card-finalprotocol { --accent:#ed7849; --accent-2:#ffd0b5; --glow-s:rgba(237,120,73,.38); }
|
||||
body.sn-platform .mf-footer { background:rgba(3,11,13,.72); border-color:#173438; }
|
||||
body.sn-platform .mf-center { min-height:100vh; position:relative; }
|
||||
body.sn-platform .auth-container { background:linear-gradient(145deg,rgba(10,29,32,.98),rgba(4,14,17,.98)); border-color:rgba(120,215,160,.46); }
|
||||
body.sn-platform .overlay { background:radial-gradient(520px 320px at 62% 18%,rgba(120,215,160,.20),transparent 62%),linear-gradient(150deg,#0a2224,#071416); }
|
||||
body.sn-platform .overlay-panel .o-emblem { width:56px; height:56px; }
|
||||
body.sn-platform .neon-btn { border-radius:10px; }
|
||||
body.sn-platform .auth-head b { color:#78d7a0; }
|
||||
body.sn-platform.finalflux-shell, body.sn-platform.finalflux-page {
|
||||
html.sn-platform body .mf-logo .txt b { color:#e5f8ed; letter-spacing:.18em; font-size:.88rem; }
|
||||
html.sn-platform body .mf-logo .txt span { color:#78d7a0; letter-spacing:.25em; font-size:.53rem; }
|
||||
html.sn-platform body .mf-nav a.active { background:linear-gradient(100deg,rgba(120,215,160,.28),rgba(120,215,160,.12)); color:#e5f8ed; box-shadow:inset 0 0 0 1px rgba(180,235,200,.42),0 0 18px rgba(120,215,160,.18); }
|
||||
html.sn-platform body .mf-panel, html.sn-platform body .mf-card, html.sn-platform body .mf-profile { background:linear-gradient(145deg,rgba(10,29,32,.92),rgba(5,16,19,.94)); border-color:#193a3e; box-shadow:0 13px 28px rgba(0,0,0,.22); }
|
||||
html.sn-platform body .mf-card { overflow:hidden; }
|
||||
html.sn-platform body .mf-card::after { content:""; position:absolute; inset:0; pointer-events:none; opacity:.55; background:radial-gradient(circle at 90% 8%,color-mix(in srgb,var(--accent) 22%,transparent) 0 1px,transparent 2px),linear-gradient(132deg,transparent 0 45%,color-mix(in srgb,var(--accent) 12%,transparent) 45.2% 45.4%,transparent 45.6%); }
|
||||
html.sn-platform body .mf-card > * { position:relative; z-index:1; }
|
||||
html.sn-platform body .mf-card-mindmatch { --accent:#df68b9; --accent-2:#ffc0e7; --glow-s:rgba(223,104,185,.40); }
|
||||
html.sn-platform body .mf-card-techtacular { --accent:#d6db47; --accent-2:#f2f58a; --glow-s:rgba(214,219,71,.36); }
|
||||
html.sn-platform body .mf-card-devlab { --accent:#78d7a0; --accent-2:#b4ebc8; --glow-s:rgba(120,215,160,.40); }
|
||||
html.sn-platform body .mf-card-syntaxsaga { --accent:#9276f0; --accent-2:#d1c8ff; --glow-s:rgba(146,118,240,.40); }
|
||||
html.sn-platform body .mf-card-codeescape { --accent:#edcb4c; --accent-2:#fff0a8; --glow-s:rgba(237,203,76,.38); }
|
||||
html.sn-platform body .mf-card-serviceclash { --accent:#3abec5; --accent-2:#9de9e6; --glow-s:rgba(58,190,197,.38); }
|
||||
html.sn-platform body .mf-card-bughunter { --accent:#e85e68; --accent-2:#ffb6bd; --glow-s:rgba(232,94,104,.38); }
|
||||
html.sn-platform body .mf-card-networker { --accent:#55bdf0; --accent-2:#b2e7ff; --glow-s:rgba(85,189,240,.38); }
|
||||
html.sn-platform body .mf-card-finalprotocol { --accent:#ed7849; --accent-2:#ffd0b5; --glow-s:rgba(237,120,73,.38); }
|
||||
html.sn-platform body .mf-footer { background:rgba(3,11,13,.72); border-color:#173438; }
|
||||
html.sn-platform body .mf-center { min-height:100vh; position:relative; }
|
||||
html.sn-platform body .auth-container { background:linear-gradient(145deg,rgba(10,29,32,.98),rgba(4,14,17,.98)); border-color:rgba(120,215,160,.46); }
|
||||
html.sn-platform body .overlay { background:radial-gradient(520px 320px at 62% 18%,rgba(120,215,160,.20),transparent 62%),linear-gradient(150deg,#0a2224,#071416); }
|
||||
html.sn-platform body .overlay-panel .o-emblem { width:56px; height:56px; }
|
||||
html.sn-platform body .neon-btn { border-radius:10px; }
|
||||
html.sn-platform body .auth-head b { color:#78d7a0; }
|
||||
html.sn-platform body.finalflux-shell, html.sn-platform body.finalflux-page {
|
||||
--accent:#f09043; --accent-2:#ffd0a2; --accent-ink:#251004;
|
||||
--glow-s:rgba(240,144,67,.40); --glow-w:rgba(240,144,67,.14);
|
||||
}
|
||||
body.sn-platform .finalflux-shell, body.sn-platform.finalflux-shell, body.sn-platform.finalflux-page { background:transparent; }
|
||||
@media (max-width:820px) { body.sn-platform .mf-sidebar { background:#061114; } }
|
||||
html.sn-platform body .finalflux-shell, html.sn-platform body.finalflux-shell, html.sn-platform body.finalflux-page { background:transparent; }
|
||||
@media (max-width:820px) { html.sn-platform body .mf-sidebar { background:#061114; } }
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
@import url('/css/platform-neural.css?v=2');
|
||||
|
||||
/* ============================================================
|
||||
MINDFLUX THEME – zentrale Design-Tokens + Komponenten
|
||||
"Back to the Future"-Palette
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Datenschutz - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>IP-Adressberechnung - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Projektmanagement - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Zahlensysteme & Speicher - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Entwurfsmuster - FinalProtocol AP2</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Hochverfügbarkeit - FinalProtocol AP2</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Backuparten - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Datenbanksysteme - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>DSL und Internetanschluss - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>OSI-Modell - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Storage Systeme - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Thin Clients - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Netzwerktopologien - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>USV - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>VDI & DaaS - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>VLAN - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Amortisation - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Angebotsvergleich - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Bezugskalkulation - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Harvard-Konzept - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Kosten-Nutzen-Vergleich - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Make or Buy - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Marktformen - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Nutzwertanalyse - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Ratendarlehen - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Rentabilitätsrechnung - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Return on Investment - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Vertragsarten - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Win-Win-Strategie - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>Wirtschaftssektoren - FinalProtocol AP1</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-page">
|
||||
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
||||
|
||||
@@ -8,6 +8,14 @@
|
||||
|
||||
apply(read()); // früh -> kein Aufblitzen
|
||||
|
||||
// Die Plattformklasse liegt vor dem ersten Rendern auf html. So ist die
|
||||
// Neural-Hülle bereits aktiv, wenn die statisch importierten Styles zeichnen.
|
||||
// Die eigenständigen Spielrouten bleiben bewusst ausgenommen.
|
||||
var path = window.location.pathname;
|
||||
var isGameRoute = ['/mindmatch', '/techtacular', '/devlab', '/syntaxsaga', '/codeescape', '/bughunter', '/serviceclash', '/networker']
|
||||
.some(function (route) { return path === route || path.indexOf(route + '/') === 0; });
|
||||
if (!isGameRoute) document.documentElement.classList.add('sn-platform');
|
||||
|
||||
// Globale, rein clientseitige Komfortfunktionen. FluxTimer bleibt auf öffentlichen
|
||||
// Seiten inaktiv, läuft bei aktivierter Einstellung aber über Seitennavigationen weiter.
|
||||
if (!document.querySelector('link[data-fluxtimer]')) {
|
||||
@@ -17,13 +25,6 @@
|
||||
timerCss.setAttribute('data-fluxtimer', '');
|
||||
document.head.appendChild(timerCss);
|
||||
}
|
||||
if (!document.querySelector('link[data-platform-neural]')) {
|
||||
var neuralCss = document.createElement('link');
|
||||
neuralCss.rel = 'stylesheet';
|
||||
neuralCss.href = '/css/platform-neural.css?v=1';
|
||||
neuralCss.setAttribute('data-platform-neural', '');
|
||||
document.head.appendChild(neuralCss);
|
||||
}
|
||||
if (!document.querySelector('script[data-fluxtimer]')) {
|
||||
var timerScript = document.createElement('script');
|
||||
timerScript.src = '/js/fluxtimer.js?v=2';
|
||||
@@ -103,8 +104,6 @@
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
var isGame = document.querySelector('.mm-body,.tt-body,.dl-body,.dlg-body,.ss-body,.esc-app,.bh-app,.sc-app,.nw-app');
|
||||
if (!isGame) document.body.classList.add('sn-platform');
|
||||
document.querySelectorAll('.mf-theme').forEach(function (b) {
|
||||
b.setAttribute('role', 'button');
|
||||
b.setAttribute('aria-label', 'Theme umschalten');
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – Trophäen</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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"><script src="/js/theme.js"></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=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>
|
||||
|
||||
@@ -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"><script src="/js/theme.js"></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=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>
|
||||
|
||||
@@ -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"><script src="/js/theme.js"></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=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>
|
||||
|
||||
@@ -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"><script src="/js/theme.js"></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=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>
|
||||
|
||||
@@ -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"><script src="/js/theme.js"></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=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>
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural Admin Dashboard</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.admin-actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:1rem; margin-top:1.1rem; }
|
||||
.admin-card {
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<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">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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; }
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Dev-Lab-Verwaltung – Admin</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.dla { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
|
||||
.dla .new-game { margin-bottom: 1.6rem; }
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>MindMatch-Verwaltung – Admin</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.mmadmin { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
|
||||
.mmadmin .deck {
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<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">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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; }
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Syntax-Saga-Verwaltung – Admin</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.ssadmin { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
|
||||
.ssadmin .new-mission { margin-bottom: 1.6rem; }
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<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">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.ttcat { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
|
||||
.ttcat .q {
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>TechTacular-Verwaltung – Admin</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.ttadmin { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
|
||||
.ttadmin .new-cat { margin-bottom: 1.6rem; }
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Benutzer bearbeiten</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Benutzerverwaltung</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
@@ -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"><link rel="stylesheet" href="/css/bughunter.css?v=2"><script src="/js/theme.js"></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=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>
|
||||
|
||||
@@ -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"><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"></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=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>
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural Dashboard</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
/* Dashboard-spezifische Widgets (rechte Spalte) */
|
||||
.network-status { display:grid; grid-template-columns:auto 1fr; gap:.85rem; align-items:start; }
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<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">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<link rel="stylesheet" href="/css/devlabgame.css?v=5">
|
||||
</head>
|
||||
<body class="dlg-body" th:attr="data-game=${gameSlug}">
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Dev Lab - SysnaptiK Neural</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<link rel="stylesheet" href="/css/devlab.css?v=3">
|
||||
</head>
|
||||
<body class="dl-body">
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – In Arbeit</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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; }
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – Fehler</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<title>FinalProtocol AP1 - SysnaptiK Neural</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<link rel="stylesheet" href="/css/finalflux.css?v=2">
|
||||
<script src="/js/theme.js"></script>
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
</head>
|
||||
<body class="finalflux-shell">
|
||||
<aside class="finalflux-sidebar">
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – Impressum</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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)); }
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<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">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<link rel="stylesheet" href="/css/auth.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Knowledge Core – SysnaptiK Neural</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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>
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – Datenschutzerklärung</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.mf-legal { max-width:860px; }
|
||||
.mf-legal h1 { color:var(--heading); font-size:1.7rem; font-weight:800; margin:.2rem 0 .3rem; }
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – Nutzungsbedingungen (AGB)</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.mf-legal { max-width:860px; }
|
||||
.mf-legal h1 { color:var(--heading); font-size:1.7rem; font-weight:800; margin:.2rem 0 .3rem; }
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – Richtlinien</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.mf-legal { max-width:860px; }
|
||||
.mf-legal h1 { color:var(--heading); font-size:1.7rem; font-weight:800; margin:.2rem 0 .3rem; }
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>MindMatch – SysnaptiK Neural</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<link rel="stylesheet" href="/css/mindmatch.css?v=5">
|
||||
</head>
|
||||
<body class="mm-body">
|
||||
|
||||
@@ -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"><link rel="stylesheet" href="/css/networker.css?v=1"><link rel="stylesheet" href="/css/networker-guide.css?v=1"><script src="/js/theme.js"></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=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>
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – Profil</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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); }
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Fortschritt – SysnaptiK Neural</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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; }
|
||||
@@ -81,10 +81,10 @@
|
||||
|
||||
<!-- Diagramme -->
|
||||
<script th:inline="javascript">
|
||||
// theme.js setzt die Plattformklasse erst mit DOMContentLoaded. Die Charts müssen
|
||||
// danach entstehen, sonst lesen sie noch die alte globale Akzentfarbe.
|
||||
// theme.js setzt die Plattformklasse noch im head. Die Charts entstehen danach,
|
||||
// damit sie garantiert den bereits aktiven Neural-Akzent lesen.
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
// Die Plattform-Tokens liegen auf body.sn-platform. Von dort lesen, damit die
|
||||
// Die Plattform-Tokens liegen auf html.sn-platform > body. Von dort lesen, damit die
|
||||
// Diagramme nicht auf die alte globale Akzentfarbe zurückfallen.
|
||||
const css = getComputedStyle(document.body);
|
||||
const accent = css.getPropertyValue('--accent').trim() || '#2bd96a';
|
||||
|
||||
@@ -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"><link rel="stylesheet" href="/css/serviceclash.css?v=1"><script src="/js/theme.js"></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=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>
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural – Einstellungen</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></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; }
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>SysnaptiK Neural Soziales</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<style>
|
||||
.mf-soziales { text-align:center; padding:2.5rem 1.5rem; }
|
||||
.mf-soziales h1 { color:var(--heading); font-size:1.6rem; line-height:1.4; margin-bottom:1rem; }
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Syntax Saga – SysnaptiK Neural</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<link rel="stylesheet" href="/css/syntaxsaga.css?v=2">
|
||||
</head>
|
||||
<body class="ss-body">
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>TechTacular – SysnaptiK Neural</title>
|
||||
<link rel="stylesheet" href="/css/theme.css">
|
||||
<script src="/js/theme.js"></script>
|
||||
<link rel="stylesheet" href="/css/theme.css?v=3">
|
||||
<script src="/js/theme.js?v=3"></script>
|
||||
<link rel="stylesheet" href="/css/techtacular.css?v=4">
|
||||
</head>
|
||||
<body class="tt-body">
|
||||
|
||||
Reference in New Issue
Block a user