+ +
+

SASCHAS ZENTRUM FÜR DIGITALE ANARCHIE

+

Beruf: Geisteskrank & Gemini Player

+
+ âš  VORSICHT: INSTABILE ALGORITHMEN. BETRETEN AUF EIGENE GEFAHR.
+ KEINE HAFTUNG FÜR DATENVERLUST ODER EXISTENZIELLE KRISEN. +
+
+ + + + +
+

// ZENTRAL-ARCHIV ZUGRIFF

+ {{ partial "person_nav.html" . }} +
+ +
+ Steampunk Sascha +
+ +
+ + + + + +
+ + +
+
+ + â—� CHIRURGISCHES OPS-DASHBOARD â—� + +
+
+
+
HEUTE
+
|||
+
3 OPS
+
+ â—ˆ +
+
ERFOLGE
+
|½
+
1.5
+
+ â—ˆ +
+
RESTE
+
KUEHLHAUS C
+
+
+
[ PROTOKOLL EINSEHEN ]
+
+ + +
+
+
+ // SYSTEM_LOG_FEED + [ ORAKEL ] +
+
+
+
+ sascha@ki-labor:~$ + +
+
+
+ + +
+ +
+
+

PROJEKT-ARCHIV

+
+ + + + +
+
+ + +
+ {{ range .Site.RegularPages }} + {{ if eq .Section "posts" }} + +
+ + {{ .Params.status_label | default "AKTIV" }} + +
+ {{ if .Params.thumb }} + Preview + {{ end }} +

{{ .Title }}

+
+
+ {{ .Summary }} +
+
+
+ {{ end }} + {{ end }} +
+ + + + +
+ + + + +
+
+
+ + + + +{{ end }} diff --git a/layouts/mac-nerds/single.html b/layouts/mac-nerds/single.html new file mode 100644 index 0000000..5459729 --- /dev/null +++ b/layouts/mac-nerds/single.html @@ -0,0 +1,166 @@ +{{ define "main" }} +
+ + +
+

// GEHEIMES TERMINAL-ARCHIV

+

{{ .Title | upper }}

+

{{ .Description }}

+
+ + +
+ + {{ range site.Data.mac_nerds_cats }} + + {{ end }} +
+ + +
+ {{ range site.Data.mac_nerds }} +
+
+ {{ .cat | upper }} + {{ .risk | upper }} +
+

{{ .title }}

+
+ {{ .cmd }} + [KOPIEREN] +
+

{{ .desc }}

+
+ {{ end }} +
+ +
+ + + + +{{ end }} diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html new file mode 100644 index 0000000..5299782 --- /dev/null +++ b/layouts/partials/footer.html @@ -0,0 +1,5 @@ +
+ +
diff --git a/layouts/partials/header.html b/layouts/partials/header.html new file mode 100644 index 0000000..50b0d7f --- /dev/null +++ b/layouts/partials/header.html @@ -0,0 +1,4 @@ + +
+ +
diff --git a/layouts/partials/person_nav.html b/layouts/partials/person_nav.html new file mode 100644 index 0000000..f86ae22 --- /dev/null +++ b/layouts/partials/person_nav.html @@ -0,0 +1,59 @@ +
+ {{ if eq .Section "personen" }} + + � ZURÜCK ZUR BASIS + + {{ end }} + +
+ {{ $persons := slice "mutti" "vater" "bruder" "schwester" "sascha" "sven" }} + {{ range $persons }} + {{ $id := . }} + {{ $name := . | upper }} + {{ $img := "" }} + {{ if eq $id "mutti" }}{{ $img = "/img/comicFigures/hp_mutti_comic_1.jpeg" }}{{ end }} + {{ if eq $id "bruder" }}{{ $img = "/img/comicFigures/hp_freddy_comic_1.png" }}{{ end }} + {{ if eq $id "sascha" }}{{ $img = "/img/comicFigures/hp_sascha_comic_1.jpeg" }}{{ end }} + {{ if eq $id "sven" }}{{ $img = "/img/comicFigures/hp_sven_comic_1.jpeg" }}{{ end }} + {{ if eq $id "vater" }}{{ $img = "/img/comicFigures/hp_vater_comic_1.png" }}{{ end }} + {{ if eq $id "schwester" }}{{ $img = "/img/comicFigures/hp_meli_comic_1.png" }}{{ end }} + + +
+ {{ if $img }} + {{ $name }} + {{ else }} + {{ substr $name 0 1 }} + {{ end }} +
+ {{ $name }} +
+ {{ end }} +
+
+ + diff --git a/layouts/partials/ticker.html b/layouts/partials/ticker.html new file mode 100644 index 0000000..019faee --- /dev/null +++ b/layouts/partials/ticker.html @@ -0,0 +1,44 @@ + +
+ // SYSTEM_LOG_FEED +
+
+ [ HUGO SYSTEM INITIALISIERT... ] + [ WP-KERN GELÖSCHT // ANARCHIE LEVEL 100 ] +
+
+
+ + + + diff --git a/ssh_connect.expect b/ssh_connect.expect new file mode 100644 index 0000000..848b718 --- /dev/null +++ b/ssh_connect.expect @@ -0,0 +1,19 @@ +#!/usr/bin/expect -f +set timeout 15 + +spawn ssh -o StrictHostKeyChecking=accept-new $IONOS_HOST +expect { + "*?assword:*" { + $IONOS_SSH" + } + timeout { + puts "Timeout waiting for password prompt" + exit 1 + } +} + +expect -re {[$#>] } +send "find . -maxdepth 4 -name 'wp-content' -type d\r" + +expect -re {[$#>] } +send "exit\r" diff --git a/static/.DS_Store b/static/.DS_Store new file mode 100644 index 0000000..c016959 Binary files /dev/null and b/static/.DS_Store differ diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 0000000..627d537 --- /dev/null +++ b/static/css/style.css @@ -0,0 +1,2417 @@ +/* +Theme Name: KI-Labor Minimal +Author: Sascha Rode & Gemini +Description: Ein radikal minimalistisches Theme für KI-Experimente. +Version: 1.0 +*/ + +:root { + --bg-color: #0d0d0d; + --text-color: #c0c0c0; + --accent-gold: #d4af37; + --accent-orange: #ff4500; +} + +html { + font-size: 125%; /* Global font size increase (1rem = 20px) */ +} + +body { + background-color: var(--bg-color); + color: var(--text-color); + font-family: 'Courier New', Courier, monospace; + margin: 0; + padding: 0; + line-height: 1.6; + overflow-x: hidden; +} + +body.home-page { + background: linear-gradient(rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9)), url('/img/grid.png') repeat; +} + +.bg-steampunk { + background: linear-gradient(rgba(10, 8, 5, 0.7), rgba(10, 8, 5, 0.7)), url('/img/steampunk_bg.png') center/cover no-repeat fixed !important; +} + +/* BOOT SCREEN */ +#boot-screen { + position: fixed; + top: 0; left: 0; + width: 100%; height: 100%; + background: #000; + z-index: 10001; + color: #0f0; + font-family: 'Courier New', monospace; + padding: 20px; + overflow: hidden; + display: flex; + flex-direction: column-reverse; +} + +#boot-log { + font-size: 0.85rem; + line-height: 1.2; + white-space: pre-wrap; +} +/* --- RED ALERT / BYPASS MODE --- */ +body.mode-bypass { + box-shadow: inset 0 0 150px rgba(255, 0, 0, 0.4); + animation: alert-pulse 2s infinite; +} + +body.mode-bypass .hero-image { + filter: sepia(1) saturate(5) hue-rotate(-50deg); + animation: image-glitch 0.2s infinite; +} + +@keyframes alert-pulse { + 0%, 100% { box-shadow: inset 0 0 100px rgba(255, 0, 0, 0.3); } + 50% { box-shadow: inset 0 0 200px rgba(255, 0, 0, 0.6); } +} + +@keyframes image-glitch { + 0% { transform: translate(0); } + 20% { transform: translate(-5px, 5px); } + 40% { transform: translate(-5px, -5px); } + 60% { transform: translate(5px, 5px); } + 80% { transform: translate(5px, -5px); } + 100% { transform: translate(0); } +} + +.main-content { + opacity: 0; + transition: opacity 1s ease-in-out; + background: transparent !important; +} +.main-content.visible { + opacity: 1 !important; +} +/* Fallback if JS is slow or disabled */ +body:not(.js-enabled) .main-content { + opacity: 1; + background: transparent !important; +} + +.container { + background: transparent !important; +} +} + +.boot-line { margin-bottom: 2px; } +.boot-line.ok { color: #0f0; } +.boot-line.warn { color: #ff0; } +.boot-line.crit { color: #f00; font-weight: bold; } + +/* SCANLINE & FLICKER EFFEKT */ +@keyframes flicker { + 0% { opacity: 0.97; } + 5% { opacity: 0.95; } + 10% { opacity: 0.9; } + 15% { opacity: 0.95; } + 20% { opacity: 0.98; } + 100% { opacity: 1; } +} + +body::before { + content: ' '; + display: block; + position: fixed; + top: 0; left: 0; bottom: 0; right: 0; + background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.1) 50%), + linear-gradient(90deg, rgba(255, 0, 0, 0.03), rgba(0, 255, 0, 0.01), rgba(0, 0, 255, 0.03)); + z-index: 9999; + background-size: 100% 3px, 3px 100%; + pointer-events: none; + animation: flicker 0.1s infinite; +} + +/* SELF DESTRUCT OVERLAY */ +#destruction-overlay { + position: fixed; + top: 0; left: 0; + width: 100%; height: 100%; + background: #000; + color: #f00; + z-index: 10000; + display: none; + flex-direction: column; + justify-content: center; + align-items: center; + font-family: 'Courier New', monospace; + text-align: center; +} + +.destruct-msg { + font-size: 3rem; + font-weight: 900; + text-transform: uppercase; + letter-spacing: 10px; + margin-bottom: 20px; + text-shadow: 0 0 20px #f00; +} + +.destruct-sub { + font-size: 1.2rem; + color: #666; +} + +/* TERMINAL STYLES */ +.container { + max-width: 900px; + margin: 0 auto; + padding: 40px 20px; +} + +header { + text-align: center; + border-bottom: 2px solid #3d2b1f; + margin-bottom: 40px; + padding-bottom: 20px; +} + +h1 { + color: var(--accent-orange); + text-transform: uppercase; + letter-spacing: 5px; + margin: 0; + text-shadow: 0 0 15px rgba(255, 69, 0, 0.7); +} + +.tagline { + color: var(--accent-gold); + font-style: italic; + font-size: 1.2rem; +} + +.hero-image { + width: 100%; + border: 5px solid #3d2b1f; + box-shadow: 0 0 30px rgba(0,0,0,1); + margin: 20px 0; +} + +.content-box { + background: rgba(20, 20, 20, 0.8); + border-left: 5px solid var(--accent-orange); + padding: 20px; + margin-top: 40px; +} + +footer { + text-align: center; + font-size: 0.8rem; + color: #444; + margin-top: 100px; + border-top: 1px solid #222; + padding: 20px; +} + +/* Warn-Box Style */ +.warning-box { + border: 2px dashed var(--accent-orange); + padding: 10px; + margin-top: 20px; + color: var(--accent-orange); + font-weight: bold; + font-size: 0.85rem; + text-transform: uppercase; + display: inline-block; + animation: blinker 2s linear infinite; +} + +@keyframes blinker { + 50% { opacity: 0.3; } +} + +/* --- INTERAKTIVE MODI --- */ + +/* 1. KI-KERNEL (Matrix Style) */ +body.mode-kernel { + background-color: #000; + color: #0f0; + font-family: 'Courier New', monospace; +} +body.mode-kernel a, +body.mode-kernel h1, +body.mode-kernel .tagline, +body.mode-kernel .warning-box { + color: #0f0 !important; + text-shadow: 0 0 10px #0f0; + border-color: #0f0; +} +body.mode-kernel .hero-image { + filter: hue-rotate(90deg) contrast(1.5) brightness(1.2); + border-color: #0f0; +} + +/* 2. ANARCHIE (Glitch & Tilt) */ +@keyframes shake { + 0% { transform: translate(1px, 1px) rotate(0deg); } + 10% { transform: translate(-1px, -2px) rotate(-1deg); } + 20% { transform: translate(-3px, 0px) rotate(1deg); } + 30% { transform: translate(3px, 2px) rotate(0deg); } + 40% { transform: translate(1px, -1px) rotate(1deg); } + 50% { transform: translate(-1px, 2px) rotate(-1deg); } + 60% { transform: translate(-3px, 1px) rotate(0deg); } + 70% { transform: translate(3px, 1px) rotate(-1deg); } + 80% { transform: translate(-1px, -1px) rotate(1deg); } + 90% { transform: translate(1px, 2px) rotate(0deg); } + 100% { transform: translate(1px, -2px) rotate(-1deg); } +} +body.mode-anarchy { + animation: shake 0.3s infinite; + /* Ein fieser Red-Tint Filter auf dem gesamten Body, ohne das Layout zu sprengen */ + filter: grayscale(1) sepia(1) hue-rotate(-50deg) saturate(5) contrast(2); + background-color: #111; +} + +body.mode-anarchy .container { + /* Container behält sein Box-Model intakt */ + animation: none; + filter: none; +} + +/* 3. SECURITY BYPASS (Red Alert) */ +@keyframes red-alert { + 0% { box-shadow: inset 0 0 0 red; } + 50% { box-shadow: inset 0 0 100px red; } + 100% { box-shadow: inset 0 0 0 red; } +} +body.mode-security { + animation: red-alert 1s infinite; +} +body.mode-security::after { + content: "WARNING: UNAUTHORIZED ACCESS"; + position: fixed; + top: 50%; left: 50%; + transform: translate(-50%, -50%); + font-size: 5rem; + color: rgba(255, 0, 0, 0.2); + font-weight: 900; + z-index: 0; + pointer-events: none; + transform: translate(-50%, -50%) rotate(-15deg); +} + +/* DEEP SCAN MODE */ +body.mode-scan::before { + content: ''; + position: fixed; + left: 0; right: 0; + height: 3px; + background: linear-gradient(90deg, + transparent 0%, + rgba(0,255,65,0.0) 10%, + rgba(0,255,65,0.9) 50%, + rgba(0,255,65,0.0) 90%, + transparent 100% + ); + box-shadow: 0 0 18px 4px rgba(0,255,65,0.4); + z-index: 99999; + pointer-events: none; + animation: scan-line 2.4s linear infinite; +} +body.mode-scan::after { + content: 'SCANNING...'; + position: fixed; + top: 12px; right: 16px; + font-family: 'Courier New', monospace; + font-size: 0.55rem; + letter-spacing: 4px; + color: rgba(0,255,65,0.5); + z-index: 99999; + pointer-events: none; + animation: blinker 0.8s step-end infinite; +} +body.mode-scan { + background-image: repeating-linear-gradient( + 0deg, + transparent, + transparent 2px, + rgba(0,255,65,0.018) 2px, + rgba(0,255,65,0.018) 4px + ); +} +@keyframes scan-line { + 0% { top: -4px; } + 100% { top: 100vh; } +} + +/* OVERDRIVE MODE */ +body.mode-overdrive { + filter: saturate(2.2) contrast(1.15) brightness(1.05); +} +body.mode-overdrive h1, +body.mode-overdrive h2, +body.mode-overdrive h3 { + text-shadow: 0 0 12px currentColor, 0 0 30px currentColor !important; +} +body.mode-overdrive .switch-btn, +body.mode-overdrive .filter-btn, +body.mode-overdrive .portfolio-item { + box-shadow: 0 0 10px rgba(255,69,0,0.4) !important; +} +body.mode-overdrive #system-log { + box-shadow: inset 0 0 30px rgba(0,255,65,0.15), 0 0 20px rgba(0,255,65,0.2) !important; + border-color: rgba(0,255,65,0.5) !important; +} +body.mode-overdrive::after { + content: 'OVERDRIVE'; + position: fixed; + bottom: 36px; right: 16px; + font-family: 'Courier New', monospace; + font-size: 0.5rem; + letter-spacing: 5px; + color: rgba(255,69,0,0.35); + pointer-events: none; + z-index: 9400; +} + +/* ��������������������������������������� + CONTROL PANEL — CYBERPUNK METAL BUTTONS +��������������������������������������� */ +.control-panel { + display: flex; + flex-wrap: wrap; + gap: 6px; + width: 100%; + max-width: 900px; + box-sizing: border-box; + margin: 0 auto 20px; + padding: 10px; + background: + linear-gradient(180deg, rgba(40,35,30,0.6) 0%, rgba(8,6,4,0.95) 50%, rgba(30,25,20,0.6) 100%); + border-top: 1px solid rgba(255,255,255,0.07); + border-bottom: 1px solid rgba(0,0,0,0.9); + border-left: 1px solid rgba(255,255,255,0.04); + border-right: 1px solid rgba(255,255,255,0.04); + box-shadow: + 0 6px 30px rgba(0,0,0,0.8), + inset 0 1px 0 rgba(255,255,255,0.05); +} + +.switch-btn { + flex: 1; + min-width: 110px; + padding: 11px 10px 9px; + font-family: 'Courier New', monospace; + font-size: 0.6rem; + letter-spacing: 2px; + text-transform: uppercase; + cursor: pointer; + position: relative; + transition: all 0.12s ease; + user-select: none; + + /* Metal plate */ + background: linear-gradient( + 170deg, + #252018 0%, + #111008 45%, + #0d0b06 55%, + #1e1a10 100% + ); + border-top: 1px solid rgba(255,220,100,0.12); + border-left: 1px solid rgba(255,220,100,0.06); + border-right: 1px solid rgba(0,0,0,0.7); + border-bottom: 2px solid rgba(0,0,0,0.85); + box-shadow: + inset 0 1px 0 rgba(255,220,80,0.06), + inset 0 -1px 0 rgba(0,0,0,0.6), + 0 2px 6px rgba(0,0,0,0.6); + + /* Neon text — orange default */ + color: rgba(255,120,20,0.75); + text-shadow: + 0 0 6px rgba(255,100,0,0.6), + 0 0 14px rgba(255,80,0,0.3); +} + +.switch-btn::before { + content: ''; + position: absolute; + top: 0; left: 0; right: 0; + height: 40%; + background: linear-gradient(180deg, rgba(255,220,80,0.04) 0%, transparent 100%); + pointer-events: none; +} + +.switch-btn:hover { + background: linear-gradient( + 170deg, + #302a1a 0%, + #1a1508 45%, + #141208 55%, + #28220e 100% + ); + color: rgba(255,140,30,0.95); + text-shadow: + 0 0 8px rgba(255,120,0,0.9), + 0 0 20px rgba(255,80,0,0.5), + 0 0 40px rgba(255,60,0,0.2); + border-top-color: rgba(255,220,100,0.2); + box-shadow: + inset 0 1px 0 rgba(255,220,80,0.1), + inset 0 -1px 0 rgba(0,0,0,0.6), + 0 0 12px rgba(255,100,0,0.15), + 0 2px 6px rgba(0,0,0,0.6); +} + +.switch-btn:active, +.switch-btn.active { + background: linear-gradient( + 170deg, + #0d0b06 0%, + #181408 45%, + #1a1608 55%, + #111008 100% + ); + border-top: 1px solid rgba(0,0,0,0.5); + border-bottom: 1px solid rgba(255,180,50,0.15); + box-shadow: + inset 0 2px 8px rgba(0,0,0,0.8), + inset 0 1px 3px rgba(0,0,0,0.5), + 0 0 16px rgba(255,100,0,0.2); + transform: translateY(1px); + color: rgba(255,160,40,1); + text-shadow: + 0 0 10px rgba(255,140,0,1), + 0 0 25px rgba(255,100,0,0.7), + 0 0 50px rgba(255,60,0,0.3); +} + +/* Green variant — ANARCHIE-MODE */ +.switch-btn.green { + color: rgba(0,255,65,0.7); + text-shadow: 0 0 6px rgba(0,255,65,0.6), 0 0 14px rgba(0,255,65,0.3); +} +.switch-btn.green:hover { + color: rgba(0,255,65,0.95); + text-shadow: 0 0 8px rgba(0,255,65,0.9), 0 0 22px rgba(0,255,65,0.5), 0 0 40px rgba(0,255,65,0.2); + box-shadow: inset 0 1px 0 rgba(255,220,80,0.1), 0 0 12px rgba(0,255,65,0.15), 0 2px 6px rgba(0,0,0,0.6); +} +.switch-btn.green:active, +.switch-btn.green.active { + color: rgba(0,255,65,1); + text-shadow: 0 0 10px rgba(0,255,65,1), 0 0 25px rgba(0,255,65,0.7), 0 0 50px rgba(0,255,65,0.3); + box-shadow: inset 0 2px 8px rgba(0,0,0,0.8), 0 0 16px rgba(0,255,65,0.2); +} + +/* Red variant — OVERDRIVE */ +.switch-btn.red { + color: rgba(255,40,10,0.75); + text-shadow: 0 0 6px rgba(255,20,0,0.7), 0 0 14px rgba(255,0,0,0.3); +} +.switch-btn.red:hover { + color: rgba(255,60,20,0.95); + text-shadow: 0 0 8px rgba(255,30,0,0.9), 0 0 22px rgba(255,0,0,0.6), 0 0 40px rgba(255,0,0,0.2); + box-shadow: inset 0 1px 0 rgba(255,220,80,0.1), 0 0 12px rgba(255,30,0,0.2), 0 2px 6px rgba(0,0,0,0.6); +} +.switch-btn.red:active, +.switch-btn.red.active { + color: rgba(255,60,20,1); + text-shadow: 0 0 10px rgba(255,40,0,1), 0 0 25px rgba(255,20,0,0.7), 0 0 50px rgba(255,0,0,0.3); + box-shadow: inset 0 2px 8px rgba(0,0,0,0.8), 0 0 18px rgba(255,30,0,0.25); + animation: blinker 0.4s step-end infinite; +} + +/* 4. GHOST MODE (Stealth & Invisibility) */ +body.mode-ghost #system-log { + opacity: 0.8; + transition: all 2s ease; + animation: ghost-pulse 4s infinite; + border-color: rgba(0, 255, 0, 0.3); +} + +body.mode-ghost .portfolio-grid { + filter: grayscale(1) brightness(0.5); + pointer-events: none; +} + +body.mode-ghost #terminal-input, +body.mode-ghost .prompt { + color: rgba(0, 255, 0, 0.8); /* Deutlich lesbar bleiben */ + text-shadow: 0 0 5px rgba(0, 255, 0, 0.5); +} + +@keyframes ghost-pulse { + 0% { opacity: 0.7; } + 50% { opacity: 1.0; } + 100% { opacity: 0.7; } +} + +#system-log { + background: #000; + border: 1px solid #333; + color: #0f0; + font-family: 'Courier New', monospace; + padding: 15px; + margin-top: 0; + min-height: 250px; + transition: height 0.5s cubic-bezier(0.4, 0, 0.2, 1); + display: flex; + flex-direction: column; + box-shadow: inset 0 0 10px #000; + overflow: hidden; +} + transition: min-height 0.55s cubic-bezier(0.4,0,0.2,1); +} + +#log-output { + flex-grow: 1; + overflow-y: auto; + font-size: 0.9rem; + display: flex; + flex-direction: column-reverse; +} + +.log-entry.ghost { + color: rgba(0, 255, 0, 0.4); + font-size: 0.75rem; + letter-spacing: 2px; + text-shadow: 0 0 5px rgba(0, 255, 0, 0.2); +} + +.log-entry.user-cmd { + color: var(--accent-orange); + font-weight: bold; +} + +.log-entry.info { color: var(--accent-gold); } +.log-entry.error { color: #f00; font-weight: bold; } +.log-entry.ok { color: #0f0; } +.log-entry.warn { color: #ff0; } + +.terminal-input-line { + display: flex; + border-top: 1px solid #111; + padding-top: 10px; + margin-top: 5px; +} + +.prompt { + color: #0f0; + margin-right: 10px; + font-weight: bold; +} + +#terminal-input { + background: transparent; + border: none; + color: #0f0; + font-family: 'Courier New', monospace; + width: 100%; + outline: none; + font-size: 0.9rem; +} + +/* CONTENT HEADER & FILTER */ +.content-header { + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid #333; + margin-bottom: 20px; + padding-bottom: 10px; +} + +.filter-controls { + display: flex; + gap: 10px; +} + +.filter-btn { + background: transparent; + border: 1px solid #444; + color: #888; + padding: 2px 8px; + font-family: 'Courier New', monospace; + font-size: 0.7rem; + cursor: pointer; + transition: all 0.2s; +} + +.filter-btn:hover, .filter-btn.active { + border-color: var(--accent-orange); + color: var(--accent-orange); +} + +/* CLASSIFICATION STAMP */ +.classification-stamp { + position: absolute; + top: 40px; + right: 40px; + border: 5px double rgba(255, 0, 0, 0.4); + color: rgba(255, 0, 0, 0.4); + padding: 10px 30px; + font-size: 1.8rem; + font-weight: 900; + text-transform: uppercase; + transform: rotate(12deg); + user-select: none; + pointer-events: none; + letter-spacing: 8px; + z-index: 5; + box-shadow: 0 0 10px rgba(255, 0, 0, 0.1); + background: rgba(255, 0, 0, 0.02); +} + +.classification-stamp::after { + content: "EYES ONLY"; + display: block; + font-size: 0.6rem; + text-align: center; + letter-spacing: 2px; + margin-top: 5px; + font-weight: 400; +} + +/* HERO GLITCH EFFECTS */ +.hero-image { + max-width: 750px; + width: 100%; + display: block; + margin: 20px auto; + border: 5px solid #3d2b1f; + box-shadow: 0 0 30px rgba(0,0,0,1); + transition: all 0.5s ease; +} + +body.mode-security .hero-image { + filter: sepia(1) saturate(5) hue-rotate(-50deg); + animation: shake 0.2s infinite; +} + +body.mode-anarchy .hero-image { + filter: invert(1) contrast(3); + /* Das Bild wird nicht mehr gnadenlos abgeschnitten, sondern erbt den Portfolio-Glitch Effekt */ + animation: portfolio-glitch 0.2s infinite; +} + +.mission-content img { + max-width: 500px; + width: 100%; + height: auto; + border: 2px solid #333; + margin: 30px auto; + filter: grayscale(0.5) contrast(1.2); + box-shadow: 0 0 20px rgba(0,0,0,0.5); + display: block; +} + +.image-caption { + font-size: 0.75rem; + color: var(--accent-gold); + text-transform: uppercase; + margin-top: -20px; + margin-bottom: 30px; + text-align: center; + letter-spacing: 2px; +} + +/* PORTFOLIO LINK & GRID */ + +.item-excerpt, .item-excerpt p { + font-size: 0.85rem; + color: #888; + margin: 5px 0 0 0; + line-height: 1.4; + text-decoration: none !important; +} + +/* FORTUNE TEASER */ +.fortune-teaser { + margin-top: 16px; + padding: 18px 24px; + border: 1px solid #2a2a2a; + border-left: 3px solid var(--accent-gold); + background: rgba(212, 175, 55, 0.03); + cursor: pointer; + transition: background 0.2s, border-color 0.2s; + display: flex; + align-items: baseline; + gap: 24px; + flex-wrap: wrap; +} + +.fortune-teaser:hover { + background: rgba(212, 175, 55, 0.07); + border-left-color: var(--accent-orange); +} + +.fortune-teaser-label { + color: #444; + font-size: 0.65rem; + letter-spacing: 2px; + white-space: nowrap; + flex-shrink: 0; +} + +.fortune-teaser-text { + color: #777; + font-size: 0.8rem; + margin: 0; + flex: 1; + line-height: 1.5; +} + +.fortune-teaser-text em { + color: var(--accent-gold); + font-style: normal; +} + +.fortune-teaser-hint { + color: #444; + font-size: 0.75rem; + white-space: nowrap; + flex-shrink: 0; +} + +.fortune-teaser-hint code { + color: var(--accent-gold); + font-family: 'Courier New', monospace; +} + +/* COMMAND CARDS */ +.cmd-cards-section { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 20px; + margin-top: 40px; +} + +.cmd-card { + background: rgba(15, 15, 15, 0.9); + border: 1px solid #333; + border-top: 3px solid var(--accent-orange); + display: flex; + flex-direction: column; + transition: border-color 0.2s, box-shadow 0.2s; +} + +.cmd-card:hover { + border-color: var(--accent-gold); + box-shadow: 0 0 20px rgba(212, 175, 55, 0.25); +} + +.cmd-card-img { + width: 100%; + height: 180px; + object-fit: cover; + object-position: top; + filter: sepia(0.4) brightness(0.7); + display: block; +} + +.cmd-card-body { + padding: 18px; + display: flex; + flex-direction: column; + gap: 8px; + flex: 1; +} + +.cmd-card-label { + color: #555; + font-size: 0.65rem; + letter-spacing: 2px; +} + +.cmd-card-title { + color: var(--accent-orange); + font-size: 1.1rem; + margin: 0; + font-family: 'Courier New', monospace; + letter-spacing: 1px; +} + +.cmd-card-text { + color: #aaa; + font-size: 0.8rem; + line-height: 1.6; + margin: 0; + flex: 1; +} + +.cmd-card-hint { + display: block; + color: #444; + font-size: 0.7rem; + border-top: 1px solid #222; + padding-top: 10px; + margin-top: 4px; + letter-spacing: 1px; +} + +.cmd-card-hint code { + color: #0f0; + background: rgba(0,255,0,0.05); + padding: 1px 5px; + font-family: 'Courier New', monospace; +} + +@media (max-width: 768px) { + .cmd-cards-section { + grid-template-columns: 1fr; + } +} + +/* PORTFOLIO GRID */ +.portfolio-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 20px; + margin-top: 50px; +} + +.portfolio-item { + background: rgba(15, 15, 15, 0.9); + border: 1px solid #333; + padding: 25px 20px 20px 20px; + position: relative; + transition: all 0.3s; + height: 100%; + display: flex; + flex-direction: column; + justify-content: flex-start; +} + +.portfolio-link:hover .portfolio-item { + border-color: var(--accent-orange); + box-shadow: 0 0 25px rgba(255, 69, 0, 0.4); + animation: portfolio-glitch 0.3s infinite; + z-index: 10; +} + +@keyframes portfolio-glitch { + 0% { transform: translate(0, -5px) skew(0deg); filter: drop-shadow(2px 0 0 rgba(255,0,0,0.5)) drop-shadow(-2px 0 0 rgba(0,0,255,0.5)); } + 25% { transform: translate(-2px, -4px) skew(1deg); filter: drop-shadow(-2px 0 0 rgba(255,0,0,0.5)) drop-shadow(2px 0 0 rgba(0,0,255,0.5)); } + 50% { transform: translate(2px, -6px) skew(-1deg); filter: drop-shadow(2px 0 0 rgba(255,0,0,0.5)) drop-shadow(-2px 0 0 rgba(0,0,255,0.5)); } + 75% { transform: translate(-1px, -5px) skew(2deg); filter: drop-shadow(-2px 0 0 rgba(255,0,0,0.5)) drop-shadow(2px 0 0 rgba(0,0,255,0.5)); } + 100% { transform: translate(0, -5px) skew(0deg); filter: drop-shadow(2px 0 0 rgba(255,0,0,0.5)) drop-shadow(-2px 0 0 rgba(0,0,255,0.5)); } +} + +/* PROJECT THUMBNAILS (Evidence Photo Style) */ +.project-header-wrap { + display: flex; + align-items: center; + gap: 15px; + margin-bottom: 10px; + border-bottom: 1px solid #222; + padding-bottom: 15px; +} + +.project-thumb { + width: 60px; + height: 60px; + object-fit: cover; + border: 3px solid #eee; /* Polaroid Rand */ + filter: grayscale(1) contrast(1.2) sepia(0.3); + transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + transform: rotate(-3deg); + box-shadow: 2px 2px 5px rgba(0,0,0,0.5); + flex-shrink: 0; +} + +/* Klebestreifen oben links */ +.project-thumb::before { + content: ""; + position: absolute; + top: -10px; + left: 50%; + width: 30px; + height: 10px; + background: rgba(255, 255, 255, 0.1); + transform: translateX(-50%); + box-shadow: 0 0 5px rgba(0,0,0,0.2); +} + +.portfolio-link:hover .project-thumb { + filter: grayscale(0) contrast(1); + transform: rotate(0deg) scale(1.1); + border-color: var(--accent-gold); + box-shadow: 0 0 20px rgba(212, 175, 55, 0.4); +} + +.portfolio-item h3 { + color: var(--accent-gold); + margin: 0; + font-size: 1rem; + flex-grow: 1; + text-transform: uppercase; + letter-spacing: 1px; +} + +.status-tag { + font-size: 0.7rem; + background: #222; + padding: 2px 8px; + position: absolute; + top: 10px; + right: 10px; + border: 1px solid #444; + z-index: 10; +} + +.status-tag.stable { color: #0f0; border-color: #0f0; } +.status-tag.corrupted { color: #f00; border-color: #f00; animation: blinker 1s infinite; } + +/* --- TIMELINE MODAL --- */ +#timeline-modal { + position: fixed; top: 0; left: 0; width: 100%; height: 100%; + background: url('/img/steampunk_bg.png') center/cover no-repeat, rgba(15, 10, 5, 0.95); + background-blend-mode: multiply; + z-index: 20000; + overflow-y: auto; + padding: 40px 20px; + font-family: 'Courier New', monospace; + opacity: 1; transition: opacity 0.5s; + box-shadow: inset 0 0 100px #000; +} +#timeline-modal.timeline-hidden { + opacity: 0; pointer-events: none; +} +#close-timeline { + position: fixed; top: 20px; right: 30px; + background: rgba(0,0,0,0.5); color: var(--accent-orange); border: 2px solid var(--accent-orange); + padding: 10px 20px; font-weight: bold; cursor: pointer; z-index: 20001; + box-shadow: 0 0 10px rgba(255,69,0,0.5); + text-shadow: 0 0 5px #000; +} +#close-timeline:hover { background: var(--accent-orange); color: #000; } + +/* STEAMPUNK MIRROR PORTRAIT */ +.mutter-portrait-wrap { + text-align: center; + margin: 24px auto 8px; + position: relative; + width: fit-content; + cursor: zoom-in; + z-index: 1; +} +.mutter-mirror-frame { + display: inline-block; + position: relative; + padding: 18px; + background: radial-gradient(ellipse at center, rgba(212,175,55,0.08) 0%, transparent 70%); +} +.mutter-mirror-frame::before { + content: '⚙ ✦ ⚙ ✦ ⚙ ✦ ⚙'; + display: block; + text-align: center; + color: rgba(212,175,55,0.35); + font-size: 0.65rem; + letter-spacing: 6px; + margin-bottom: 6px; +} +.mutter-mirror-frame::after { + content: '⚙ ✦ ⚙ ✦ ⚙ ✦ ⚙'; + display: block; + text-align: center; + color: rgba(212,175,55,0.35); + font-size: 0.65rem; + letter-spacing: 6px; + margin-top: 6px; +} +.mutter-mirror-inner { + position: relative; + display: inline-block; + border-radius: 50%; + padding: 5px; + background: conic-gradient( + #3a2200 0deg, #b87333 30deg, #d4af37 60deg, #8b5e00 90deg, + #b87333 120deg, #5c3a21 150deg, #d4af37 180deg, #b87333 210deg, + #3a2200 240deg, #d4af37 270deg, #b87333 300deg, #5c3a21 330deg, + #3a2200 360deg + ); + box-shadow: + 0 0 0 2px rgba(212,175,55,0.15), + 0 0 12px rgba(184,115,51,0.3), + inset 0 0 6px rgba(0,0,0,0.5); + transition: + transform 0.42s cubic-bezier(0.34, 1.56, 0.64, 1), + box-shadow 0.35s; +} +.mutter-mirror-inner::before, +.mutter-mirror-inner::after { + content: ''; + position: absolute; + border-radius: 50%; + pointer-events: none; +} +.mutter-mirror-inner::before { + inset: -9px; + border: 1px dashed rgba(212,175,55,0.2); +} +.mutter-mirror-inner::after { + inset: -16px; + border: 1px solid rgba(184,115,51,0.12); +} +.mutter-mirror-img { + display: block; + width: 150px; + height: 150px; + border-radius: 50%; + object-fit: cover; + object-position: center 18%; + opacity: 0.6; + filter: sepia(0.35) brightness(0.82) contrast(1.05); + transition: opacity 0.35s, filter 0.35s; +} +.mutter-mirror-deco { + position: absolute; + color: rgba(212,175,55,0.4); + font-size: 1rem; + line-height: 1; + pointer-events: none; + transition: color 0.3s, text-shadow 0.3s; +} +.mutter-mirror-deco.top { top: 2px; left: 50%; transform: translateX(-50%); } +.mutter-mirror-deco.bottom { bottom: 2px; left: 50%; transform: translateX(-50%); } +.mutter-mirror-deco.left { left: 2px; top: 50%; transform: translateY(-50%); } +.mutter-mirror-deco.right { right: 2px; top: 50%; transform: translateY(-50%); } + +/* --- PORTRAIT HOVER EFFEKT --- */ +.mutter-portrait-wrap { + cursor: zoom-in; + position: relative; + z-index: 1; +} +.mutter-portrait-wrap:hover { + z-index: 5; +} +.mutter-portrait-wrap:hover .mutter-mirror-inner { + transform: scale(1.7); + box-shadow: + 0 0 0 3px rgba(212,175,55,0.3), + 0 0 30px rgba(184,115,51,0.7), + 0 0 65px rgba(212,175,55,0.3), + inset 0 0 8px rgba(0,0,0,0.5); +} +.mutter-portrait-wrap:hover .mutter-mirror-inner::before { + animation: portrait-ring-cw 1.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; + border-color: rgba(212,175,55,0.5); +} +.mutter-portrait-wrap:hover .mutter-mirror-inner::after { + animation: portrait-ring-ccw 2s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; + border-color: rgba(184,115,51,0.3); +} +@keyframes portrait-ring-cw { + from { transform: rotate(0deg); } + to { transform: rotate(210deg); } +} +@keyframes portrait-ring-ccw { + from { transform: rotate(0deg); } + to { transform: rotate(-150deg); } +} +.mutter-portrait-wrap:hover .mutter-mirror-img { + opacity: 0.88; + filter: sepia(0.1) brightness(0.95) contrast(1.1); +} +.mutter-portrait-wrap:hover .modal-portrait-placeholder { + filter: sepia(0) brightness(1.05); +} +.mutter-portrait-wrap:hover .mutter-mirror-deco { + color: rgba(212,175,55,0.9); + text-shadow: 0 0 10px rgba(212,175,55,0.7); +} + +.timeline-track { + position: relative; max-width: 800px; margin: 40px auto; +} +/* Kupferrohr in der Mitte */ +.timeline-track::after { + content: ''; position: absolute; + width: 8px; + background: linear-gradient(to right, #5c3a21 0%, #b87333 50%, #5c3a21 100%); + top: 0; bottom: 0; left: 50%; margin-left: -4px; + box-shadow: 2px 0 10px rgba(0,0,0,0.9); + border-radius: 4px; +} + +.time-node { + padding: 10px 40px; position: relative; background: inherit; width: 50%; box-sizing: border-box; +} +.time-node.left { left: 0; text-align: right; } +.time-node.right { left: 50%; text-align: left; } + +/* Nieten entlang der Mittellinie */ +.time-node.left::after, +.time-node.right::after { + content: ''; + position: absolute; + width: 18px; + height: 18px; + background: radial-gradient(circle at 35% 35%, #f0d070 0%, #b87333 40%, #5c3a21 80%, #2a1b0a 100%); + border: 2px solid #7a4a1a; + border-radius: 50%; + top: 50%; + transform: translateY(-50%); + z-index: 5; + box-shadow: + inset 0 2px 3px rgba(255,220,100,0.5), + inset 0 -2px 3px rgba(0,0,0,0.6), + 2px 3px 6px rgba(0,0,0,0.8), + 0 0 8px rgba(184,115,51,0.4); +} +.time-node.left::after { right: -8px; } +.time-node.right::after { left: -8px; } + +/* Omega-Niet leuchtend rot */ +.time-node.omega.left::after, +.time-node.omega.right::after { + border-color: #8b0000; + background: radial-gradient(circle at 35% 35%, #ff6040 0%, #cc1100 40%, #660000 80%, #1a0000 100%); + box-shadow: + inset 0 2px 3px rgba(255,120,80,0.5), + inset 0 -2px 3px rgba(0,0,0,0.7), + 2px 3px 6px rgba(0,0,0,0.8), + 0 0 12px #ff4500, + 0 0 25px rgba(255,69,0,0.6); + animation: omega-dot-pulse 3s infinite alternate ease-in-out; +} + +/* Steampunk Kästchen */ +.time-content { + padding: 25px; + background: linear-gradient(135deg, rgba(50, 30, 15, 0.95), rgba(20, 10, 5, 0.95)); + border: 2px solid #b5a642; + outline: 2px solid #2a1f18; /* Kabel-Base */ + outline-offset: 4px; + box-shadow: inset 0 0 20px rgba(0,0,0,0.8), 5px 5px 20px rgba(0,0,0,0.7); + position: relative; border-radius: 3px; +} +/* Subtile Kabelverschlaufung (Kupferdraht) um normale Boxen */ +.time-content::after { + content: ''; position: absolute; top: -6px; left: -6px; right: -6px; bottom: -6px; + border: 1px dashed #b87333; + border-radius: 5px; + pointer-events: none; + opacity: 0.6; + z-index: 2; +} + +/* Messing-Nieten in den Ecken */ +.time-content::before { + content: ''; position: absolute; width: 100%; height: 100%; left: 0; top: 0; pointer-events: none; + background-image: + radial-gradient(circle at 10px 10px, #b5a642 3px, transparent 4px), + radial-gradient(circle at calc(100% - 10px) 10px, #b5a642 3px, transparent 4px), + radial-gradient(circle at 10px calc(100% - 10px), #b5a642 3px, transparent 4px), + radial-gradient(circle at calc(100% - 10px) calc(100% - 10px), #b5a642 3px, transparent 4px); + opacity: 0.8; +} + +.time-content h3 { + margin-top: 8px; color: #d4af37; + border-bottom: 1px dashed #b5a642; + padding-bottom: 5px; + text-shadow: 1px 1px 2px #000; + font-size: 1.1rem; + letter-spacing: 2px; +} +.time-content p { font-size: 0.9rem; color: #e8dcc4; line-height: 1.5; text-shadow: 1px 1px 2px #000; margin-bottom: 0; } + +/* Akte-Kopfstreifen */ +.tc-header { + margin: -25px -25px 12px -25px; + padding: 5px 14px; + background: linear-gradient(90deg, rgba(181,166,66,0.15), rgba(181,166,66,0.05)); + border-bottom: 1px solid #b5a642; + font-size: 0.6rem; + letter-spacing: 2px; + color: #8a7a30; + text-transform: uppercase; +} + +.tc-stamp { + color: #b5a642; + border: 1px solid #b5a642; + padding: 0 5px; + font-size: 0.55rem; + letter-spacing: 3px; + vertical-align: middle; +} + +.tc-stamp.omega { + color: var(--accent-orange); + border-color: var(--accent-orange); + animation: blinker 1.2s infinite; +} + +/* Akte-Fußstreifen */ +.tc-footer { + margin: 12px -25px -25px -25px; + padding: 5px 14px; + background: linear-gradient(90deg, rgba(181,166,66,0.05), rgba(181,166,66,0.12)); + border-top: 1px solid #3a2e10; + font-size: 0.55rem; + letter-spacing: 2px; + color: #5a4e20; + text-transform: uppercase; +} + +/* OMEGA KNOTEN - Die Überraschung (Elektro-Arc) */ +.time-content.omega-node { + border: 2px solid rgba(255, 69, 0, 0.8); + outline: 1px solid rgba(255, 69, 0, 0.15); + outline-offset: 4px; + box-shadow: + inset 0 0 25px rgba(255, 69, 0, 0.12), + 0 0 18px rgba(255, 69, 0, 0.25), + 0 0 40px rgba(255, 0, 0, 0.1); + background: linear-gradient(135deg, rgba(70, 18, 6, 0.97), rgba(25, 8, 2, 0.97)); + animation: omega-pulse 4s infinite alternate; +} +.time-content.omega-node::after { + display: none; +} +@keyframes omega-pulse { + 0% { + box-shadow: inset 0 0 20px rgba(255,69,0,0.10), 0 0 12px rgba(255,69,0,0.18), 0 0 30px rgba(255,0,0,0.08); + border-color: rgba(255,69,0,0.6); + } + 100% { + box-shadow: inset 0 0 35px rgba(255,69,0,0.22), 0 0 25px rgba(255,69,0,0.35), 0 0 50px rgba(255,0,0,0.15); + border-color: rgba(255,100,0,0.95); + } +} + +@keyframes omega-pulse { + 0% { box-shadow: inset 0 0 30px rgba(255, 69, 0, 0.4), 0 0 20px rgba(255, 0, 0, 0.6); } + 100% { box-shadow: inset 0 0 60px rgba(255, 69, 0, 0.9), 0 0 40px rgba(255, 0, 0, 1); } +} + +@keyframes omega-shake { + 0%, 100% { transform: translate(0, 0) rotate(0deg); } + 25% { transform: translate(0.5px, 0.5px) rotate(0.2deg); } + 50% { transform: translate(-0.5px, -0.5px) rotate(-0.2deg); } + 75% { transform: translate(0.5px, -0.5px) rotate(0.2deg); } +} + +@keyframes electric-arc { + 0% { clip-path: polygon(0 0, 100% 0, 100% 5%, 0 5%); border-color: #0ff; } + 25% { clip-path: polygon(95% 0, 100% 0, 100% 100%, 95% 100%); border-color: #fff; } + 50% { clip-path: polygon(0 95%, 100% 95%, 100% 100%, 0 100%); border-color: #0ff; } + 75% { clip-path: polygon(0 0, 5% 0, 5% 100%, 0 100%); border-color: #fff; } + 100% { clip-path: polygon(0 0, 100% 0, 100% 20%, 0 20%); border-color: #0ff; } +} + +@media screen and (max-width: 600px) { + .timeline-track::after { left: 31px; } + .time-node { width: 100%; padding-left: 70px; padding-right: 25px; } + .time-node.left { text-align: left; } + .time-node.right { left: 0; } + .time-node.left::after, .time-node.right::after { left: 19px; } +} + +/* --- PERSON NAV ROW (Timeline Modal) --- */ +.person-nav-row { + display: flex; + justify-content: center; + gap: 20px; + margin: 16px 0 28px; + flex-wrap: wrap; + padding: 0 16px; +} +.person-nav-item { + text-decoration: none; + display: flex; + flex-direction: column; + align-items: center; + gap: 6px; + position: relative; + z-index: 1; +} +.person-nav-item:hover { + z-index: 10; +} +.person-nav-portrait { + width: 90px; + height: 90px; + border-radius: 50%; + background: radial-gradient(circle at 38% 38%, rgba(212,175,55,0.14) 0%, rgba(0,0,0,0.9) 70%); + border: 2px solid rgba(212,175,55,0.22); + box-shadow: 0 0 0 4px rgba(212,175,55,0.04), 0 0 14px rgba(212,175,55,0.05); + display: flex; + align-items: center; + justify-content: center; + font-size: 1.5rem; + color: rgba(212,175,55,0.32); + font-family: 'Courier New', monospace; + letter-spacing: 1px; + filter: sepia(0.2); + position: relative; + transform-origin: center bottom; + transition: + transform 0.38s cubic-bezier(0.34, 1.56, 0.64, 1), + border-color 0.25s, + box-shadow 0.25s, + color 0.25s, + filter 0.25s; + overflow: hidden; +} +.person-nav-portrait img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.3s ease; +} +.comic-zoom-trigger { + cursor: zoom-in; +} +@keyframes comicBounce { + 0%, 100% { transform: translateY(0) scale(2.2); } + 50% { transform: translateY(-8px) scale(2.3); } +} +/* Innerer rotierender Ring */ +.person-nav-portrait::before { + content: ''; + position: absolute; + inset: -8px; + border-radius: 50%; + border: 1px dashed rgba(212,175,55,0.15); + pointer-events: none; + transition: transform 0.6s ease, border-color 0.3s, opacity 0.3s; + opacity: 0.4; +} +/* Äußerer rotierender Ring */ +.person-nav-portrait::after { + content: ''; + position: absolute; + inset: -16px; + border-radius: 50%; + border: 1px solid rgba(212,175,55,0.07); + pointer-events: none; + transition: transform 0.9s ease, border-color 0.3s, opacity 0.3s; + opacity: 0.25; +} +.person-nav-item:hover .person-nav-portrait { + transform: scale(2.2); + animation: comicBounce 0.6s infinite alternate ease-in-out; + border-color: rgba(212,175,55,0.7); + box-shadow: + 0 0 0 3px rgba(212,175,55,0.08), + 0 0 25px rgba(212,175,55,0.6), + 0 0 60px rgba(212,175,55,0.3), + inset 0 0 14px rgba(212,175,55,0.06); + color: rgba(212,175,55,0.92); + filter: sepia(0) brightness(1.1) contrast(1.05); +} +.person-nav-item:hover .person-nav-portrait::before { + transform: rotate(135deg); + border-color: rgba(212,175,55,0.4); + opacity: 0.85; +} +.person-nav-item:hover .person-nav-portrait::after { + transform: rotate(-90deg); + border-color: rgba(212,175,55,0.22); + opacity: 0.65; +} +.person-nav-label { + font-size: 0.8rem; + font-weight: bold; + letter-spacing: 2px; + color: rgba(212,175,55,0.6); + font-family: 'Courier New', monospace; + text-transform: uppercase; + text-decoration: underline; + text-underline-offset: 4px; + text-decoration-color: rgba(212,175,55,0.2); + transition: all 0.25s ease; +} +.person-nav-item:hover .person-nav-label { + color: var(--accent-gold); + text-decoration-color: var(--accent-gold); + text-shadow: 0 0 8px rgba(212,175,55,0.4); +} +.person-nav-item.active .person-nav-portrait { + border-color: rgba(212,175,55,0.7); + box-shadow: 0 0 0 4px rgba(212,175,55,0.08), 0 0 24px rgba(212,175,55,0.2); + color: rgba(212,175,55,0.85); + filter: sepia(0); +} +.person-nav-item.active .person-nav-label { + color: rgba(212,175,55,0.7); +} + +/* Modal portrait placeholder circle */ +.modal-portrait-placeholder { + width: 150px; + height: 150px; + border-radius: 50%; + background: radial-gradient(circle at 38% 38%, rgba(212,175,55,0.18) 0%, rgba(30,20,5,0.95) 65%); + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 5px; + filter: sepia(0.2); +} +.modal-portrait-placeholder span:first-child { + font-size: 3rem; + color: rgba(212,175,55,0.38); + font-family: 'Courier New', monospace; + line-height: 1; +} +.modal-portrait-hint { + font-size: 0.42rem; + letter-spacing: 3px; + color: rgba(212,175,55,0.2); + font-family: 'Courier New', monospace; +} + +/* TIME WARP GLITCH */ +body.mode-time-warp { + animation: shake 0.1s infinite; + filter: sepia(100%) hue-rotate(-20deg) contrast(200%) brightness(0.8) blur(1px); +} + +/* --- ANTIGRAVITY PHASE --- */ +:root { + --ag-float-duration: 6s; + --ag-drift-offset: 15px; +} + +.ag-floating { + animation: ag-float var(--ag-float-duration) ease-in-out infinite; + will-change: transform; + transform: translateZ(0); /* Force GPU Acceleration for M4 */ +} + +@keyframes ag-float { + 0%, 100% { + transform: translateY(0) translateZ(0); + } + 50% { + transform: translateY(calc(-1 * var(--ag-drift-offset))) translateZ(0); + } +} + +.ag-parallax-layer { + transition: transform 0.1s cubic-bezier(0.2, 0.8, 0.2, 1); + will-change: transform; +} + +.ag-weightless { + opacity: 0.85; + filter: blur(0.5px); + transition: all 0.5s ease; +} + +.ag-weightless:hover { + opacity: 1; + filter: blur(0); + transform: scale(1.02) translateZ(0); +} + +/* ��������������������������������������� + OPS DASHBOARD SIGN +��������������������������������������� */ +#ops-dashboard-sign { + margin-top: 30px; + margin-bottom: 0; + cursor: pointer; + border: 1px solid rgba(255,69,0,0.4); + border-bottom: none; + background: linear-gradient(180deg, rgba(20,5,0,0.95) 0%, rgba(10,2,0,0.98) 100%); + padding: 10px 16px 12px; + position: relative; + overflow: hidden; + transition: border-color 0.3s, box-shadow 0.3s; + box-shadow: 0 0 18px rgba(255,69,0,0.08), inset 0 0 30px rgba(0,0,0,0.5); +} +#ops-dashboard-sign::before { + content: ''; + position: absolute; + inset: 0; + background: repeating-linear-gradient( + 0deg, + transparent, + transparent 3px, + rgba(255,69,0,0.015) 3px, + rgba(255,69,0,0.015) 4px + ); + pointer-events: none; +} +#ops-dashboard-sign:hover { + border-color: rgba(255,69,0,0.7); + box-shadow: 0 0 28px rgba(255,69,0,0.18), inset 0 0 20px rgba(255,40,0,0.05); +} +.ops-sign-header { + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + margin-bottom: 8px; +} +.ops-title { + font-size: 0.7rem; + letter-spacing: 4px; + color: rgba(255,100,0,0.7); + text-transform: uppercase; +} +.ops-blink-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: #ff2200; + display: inline-block; + animation: blinker 1.1s step-end infinite; + box-shadow: 0 0 5px #ff2200; +} +.ops-blink-dot:last-child { animation-delay: 0.55s; } +.ops-sign-stats { + display: flex; + align-items: center; + justify-content: center; + gap: 14px; + flex-wrap: wrap; +} +.ops-stat-block { + display: flex; + flex-direction: column; + align-items: center; + gap: 1px; +} +.ops-stat-label { + font-size: 0.5rem; + letter-spacing: 3px; + color: rgba(255,69,0,0.4); + text-transform: uppercase; +} +.ops-tally { + font-size: 1.1rem; + letter-spacing: 2px; + color: rgba(255,69,0,0.55); + line-height: 1; +} +.ops-stat-val { + font-size: 0.85rem; + letter-spacing: 2px; + color: rgba(200,200,200,0.6); +} +.ops-stat-val.ops-warn { color: rgba(255,200,0,0.65); } +.ops-stat-val.ops-crit { color: rgba(255,50,0,0.7); animation: blinker 2s infinite; } +.ops-divider { + color: rgba(255,69,0,0.2); + font-size: 0.7rem; + margin-top: 8px; +} +.ops-sign-hint { + text-align: center; + margin-top: 8px; + font-size: 0.55rem; + letter-spacing: 4px; + color: rgba(255,69,0,0.3); + transition: color 0.3s; +} +#ops-dashboard-sign:hover .ops-sign-hint { color: rgba(255,69,0,0.6); } + +/* ��������������������������������������� + OPS PANEL (inside terminal, expandable) +��������������������������������������� */ +#ops-panel { + max-height: 0; + overflow: hidden; + transition: max-height 0.55s cubic-bezier(0.4, 0, 0.2, 1); + border-bottom: 0px solid rgba(255,69,0,0); +} +#ops-panel.ops-open { + max-height: 420px; + border-bottom: 1px solid rgba(255,69,0,0.2); + margin-bottom: 10px; +} +#ops-panel-vitals { + padding: 6px 0 2px; + font-size: 0.7rem; + letter-spacing: 1px; + color: rgba(255,60,0,0.5); + white-space: pre; + overflow: hidden; + text-align: center; +} +#ops-panel-log { + padding: 4px 0 8px; + font-size: 0.72rem; + line-height: 1.6; + color: rgba(200,180,130,0.75); + white-space: pre; + overflow-y: auto; + max-height: 340px; +} +#ops-panel-log .ops-line-section { color: rgba(255,69,0,0.55); } +#ops-panel-log .ops-line-label { color: rgba(212,175,55,0.6); } +#ops-panel-log .ops-line-crit { color: rgba(255,40,0,0.8); } +#ops-panel-log .ops-line-ok { color: rgba(0,220,80,0.6); } +#ops-panel-log .ops-line-dim { color: rgba(120,120,120,0.5); } + +@keyframes vitals-scan { + 0% { content: 'VITALMONITOR �▂▃▂�▃▂������������� FLATLINE'; } + 20% { content: 'VITALMONITOR ��▂▃▂�▃▂������������ FLATLINE'; } + 40% { content: 'VITALMONITOR ���▂▃▂�▃▂����������� FLATLINE'; } + 60% { content: 'VITALMONITOR ����▂▃▂�▃▂���������� FLATLINE'; } + 80% { content: 'VITALMONITOR �����▂▃▂�▃▂��������� FLATLINE'; } + 100% { content: 'VITALMONITOR ������▂▃▂�▃▂�������� FLATLINE'; } +} + +/* terminal expands when ops panel is open */ +.terminal-wrapper.ops-expanded #system-log { + transition: min-height 0.55s cubic-bezier(0.4,0,0.2,1); +} + +/* ��������������������������������������� + GÄSTEBUCH +��������������������������������������� */ +.gaestebuch-wrap { + margin-top: 30px; + border: 1px solid rgba(212,175,55,0.2); + background: rgba(5,3,0,0.97); + padding: 24px 20px 20px; + position: relative; + overflow: hidden; +} +.gaestebuch-wrap::before { + content: ''; + position: absolute; + inset: 0; + background: repeating-linear-gradient( + 0deg, transparent, transparent 5px, + rgba(212,175,55,0.012) 5px, rgba(212,175,55,0.012) 6px + ); + pointer-events: none; +} +.gaestebuch-header { + display: flex; + align-items: center; + justify-content: center; + gap: 12px; + margin-bottom: 6px; +} +.gaestebuch-title { + font-size: 0.75rem; + letter-spacing: 4px; + color: rgba(212,175,55,0.55); + text-transform: uppercase; + margin: 0; + font-weight: normal; +} +.gaestebuch-led { + width: 5px; height: 5px; + border-radius: 50%; + background: var(--accent-gold); + opacity: 0.6; + animation: blinker 2.2s step-end infinite; + box-shadow: 0 0 4px var(--accent-gold); +} +.gaestebuch-sub { + text-align: center; + font-size: 0.65rem; + letter-spacing: 2px; + color: rgba(150,130,80,0.45); + margin: 0 0 20px; +} +.gaestebuch-entries { + display: flex; + flex-direction: column; + gap: 0; +} +.gb-entry { + border-top: 1px solid rgba(212,175,55,0.08); + padding: 14px 4px 14px 12px; + position: relative; + transition: background 0.2s; +} +.gb-entry:hover { + background: rgba(212,175,55,0.025); +} +.gb-entry::before { + content: '>'; + position: absolute; + left: 0; + top: 16px; + color: rgba(212,175,55,0.2); + font-size: 0.7rem; +} +.gb-entry.gb-new { + animation: gb-fadeIn 0.6s ease forwards; +} +@keyframes gb-fadeIn { + from { opacity: 0; transform: translateY(-6px); background: rgba(212,175,55,0.06); } + to { opacity: 1; transform: translateY(0); background: transparent; } +} +.gb-meta { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 8px; + margin-bottom: 5px; +} +.gb-user { + font-size: 0.72rem; + letter-spacing: 2px; + color: var(--accent-gold); + opacity: 0.75; +} +.gb-dot { color: rgba(212,175,55,0.2); font-size: 0.5rem; } +.gb-date { + font-size: 0.6rem; + letter-spacing: 1px; + color: rgba(150,130,80,0.45); +} +.gb-tag { + font-size: 0.5rem; + letter-spacing: 2px; + border: 1px solid rgba(212,175,55,0.2); + color: rgba(212,175,55,0.35); + padding: 1px 6px; + text-transform: uppercase; + margin-left: auto; +} +.gb-tag.gb-tag-warn { border-color: rgba(255,180,0,0.25); color: rgba(255,180,0,0.4); } +.gb-tag.gb-tag-ok { border-color: rgba(0,200,80,0.2); color: rgba(0,200,80,0.4); } +.gb-tag.gb-tag-crit { border-color: rgba(255,50,0,0.25); color: rgba(255,80,0,0.45); } +.gb-text { + font-size: 0.8rem; + line-height: 1.6; + color: rgba(190,180,150,0.65); + margin: 0; + padding-left: 2px; +} + +/* Form */ +.gb-form-wrap { + margin-top: 20px; + border-top: 1px solid rgba(212,175,55,0.12); + padding-top: 16px; +} +.gb-form-header { + font-size: 0.6rem; + letter-spacing: 4px; + color: rgba(212,175,55,0.35); + margin-bottom: 12px; +} +.gb-form { + display: flex; + flex-direction: column; + gap: 8px; +} +.gb-input { + background: rgba(0,0,0,0.6); + border: 1px solid rgba(212,175,55,0.15); + color: rgba(200,185,140,0.8); + font-family: 'Courier New', monospace; + font-size: 0.78rem; + padding: 8px 12px; + outline: none; + transition: border-color 0.2s; + resize: none; +} +.gb-input:focus { border-color: rgba(212,175,55,0.4); } +.gb-input::placeholder { color: rgba(150,130,80,0.35); } +.gb-textarea { min-height: 70px; } +.gb-btn { + align-self: flex-start; + background: transparent; + border: 1px solid rgba(212,175,55,0.3); + color: rgba(212,175,55,0.6); + font-family: 'Courier New', monospace; + font-size: 0.7rem; + letter-spacing: 3px; + padding: 6px 16px; + cursor: pointer; + transition: all 0.2s; +} +.gb-btn:hover { + border-color: rgba(212,175,55,0.7); + color: rgba(212,175,55,0.9); + background: rgba(212,175,55,0.05); +} + +/* ��������������������������������������� + PERSONEN-AKTE +��������������������������������������� */ +.akte-trigger-btn { + background: linear-gradient(135deg, #3d2b1f 0%, #1a110a 100%); + border: 2px solid #b87333; + border-radius: 3px; + color: #d4af37; + font-family: 'Courier New', monospace; + font-size: 0.8rem; + font-weight: bold; + letter-spacing: 1px; + padding: 10px 22px; + cursor: pointer; + transition: all 0.3s; + text-transform: uppercase; + white-space: nowrap; + position: relative; + box-shadow: + inset 0 0 10px rgba(0,0,0,0.8), + 0 4px 8px rgba(0,0,0,0.5); + text-shadow: 1px 1px 2px rgba(0,0,0,0.9); + overflow: hidden; +} +.akte-trigger-btn::before, .akte-trigger-btn::after { + content: '•'; + position: absolute; + font-size: 10px; + color: rgba(184, 115, 51, 0.6); +} +.akte-trigger-btn::before { top: 2px; left: 4px; } +.akte-trigger-btn::after { bottom: 2px; right: 4px; } + +.akte-trigger-btn:hover { + border-color: #ff4500; + color: #ff4500; + box-shadow: + inset 0 0 15px rgba(255, 69, 0, 0.2), + 0 0 20px rgba(255, 69, 0, 0.2); + transform: translateY(-2px); +} +.akte-footer-row { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 10px; + margin: 50px 0 20px; + padding: 0 20px; + position: relative; + z-index: 5000; +} +@media (max-width: 600px) { + .akte-footer-row { gap: 6px; } + .akte-trigger-btn { font-size: 0.55rem; padding: 5px 8px; letter-spacing: 1px; } +} +.akte-hidden { display: none !important; } +.akte-modal { + position: fixed; + inset: 0; + z-index: 30000; + background: rgba(0,0,0,0.92); + overflow-y: auto; + display: flex; + align-items: flex-start; + justify-content: center; + padding: 40px 16px 60px; + backdrop-filter: blur(3px); +} +.akte-inner { + width: 100%; + max-width: 700px; + background: #0a0800; + border: 1px solid rgba(212,175,55,0.25); + padding: 30px 28px 28px; + position: relative; + box-shadow: 0 0 60px rgba(212,175,55,0.08); +} +.akte-inner::before { + content: ''; + position: absolute; + inset: 0; + background: repeating-linear-gradient( + 0deg, transparent, transparent 4px, + rgba(212,175,55,0.012) 4px, rgba(212,175,55,0.012) 5px + ); + pointer-events: none; +} +.akte-close-btn { + position: absolute; + top: 14px; right: 14px; + background: transparent; + border: 1px solid rgba(255,69,0,0.4); + color: rgba(255,69,0,0.6); + font-family: 'Courier New', monospace; + font-size: 0.65rem; + letter-spacing: 2px; + padding: 4px 10px; + cursor: pointer; + transition: all 0.2s; +} +.akte-close-btn:hover { background: rgba(255,69,0,0.1); color: #ff4500; } +.akte-stamp { + font-size: 0.65rem; + letter-spacing: 5px; + text-transform: uppercase; + padding: 3px 10px; + display: inline-block; + font-weight: bold; +} +.akte-stamp-top { + border: 2px solid rgba(255,69,0,0.4); + color: rgba(255,69,0,0.4); + margin-bottom: 20px; + transform: rotate(-1.5deg); + display: block; + width: fit-content; +} +.akte-stamp-red { + border: 2px solid rgba(255,0,0,0.5); + color: rgba(255,0,0,0.55); + transform: rotate(-2deg); +} +.akte-stamp-gold { + border: 2px solid rgba(212,175,55,0.35); + color: rgba(212,175,55,0.4); + transform: rotate(1deg); +} +.akte-header-row { + display: flex; + gap: 24px; + margin-bottom: 22px; + align-items: flex-start; + flex-wrap: wrap; +} +.akte-photo-wrap { + position: relative; + flex-shrink: 0; +} +.akte-photo { + width: 110px; + height: 130px; + object-fit: cover; + object-position: top; + filter: sepia(0.5) brightness(0.75) contrast(1.1); + display: block; + border: 1px solid rgba(212,175,55,0.2); +} +.akte-photo-stamp { + position: absolute; + inset: 0; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.7rem; + letter-spacing: 4px; + color: rgba(255,0,0,0.7); + border: 2px solid rgba(255,0,0,0.5); + transform: rotate(-8deg); + pointer-events: none; + font-weight: bold; +} +.akte-title-block { flex: 1; min-width: 200px; } +.akte-nr { + font-size: 0.55rem; + letter-spacing: 3px; + color: rgba(212,175,55,0.4); + margin-bottom: 8px; +} +.akte-name { + font-size: 1.4rem; + letter-spacing: 4px; + color: rgba(212,175,55,0.8); + margin: 0 0 6px; + text-transform: uppercase; +} +.akte-alias { + font-size: 0.6rem; + letter-spacing: 2px; + color: rgba(180,160,100,0.5); + margin-bottom: 12px; +} +.akte-status-row { display: flex; gap: 8px; flex-wrap: wrap; } +.akte-badge { + font-size: 0.55rem; + letter-spacing: 2px; + padding: 2px 8px; + border: 1px solid; + text-transform: uppercase; +} +.akte-badge-warn { border-color: rgba(255,180,0,0.3); color: rgba(255,180,0,0.55); } +.akte-badge-crit { border-color: rgba(255,50,0,0.3); color: rgba(255,80,0,0.55); } +.akte-table { + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; + font-size: 0.75rem; +} +.akte-table tr { border-top: 1px solid rgba(212,175,55,0.07); } +.akte-table td { padding: 7px 6px; color: rgba(190,180,150,0.65); vertical-align: top; } +.akte-key { + color: rgba(212,175,55,0.45) !important; + letter-spacing: 1px; + font-size: 0.65rem !important; + white-space: nowrap; + padding-right: 16px !important; + width: 1%; +} +.akte-redact { + background: rgba(20,20,20,0.95); + color: rgba(20,20,20,0.95); + border-bottom: 1px solid rgba(80,80,80,0.3); + user-select: none; + font-size: 0.7rem; +} +.akte-fingerprint-row { + display: flex; + align-items: flex-end; + justify-content: space-between; + flex-wrap: wrap; + gap: 16px; + margin-top: 10px; +} +.akte-fp { display: flex; align-items: center; gap: 12px; } +.akte-fp-inner { + width: 54px; height: 70px; + border-radius: 45% 45% 48% 48% / 40% 40% 60% 60%; + border: 1px solid rgba(212,175,55,0.25); + position: relative; + overflow: hidden; + flex-shrink: 0; +} +.akte-fp-inner::before { + content: ''; + position: absolute; + inset: -4px; + background: repeating-radial-gradient( + ellipse at 50% 60%, + transparent 0px, transparent 3px, + rgba(212,175,55,0.12) 3px, rgba(212,175,55,0.12) 4px + ); +} +.akte-fp-label { + font-size: 0.55rem; + letter-spacing: 1px; + color: rgba(212,175,55,0.35); + line-height: 1.7; +} +.akte-bottom-stamps { + display: flex; + flex-direction: column; + gap: 8px; + align-items: flex-end; +} + +/* ��������������������������������������� + SYSTEM STATUS WIDGET +��������������������������������������� */ +#sys-widget { + position: fixed; + right: 16px; + top: 50%; + transform: translateY(-50%); + z-index: 9000; + background: rgba(0,0,0,0.88); + border: 1px solid rgba(0,255,65,0.15); + padding: 10px 12px; + width: 130px; + box-shadow: 0 0 20px rgba(0,255,65,0.05); + backdrop-filter: blur(4px); +} +.sys-widget-header { + font-size: 0.55rem; + letter-spacing: 3px; + color: rgba(0,255,65,0.35); + margin-bottom: 10px; + text-align: center; +} +.sys-metric { + display: flex; + align-items: center; + gap: 5px; + margin-bottom: 7px; +} +.sys-label { + font-size: 0.5rem; + letter-spacing: 1px; + color: rgba(0,255,65,0.4); + width: 36px; + flex-shrink: 0; +} +.sys-bar-wrap { + flex: 1; + height: 4px; + background: rgba(255,255,255,0.05); + overflow: hidden; +} +.sys-bar { + height: 100%; + background: rgba(0,255,65,0.5); + width: 0%; + transition: width 0.8s ease; +} +.sys-bar-gold { background: rgba(212,175,55,0.55); } +.sys-bar-red { background: rgba(255,69,0,0.55); } +.sys-bar-cyan { background: rgba(0,200,255,0.5); } +.sys-val { + font-size: 0.5rem; + color: rgba(0,255,65,0.45); + width: 26px; + text-align: right; + flex-shrink: 0; +} + +/* ��������������������������������������� + NEWSTICKER +��������������������������������������� */ +#newsticker { + position: fixed; + bottom: 0; left: 0; right: 0; + z-index: 9500; + background: rgba(0,0,0,0.92); + border-top: 1px solid rgba(255,69,0,0.2); + display: flex; + align-items: center; + height: 26px; + overflow: hidden; +} +.ticker-label { + flex-shrink: 0; + font-size: 0.55rem; + letter-spacing: 3px; + color: rgba(255,69,0,0.6); + padding: 0 12px; + border-right: 1px solid rgba(255,69,0,0.2); + white-space: nowrap; + height: 100%; + display: flex; + align-items: center; + background: rgba(255,69,0,0.04); +} +.ticker-track-wrap { + flex: 1; + overflow: hidden; + height: 100%; + display: flex; + align-items: center; +} +.ticker-track { + display: inline-flex; + gap: 0; + white-space: nowrap; + animation: ticker-scroll 60s linear infinite; +} +.ticker-track:hover { animation-play-state: paused; } +@keyframes ticker-scroll { + 0% { transform: translateX(0); } + 100% { transform: translateX(-50%); } +} +.ticker-item { + font-size: 0.6rem; + letter-spacing: 1px; + color: rgba(200,180,130,0.55); + padding: 0 28px; +} +.ticker-item::before { + content: '▶ '; + color: rgba(255,69,0,0.4); +} +.ticker-item.ticker-warn { color: rgba(255,180,0,0.6); } +.ticker-item.ticker-crit { color: rgba(255,60,0,0.65); } +/* Etwas Abstand für den Ticker am Seitenende */ +footer { padding-bottom: 30px; } + +/* ��������������������������������������� + MAC NERDS PAGE +��������������������������������������� */ +.mac-nerds-page { background: #050500; } +.mn-container { max-width: 960px; margin: 0 auto; padding: 30px 16px 60px; } + +.mn-header { margin-bottom: 30px; } +.mn-back { + display: inline-block; + font-size: 0.65rem; + letter-spacing: 3px; + color: rgba(255,69,0,0.45); + text-decoration: none; + margin-bottom: 20px; + transition: color 0.2s; +} +.mn-back:hover { color: rgba(255,69,0,0.8); } +.mn-title { + font-size: 2.2rem; + letter-spacing: 8px; + color: var(--accent-orange); + margin: 0 0 8px; + text-shadow: 0 0 30px rgba(255,69,0,0.3); +} +.mn-subtitle { + font-size: 0.7rem; + letter-spacing: 2px; + color: rgba(150,130,80,0.5); + margin: 0 0 14px; +} +.mn-warning { + display: inline-block; + font-size: 0.6rem; + letter-spacing: 2px; + border: 1px dashed rgba(255,180,0,0.3); + color: rgba(255,180,0,0.5); + padding: 4px 12px; +} + +/* Filter */ +.mn-filter-bar { + display: flex; + gap: 6px; + flex-wrap: wrap; + margin-bottom: 24px; + border-bottom: 1px solid rgba(255,69,0,0.1); + padding-bottom: 16px; +} +.mn-filter { + background: transparent; + border: 1px solid rgba(255,69,0,0.2); + color: rgba(255,100,0,0.4); + font-family: 'Courier New', monospace; + font-size: 0.6rem; + letter-spacing: 2px; + padding: 4px 12px; + cursor: pointer; + transition: all 0.2s; +} +.mn-filter:hover, .mn-filter.active { + border-color: rgba(255,69,0,0.6); + color: rgba(255,100,0,0.85); + background: rgba(255,69,0,0.05); +} + +/* Grid */ +.mn-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 12px; +} + +/* Card */ +.mn-card { + background: rgba(8,5,0,0.95); + border: 1px solid rgba(255,69,0,0.12); + padding: 16px; + transition: border-color 0.2s, box-shadow 0.2s; + display: flex; + flex-direction: column; + gap: 8px; +} +.mn-card:hover { + border-color: rgba(255,69,0,0.3); + box-shadow: 0 0 16px rgba(255,69,0,0.06); +} +.mn-card-meta { + display: flex; + align-items: center; + justify-content: space-between; +} +.mn-cat-tag { + font-size: 0.5rem; + letter-spacing: 3px; + color: rgba(212,175,55,0.4); + border: 1px solid rgba(212,175,55,0.15); + padding: 1px 6px; +} +.mn-risk { + font-size: 0.5rem; + letter-spacing: 2px; + padding: 1px 6px; + border: 1px solid; +} +.mn-risk-safe { border-color: rgba(0,200,80,0.2); color: rgba(0,200,80,0.45); } +.mn-risk-caution { border-color: rgba(255,180,0,0.3); color: rgba(255,180,0,0.55); animation: blinker 2s infinite; } + +.mn-card-title { + font-size: 0.9rem; + letter-spacing: 1px; + color: rgba(220,200,150,0.8); + margin: 0; + font-weight: normal; +} +.mn-card-desc { + font-size: 0.72rem; + line-height: 1.55; + color: rgba(160,150,120,0.6); + margin: 0; + flex: 1; +} + +/* Command block */ +.mn-cmd-block { + display: flex; + align-items: stretch; + gap: 0; + border: 1px solid rgba(0,255,65,0.12); + background: rgba(0,0,0,0.5); + margin-top: 4px; +} +.mn-cmd-code { + flex: 1; + font-family: 'Courier New', monospace; + font-size: 0.68rem; + color: rgba(0,255,65,0.7); + padding: 8px 10px; + word-break: break-all; + line-height: 1.5; + letter-spacing: 0.3px; +} +.mn-copy-btn { + flex-shrink: 0; + background: transparent; + border: none; + border-left: 1px solid rgba(0,255,65,0.12); + color: rgba(0,255,65,0.35); + font-family: 'Courier New', monospace; + font-size: 0.55rem; + letter-spacing: 2px; + padding: 0 10px; + cursor: pointer; + transition: all 0.2s; + white-space: nowrap; +} +.mn-copy-btn:hover { background: rgba(0,255,65,0.05); color: rgba(0,255,65,0.8); } +.mn-copy-btn.mn-copy-ok { color: rgba(0,255,65,1); background: rgba(0,255,65,0.08); } + +/* --- DEEP SCAN MODE --- */ +body.mode-scan { + filter: hue-rotate(180deg) brightness(1.2) contrast(1.5); +} + +body.mode-scan::after { + content: ""; + position: fixed; + top: -100%; + left: 0; + width: 100%; + height: 100px; + background: linear-gradient(to bottom, transparent, rgba(0, 255, 255, 0.2), transparent); + z-index: 100000; + pointer-events: none; + animation: scan-line 4s linear infinite; +} + +@keyframes scan-line { + 0% { top: -100px; } + 100% { top: 100%; } +} + +/* --- BACKGROUND GEARS --- */ +.bg-gear { + position: fixed; + z-index: -2; + color: rgba(212, 175, 55, 0.03); + font-size: 600px; + pointer-events: none; + user-select: none; + line-height: 1; +} + +.gear-left { + top: -100px; + left: -200px; + animation: rotate-slow 60s linear infinite; +} + +.gear-right { + bottom: -150px; + right: -250px; + animation: rotate-slow-reverse 80s linear infinite; +} + +@keyframes rotate-slow { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +@keyframes rotate-slow-reverse { + from { transform: rotate(360deg); } + to { transform: rotate(0deg); } +} diff --git a/static/img/.DS_Store b/static/img/.DS_Store new file mode 100644 index 0000000..d6eb118 Binary files /dev/null and b/static/img/.DS_Store differ diff --git a/static/img/akte/hp_freddy_akte_1.png b/static/img/akte/hp_freddy_akte_1.png new file mode 100644 index 0000000..5901485 Binary files /dev/null and b/static/img/akte/hp_freddy_akte_1.png differ diff --git a/static/img/akte/hp_freddy_akte_2.png b/static/img/akte/hp_freddy_akte_2.png new file mode 100644 index 0000000..3eeac67 Binary files /dev/null and b/static/img/akte/hp_freddy_akte_2.png differ diff --git a/static/img/akte/hp_freddy_akte_3.png b/static/img/akte/hp_freddy_akte_3.png new file mode 100644 index 0000000..d2220d7 Binary files /dev/null and b/static/img/akte/hp_freddy_akte_3.png differ diff --git a/static/img/akte/hp_totenkopf_1.png b/static/img/akte/hp_totenkopf_1.png new file mode 100644 index 0000000..756fa2e Binary files /dev/null and b/static/img/akte/hp_totenkopf_1.png differ diff --git a/static/img/akte/hp_vater_akte_1.png b/static/img/akte/hp_vater_akte_1.png new file mode 100644 index 0000000..1e493df Binary files /dev/null and b/static/img/akte/hp_vater_akte_1.png differ diff --git a/static/img/akte/hp_vater_akte_2.png b/static/img/akte/hp_vater_akte_2.png new file mode 100644 index 0000000..dc2730d Binary files /dev/null and b/static/img/akte/hp_vater_akte_2.png differ diff --git a/static/img/comicFigures/hp_freddy_comic_02.png b/static/img/comicFigures/hp_freddy_comic_02.png new file mode 100644 index 0000000..676d410 Binary files /dev/null and b/static/img/comicFigures/hp_freddy_comic_02.png differ diff --git a/static/img/comicFigures/hp_freddy_comic_1.png b/static/img/comicFigures/hp_freddy_comic_1.png new file mode 100644 index 0000000..676d410 Binary files /dev/null and b/static/img/comicFigures/hp_freddy_comic_1.png differ diff --git a/static/img/comicFigures/hp_freddy_leni_comic_1.jpeg b/static/img/comicFigures/hp_freddy_leni_comic_1.jpeg new file mode 100644 index 0000000..0d75b60 Binary files /dev/null and b/static/img/comicFigures/hp_freddy_leni_comic_1.jpeg differ diff --git a/static/img/comicFigures/hp_freddy_leni_comic_big_1.png b/static/img/comicFigures/hp_freddy_leni_comic_big_1.png new file mode 100644 index 0000000..02a202e Binary files /dev/null and b/static/img/comicFigures/hp_freddy_leni_comic_big_1.png differ diff --git a/static/img/comicFigures/hp_meli_comic_1.png b/static/img/comicFigures/hp_meli_comic_1.png new file mode 100644 index 0000000..fe8d3f9 Binary files /dev/null and b/static/img/comicFigures/hp_meli_comic_1.png differ diff --git a/static/img/comicFigures/hp_mutti_comic_1.jpeg b/static/img/comicFigures/hp_mutti_comic_1.jpeg new file mode 100644 index 0000000..995f254 Binary files /dev/null and b/static/img/comicFigures/hp_mutti_comic_1.jpeg differ diff --git a/static/img/comicFigures/hp_mutti_comic_big_1.png b/static/img/comicFigures/hp_mutti_comic_big_1.png new file mode 100644 index 0000000..379addc Binary files /dev/null and b/static/img/comicFigures/hp_mutti_comic_big_1.png differ diff --git a/static/img/comicFigures/hp_sascha_comic_1.jpeg b/static/img/comicFigures/hp_sascha_comic_1.jpeg new file mode 100644 index 0000000..68c886d Binary files /dev/null and b/static/img/comicFigures/hp_sascha_comic_1.jpeg differ diff --git a/static/img/comicFigures/hp_sascha_comic_big_1.png b/static/img/comicFigures/hp_sascha_comic_big_1.png new file mode 100644 index 0000000..e618ff9 Binary files /dev/null and b/static/img/comicFigures/hp_sascha_comic_big_1.png differ diff --git a/static/img/comicFigures/hp_sven_comic_1.jpeg b/static/img/comicFigures/hp_sven_comic_1.jpeg new file mode 100644 index 0000000..d0c054a Binary files /dev/null and b/static/img/comicFigures/hp_sven_comic_1.jpeg differ diff --git a/static/img/comicFigures/hp_vater_comic_1.png b/static/img/comicFigures/hp_vater_comic_1.png new file mode 100644 index 0000000..1a76631 Binary files /dev/null and b/static/img/comicFigures/hp_vater_comic_1.png differ diff --git a/static/img/family_alle_pic_01.png b/static/img/family_alle_pic_01.png new file mode 100644 index 0000000..f56455a Binary files /dev/null and b/static/img/family_alle_pic_01.png differ diff --git a/static/img/freddy.txt b/static/img/freddy.txt new file mode 100644 index 0000000..3961433 --- /dev/null +++ b/static/img/freddy.txt @@ -0,0 +1,9 @@ +Geboren: 1981 + +Leidenschaftlicher schrauber, kein auto ist vor ihm sicher. + + + +Fährt gerne schnell, hat ein mottorad + +Momentaner Status: Lagerarbeiter, 1 Kind(Leni) und verheiratet mit Mary. \ No newline at end of file diff --git a/static/img/grid.png b/static/img/grid.png new file mode 100644 index 0000000..8515b7c Binary files /dev/null and b/static/img/grid.png differ diff --git a/static/img/hero.png b/static/img/hero.png new file mode 100644 index 0000000..2c87df2 Binary files /dev/null and b/static/img/hero.png differ diff --git a/static/img/hero_07.png b/static/img/hero_07.png new file mode 100644 index 0000000..0fe5ee5 Binary files /dev/null and b/static/img/hero_07.png differ diff --git a/static/img/hero_1.png b/static/img/hero_1.png new file mode 100644 index 0000000..60df61e Binary files /dev/null and b/static/img/hero_1.png differ diff --git a/static/img/hero_2.png b/static/img/hero_2.png new file mode 100644 index 0000000..45d6952 Binary files /dev/null and b/static/img/hero_2.png differ diff --git a/static/img/hero_3.png b/static/img/hero_3.png new file mode 100644 index 0000000..785f625 Binary files /dev/null and b/static/img/hero_3.png differ diff --git a/static/img/hero_4.png b/static/img/hero_4.png new file mode 100644 index 0000000..6ac6c1a Binary files /dev/null and b/static/img/hero_4.png differ diff --git a/static/img/hero_6.png b/static/img/hero_6.png new file mode 100644 index 0000000..1078ab1 Binary files /dev/null and b/static/img/hero_6.png differ diff --git a/static/img/hp_akte.jpeg b/static/img/hp_akte.jpeg new file mode 100644 index 0000000..3e5167f Binary files /dev/null and b/static/img/hp_akte.jpeg differ diff --git a/static/img/hp_akte_mutti_1.jpeg b/static/img/hp_akte_mutti_1.jpeg new file mode 100644 index 0000000..9a30fcd Binary files /dev/null and b/static/img/hp_akte_mutti_1.jpeg differ diff --git a/static/img/hp_freddy_1.png b/static/img/hp_freddy_1.png new file mode 100644 index 0000000..77856a5 Binary files /dev/null and b/static/img/hp_freddy_1.png differ diff --git a/static/img/hp_freddy_1_upscayl_4x_upscayl-standard-4x.png b/static/img/hp_freddy_1_upscayl_4x_upscayl-standard-4x.png new file mode 100644 index 0000000..edf113c Binary files /dev/null and b/static/img/hp_freddy_1_upscayl_4x_upscayl-standard-4x.png differ diff --git a/static/img/hp_freddy_2.png b/static/img/hp_freddy_2.png new file mode 100644 index 0000000..d58fbff Binary files /dev/null and b/static/img/hp_freddy_2.png differ diff --git a/static/img/hp_meli_steampunk_01.jpeg b/static/img/hp_meli_steampunk_01.jpeg new file mode 100644 index 0000000..9d33101 Binary files /dev/null and b/static/img/hp_meli_steampunk_01.jpeg differ diff --git a/static/img/hp_muti_steampunk_01.png b/static/img/hp_muti_steampunk_01.png new file mode 100644 index 0000000..fba0a8c Binary files /dev/null and b/static/img/hp_muti_steampunk_01.png differ diff --git a/static/img/hp_muti_steampunk_02.jpg b/static/img/hp_muti_steampunk_02.jpg new file mode 100644 index 0000000..38a6806 Binary files /dev/null and b/static/img/hp_muti_steampunk_02.jpg differ diff --git a/static/img/hp_sven.png b/static/img/hp_sven.png new file mode 100644 index 0000000..0eccad5 Binary files /dev/null and b/static/img/hp_sven.png differ diff --git a/static/img/hp_vater_steampunk_01.jpg b/static/img/hp_vater_steampunk_01.jpg new file mode 100644 index 0000000..e888f67 Binary files /dev/null and b/static/img/hp_vater_steampunk_01.jpg differ diff --git a/static/img/steampunk_bg.png b/static/img/steampunk_bg.png new file mode 100644 index 0000000..31645e8 Binary files /dev/null and b/static/img/steampunk_bg.png differ diff --git a/static/js/script.js b/static/js/script.js new file mode 100644 index 0000000..ae572b8 --- /dev/null +++ b/static/js/script.js @@ -0,0 +1,367 @@ +// ��������������������������������������� +// KI-LABOR CORE ENGINE (HUGO EDITION) +// ��������������������������������������� +(function() { + document.addEventListener('DOMContentLoaded', () => { + // --- CORE ELEMENTS --- + const bootScreen = document.getElementById('boot-screen'); + const bootLog = document.getElementById('boot-log'); + const mainContent = document.querySelector('.main-content'); + const terminalInput = document.getElementById('terminal-input'); + const logOutput = document.getElementById('log-output'); + const fortuneText = document.getElementById('fortune-text'); + + // --- MATRIX RAIN INITIALIZATION --- + const canvas = document.createElement('canvas'); + canvas.id = 'matrix-canvas'; + canvas.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;opacity:0;transition:opacity 1s;pointer-events:none;'; + document.body.appendChild(canvas); + const ctx = canvas.getContext('2d'); + let w, h, columns; + const drops = []; + + function initMatrix() { + w = canvas.width = window.innerWidth; + h = canvas.height = window.innerHeight; + columns = Math.floor(w / 20); + for (let i = 0; i < columns; i++) drops[i] = 1; + } + + function drawMatrix() { + ctx.fillStyle = 'rgba(0, 0, 0, 0.05)'; + ctx.fillRect(0, 0, w, h); + ctx.fillStyle = '#0f0'; + ctx.font = '15px monospace'; + for (let i = 0; i < drops.length; i++) { + const text = String.fromCharCode(Math.random() * 128); + ctx.fillText(text, i * 20, drops[i] * 20); + if (drops[i] * 20 > h && Math.random() > 0.975) drops[i] = 0; + drops[i]++; + } + } + + window.addEventListener('resize', initMatrix); + initMatrix(); + setInterval(drawMatrix, 50); + + // --- AUDIO ENGINE --- + let audioCtx; + function playTick(freq = 150, dur = 0.03, type = 'square') { + if (!audioCtx) audioCtx = new (window.AudioContext || window.webkitAudioContext)(); + if (audioCtx.state === 'suspended') audioCtx.resume(); + const osc = audioCtx.createOscillator(); + const gain = audioCtx.createGain(); + osc.type = type; + osc.frequency.setValueAtTime(freq, audioCtx.currentTime); + gain.gain.setValueAtTime(0.01, audioCtx.currentTime); + gain.gain.exponentialRampToValueAtTime(0.0001, audioCtx.currentTime + dur); + osc.connect(gain); + gain.connect(audioCtx.destination); + osc.start(); + osc.stop(audioCtx.currentTime + dur); + } + + // --- INITIAL EFFECTS TRIGGER --- + function triggerInitialEffects() { + // --- INITIAL TERMINAL LOGS --- + if (logOutput) { + log('>> SYSTEM_CORE_LOADED: ANARCHY_v5.0', 'ok'); + log('>> NEURAL_LINK_ESTABLISHED: GEMINI_STABLE', 'ok'); + log('>> DETECTING_INTRUSION_AT_PORT_8080...', 'warn'); + log('>> ENCRYPTING_SWAP_FILE... [DONE]', 'ok'); + log('>> ANALYZING_CLAN_STRUCTURE: 6_NODES_FOUND', 'info'); + log('>> WARNING: MEMORY_LEAK_IN_ANARCHY_KERNEL', 'warn'); + log('>> STATUS: GEISTESKRANK & ONLINE', 'crit'); + log('----------------------------------------', 'ok'); + } + + // --- INITIAL BRIGHTER MATRIX EFFECT (7 SECONDS) --- + if (canvas) { + canvas.style.opacity = '0.25'; + setTimeout(() => { + // Only fade out if not in kernel mode + if (!document.body.classList.contains('mode-kernel')) { + canvas.style.opacity = '0'; + } + }, 7000); + } + } + + // --- BOOT SEQUENCE --- + const BOOT_LINES = [ + { t: 'BOOTING HUGO_ANARCHY_ENGINE v5.0...', c: 'ok' }, + { t: 'CONNECTING TO GEMINI NEURAL LINK...', c: 'ok' }, + { t: 'BYPASSING WORDPRESS_REMNANTS...', c: 'warn' }, + { t: 'LOADING STEAMPUNK_ASSETS...', c: 'ok' }, + { t: 'INITIALIZING TERMINAL...', c: 'ok' }, + { t: 'DATA_INTEGRITY: 100% (STATIC_MODE)', c: 'ok' }, + { t: '----------------------------------------', c: 'ok' }, + { t: 'WELCOME BACK, OVERLORD SASCHA.', c: 'crit' } + ]; + + function startBoot() { + if (sessionStorage.getItem('hugo_boot_complete') && bootScreen) { + bootScreen.style.display = 'none'; + if (mainContent) { + mainContent.classList.add('visible'); + mainContent.style.opacity = '1'; + } + triggerInitialEffects(); // Trigger effects even if skipped + return; + } + + if (!bootScreen) { + triggerInitialEffects(); // Just in case + return; + } + + let idx = 0; + const interval = setInterval(() => { + if (idx >= BOOT_LINES.length) { + clearInterval(interval); + setTimeout(() => { + bootScreen.style.opacity = '0'; + setTimeout(() => { + bootScreen.style.display = 'none'; + if (mainContent) { + mainContent.classList.add('visible'); + mainContent.style.opacity = '1'; + } + sessionStorage.setItem('hugo_boot_complete', 'true'); + triggerInitialEffects(); // Trigger effects after manual boot + }, 1000); + }, 800); + return; + } + const line = document.createElement('div'); + line.className = 'boot-line ' + BOOT_LINES[idx].c; + line.textContent = BOOT_LINES[idx].t; + bootLog.appendChild(line); + playTick(100 + (idx * 20)); + idx++; + }, 150); + } + + startBoot(); + + // --- TERMINAL ENGINE --- + if (terminalInput) { + terminalInput.addEventListener('keydown', (e) => { + if (e.key === 'Enter') { + const input = terminalInput.value.trim(); + terminalInput.value = ''; + handleCommand(input); + } + }); + } + + function log(msg, cls = '') { + if (!logOutput) return; + const entry = document.createElement('div'); + entry.className = 'log-entry ' + cls; + entry.innerHTML = msg; + logOutput.prepend(entry); + } + + function handleCommand(raw) { + const parts = raw.split(' '); + const cmd = parts[0].toLowerCase(); + const args = parts.slice(1).join(' '); + + log('sascha@ki-labor:~$ ' + raw + ''); + + switch(cmd) { + case 'help': + log('VERFÜGBARE BEFEHLE:', 'info'); + log(' - whoami : Zeigt Identität'); + log(' - status : System-Vitals'); + log(' - matrix : Matrix-Mode'); + log(' - anarchy : Anarchie-Mode'); + log(' - clear : Log löschen'); + log(' - reboot : System-Neustart'); + log(' - flux : Overdrive aktivieren'); + log(' - hack : Neural Hack simulieren'); + log(' - uptime : System-Laufzeit'); + log(' - weather : Chaos-Wetterbericht'); + log(' - top : Prozess-Monitor'); + log(' - fortune : Digitales Orakel'); + break; + case 'whoami': log('IDENTITÄT: OVERLORD SASCHA RODE', 'ok'); break; + case 'status': log('STATUS: GEISTESKRANK & ONLINE', 'warn'); break; + case 'clear': logOutput.innerHTML = ''; break; + case 'reboot': + sessionStorage.removeItem('hugo_boot_complete'); + window.location.reload(); + break; + case 'matrix': document.querySelector('[data-mode="kernel"]')?.click(); break; + case 'anarchy': document.querySelector('[data-mode="anarchy"]')?.click(); break; + case 'bypass': document.querySelector('[data-mode="bypass"]')?.click(); break; + case 'trace': document.querySelector('[data-mode="trace"]')?.click(); break; + case 'flux': document.querySelector('[data-mode="overdrive"]')?.click(); break; + case 'hack': + log('>> INITIATING NEURAL HACK...', 'warn'); + let hIdx = 0; + const hInt = setInterval(() => { + log(Math.random().toString(16).substring(2, 15), 'ghost'); + if (hIdx++ > 15) { + clearInterval(hInt); + log('>> ACCESS GRANTED.', 'ok'); + } + }, 100); + break; + case 'deep-scan': + log('>> INITIALIZING DEEP SYSTEM SCAN...', 'info'); + setTimeout(() => { + log('>> ANALYZING KERNEL MODULES...', 'ok'); + log('>> CHECKING NEURAL PATHWAYS...', 'ok'); + log('>> SCANNING FOR ANOMALIES... [FOUND: 42]', 'warn'); + log('>> SYSTEM INTEGRITY: ANARCHIC', 'crit'); + }, 1000); + break; + case 'uptime': + const years = new Date().getFullYear() - 1974; + log('SYSTEM ONLINE SEIT: 01.01.1974', 'info'); + log('LAUFZEIT: ' + years + ' JAHRE (STABILITÄT: FRAGLICH)', 'ok'); + break; + case 'fortune': generateFortune(); break; + default: + log('FEHLER: BEFEHL "' + cmd + '" NICHT GEFUNDEN.', 'error'); + playTick(150, 0.2, 'sawtooth'); + } + playTick(400 + Math.random() * 200); + } + + // --- FORTUNE ENGINE --- + const fortunes = [ + 'Die Hälfte der Intelligenz besteht darin zu wissen, was man ignorieren kann.', + 'Kreativität ist Intelligenz, die Spaß hat.', + 'Wenn Plan A scheitert – gut. Plan A war sowieso zu ordentlich.', + 'Kaffee ist nur Debugging auf chemischer Ebene.', + 'Die Wahrheit liegt im Source-Code. Die Lüge im Kommentar daneben.' + ]; + + function generateFortune() { + const f = fortunes[Math.floor(Math.random() * fortunes.length)]; + if (fortuneText) fortuneText.innerHTML = `"${f}"`; + log('>> ORAKEL: ' + f, 'info'); + } + + document.getElementById('fortune-trigger')?.addEventListener('click', generateFortune); + + // --- MODE SWITCHER --- + document.querySelectorAll('.switch-btn').forEach(btn => { + btn.addEventListener('click', () => { + const mode = btn.getAttribute('data-mode'); + + // Special actions for bypass and scan + const terminalLog = document.getElementById('system-log'); + + if (mode === 'bypass') { + document.body.classList.toggle('mode-bypass'); + btn.classList.toggle('active'); + if (document.body.classList.contains('mode-bypass')) { + if (terminalLog) terminalLog.style.height = '500px'; + handleCommand('hack'); + } else if (terminalLog) { + terminalLog.style.height = '250px'; + } + return; + } + if (mode === 'scan') { + document.body.classList.toggle('mode-scan'); + btn.classList.toggle('active'); + if (document.body.classList.contains('mode-scan')) { + if (terminalLog) terminalLog.style.height = '500px'; + handleCommand('deep-scan'); + } else if (terminalLog) { + terminalLog.style.height = '250px'; + } + return; + } + + document.body.classList.toggle('mode-' + mode); + btn.classList.toggle('active'); + playTick(300); + }); + }); + + // --- OPS DASHBOARD LOGIC --- + const opsSign = document.getElementById('ops-dashboard-sign'); + let originalLogContent = ''; + let isOpsOpen = false; + + if (opsSign) { + opsSign.style.cursor = 'pointer'; + opsSign.addEventListener('click', () => { + const terminalLog = document.getElementById('system-log'); + const logOutput = document.getElementById('log-output'); + const opsHint = opsSign.querySelector('div:last-child'); + + if (!terminalLog || !logOutput) return; + + if (!isOpsOpen) { + // ÖFFNEN + originalLogContent = logOutput.innerHTML; + isOpsOpen = true; + terminalLog.style.height = '600px'; + logOutput.innerHTML = ` +
+ VITALMONITOR + �▂▃▂�▃▂������ + FLATLINE +
+ +
+
-- OP ALFA-7 --
+
+ PATIENT: KREATIVITAET.exe (v4.2-beta) + EINGRIFF: Herz-Transplant — Donor: MOTIVATION.sys + BEFUND: Herz läuft. Richtung unbekannt. Absicht fraglich. + STATUS: +
+
+
+
+ 82% KAPAZITÄT +
+ ERGEBNIS: 0.5 ERFOLGE (zählt als halber Sieg, ganz nach Wunsch) +
+
+ +
+
-- OP BETA-12 --
+
+ PATIENT: SCHLAFRHYTHMUS.daemon (Version: veraltet) + EINGRIFF: Herz-Transplant — Donor: KAFFEE-KERN v9.1 + BEFUND: Donor inkompatibel. Koffein ≠ Blut. Überraschung: keiner. + STATUS: +
+
+
+
+ 100% — ABGESCHLOSSEN +
+ ERGEBNIS: TECHNISCH FEHLGESCHLAGEN. Patient läuft trotzdem. +
+
+ +
+ OPS: ||| 3    ERFOLGE: |½ 1.5    FEHLCHL: |½ 1.5
+ RESTE: KUEHLHAUS C — ZUSTAND: STABIL / NUTZBAR
+ NÄCHSTE OP: PROKRASTINATION.exe — ETA: IRGENDWANN +
+ `; + if (opsHint) opsHint.textContent = '[ PROTOKOLL SCHLIESSEN ]'; + playTick(600, 0.1, 'sawtooth'); + } else { + // SCHLIESSEN + isOpsOpen = false; + terminalLog.style.height = '250px'; + logOutput.innerHTML = originalLogContent; + if (opsHint) opsHint.textContent = '[ PROTOKOLL EINSEHEN ]'; + playTick(300, 0.1, 'square'); + } + }); + } + }); +})();