Auto-backup: 2026-03-29 23:00

This commit is contained in:
Sascha 2026-03-29 23:00:02 +02:00
parent 9611e3ee3e
commit d2903732b6
11 changed files with 589 additions and 98 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 943 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 MiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 136 KiB

View file

@ -110,10 +110,31 @@ function ki_labor_init_content() {
'status' => 'corrupted', 'status' => 'corrupted',
'label' => 'ÜBERTAKTET', 'label' => 'ÜBERTAKTET',
'thumb' => $hero_2_url 'thumb' => $hero_2_url
),
array(
'title' => '> weather',
'content' => '<h3>STATUS: CHAOS-LEVEL ANALYSE</h3><p>Das Wetter? Irrelevant. Was zählt ist der Chaos-Level in deinen Schaltkreisen. Dieser Scanner analysiert atmosphärische Destabilisierung, Koffein-Sättigung und die Wahrscheinlichkeit eines kreativen Ausbruchs. Meteorologen hassen diesen Trick.</p><p><strong>Anwendung:</strong><br>Eingabe im Terminal: <code>weather</code></p>',
'status' => 'stable',
'label' => 'PROTOKOLL #001',
'thumb' => get_template_directory_uri() . '/assets/img/hero_07.png'
),
array(
'title' => '> top',
'content' => '<h3>STATUS: PROZESS-ÜBERWACHUNG</h3><p>Welche dämonischen Prozesse laufen gerade im Hintergrund? KREATIVITAET.exe frisst 94% CPU. PROKRASTINATION.app wurde erfolgreich suspendiert. SELBSTZWEIFEL.exe ist – endlich – terminiert. Ein Blick in den Maschinenraum des Overlords.</p><p><strong>Anwendung:</strong><br>Eingabe im Terminal: <code>top</code></p>',
'status' => 'stable',
'label' => 'PROTOKOLL #002',
'thumb' => get_template_directory_uri() . '/assets/img/hp_muti_steampunk_01.png'
),
array(
'title' => '> uptime',
'content' => '<h3>STATUS: SYSTEM-LAUFZEIT</h3><p>Das System läuft seit 1974. Ungeplant. Ohne Handbuch. Mit minimaler Wartung und maximalem Kaffee-Input. Aktuelle Laufzeit in Tagen, Stunden, Minuten – live berechnet. Stabilität: unberechenbar. Status: noch online. Irgendwie.</p><p><strong>Anwendung:</strong><br>Eingabe im Terminal: <code>uptime</code></p>',
'status' => 'stable',
'label' => 'PROTOKOLL #003',
'thumb' => get_template_directory_uri() . '/assets/img/hp_vater_steampunk_01.jpg'
) )
); );
$version = 'v5'; // Bump to trigger re-insert if needed $version = 'v6'; // Bump to trigger re-insert if needed
if (!get_option('ki_labor_content_gen_' . $version)) { if (!get_option('ki_labor_content_gen_' . $version)) {
foreach ($projects as $project) { foreach ($projects as $project) {
$existing_post = get_page_by_title($project['title'], OBJECT, 'post'); $existing_post = get_page_by_title($project['title'], OBJECT, 'post');

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 835 KiB

View file

@ -90,37 +90,6 @@
<span class="fortune-teaser-hint">&gt; <code>fortune</code> &nbsp;—&nbsp; falls du es wagen willst.</span> <span class="fortune-teaser-hint">&gt; <code>fortune</code> &nbsp;—&nbsp; falls du es wagen willst.</span>
</div> </div>
<!-- TERMINAL COMMAND CARDS -->
<div class="cmd-cards-section">
<div class="cmd-card">
<img src="<?php echo get_template_directory_uri(); ?>/assets/img/hero_07.png" class="cmd-card-img" alt="Weather Scan">
<div class="cmd-card-body">
<span class="cmd-card-label">[ PROTOKOLL #001 ]</span>
<h3 class="cmd-card-title">&gt; weather</h3>
<p class="cmd-card-text">Das Wetter? Irrelevant. Was zählt ist der Chaos-Level in deinen Schaltkreisen. Dieser Scanner analysiert atmosphärische Destabilisierung, Koffein-Sättigung und die Wahrscheinlichkeit eines kreativen Ausbruchs. Meteorologen hassen diesen Trick.</p>
<span class="cmd-card-hint">Eingabe im Terminal: <code>weather</code></span>
</div>
</div>
<div class="cmd-card">
<img src="<?php echo get_template_directory_uri(); ?>/assets/img/hp_muti_steampunk_01.png" class="cmd-card-img" alt="System Top">
<div class="cmd-card-body">
<span class="cmd-card-label">[ PROTOKOLL #002 ]</span>
<h3 class="cmd-card-title">&gt; top</h3>
<p class="cmd-card-text">Welche dämonischen Prozesse laufen gerade im Hintergrund? KREATIVITAET.exe frisst 94% CPU. PROKRASTINATION.app wurde erfolgreich suspendiert. SELBSTZWEIFEL.exe ist – endlich – terminiert. Ein Blick in den Maschinenraum des Overlords.</p>
<span class="cmd-card-hint">Eingabe im Terminal: <code>top</code></span>
</div>
</div>
<div class="cmd-card">
<img src="<?php echo get_template_directory_uri(); ?>/assets/img/hp_vater_steampunk_01.jpg" class="cmd-card-img" alt="System Uptime">
<div class="cmd-card-body">
<span class="cmd-card-label">[ PROTOKOLL #003 ]</span>
<h3 class="cmd-card-title">&gt; uptime</h3>
<p class="cmd-card-text">Das System läuft seit 1974. Ungeplant. Ohne Handbuch. Mit minimaler Wartung und maximalem Kaffee-Input. Aktuelle Laufzeit in Tagen, Stunden, Minuten – live berechnet. Stabilität: unberechenbar. Status: noch online. Irgendwie.</p>
<span class="cmd-card-hint">Eingabe im Terminal: <code>uptime</code></span>
</div>
</div>
</div>
<div class="content-box"> <div class="content-box">
<div class="content-header"> <div class="content-header">
<h2>PROJEKT-ARCHIV: KLASSIFIZIERT</h2> <h2>PROJEKT-ARCHIV: KLASSIFIZIERT</h2>
@ -129,7 +98,7 @@
<button class="filter-btn" data-filter="stable">STABIL</button> <button class="filter-btn" data-filter="stable">STABIL</button>
<button class="filter-btn" data-filter="corrupted">KRITISCH</button> <button class="filter-btn" data-filter="corrupted">KRITISCH</button>
<button class="filter-btn" data-filter="experimental">EXPERIMENTELL</button> <button class="filter-btn" data-filter="experimental">EXPERIMENTELL</button>
<button class="steampunk-card filter-btn" style="color: var(--accent-gold); border-color: var(--accent-gold); padding: 2px 8px; background: transparent; cursor: pointer; display: flex; align-items: center;"><h3 style="margin: 0; font-size: 0.7rem;">MUTTER (TIMELINE)</h3></button> <button class="steampunk-card filter-btn" style="color: var(--accent-gold); border-color: var(--accent-gold); padding: 2px 8px; background: transparent; cursor: pointer; display: flex; align-items: center;"><a href="<?php echo get_template_directory_uri(); ?>/page-overlords.php" style="color: inherit; text-decoration: none;"><h3 style="margin: 0; font-size: 0.7rem;">OVERLORDS (FAMILIE)</h3></a></button>
<a href="<?php echo get_template_directory_uri(); ?>/mac-nerds.php" class="mn-nav-link" style="color: #0f0; border: 1px solid rgba(0,255,65,0.4); padding: 2px 8px; display: flex; align-items: center; text-decoration: none; font-family: 'Courier New', monospace; font-size: 0.75rem; letter-spacing: 1px;"><h3 style="margin: 0; font-size: 0.7rem;">MAC NERDS</h3></a> <a href="<?php echo get_template_directory_uri(); ?>/mac-nerds.php" class="mn-nav-link" style="color: #0f0; border: 1px solid rgba(0,255,65,0.4); padding: 2px 8px; display: flex; align-items: center; text-decoration: none; font-family: 'Courier New', monospace; font-size: 0.75rem; letter-spacing: 1px;"><h3 style="margin: 0; font-size: 0.7rem;">MAC NERDS</h3></a>
</div> </div>
</div> </div>
@ -342,7 +311,10 @@
<!-- SYSTEM STATUS WIDGET --> <!-- SYSTEM STATUS WIDGET -->
<div id="sys-widget"> <div id="sys-widget">
<div class="sys-widget-header">// SYS_STATUS</div> <div class="sys-widget-header">
// SYS_STATUS
<button id="sys-toggle" style="float:right; background:none; border:none; color:rgba(0,255,65,0.4); font-size:0.6rem; cursor:pointer; padding:0; margin-left:5px;">×</button>
</div>
<div class="sys-metric"> <div class="sys-metric">
<span class="sys-label">CPU</span> <span class="sys-label">CPU</span>
<span class="sys-bar-wrap"><span class="sys-bar" id="sw-cpu"></span></span> <span class="sys-bar-wrap"><span class="sys-bar" id="sw-cpu"></span></span>
@ -365,6 +337,9 @@
</div> </div>
</div> </div>
<!-- SYS WIDGET TOGGLE ARROW -->
<div id="sys-toggle-arrow" style="position:fixed; top:10px; right:10px; z-index:10000; display:none; cursor:pointer; color:#0f0; font-size:1.5rem;">▲</div>
<!-- NEWSTICKER --> <!-- NEWSTICKER -->
<div id="newsticker"> <div id="newsticker">
<span class="ticker-label">// SYS_FEED</span> <span class="ticker-label">// SYS_FEED</span>

View file

@ -0,0 +1,363 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>OVERLORDS | DIGITALE ANARCHIE</title>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg-color: #0d0d0d;
--text-color: #c0c0c0;
--accent-gold: #d4af37;
--accent-orange: #ff4500;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
font-family: 'Courier New', Courier, monospace;
line-height: 1.6;
overflow-x: hidden;
}
a { color: inherit; }
.ol-container { max-width: 1200px; margin: 0 auto; padding: 30px 16px 60px; }
.ol-header { margin-bottom: 30px; }
.ol-back {
display: inline-block;
color: rgba(0,255,65,0.6);
font-size: 0.75rem;
letter-spacing: 1px;
text-decoration: none;
margin-bottom: 10px;
transition: color 0.2s;
}
.ol-back:hover { color: rgba(255,69,0,0.8); }
.ol-title {
font-size: 2.5rem;
color: var(--accent-gold);
margin: 0 0 10px 0;
font-weight: bold;
letter-spacing: 2px;
}
.ol-subtitle {
font-size: 0.9rem;
color: rgba(0,255,65,0.5);
margin: 0 0 15px 0;
letter-spacing: 1px;
}
.ol-warning {
background: rgba(255,69,0,0.08);
border: 1px solid rgba(255,69,0,0.2);
color: rgba(255,69,0,0.7);
padding: 8px 12px;
font-size: 0.75rem;
letter-spacing: 0.5px;
margin-bottom: 20px;
}
.ol-timeline-section { margin-bottom: 40px; }
.ol-timeline-title {
font-size: 1.5rem;
color: var(--accent-gold);
margin-bottom: 20px;
text-align: center;
letter-spacing: 1px;
}
.timeline-container {
position: relative;
max-width: 1000px;
margin: 0 auto;
padding: 20px 0;
max-height: 500px;
overflow-y: auto;
border: 1px solid rgba(0,255,65,0.1);
}
.timeline-track {
position: relative;
width: 100%;
min-height: 400px;
}
.time-node {
position: absolute;
width: 45%;
padding: 10px;
}
.time-node.left { left: 0; text-align: right; }
.time-node.right { right: 0; text-align: left; }
.time-content {
background: rgba(0,0,0,0.8);
border: 1px solid rgba(0,255,65,0.2);
padding: 15px;
border-radius: 4px;
box-shadow: 0 0 10px rgba(0,255,65,0.1);
}
.tc-header {
font-size: 0.6rem;
color: rgba(0,255,65,0.4);
margin-bottom: 8px;
letter-spacing: 1px;
}
.tc-stamp { color: rgba(255,180,0,0.6); font-weight: bold; }
.tc-stamp.omega { color: rgba(255,69,0,0.8); }
.time-content h3 { color: var(--accent-gold); margin: 0 0 10px 0; font-size: 1.1rem; }
.time-content p { color: rgba(0,255,65,0.7); font-size: 0.8rem; line-height: 1.4; margin: 0 0 10px 0; }
.tc-footer { font-size: 0.55rem; color: rgba(0,255,65,0.3); letter-spacing: 0.5px; }
.time-content.omega-node {
border-color: #ff4500;
outline: 2px solid #330000;
box-shadow: inset 0 0 30px rgba(255,69,0,0.5), 0 0 30px rgba(255,0,0,0.8);
background: linear-gradient(135deg, rgba(80,20,10,0.95), rgba(30,0,0,0.95));
animation: omega-pulse 2s infinite alternate, omega-shake 0.5s infinite;
}
.time-content.omega-node::after {
content: ''; position: absolute; top: -8px; left: -8px; right: -8px; bottom: -8px;
border: 2px solid #0ff;
border-radius: 6px;
box-shadow: 0 0 15px #0ff, inset 0 0 10px #0ff;
animation: electric-arc 0.15s infinite;
pointer-events: none;
opacity: 0.9;
z-index: 2;
}
@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% 5%, 0 5%); border-color: #0ff; }
}
.ol-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
margin-top: 30px;
}
.ol-card {
background: rgba(0,0,0,0.6);
border: 1px solid rgba(0,255,65,0.15);
border-radius: 4px;
overflow: hidden;
transition: all 0.3s;
}
.ol-card:hover {
border-color: rgba(0,255,65,0.4);
box-shadow: 0 0 20px rgba(0,255,65,0.1);
transform: translateY(-2px);
}
.ol-card-img {
width: 100%;
height: 200px;
object-fit: cover;
display: block;
}
.ol-card-body { padding: 15px; }
.ol-card-status {
display: inline-block;
font-size: 0.6rem;
letter-spacing: 1px;
padding: 2px 6px;
border: 1px solid;
margin-bottom: 8px;
}
.ol-card-status.aktiv { border-color: rgba(0,255,65,0.3); color: rgba(0,255,65,0.7); }
.ol-card-status.omega-klasse { border-color: rgba(255,69,0,0.3); color: rgba(255,69,0,0.7); }
.ol-card-status.klassifiziert{ border-color: rgba(255,180,0,0.3); color: rgba(255,180,0,0.7); }
.ol-card-status.unbekannt { border-color: rgba(128,128,128,0.3); color: rgba(128,128,128,0.7); }
.ol-card-name {
font-size: 1.2rem;
color: var(--accent-gold);
margin: 0 0 5px 0;
font-weight: bold;
}
.ol-card-role {
font-size: 0.8rem;
color: rgba(0,255,65,0.5);
margin: 0 0 10px 0;
letter-spacing: 0.5px;
}
.ol-card-desc {
font-size: 0.85rem;
color: rgba(0,255,65,0.7);
line-height: 1.4;
margin: 0;
}
</style>
</head>
<body>
<div class="ol-container">
<header class="ol-header">
<a href="/" class="ol-back">← ZURÜCK ZUR BASIS</a>
<h1 class="ol-title">OVERLORDS</h1>
<p class="ol-subtitle">// Die Familie — Architekten der digitalen Anarchie</p>
<div class="ol-warning">⚠ KLASSIFIZIERT: FAMILIÄR. ZUGRIFF: NUR FÜR DIE, DIE ES WISSEN MÜSSEN.</div>
</header>
<div class="ol-timeline-section">
<h2 class="ol-timeline-title">FAMILIEN-TIMELINE</h2>
<div class="timeline-container">
<div class="timeline-track" id="timeline-track"></div>
</div>
</div>
<div class="ol-grid" id="ol-grid">
<?php
$base = '';
$overlords = [
[
'name' => 'Mutter',
'role' => 'Matriarchin & Kupfer-Architektin',
'desc' => 'Die Gründerin des Clans. Kupfer-Matriarchin, die 1974 den ersten System-Schrei registrierte. Architektin der Biosphäre und Hüterin der pneumatischen Reflexe.',
'img' => 'assets/img/hp_meli_steampunk_01.jpeg',
'status'=> 'OMEGA-KLASSE',
],
[
'name' => 'Vater',
'role' => 'Hydraulik-Meister & System-Engineer',
'desc' => 'Der Ingenieur des Clans. Spezialisiert auf mechanische Gliedmaßen und hydraulische Upgrades. Verantwortlich für die Flucht in die äußeren Kolonien.',
'img' => 'assets/img/hp_vater_steampunk_01.jpg',
'status'=> 'KLASSIFIZIERT',
],
[
'name' => 'Sascha (Ich)',
'role' => 'Overlord & KI-Architekt',
'desc' => 'Der aktuelle Overlord. KI-Labor Betreiber, Gemini-Link Aktivator und Anarchie-Engine Entwickler. Status: Online seit 1983.',
'img' => 'hero.png',
'status'=> 'AKTIV',
],
[
'name' => 'Bruder',
'role' => 'Kybernetischer Knoten & Neural-Link',
'desc' => 'Der Bruder-Knoten. 1981 online gegangen. Visuelle Sensoren-Update steht noch aus. Chaos-Protokolle initialisiert.',
'img' => 'assets/img/hp_muti_steampunk_01.png',
'status'=> 'KLASSIFIZIERT',
],
[
'name' => 'Schwester',
'role' => 'Aether-Sibling & Pneumatische Reflexe',
'desc' => 'AETHER-SIBLING V1.0. Schwester Meli. Boot erfolgreich 1983. Chaos-Protokolle und pneumatische Reflexe voll aktiv.',
'img' => 'assets/img/hp_muti_steampunk_02.jpg',
'status'=> 'KLASSIFIZIERT',
],
[
'name' => 'Sven',
'role' => 'Externe Variable & Unbekannter Faktor',
'desc' => 'Der mysteriöse Sven. Externe Einflussgröße im System. Herkunft: Fraglich. Klassifiziert: Unbekannt. Integrität: Akzeptabel.',
'img' => 'assets/img/family_alle_pic_01.png',
'status'=> 'UNBEKANNT',
],
];
foreach ($overlords as $ol) {
echo '<div class="ol-card" data-status="' . $ol['status'] . '">';
echo '<img src="' . $ol['img'] . '" class="ol-card-img" alt="' . $ol['name'] . '" loading="lazy" width="400" height="200">';
echo '<div class="ol-card-body">';
echo '<span class="ol-card-status ' . strtolower(str_replace(' ', '-', $ol['status'])) . '">' . $ol['status'] . '</span>';
echo '<h3 class="ol-card-name">' . $ol['name'] . '</h3>';
echo '<p class="ol-card-role">' . $ol['role'] . '</p>';
echo '<p class="ol-card-desc">' . $ol['desc'] . '</p>';
echo '</div>';
echo '</div>';
}
?>
</div>
</div>
<script>
(function() {
const timelineTrack = document.getElementById('timeline-track');
if (!timelineTrack) return;
function generateTimeline() {
timelineTrack.innerHTML = '';
const specialEvents = {
1974: "ARCHITEKTUR-UPDATE: Der zukünftige Overlord (Sascha) wird von der Kupfer-Matriarchin erfolgreich in die Biosphäre kompiliert. Initialer System-Schrei registriert.",
1981: "SYSTEM-ERWEITERUNG: Ein neuer kybernetischer Bruder-Knoten geht online. Visuelles Sensoren-Update (Upload steht noch aus).",
1983: "NETZWERK-UPDATE: AETHER-SIBLING V1.0 (Schwester Meli) bootet erfolgreich. Chaos-Protokolle und pneumatische Reflexe initialisiert."
};
const events = [
"Kritische Dampfdruck-Anomalie entdeckt.",
"Erster erfolgreicher Test des kybernetischen Herzmuskels.",
"System-Absturz aufgrund von überhitzten Kupferspulen.",
"Neural-Link mit den Primär-Vorläufern hergestellt.",
"Mechanische Gliedmaßen rüsten auf Hydraulik um.",
"Prototyp V2 entkommt aus dem Testlabor.",
"Verhandlungen mit dem KI-Mainframe gescheitert.",
"Flucht in die äußeren Kolonien (Offline-Modus).",
"Reboot der emotionalen Sub-Parameter.",
"Wartungsarbeiten an den Exo-Skeletten abgeschlossen."
];
let yearsToRender = [];
for (let y = 1955; y <= new Date().getFullYear(); y += 5) {
yearsToRender.push(y);
}
[1974, 1981, 1983].forEach(sy => {
if (!yearsToRender.includes(sy)) yearsToRender.push(sy);
});
yearsToRender.sort((a, b) => a - b);
let topOffset = 0;
let isLeft = true;
yearsToRender.forEach(year => {
const node = document.createElement('div');
node.className = 'time-node ' + (isLeft ? 'left' : 'right');
node.style.top = topOffset + 'px';
const content = document.createElement('div');
content.className = 'time-content';
if (specialEvents[year]) {
content.classList.add('omega-node');
content.innerHTML =
'<div class="tc-header">OMEGA-KLASSE &nbsp;&#9670;&nbsp; <span class="tc-stamp omega">!! FREIGEGEBEN !!</span></div>' +
'<h3>[ ' + year + ' ]</h3>' +
'<p><strong>⚡ KRITISCHES SYSTEMEREIGNIS ⚡</strong><br>' + specialEvents[year] + '</p>' +
'<div class="tc-footer">QUELLE: ARCHIV-SEKTOR 7 &nbsp;&#9670;&nbsp; ZUGRIFF: OVERLORD ONLY</div>';
topOffset += 160;
} else {
const bgStory = events[Math.floor(Math.random() * events.length)];
const akteNr = Math.floor(Math.random() * 9000) + 1000;
content.innerHTML =
'<div class="tc-header">AKTE #' + akteNr + ' &nbsp;&#9670;&nbsp; <span class="tc-stamp">KLASSIFIZIERT</span></div>' +
'<h3>[ ' + year + ' ]</h3>' +
'<p>' + bgStory + ' Weitere Datenquellen als OMEGA-KLASSE klassifiziert.</p>' +
'<div class="tc-footer">ZEITSTEMPEL: ' + year + '.01.01 &nbsp;&#9670;&nbsp; INTEGRITAET: FRAGLICH</div>';
topOffset += 130;
}
node.appendChild(content);
timelineTrack.appendChild(node);
isLeft = !isLeft;
});
timelineTrack.style.minHeight = (topOffset + 50) + 'px';
}
generateTimeline();
})();
</script>
</body>
</html>

View file

@ -687,7 +687,7 @@
document.body.classList.remove('mode-time-warp'); document.body.classList.remove('mode-time-warp');
const personName = card.querySelector('h3').innerText; const personName = card.querySelector('h3').innerText;
timelineTitle.innerText = "HISTORISCHES ARCHIV: " + personName; timelineTitle.innerText = "HISTORISCHES ARCHIV: " + personName;
generateTimeline(); // Timeline moved to Overlords page
timelineModal.classList.remove('timeline-hidden'); timelineModal.classList.remove('timeline-hidden');
log('>> TEMPORAL SHIFT COMPLETE.', 'ok'); log('>> TEMPORAL SHIFT COMPLETE.', 'ok');
}, 1200); }, 1200);
@ -701,69 +701,7 @@
}); });
} }
function generateTimeline() { // Timeline function moved to Overlords page
timelineTrack.innerHTML = '';
const specialEvents = {
1974: "ARCHITEKTUR-UPDATE: Der zukünftige Overlord (Sascha) wird von der Kupfer-Matriarchin erfolgreich in die Biosphäre kompiliert. Initialer System-Schrei registriert.",
1981: "SYSTEM-ERWEITERUNG: Ein neuer kybernetischer Bruder-Knoten geht online. Visuelles Sensoren-Update (Upload steht noch aus).",
1983: "NETZWERK-UPDATE: AETHER-SIBLING V1.0 (Schwester Meli) bootet erfolgreich. Chaos-Protokolle und pneumatische Reflexe initialisiert."
};
const events = [
"Kritische Dampfdruck-Anomalie entdeckt.",
"Erster erfolgreicher Test des kybernetischen Herzmuskels.",
"System-Absturz aufgrund von überhitzten Kupferspulen.",
"Neural-Link mit den Primär-Vorläufern hergestellt.",
"Mechanische Gliedmaßen rüsten auf Hydraulik um.",
"Prototyp V2 entkommt aus dem Testlabor.",
"Verhandlungen mit dem KI-Mainframe gescheitert.",
"Flucht in die äußeren Kolonien (Offline-Modus).",
"Reboot der emotionalen Sub-Parameter.",
"Wartungsarbeiten an den Exo-Skeletten abgeschlossen."
];
let yearsToRender = [];
for(let y = 1955; y <= new Date().getFullYear(); y += 5) {
yearsToRender.push(y);
}
[1974, 1981, 1983].forEach(sy => {
if(!yearsToRender.includes(sy)) yearsToRender.push(sy);
});
yearsToRender.sort((a,b) => a - b);
let isLeft = true;
yearsToRender.forEach(year => {
const node = document.createElement('div');
node.className = 'time-node ' + (isLeft ? 'left' : 'right');
const content = document.createElement('div');
content.className = 'time-content';
if(specialEvents[year]) {
content.classList.add('omega-node');
content.innerHTML =
'<div class="tc-header">OMEGA-KLASSE &nbsp;&#9670;&nbsp; <span class="tc-stamp omega">!! FREIGEGEBEN !!</span></div>' +
'<h3>[ ' + year + ' ]</h3>' +
'<p><strong>⚡ KRITISCHES SYSTEMEREIGNIS ⚡</strong><br>' + specialEvents[year] + '</p>' +
'<div class="tc-footer">QUELLE: ARCHIV-SEKTOR 7 &nbsp;&#9670;&nbsp; ZUGRIFF: OVERLORD ONLY</div>';
} else {
const bgStory = events[Math.floor(Math.random() * events.length)];
const akteNr = Math.floor(Math.random()*9000)+1000;
content.innerHTML =
'<div class="tc-header">AKTE #' + akteNr + ' &nbsp;&#9670;&nbsp; <span class="tc-stamp">KLASSIFIZIERT</span></div>' +
'<h3>[ ' + year + ' ]</h3>' +
'<p>' + bgStory + ' Weitere Datenquellen als OMEGA-KLASSE klassifiziert.</p>' +
'<div class="tc-footer">ZEITSTEMPEL: ' + year + '.01.01 &nbsp;&#9670;&nbsp; INTEGRITAET: FRAGLICH</div>';
}
node.appendChild(content);
timelineTrack.appendChild(node);
isLeft = !isLeft;
});
}
} }
// --- GÄSTEBUCH --- // --- GÄSTEBUCH ---
@ -949,6 +887,31 @@
document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closeAkte(); }); document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closeAkte(); });
})(); })();
// ═══════════════════════════════════════
// SYS WIDGET TOGGLE
// ═══════════════════════════════════════
(function() {
const sysWidget = document.getElementById('sys-widget');
const sysToggle = document.getElementById('sys-toggle');
const sysArrow = document.getElementById('sys-toggle-arrow');
if (!sysWidget || !sysToggle || !sysArrow) return;
function toggleSysWidget() {
const isHidden = sysWidget.classList.contains('hidden');
if (isHidden) {
sysWidget.classList.remove('hidden');
sysArrow.style.display = 'none';
} else {
sysWidget.classList.add('hidden');
sysArrow.style.display = 'block';
}
}
sysToggle.addEventListener('click', toggleSysWidget);
sysArrow.addEventListener('click', toggleSysWidget);
})();
// ═══════════════════════════════════════ // ═══════════════════════════════════════
// SYSTEM STATUS WIDGET // SYSTEM STATUS WIDGET
// ═══════════════════════════════════════ // ═══════════════════════════════════════

View file

@ -1777,6 +1777,11 @@ body.mode-time-warp {
margin-bottom: 10px; margin-bottom: 10px;
text-align: center; text-align: center;
} }
#sys-widget.hidden {
opacity: 0;
pointer-events: none;
transition: opacity 0.3s;
}
.sys-metric { .sys-metric {
display: flex; display: flex;
align-items: center; align-items: center;
@ -2030,3 +2035,167 @@ footer { padding-bottom: 30px; }
} }
.mn-copy-btn:hover { background: rgba(0,255,65,0.05); color: rgba(0,255,65,0.8); } .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); } .mn-copy-btn.mn-copy-ok { color: rgba(0,255,65,1); background: rgba(0,255,65,0.08); }
/* ═══════════════════════════════════════ */
/* OVERLORDS PAGE STYLES */
/* ═══════════════════════════════════════ */
.ol-container { max-width: 1200px; margin: 0 auto; padding: 30px 16px 60px; }
.ol-header { margin-bottom: 30px; }
.ol-back {
display: inline-block;
color: rgba(0,255,65,0.6);
font-family: 'Courier New', monospace;
font-size: 0.75rem;
letter-spacing: 1px;
text-decoration: none;
margin-bottom: 10px;
transition: color 0.2s;
}
.ol-back:hover { color: rgba(255,69,0,0.8); }
.ol-title {
font-size: 2.5rem;
color: var(--accent-gold);
margin: 0 0 10px 0;
font-weight: bold;
letter-spacing: 2px;
}
.ol-subtitle {
font-size: 0.9rem;
color: rgba(0,255,65,0.5);
margin: 0 0 15px 0;
font-family: 'Courier New', monospace;
letter-spacing: 1px;
}
.ol-warning {
background: rgba(255,69,0,0.08);
border: 1px solid rgba(255,69,0,0.2);
color: rgba(255,69,0,0.7);
padding: 8px 12px;
font-size: 0.75rem;
font-family: 'Courier New', monospace;
letter-spacing: 0.5px;
margin-bottom: 20px;
}
.ol-timeline-section { margin-bottom: 40px; }
.ol-timeline-title {
font-size: 1.5rem;
color: var(--accent-gold);
margin-bottom: 20px;
text-align: center;
letter-spacing: 1px;
}
.timeline-container {
position: relative;
max-width: 1000px;
margin: 0 auto;
padding: 20px 0;
}
.timeline-track {
position: relative;
width: 100%;
min-height: 400px;
}
.time-node {
position: absolute;
width: 45%;
padding: 10px;
}
.time-node.left { left: 0; text-align: right; }
.time-node.right { right: 0; text-align: left; }
.time-content {
background: rgba(0,0,0,0.8);
border: 1px solid rgba(0,255,65,0.2);
padding: 15px;
border-radius: 4px;
box-shadow: 0 0 10px rgba(0,255,65,0.1);
}
.tc-header {
font-size: 0.6rem;
color: rgba(0,255,65,0.4);
margin-bottom: 8px;
letter-spacing: 1px;
}
.tc-stamp {
color: rgba(255,180,0,0.6);
font-weight: bold;
}
.tc-stamp.omega { color: rgba(255,69,0,0.8); }
.time-content h3 {
color: var(--accent-gold);
margin: 0 0 10px 0;
font-size: 1.1rem;
}
.time-content p {
color: rgba(0,255,65,0.7);
font-size: 0.8rem;
line-height: 1.4;
margin: 0 0 10px 0;
}
.tc-footer {
font-size: 0.55rem;
color: rgba(0,255,65,0.3);
letter-spacing: 0.5px;
}
.ol-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
margin-top: 30px;
}
.ol-card {
background: rgba(0,0,0,0.6);
border: 1px solid rgba(0,255,65,0.15);
border-radius: 4px;
overflow: hidden;
transition: all 0.3s;
}
.ol-card:hover {
border-color: rgba(0,255,65,0.4);
box-shadow: 0 0 20px rgba(0,255,65,0.1);
transform: translateY(-2px);
}
.ol-card-img {
width: 100%;
height: 200px;
object-fit: cover;
display: block;
}
.ol-card-body {
padding: 15px;
}
.ol-card-status {
display: inline-block;
font-size: 0.6rem;
letter-spacing: 1px;
padding: 2px 6px;
border: 1px solid;
margin-bottom: 8px;
font-family: 'Courier New', monospace;
}
.ol-card-status.aktiv { border-color: rgba(0,255,65,0.3); color: rgba(0,255,65,0.7); }
.ol-card-status.omega-klasse { border-color: rgba(255,69,0,0.3); color: rgba(255,69,0,0.7); }
.ol-card-status.klassifiziert { border-color: rgba(255,180,0,0.3); color: rgba(255,180,0,0.7); }
.ol-card-status.unbekannt { border-color: rgba(128,128,128,0.3); color: rgba(128,128,128,0.7); }
.ol-card-name {
font-size: 1.2rem;
color: var(--accent-gold);
margin: 0 0 5px 0;
font-weight: bold;
}
.ol-card-role {
font-size: 0.8rem;
color: rgba(0,255,65,0.5);
margin: 0 0 10px 0;
font-family: 'Courier New', monospace;
letter-spacing: 0.5px;
}
.ol-card-desc {
font-size: 0.85rem;
color: rgba(0,255,65,0.7);
line-height: 1.4;
margin: 0;
}