diff --git a/html/wp-content/themes/ki-labor/.claude/settings.local.json b/html/wp-content/themes/ki-labor/.claude/settings.local.json new file mode 100644 index 0000000..43001c5 --- /dev/null +++ b/html/wp-content/themes/ki-labor/.claude/settings.local.json @@ -0,0 +1,8 @@ +{ + "permissions": { + "allow": [ + "WebFetch(domain:localhost)", + "Bash(curl -s http://localhost:8080)" + ] + } +} diff --git a/html/wp-content/themes/ki-labor/assets/img/hp_muti_steampunk_02.jpg b/html/wp-content/themes/ki-labor/assets/img/hp_muti_steampunk_02.jpg new file mode 100644 index 0000000..1b9a895 Binary files /dev/null and b/html/wp-content/themes/ki-labor/assets/img/hp_muti_steampunk_02.jpg differ diff --git a/html/wp-content/themes/ki-labor/index.php b/html/wp-content/themes/ki-labor/index.php index e919cfc..c2a8c71 100644 --- a/html/wp-content/themes/ki-labor/index.php +++ b/html/wp-content/themes/ki-labor/index.php @@ -35,12 +35,44 @@ -
+ +
+
+ + CHIRURGISCHES OPS-DASHBOARD + +
+
+
+ HEUTE + ||| + 3 OPS +
+ ◈ +
+ ERFOLGE + |½ + 1.5 +
+ ◈ +
+ RESTE + KUEHLHAUS C +
+
+
[ PROTOKOLL EINSEHEN ]
+
+ +
// SECURE_TERMINAL_ACCESS
+
+
+
+
> @@ -134,6 +166,17 @@

HISTORISCHES ARCHIV

+
+
+
+ ⚙ + ⚙ + ⚙ + ⚙ + Die Matriarchin +
+
+
diff --git a/html/wp-content/themes/ki-labor/script.js b/html/wp-content/themes/ki-labor/script.js index 6b0ab6d..f46d9a5 100644 --- a/html/wp-content/themes/ki-labor/script.js +++ b/html/wp-content/themes/ki-labor/script.js @@ -765,6 +765,105 @@ } log('>> SYSTEM READY. WAITING FOR COMMANDS...'); + + // --- OPS DASHBOARD --- + const opsDashSign = document.getElementById('ops-dashboard-sign'); + const opsPanel = document.getElementById('ops-panel'); + const opsPanelLog = document.getElementById('ops-panel-log'); + const opsPanelVital = document.getElementById('ops-panel-vitals'); + const terminalWrap = document.querySelector('.terminal-wrapper'); + let opsOpen = false; + let opsTyped = false; + let vitalInterval = null; + + const OPS_LOG_LINES = [ + { t: '╔══════════════════════════════════════════════════╗', cls: 'ops-line-dim' }, + { t: '║ CHIRURGISCHES PROTOKOLL — KLASSIFIZIERT: ROT ║', cls: 'ops-line-section' }, + { t: '╚══════════════════════════════════════════════════╝', cls: 'ops-line-dim' }, + { t: '', cls: '' }, + { t: '─── OP ALFA-7 ─────────────────────────────────────', cls: 'ops-line-section' }, + { t: ' PATIENT : KREATIVITAET.exe (v4.2-beta)', cls: 'ops-line-label' }, + { t: ' EINGRIFF : Herz-Transplant — Donor: MOTIVATION.sys', cls: '' }, + { t: ' BEFUND : Herz läuft. Richtung unbekannt. Absicht fraglich.', cls: '' }, + { t: ' STATUS : ████████░░ 82% KAPAZITÄT', cls: 'ops-line-ok' }, + { t: ' ERGEBNIS : 0.5 ERFOLGE (zählt als halber Sieg, ganz nach Wunsch)', cls: 'ops-line-label' }, + { t: '', cls: '' }, + { t: '─── OP BETA-12 ─────────────────────────────────────', cls: 'ops-line-section' }, + { t: ' PATIENT : SCHLAFRHYTHMUS.daemon (Version: veraltet)', cls: 'ops-line-label' }, + { t: ' EINGRIFF : Herz-Transplant — Donor: KAFFEE-KERN v9.1', cls: '' }, + { t: ' BEFUND : Donor inkompatibel. Koffein ≠ Blut. Überraschung: keiner.', cls: '' }, + { t: ' STATUS : ██████████ 100% — ABGESCHLOSSEN', cls: 'ops-line-crit' }, + { t: ' ERGEBNIS : TECHNISCH FEHLGESCHLAGEN. Patient läuft trotzdem.', cls: 'ops-line-label' }, + { t: '', cls: '' }, + { t: '════════════════════════════════════════════════════', cls: 'ops-line-dim' }, + { t: ' OPS: ||| 3 ERFOLGE: |½ 1.5 FEHLSCHL: |½ 1.5', cls: 'ops-line-section' }, + { t: ' RESTE: KUEHLHAUS C — ZUSTAND: STABIL / NUTZBAR', cls: 'ops-line-crit' }, + { t: ' NÄCHSTE OP: PROKRASTINATION.exe — ETA: IRGENDWANN', cls: 'ops-line-dim' }, + { t: '════════════════════════════════════════════════════', cls: 'ops-line-dim' }, + ]; + + const VITAL_FRAMES = [ + 'VITALMONITOR ▁▂▃▂▁▃▂▁▁▁▁▁▁▁▁▁▁▁▁▁ FLATLINE', + 'VITALMONITOR ▁▁▂▃▂▁▃▂▁▁▁▁▁▁▁▁▁▁▁▁ FLATLINE', + 'VITALMONITOR ▁▁▁▂▃▂▁▃▂▁▁▁▁▁▁▁▁▁▁▁ FLATLINE', + 'VITALMONITOR ▁▁▁▁▂▃▂▁▃▂▁▁▁▁▁▁▁▁▁▁ FLATLINE', + 'VITALMONITOR ▁▁▁▁▁▂▃▂▁▁▁▂▃▂▁▁▁▁▁▁ FLATLINE', + 'VITALMONITOR ▁▁▁▁▁▁▂▃▂▁▁▁▁▂▃▂▁▁▁▁ FLATLINE', + 'VITALMONITOR ▁▁▁▁▁▁▁▂▃▂▁▁▁▁▁▂▃▂▁▁ FLATLINE', + 'VITALMONITOR ▁▁▁▁▁▁▁▁▂▃▂▁▁▁▁▁▁▁▁▁ FLATLINE', + ]; + + function typeOpsLog() { + if (opsTyped) return; + opsTyped = true; + opsPanelLog.innerHTML = ''; + let i = 0; + function typeLine() { + if (i >= OPS_LOG_LINES.length) return; + const { t, cls } = OPS_LOG_LINES[i++]; + const span = document.createElement('span'); + if (cls) span.className = cls; + span.textContent = t + '\n'; + opsPanelLog.appendChild(span); + opsPanelLog.scrollTop = opsPanelLog.scrollHeight; + setTimeout(typeLine, t === '' ? 30 : 55); + } + typeLine(); + } + + function startVitals() { + let frame = 0; + opsPanelVital.textContent = VITAL_FRAMES[0]; + vitalInterval = setInterval(() => { + frame = (frame + 1) % VITAL_FRAMES.length; + opsPanelVital.textContent = VITAL_FRAMES[frame]; + }, 220); + } + + function stopVitals() { + clearInterval(vitalInterval); + vitalInterval = null; + } + + if (opsDashSign) { + opsDashSign.addEventListener('click', () => { + opsOpen = !opsOpen; + if (opsOpen) { + opsPanel.classList.add('ops-open'); + terminalWrap.classList.add('ops-expanded'); + opsDashSign.querySelector('.ops-sign-hint').textContent = '[ PROTOKOLL SCHLIESSEN ]'; + startVitals(); + setTimeout(typeOpsLog, 300); + if (typeof playKeyClick === 'function') playKeyClick(); + } else { + opsPanel.classList.remove('ops-open'); + terminalWrap.classList.remove('ops-expanded'); + opsDashSign.querySelector('.ops-sign-hint').textContent = '[ PROTOKOLL EINSEHEN ]'; + stopVitals(); + } + }); + } + }); })(); diff --git a/html/wp-content/themes/ki-labor/style.css b/html/wp-content/themes/ki-labor/style.css index 929fbb2..31af035 100644 --- a/html/wp-content/themes/ki-labor/style.css +++ b/html/wp-content/themes/ki-labor/style.css @@ -279,11 +279,12 @@ body.mode-ghost .prompt { color: #0f0; font-family: 'Courier New', monospace; padding: 15px; - margin-top: 30px; - height: 250px; /* Mehr Platz für Input */ + margin-top: 0; + min-height: 250px; display: flex; flex-direction: column; box-shadow: inset 0 0 10px #000; + transition: min-height 0.55s cubic-bezier(0.4,0,0.2,1); } #log-output { @@ -709,6 +710,88 @@ body.mode-anarchy .hero-image { } #close-timeline:hover { background: var(--accent-orange); color: #000; } +/* STEAMPUNK MIRROR PORTRAIT */ +.mutter-portrait-wrap { + text-align: center; + margin: 24px 0 8px; + position: relative; +} +.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); +} +.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; + opacity: 0.6; + filter: sepia(0.35) brightness(0.82) contrast(1.05); +} +.mutter-mirror-deco { + position: absolute; + color: rgba(212,175,55,0.4); + font-size: 1rem; + line-height: 1; + pointer-events: none; +} +.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%); } + .timeline-track { position: relative; max-width: 800px; margin: 40px auto; } @@ -908,3 +991,158 @@ body.mode-time-warp { 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); +}