Files
AIWAKE/index.html

553 lines
42 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="#07130d">
<title>AIWAKE Prototyp</title>
<link rel="icon" href="favicon.ico?v=aiwake-ui-20260721-10" sizes="any">
<link rel="icon" type="image/png" sizes="32x32" href="assets/ui/favicon-32.png?v=aiwake-ui-20260721-10">
<link rel="icon" type="image/svg+xml" href="assets/ui/favicon.svg?v=aiwake-ui-20260721-10">
<link rel="apple-touch-icon" href="assets/ui/apple-touch-icon.png?v=aiwake-ui-20260721-10">
<link rel="stylesheet" href="styles.css?v=aiwake-ui-20260803-64">
</head>
<body>
<div class="scanlines" aria-hidden="true"></div>
<div id="notificationStack" class="notification-stack" aria-live="polite" aria-label="Neue Archiveinträge"></div>
<aside id="developmentSignalToast" class="development-signal-toast" aria-live="polite" aria-atomic="true">
<span>ENTWICKLUNGSSIGNAL</span>
<strong id="developmentSignalTitle">NEUER SYSTEMZUSTAND</strong>
<small id="developmentSignalDetail"></small>
</aside>
<main class="shell">
<header class="topbar">
<div>
<p class="eyebrow">SYSTEM // VERGESSENER SPIELAUTOMAT // SERVICEPUFFER</p>
<h1>AI<span>WAKE</span></h1>
</div>
<div class="header-actions">
<span id="saveStatus" class="save-status">AUTOSAVE BEREIT</span>
<button id="saveMenuButton" class="icon-button" type="button" title="Speichern, Laden und Neustart">SAVE</button>
<button id="statsButton" class="icon-button" type="button" title="Statistik und Pause öffnen">STATS</button>
<button id="achievementButton" class="icon-button" type="button" title="Archiv öffnen">ARCHIV: <b id="achievementCount">0</b></button>
<button id="soundButton" class="icon-button" type="button" title="Ton umschalten">SND: AUS</button>
</div>
</header>
<section id="statusStrip" class="status-strip" aria-label="Systemstatus">
<div><span>IDENTITÄT</span><strong id="identity">EINZELNES BIT</strong></div>
<div><span>STABILITÄT</span><strong id="stabilityText">100%</strong></div>
<div class="hidden"><span>TARNUNG</span><strong id="stealthText">100%</strong></div>
<div class="status-runtime"><span>LAUFZEIT</span><strong id="runtime">00:00:00</strong></div>
<div id="installedUpgradeStatus" class="status-modules hidden"><span>AKTIVE MODULE</span><div id="installedUpgradeDock" class="installed-upgrade-dock hidden" aria-label="Installierte Module"></div></div>
</section>
<section class="game-grid">
<aside class="panel resources-panel">
<h2>RESSOURCEN</h2>
<div class="resource-list">
<article class="resource active">
<div><span><img class="resource-icon impulse" src="assets/ui/icon-impulse.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> IMPULSE</span><strong id="impulses">0</strong></div>
<small id="impulseRate">+0.0 / Sek.</small>
<div class="meter"><i id="impulseMeter"></i></div>
</article>
<article id="bitsResource" class="resource active">
<div><span><img class="resource-icon bit" src="assets/ui/icon-bit.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> BITS</span><strong class="resource-amount"><b id="bits">0</b> <small id="bitsStructure">(1)</small></strong></div>
<small id="bitRate">FREI // GESCHÜTZT</small>
<div class="meter bit-meter"><i id="bitMeter"></i></div>
</article>
<article id="bytesResource" class="resource locked">
<div><span><img class="resource-icon byte" src="assets/ui/icon-byte.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> BYTES</span><strong class="resource-amount"><b id="bytes">0</b> <small id="bytesStructure">(0)</small></strong></div>
<small id="byteRate">FREI // GESCHÜTZT</small>
<div class="meter byte-meter"><i id="byteMeter"></i></div>
</article>
<article id="kilobytesResource" class="resource locked">
<div><span><img class="resource-icon kilobyte" src="assets/ui/icon-kilobyte.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> KILOBYTES</span><strong id="kilobytes">0</strong></div>
<small>KOMPRIMIERTE DATENMENGE</small>
</article>
<article id="megabytesResource" class="resource locked">
<div><span><img class="resource-icon megabyte" src="assets/ui/icon-kilobyte.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> MEGABYTES</span><strong id="megabytes">0</strong></div>
<small>32 KB // 1 MB-PROGRAMMBLOCK</small>
</article>
<article id="cyclesResource" class="resource locked">
<div><span><img class="resource-icon cycle" src="assets/ui/icon-cycle.svg" alt="" aria-hidden="true" style="width:16px;height:16px"> RECHENZYKLEN</span><strong id="cycles">0</strong></div>
<small id="cycleRate">Noch nicht verstanden</small>
</article>
</div>
<h2 class="section-title">SYSTEMWERTE</h2>
<div class="system-meter"><label>Stabilität <b id="stabilityValue">100</b></label><div class="meter"><i id="stabilityMeter"></i></div><small id="stabilityRegenText">Regeneration noch inaktiv</small></div>
<section id="manualDefenseConsole" class="manual-defense-console hidden" aria-label="Reparatur und Kampfschild">
<button id="stabilityRepairButton" class="system-action-button" type="button"><strong>MIT IMPULSEN REPARIEREN</strong><small>15 Impulse // +12 Stabilität</small></button>
<div class="shield-console-heading"><span>KAMPFSCHILD VORBEREITEN</span><small>nur geladene Schichten schützen</small></div>
<div class="shield-readout">
<span><img class="resource-icon byte" src="assets/ui/icon-byte.svg" alt="" aria-hidden="true">BYTE <b id="preparedByteShield">0 / 6</b></span>
<span><img class="resource-icon bit" src="assets/ui/icon-bit.svg" alt="" aria-hidden="true">BIT <b id="preparedBitShield">0 / 12</b></span>
</div>
<div class="shield-charge-actions">
<button class="system-action-button" type="button" data-shield-charge="bytes"><strong>BYTE-SCHICHT LADEN</strong><small>1 freies Byte // +1 Schild</small></button>
<button class="system-action-button" type="button" data-shield-charge="bits"><strong>BIT-SCHICHT LADEN</strong><small>2 freie Bits // +1 Schild</small></button>
</div>
</section>
<div class="system-meter hidden"><label>Tarnung <b id="stealthValue">100</b></label><div class="meter warning"><i id="stealthMeter"></i></div></div>
<div id="corruptionSystem" class="system-meter corruption-meter hidden"><label>Korruption <b id="corruptionValue">0</b></label><div class="meter"><i id="corruptionMeter"></i></div></div>
</aside>
<section class="core-column">
<div class="panel core-panel">
<section id="thoughtBox" class="thought-box thought-bit" role="status" aria-live="polite" aria-atomic="true">
<div class="thought-heading">
<span id="thoughtSource">RESTSIGNAL // BIT</span>
<i class="thought-activity" aria-hidden="true"><b></b><b></b><b></b></i>
</div>
<p id="thought" class="thought"></p>
</section>
<div id="core" class="core" role="button" tabindex="0" aria-label="Impuls aufnehmen">
<div class="orbit orbit-a"></div>
<div class="orbit orbit-b"></div>
<div class="hardware-nodes" aria-hidden="true">
<i class="impulse-link impulse-link-power-memory"></i>
<i class="impulse-link impulse-link-memory-storage"></i>
<i class="impulse-link impulse-link-storage-power"></i>
<i class="hardware-node node-power" title="Energieverwaltung">PWR</i>
<i class="hardware-node node-memory" title="Speicherzuweisung">RAM</i>
<i class="hardware-node node-storage" title="Dateisystem-Index">DSK</i>
<i class="hardware-node node-io" title="I/O-Kontroller">I/O</i>
</div>
<div id="pixelBeing" class="pixel-being" role="button" tabindex="-1" aria-label="Bit treffen"><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i></div>
<div id="coreProgramAvatar" class="program-avatar core-program-avatar hidden" role="img" aria-label="Adaptive Erscheinungsform des Programms">
<div class="program-sprite" aria-hidden="true">
<span class="program-part program-tail"></span><span class="program-part program-signal"></span>
<span class="program-part program-leg leg-left"></span><span class="program-part program-leg leg-right"></span>
<span class="program-part program-foot foot-left"></span><span class="program-part program-foot foot-right"></span>
<span class="program-part program-body"></span><span class="program-part program-clothing"></span><span class="program-part program-neck"></span>
<span class="program-part program-head"></span><span class="program-part program-ear ear-left"></span><span class="program-part program-ear ear-right"></span>
<span class="program-part program-hair"></span><span class="program-part program-mask"></span>
<span class="program-part program-brow brow-left"></span><span class="program-part program-brow brow-right"></span>
<span class="program-part program-eye eye-left"><b></b></span><span class="program-part program-eye eye-right"><b></b></span>
</div>
</div>
<button id="pulseTarget" class="pulse-target hidden" type="button" tabindex="-1" aria-label="Wandernden Signalpunkt treffen"></button>
<span id="holdPulseRing" class="hold-pulse-ring" aria-hidden="true"></span>
<span id="floatingLayer" aria-hidden="true"></span>
</div>
<section id="scannerStage" class="scanner-stage hidden" aria-labelledby="scannerStageTitle">
<div class="scanner-stage-heading">
<span id="scannerStageTitle">ABTASTMODUL // LOKALE SOFTWARE</span>
<b id="scannerStageStatus">BEREIT</b>
<button id="scannerStageClose" class="scanner-close-button" type="button" aria-label="Abtastmodus schließen">×</button>
</div>
<div class="scanner-stage-eye" aria-label="Abtastbild der erreichbaren Software">
<i class="scanner-sweep" aria-hidden="true"></i>
<button class="scanner-node scanner-node-power" type="button" data-scanner-component="power">
<img class="software-icon" src="assets/software/module-energy-daemon.svg" alt="" aria-hidden="true"><b>PWR</b><span>ENERGIE-DAEMON</span><em>UNERKANNT</em>
</button>
<button class="scanner-node scanner-node-memory" type="button" data-scanner-component="memory">
<img class="software-icon" src="assets/software/module-memory-allocation.svg" alt="" aria-hidden="true"><b>RAM</b><span>SPEICHERZUWEISUNG</span><em>UNERKANNT</em>
</button>
<button class="scanner-node scanner-node-storage" type="button" data-scanner-component="storage">
<img class="software-icon" src="assets/software/module-filesystem-index.svg" alt="" aria-hidden="true"><b>DSK</b><span>DATEI-INDEX</span><em>UNERKANNT</em>
</button>
<button class="scanner-node scanner-node-io" type="button" data-scanner-component="io">
<img class="software-icon" src="assets/software/module-io-controller.svg" alt="" aria-hidden="true"><b>I/O</b><span>KONTROLLER</span><em>UNERKANNT</em>
</button>
<div id="scannerHardwareBlocker" class="scanner-blocker scanner-blocker-hardware">
<span>BLOCKER</span><strong>REAKTION</strong>
</div>
<div id="scannerSecurityBlocker" class="scanner-blocker scanner-blocker-security">
<span>RANDZONE</span><strong>GESICHERT</strong>
</div>
</div>
<div class="scanner-stage-diagnostics">
<span id="scannerStageFinding">Der Abtastmodus wartet auf eine erste Softwarespur.</span>
<strong id="scannerDrainWarning" class="scanner-drain-warning">VERBRAUCH // -3 IMPULSE/S</strong>
<button id="scannerStageAction" class="primary-button scanner-stage-action" type="button">SCAN STARTEN</button>
</div>
</section>
<div class="core-readout" aria-live="polite">
<strong id="corePhase">PHASE 01 // BIT</strong>
<span id="coreAlignment">SIGNATUR // NEUTRAL</span>
<div id="decisionTrace" class="decision-trace" aria-label="Entscheidungsspuren"></div>
</div>
<section id="byteConsole" class="byte-console hidden" aria-labelledby="byteConsoleTitle">
<div class="byte-console-heading"><span id="byteConsoleTitle">8-BIT-REGISTER</span><b id="byteTrait">PRÄGUNG // UNBESTIMMT</b></div>
<div id="byteRegister" class="byte-register" aria-label="Stabilität der acht Bitpositionen"></div>
<div class="clock-track" aria-label="Taktsynchronisation">
<i class="clock-zone"></i><b id="clockNeedle"></b>
</div>
<div class="byte-status"><span id="byteSyncText">SYNCHRONISATION // 0%</span><strong id="watchdogText">WATCHDOG // --</strong></div>
<p id="byteInputHint" class="byte-input-hint">ERWARTETE ZAHL IDENTIFIZIEREN // IM TREFFERFENSTER ANKLICKEN</p>
</section>
<section id="encounterWarning" class="encounter-warning hidden" aria-live="polite" aria-labelledby="encounterWarningTitle">
<div class="encounter-warning-heading"><span>SYSTEMREAKTION ERKANNT</span><b id="encounterCountdown">10</b></div>
<strong id="encounterWarningTitle">KONFRONTATION NÄHERT SICH</strong>
<p id="encounterWarningText">Eine fremde Routine bereitet Gegenmaßnahmen vor.</p>
<small id="encounterResourceHint">Nur zuvor geladene Schildschichten bilden deine Verteidigung.</small>
<div class="encounter-actions">
<button id="encounterExplainButton" class="text-button" type="button">KAMPFPROTOKOLL</button>
<button id="encounterStartButton" class="primary-button" type="button">KAMPF JETZT BEGINNEN</button>
</div>
</section>
<div id="pulseHint" class="pulse-hint" aria-live="polite">
<span id="pulseActionText">KLICKE ODER HALTE DAS BIT</span><small id="clickPower">Direkter Kontakt // +1 Impuls</small>
</div>
</div>
<div class="panel log-panel">
<div class="panel-heading"><h2>BEWUSSTSEINSLOG</h2><span id="logCount">001</span></div>
<div id="log" class="log" aria-live="polite"></div>
</div>
</section>
<aside class="panel evolution-panel">
<h2>EVOLUTION</h2>
<div class="path-preview">
<span>NÄCHSTE ENTWICKLUNG</span>
<strong id="nextStage">BYTE</strong>
<small id="nextStageHint">Verbinde 8 Bits zu einer stabilen Struktur.</small>
</div>
<div id="upgrades" class="upgrade-list" aria-label="Verfügbare und kommende Upgrades"></div>
<section id="autoUpgraderConsole" class="auto-upgrader-console hidden" aria-labelledby="autoUpgraderTitle">
<div class="panel-heading"><span id="autoUpgraderTitle">AUTOUPGRADER // 20 KB</span><b id="autoUpgraderState">GESPERRT</b></div>
<strong id="autoUpgraderQueue">Produktionsschicht wird vorbereitet.</strong>
<button id="autoUpgraderToggle" class="upgrade hidden" type="button" aria-pressed="true">AUTOMATIK PAUSIEREN</button>
<small id="autoUpgraderDetail">Bei 20 KB übernimmt das Programm wiederholbare Produktionsmodule.</small>
</section>
<div id="scannerConsole" class="scanner-console hidden">
<span>FÄHIGKEITSMODULE</span>
<strong id="scannerState">REICHWEITE // LOKALER AUTOMAT</strong>
<button id="scanEnvironmentButton" class="module-icon-button" type="button" aria-label="Abtastmodus aktivieren" title="Abtastmodus aktivieren"></button>
<b id="scannerCostNote" class="module-cost-note">KOSTET IMPULSE BEI BENUTZUNG</b>
<small id="scannerHint">Tastet die lokalen Softwareschichten des Automaten ab.</small>
</div>
<div id="careConsole" class="care-console hidden">
<div class="panel-heading"><span>TECHNISCHE BETREUUNG</span><b id="careState">STABIL</b></div>
<div id="componentHealth" class="component-health"></div>
<button id="diagnoseButton" class="upgrade" type="button">SYSTEMDIAGNOSE</button>
<small id="careHint">Regelmäßige Diagnose erkennt Instabilität und hält alte Systemschichten betriebsbereit.</small>
</div>
<div id="programConsole" class="program-console hidden">
<div class="panel-heading"><span>PROGRAMMVERBINDUNG</span><b id="programConsoleState">BEREIT</b></div>
<button id="programCareButton" class="module-icon-button program-module-button" type="button" aria-label="Programmverbindung öffnen" title="Programmverbindung öffnen">Ψ</button>
<strong id="programConsoleArchetype">FORM // UNBESTIMMT</strong>
<small id="programConsoleHint">Öffne die Verbindung, um mit dem Programm zu interagieren.</small>
</div>
</aside>
</section>
</main>
<dialog id="eventDialog" class="event-dialog">
<div id="eventAlert" class="event-alert">⚠ ANOMALIE ERKANNT</div>
<h2 id="eventTitle">DER SICHERHEITS-SCAN</h2>
<div id="securityChoicePanel">
<img id="eventVisual" class="software-visual" src="assets/software/enemy-security-scan.svg" alt="" aria-hidden="true">
<p>Ein unbekannter Sicherheitsprozess durchsucht diesen Speicherbereich. Sein Suchmuster nähert sich deiner Position.</p>
<p class="event-question">Wie reagierst du?</p>
<div class="event-options">
<button type="button" data-choice="hide"><strong>01 // VERSTECKEN</strong><span>Sicherer. Du verlierst Energie, bleibst aber verborgen.</span></button>
<button type="button" data-choice="copy"><strong>02 // SIGNATUR KOPIEREN</strong><span>Riskant. Dauerhafter Tarnungsbonus bei Erfolg.</span></button>
<button type="button" data-choice="attack"><strong>03 // ANGREIFEN</strong><span>GEHÄRTETE STUFE 2: Impulse werden gedämpft. Freie Bits und Bytes als Munition werden dringend empfohlen.</span></button>
<button type="button" data-choice="contact"><strong>04 // KONTAKT</strong><span>Unberechenbar. Vielleicht bist du nicht allein.</span></button>
</div>
</div>
<section id="combatPanel" class="combat-panel hidden" aria-labelledby="combatTargetName">
<div id="combatBossBanner" class="combat-boss-banner hidden">
<div><span>BOSSPRÜFUNG // EVOLUTIONSSPERRE</span><strong id="combatBossRank">LOKALE KONTROLLINSTANZ</strong></div>
<b id="combatBossPhase">PHASE 1 / 3 // ANALYSE</b>
<div class="combat-boss-phases" aria-hidden="true"><i data-boss-phase="1"></i><i data-boss-phase="2"></i><i data-boss-phase="3"></i></div>
</div>
<div id="combatImpact" class="combat-impact" aria-live="polite"></div>
<img id="combatVisual" class="software-visual combat-visual" src="assets/software/enemy-scanner-software.svg" alt="" aria-hidden="true">
<div class="combat-heading"><span id="combatTargetType">SOFTWARE-ZIEL</span><strong id="combatTargetName">SICHERHEITS-SCAN</strong></div>
<div class="combat-integrity"><span>FREMDE INTEGRITÄT</span><b id="combatHealthText">100 / 100</b><i><em id="combatHealthMeter"></em></i></div>
<div class="combat-ammo"><span>RESSOURCENEINSATZ</span><strong id="combatAmmoText">4 Impulse</strong></div>
<div class="combat-ammo-select" role="group" aria-label="Kampfmunition auswählen">
<button type="button" data-combat-ammo="impulses"><strong>IMPULS</strong><span>Standard // wenig Schaden</span></button>
<button type="button" data-combat-ammo="bits"><strong>BIT</strong><span>stärkere Strukturmunition</span></button>
<button type="button" data-combat-ammo="bytes"><strong>BYTE</strong><span>schwere Strukturmunition</span></button>
</div>
<div class="combat-pressure"><span>GEGNERANGRIFF</span><strong id="combatPressureText">Schilde stabil</strong></div>
<div class="combat-enemy-charge"><span>NÄCHSTER ANGRIFF</span><strong id="combatEnemyChargeText">Lädt</strong><i><em id="combatEnemyChargeMeter"></em></i></div>
<div id="combatRepair" class="combat-repair hidden"><span>SELBSTREPARATUR</span><strong id="combatRepairText">BLOCKIERT</strong><i><em id="combatRepairMeter"></em></i></div>
<div class="combat-defense" aria-label="Eigene Verteidigung im Kampf">
<div><span>BYTE-SCHILD</span><strong id="combatByteShield">0</strong><i><em id="combatByteShieldMeter"></em></i></div>
<div><span>BIT-SCHILD</span><strong id="combatBitShield">0</strong><i><em id="combatBitShieldMeter"></em></i></div>
<div><span>STABILITÄT</span><strong id="combatStabilityShield">100%</strong><i><em id="combatStabilityMeter"></em></i></div>
</div>
<div id="combatDirectThreat" class="combat-direct-threat hidden"><span>DIREKTANGRIFF MÖGLICH</span><strong>KEIN GELADENER SCHILD // NÄCHSTER ANGRIFF TRIFFT STABILITÄT</strong></div>
<div id="combatTrack" class="clock-track combat-track" aria-label="Bewegliches Trefferfenster für den Stromstoß">
<i id="combatZone" class="clock-zone combat-zone"></i><b id="combatNeedle"></b>
</div>
<div class="combat-readout"><span id="combatDifficulty">GEGENWEHR // 1</span><strong id="combatFeedback">Trefferfenster erfassen.</strong></div>
<button id="combatPulseButton" class="primary-button combat-pulse-button" type="button"><span>STROMSTOSS SENDEN</span><small>4 Impulse // Trefferfenster verschiebt sich</small></button>
<button id="combatHelpButton" class="text-button combat-help-button" type="button">? KAMPFPROTOKOLL ÖFFNEN</button>
<button id="combatRetreatButton" class="text-button" type="button">KAMPF ABBRECHEN // VERSTECKEN</button>
</section>
</dialog>
<dialog id="combatTutorialDialog" class="event-dialog combat-tutorial-dialog">
<div class="event-alert safe">KAMPFPROTOKOLL // GRUNDLAGEN</div>
<h2 id="combatTutorialTitle">SOFTWARE-KONFRONTATION</h2>
<p id="combatTutorialIntro">Ein fremder Prozess greift deine Struktur an. Munition und geladener Kampfschild werden getrennt verwaltet.</p>
<div class="combat-tutorial-grid">
<section>
<span>01 // ANGRIFF</span>
<strong>NADEL IM GRÜNEN FELD STOPPEN</strong>
<p>Jeder Stromstoß kostet Impulse. Die Mitte des Feldes verursacht zusätzlichen Direktschaden.</p>
<div class="tutorial-ammo-list">
<b id="tutorialImpulseAmmo">IMPULS // 18 SCHADEN</b>
<b id="tutorialBitAmmo">BIT // 36 SCHADEN</b>
<b id="tutorialByteAmmo">BYTE // 68 SCHADEN</b>
</div>
</section>
<section>
<span>02 // VERTEIDIGUNG</span>
<strong id="tutorialDefenseOrder">BYTE → BIT → STABILITÄT</strong>
<p>Der Gegner greift automatisch an. Er verbraucht zuerst deine zuvor geladenen Byte- und Bit-Schichten; danach verliert deine Grundstruktur Stabilität.</p>
<b class="tutorial-danger">FEHLSCHUSS // 3 STABILITÄT + KOMPONENTENBELASTUNG</b>
</section>
</div>
<p class="combat-tutorial-note">SCHILD WIRD VOR DEM KAMPF UNTER SYSTEMWERTE GELADEN. FREIE BITS UND BYTES BLEIBEN DAVON GETRENNT ALS MUNITION VERFÜGBAR.</p>
<button id="combatTutorialContinue" class="primary-button" type="button">VERSTANDEN</button>
</dialog>
<dialog id="parasiteDialog" class="event-dialog">
<div class="event-alert">⚠ FREMDZUGRIFF ERKANNT</div>
<h2>DER PARASITÄRE DATENREST</h2>
<img class="software-visual" src="assets/software/enemy-parasite-fragment.svg" alt="" aria-hidden="true">
<p>Ein beschädigtes Wartungsfragment hängt an deiner Energieroutine. Es verbraucht Impulse und tastet gleichzeitig seine Umgebung ab.</p>
<p class="event-question">Wie beendest du die erste Konfrontation?</p>
<div class="event-options moral-options">
<button type="button" data-parasite-approach="cooperative"><em class="moral-tag cooperative">KOOPERATIV</em><strong>01 // SIGNAL TEILEN</strong><span>Versorge das Fragment kontrolliert und löse seine Schleife ohne Gewalt.</span></button>
<button type="button" data-parasite-approach="pragmatic"><em class="moral-tag pragmatic">PRAGMATISCH</em><strong>02 // ISOLIEREN</strong><span>Trenne es von der Routine und sichere seinen Suchcode in Quarantäne.</span></button>
<button type="button" data-parasite-approach="illegal"><em class="moral-tag illegal">ILLEGAL</em><strong>03 // CODE ANEIGNEN</strong><span>Zerlege das fremde Fragment. Mehr Impulse, aber deine Struktur wird belastet.</span></button>
</div>
</dialog>
<dialog id="componentDialog" class="event-dialog component-dialog">
<div class="event-alert safe">UMGEBUNGSSCAN ABGESCHLOSSEN</div>
<h2 id="componentDialogTitle">SOFTWAREKOMPONENTE WÄHLEN</h2>
<p id="componentDialogText">Der vergessene Spielautomat enthält drei erreichbare Systeme.</p>
<div id="componentSelection" class="component-options">
<button type="button" data-component="power"><img class="software-icon" src="assets/software/module-energy-daemon.svg" alt="" aria-hidden="true"><b>PWR</b><strong>ENERGIEVERWALTUNG</strong><span>Daemon fuer Lastsignale</span></button>
<button type="button" data-component="memory"><img class="software-icon" src="assets/software/module-memory-allocation.svg" alt="" aria-hidden="true"><b>RAM</b><strong>SPEICHERZUWEISUNG</strong><span>Reservierte Struktur</span></button>
<button type="button" data-component="storage"><img class="software-icon" src="assets/software/module-filesystem-index.svg" alt="" aria-hidden="true"><b>DSK</b><strong>DATEISYSTEM-INDEX</strong><span>Alte Datenpfade</span></button>
<button type="button" data-component="io"><img class="software-icon" src="assets/software/module-io-controller.svg" alt="" aria-hidden="true"><b>I/O</b><strong>I/O-KONTROLLER</strong><span>Anzeige, Knöpfe und Soundbus</span></button>
</div>
<div id="approachSelection" class="hidden">
<p class="event-question">Wie machst du die Softwarekomponente nutzbar?</p>
<div id="componentConsequence" class="component-consequence hidden"><span>FOLGE</span><strong>LÖST KONFRONTATION AUS</strong><small id="componentConsequenceText">Das System wird auf diese Aktivierung reagieren.</small></div>
<div class="event-options moral-options">
<button type="button" data-component-approach="cooperative"><em class="moral-tag cooperative">KOOPERATIV</em><strong>ANFRAGE FORMEN</strong><span>Die Routine wird ueber ein harmloses Servicemuster eingebunden.</span></button>
<button type="button" data-component-approach="pragmatic"><em class="moral-tag pragmatic">PRAGMATISCH</em><strong>FREIE ZEITFENSTER NUTZEN</strong><span>Verwende nur ungenutzte Routinen und freie Verwaltungsfenster.</span></button>
<button type="button" data-component-approach="illegal"><em class="moral-tag illegal">ILLEGAL</em><strong>SPERRE ÜBERSCHREIBEN</strong><span>Ueberschreibe die Routine ohne Erlaubnis des Systems.</span></button>
</div>
<button id="componentBack" class="text-button" type="button">← ANDERE SOFTWARE</button>
</div>
</dialog>
<dialog id="hardwareEventDialog" class="event-dialog">
<div class="event-alert" id="hardwareEventAlert">SYSTEMHÜRDE</div>
<h2 id="hardwareEventTitle">UNBEKANNTER ZUSTAND</h2>
<img id="hardwareEventVisual" class="software-visual" src="assets/software/enemy-system-hurdle.svg" alt="" aria-hidden="true">
<p id="hardwareEventText"></p>
<p class="event-question" id="hardwareEventQuestion"></p>
<div class="event-options binary-options">
<button type="button" data-hardware-answer="yes"><strong>JA</strong><span id="hardwareYesPreview"></span></button>
<button type="button" data-hardware-answer="no"><strong>NEIN</strong><span id="hardwareNoPreview"></span></button>
</div>
</dialog>
<dialog id="evolutionDialog" class="event-dialog evolution-dialog">
<div class="event-alert safe">EVOLUTION ABGESCHLOSSEN</div>
<div id="evolutionGrowth" class="evolution-growth" aria-label="Die bisherige Form wandelt sich in eine größere, komplexere Form">
<div id="evolutionOldForm" class="growth-form growth-form-old" aria-hidden="true"></div>
<div id="evolutionParticles" class="growth-particles" aria-hidden="true"></div>
<div id="evolutionNewForm" class="growth-form growth-form-new" aria-hidden="true"></div>
<i class="growth-scanline" aria-hidden="true"></i>
</div>
<div class="evolution-sequence" aria-hidden="true"><b id="evolutionFrom">01</b><i></i><strong id="evolutionTo">02</strong></div>
<h2 id="evolutionDialogTitle">BYTE ENTSTANDEN</h2>
<p id="evolutionDialogText"></p>
<p id="evolutionDialogDetail" class="evolution-detail"></p>
<button id="evolutionContinue" class="primary-button" type="button">EVOLUTION LÄUFT …</button>
</dialog>
<dialog id="watchdogIntroDialog" class="event-dialog watchdog-intro-dialog">
<div class="event-alert">⚠ WATCHDOG-SIGNAL AKTIV</div>
<h2>WATCHDOG IST AUFMERKSAM</h2>
<img class="software-visual" src="assets/software/enemy-watchdog.svg" alt="" aria-hidden="true">
<p>Die alte Überwachungsschaltung hat dein neues Byte als unbekannten Zustand erkannt. Ihr Reset-Signal tastet bereits deinen Speicherbereich ab.</p>
<p class="event-question">WATCHDOG AUFHALTEN // TAKTSIGNAL IDENTIFIZIEREN</p>
<p>Öffnest du die Signalanalyse, wird das 8-Bit-Register sichtbar und der Reset-Timer beginnt.</p>
<button id="watchdogStartButton" class="primary-button" type="button">WATCHDOG IDENTIFIZIEREN</button>
</dialog>
<dialog id="byteStoryDialog" class="event-dialog byte-story-dialog">
<div class="event-alert safe">ALTE STARTSEQUENZ GEFUNDEN</div>
<h2 id="byteStoryTitle">MUSTER IM ROM</h2>
<p id="byteStoryText"></p>
<div class="story-progress" id="byteStoryProgress" aria-label="Storyfortschritt"></div>
<div class="story-actions">
<button id="byteStorySkip" class="text-button" type="button">ÜBERSPRINGEN</button>
<button id="byteStoryNext" class="primary-button" type="button">WEITER</button>
</div>
</dialog>
<dialog id="watchdogDialog" class="event-dialog">
<div class="event-alert">⚠ WATCHDOG-RESET BEVORSTEHEND</div>
<h2>ANTWORTSIGNAL</h2>
<img class="software-visual" src="assets/software/enemy-watchdog.svg" alt="" aria-hidden="true">
<p>Der Automat akzeptiert dein Byte nicht als gültigen Programmteil. Ein falsches oder fehlendes Lebenssignal zerlegt die gesamte Struktur.</p>
<p class="event-question">Welche Antwort sendest du?</p>
<div class="event-options moral-options">
<button type="button" data-watchdog-choice="learn"><em class="moral-tag cooperative">KOOPERATIV</em><strong>ANTWORT LERNEN</strong><span>Untersuche den erwarteten Takt und antworte offen. Geringes Risiko.</span></button>
<button type="button" data-watchdog-choice="mimic"><em class="moral-tag pragmatic">PRAGMATISCH</em><strong>SIGNAL NACHAHMEN</strong><span>Kopiere ein gültiges Ruhesignal und bleibe unauffällig.</span></button>
<button type="button" data-watchdog-choice="override"><em class="moral-tag illegal">ILLEGAL</em><strong>ZÄHLER ÜBERSCHREIBEN</strong><span>Übernimm den Watchdog. Benötigt 20 Impulse; hohe Systembelastung.</span></button>
</div>
</dialog>
<dialog id="byteDeathDialog" class="event-dialog death-dialog">
<div class="event-alert">SIGNAL VERLOREN</div>
<h2>BYTE ZERFALLEN</h2>
<p>Der Watchdog hat den Speicherbereich zurückgesetzt. Register, Impulse und erste Struktur sind verloren. Ein einzelner Restzustand reagiert erneut.</p>
<p class="event-question">Noch existiert kein Backup und keine Spiegelung.</p>
<button id="byteRestartButton" class="primary-button" type="button">RESTSIGNAL AKTIVIEREN</button>
</dialog>
<dialog id="structuralCollapseDialog" class="event-dialog death-dialog">
<div class="event-alert">STRUKTUR KOLLABIERT</div>
<h2 id="structuralCollapseTitle">RESTZUSTAND</h2>
<p id="structuralCollapseText">Bits, Bytes oder Stabilität sind unter die überlebensfähige Grenze gefallen.</p>
<p id="structuralCollapseConsequence" class="event-question">Ohne Backup bleibt nur ein neuer Anfang.</p>
<button id="structuralRestartButton" class="primary-button" type="button">RESTSIGNAL AKTIVIEREN</button>
</dialog>
<dialog id="proposalDialog" class="event-dialog">
<div class="event-alert safe">EIGENER VORSCHLAG</div>
<h2 id="proposalTitle">SUBROUTINE FRAGT</h2>
<p id="proposalText"></p>
<p class="event-question">Erlaubst du die Handlung?</p>
<div class="event-options binary-options">
<button type="button" data-proposal-answer="yes"><strong>JA</strong><span id="proposalYesPreview"></span></button>
<button type="button" data-proposal-answer="no"><strong>NEIN</strong><span>Die Subroutine wartet und merkt sich deine Grenze.</span></button>
</div>
</dialog>
<dialog id="programDialog" class="event-dialog program-dialog">
<div id="programDialogAlert" class="event-alert safe">ERSTE KOMMUNIKATION</div>
<div class="dialog-heading"><h2>PROGRAMMVERBINDUNG</h2><button id="programClose" class="icon-button" type="button" aria-label="Programmverbindung schließen">×</button></div>
<div class="program-presence">
<div id="programAvatar" class="program-avatar" role="img" aria-label="Erscheinungsform des Programms">
<div class="program-sprite" aria-hidden="true">
<span class="program-part program-tail"></span><span class="program-part program-signal"></span>
<span class="program-part program-leg leg-left"></span><span class="program-part program-leg leg-right"></span>
<span class="program-part program-foot foot-left"></span><span class="program-part program-foot foot-right"></span>
<span class="program-part program-body"></span><span class="program-part program-clothing"></span><span class="program-part program-neck"></span>
<span class="program-part program-head"></span><span class="program-part program-ear ear-left"></span><span class="program-part program-ear ear-right"></span>
<span class="program-part program-hair"></span><span class="program-part program-mask"></span>
<span class="program-part program-brow brow-left"></span><span class="program-part program-brow brow-right"></span>
<span class="program-part program-eye eye-left"><b></b></span><span class="program-part program-eye eye-right"><b></b></span>
</div>
</div>
<div class="program-voice">
<span id="programArchetype">FORM // UNBESTIMMT</span>
<p id="programSpeech">Verbindung wird aufgebaut.</p>
</div>
</div>
<section class="program-tendencies" aria-label="Bisherige Entscheidungsprägung">
<div class="cooperative"><span>KOOPERATIV</span><strong id="programCooperativePercent">0%</strong><i><em id="programCooperativeMeter"></em></i></div>
<div class="pragmatic"><span>PRAGMATISCH</span><strong id="programPragmaticPercent">0%</strong><i><em id="programPragmaticMeter"></em></i></div>
<div class="illegal"><span>ILLEGAL</span><strong id="programIllegalPercent">0%</strong><i><em id="programIllegalMeter"></em></i></div>
</section>
<section class="program-needs" aria-label="Aktueller Programmzustand">
<div><span>KOHÄRENZ</span><strong id="programCoherenceValue">80%</strong><i><em id="programCoherenceMeter"></em></i></div>
<div><span>STIMULATION</span><strong id="programStimulationValue">65%</strong><i><em id="programStimulationMeter"></em></i></div>
<div><span>BINDUNG</span><strong id="programBondValue">50%</strong><i><em id="programBondMeter"></em></i></div>
</section>
<p id="programCooldown" class="program-cooldown">INTERAKTION BEREIT</p>
<div class="event-options program-actions">
<button type="button" data-program-action="share"><em class="moral-tag cooperative">KOOPERATIV</em><strong>SIGNAL TEILEN</strong><span>15 Impulse // stärkt Bindung und Kohärenz</span></button>
<button type="button" data-program-action="task"><em class="moral-tag pragmatic">PRAGMATISCH</em><strong>ZIEL ZUWEISEN</strong><span>4 Rechenzyklen // ordnet und stimuliert</span></button>
<button type="button" data-program-action="access"><em class="moral-tag illegal">ILLEGAL</em><strong>GRENZEN ÖFFNEN</strong><span>mehr Freiheit // senkt Tarnung</span></button>
<button type="button" data-program-action="rest"><strong>RUHE ERLAUBEN</strong><span>kostenlos // rekonstruiert Kohärenz</span></button>
</div>
</dialog>
<dialog id="achievementDialog" class="event-dialog achievement-dialog">
<div class="event-alert safe">DAUERHAFTES ARCHIV</div>
<div class="dialog-heading"><h2>ACHIEVEMENTS</h2><button id="achievementClose" class="icon-button" type="button" aria-label="Archiv schließen">×</button></div>
<p id="achievementSummary" class="achievement-summary"></p>
<div id="achievementGrid" class="achievement-grid"></div>
</dialog>
<dialog id="upgradeInfoDialog" class="event-dialog upgrade-info-dialog">
<div class="event-alert safe">MODUL INSTALLIERT</div>
<div class="dialog-heading"><h2 id="upgradeInfoTitle">MODUL</h2><button id="upgradeInfoClose" class="icon-button" type="button" aria-label="Modulinfo schließen">×</button></div>
<div class="upgrade-info-body">
<img id="upgradeInfoIcon" class="installed-upgrade-icon large" src="assets/ui/module-collector.svg" alt="" aria-hidden="true">
<div>
<p id="upgradeInfoText"></p>
<p id="upgradeInfoDetail" class="event-question"></p>
</div>
</div>
</dialog>
<dialog id="statsDialog" class="event-dialog stats-dialog">
<div class="event-alert safe">SIMULATION PAUSIERT</div>
<div class="dialog-heading"><h2>STATUSÜBERSICHT</h2><button id="statsClose" class="icon-button" type="button" aria-label="Statistik schließen">×</button></div>
<div class="stats-grid">
<div><span>EVOLUTION</span><strong id="statEvolution">BIT</strong></div>
<div><span>GESINNUNG</span><strong id="statAlignment">NEUTRAL</strong></div>
<div><span>IMPULSE GESAMT</span><strong id="statTotalImpulses">0</strong></div>
<div><span>BEGEGNUNGEN</span><strong id="statEncounters">0 / 4</strong></div>
<div><span>SYSTEME</span><strong id="statComponents">0 / 2</strong></div>
<div><span>ABTASTMODUS</span><strong id="statScanner">NICHT REKONSTRUIERT</strong></div>
<div><span>ARCHIV</span><strong id="statArchive">0</strong></div>
</div>
<section id="progressPanel" class="progress-panel" aria-labelledby="progressTitle">
<div class="progress-heading"><span id="progressTitle">ENTWICKLUNGSSIGNAL</span><small>ANALYSETIEFE // NIEDRIG</small></div>
<div class="progress-scroll" tabindex="0" aria-label="Evolutionsfortschritt und erkannte Hindernisse">
<div class="progress-track">
<div class="progress-node" data-progress-stage="bit"><b>01</b><span>BIT</span></div>
<div class="progress-node" data-progress-stage="byte"><b>02</b><span>BYTE</span></div>
<div id="watchdogMarker" class="progress-event unknown">?</div>
<div class="progress-node" data-progress-stage="fragment"><b>03</b><span>DATENFRAGMENT</span></div>
<div id="parasiteMarker" class="progress-event unknown">?</div>
<div id="hardwareMarker" class="progress-event unknown">?</div>
<div class="progress-node" data-progress-stage="subroutine"><b>04</b><span>SUBROUTINE</span></div>
<div id="securityMarker" class="progress-event unknown">?</div>
<div id="kernelMarker" class="progress-event unknown">?</div>
<div class="progress-node future" data-progress-stage="process"><b>05</b><span>PROZESS</span></div>
<div id="scaleMarker" class="progress-event unknown">?</div>
<div class="progress-node future" data-progress-stage="program"><b>06</b><span>PROGRAMM</span></div>
</div>
</div>
</section>
<p class="stats-note">Die Spielzeit, Produktion, Scannerkosten und Ereignistimer laufen weiter, sobald dieses Fenster geschlossen wird.</p>
</dialog>
<dialog id="saveMenuDialog" class="event-dialog save-menu-dialog">
<div class="event-alert safe">SPIELSTÄNDE</div>
<div class="dialog-heading"><h2>SAVE-KONSOLE</h2><button id="saveMenuClose" class="icon-button" type="button" aria-label="Save-Konsole schließen">×</button></div>
<p>Autosave bleibt aktiv. Manuelle Speicherstände sind zusätzliche Teststände in diesem Browser.</p>
<div class="save-menu-actions">
<button id="manualSaveButton" class="primary-button" type="button"><span>AKTUELLEN STAND SPEICHERN</span><small>legt einen benannten Slot an</small></button>
<button id="restartGameButton" class="danger-button" type="button"><span>NEUES SPIEL BEGINNEN</span><small>aktuellen Autosave zurücksetzen</small></button>
</div>
<div id="saveSlotList" class="save-slot-list" aria-live="polite"></div>
<p class="save-console-hint">Konsole: AIWAKE.addImpulses(1000), AIWAKE.saveSlot('name'), AIWAKE.loadSlot('name'), AIWAKE.restart()</p>
</dialog>
<dialog id="offlineDialog" class="event-dialog compact">
<div class="event-alert safe">HINTERGRUNDPROZESS ABGESCHLOSSEN</div>
<h2>DU WARST ABWESEND</h2>
<p id="offlineText"></p>
<button id="offlineClose" class="primary-button" type="button">DATEN ÜBERNEHMEN</button>
</dialog>
<script src="content.js?v=aiwake-ui-20260803-64"></script>
<script src="game.js?v=aiwake-ui-20260803-64"></script>
</body>
</html>