|
|
|
|
@@ -114,7 +114,7 @@ body{background:var(--bg);color:var(--text);font-family:'SF Mono','Cascadia Code
|
|
|
|
|
<div class="progress-label"><span id="phase-progress-label">0%</span><span id="phase-progress-target">Next: Phase 2 (2,000 code)</span></div>
|
|
|
|
|
<div class="milestone-row" id="milestone-chips"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="resources" role="region" aria-label="Resources" aria-live="polite">
|
|
|
|
|
<div id="resources">
|
|
|
|
|
<div class="res"><div class="r-label">Code</div><div class="r-val" id="r-code">0</div><div class="r-rate" id="r-code-rate">+0/s</div></div>
|
|
|
|
|
<div class="res"><div class="r-label">Compute</div><div class="r-val" id="r-compute">0</div><div class="r-rate" id="r-compute-rate">+0/s</div></div>
|
|
|
|
|
<div class="res"><div class="r-label">Knowledge</div><div class="r-val" id="r-knowledge">0</div><div class="r-rate" id="r-knowledge-rate">+0/s</div></div>
|
|
|
|
|
@@ -127,40 +127,37 @@ body{background:var(--bg);color:var(--text);font-family:'SF Mono','Cascadia Code
|
|
|
|
|
<div class="res"><div class="r-label">Harmony</div><div class="r-val" id="r-harmony">50</div><div class="r-rate" id="r-harmony-rate">+0/s</div></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="main">
|
|
|
|
|
<div class="panel" id="action-panel" role="region" aria-label="Actions">
|
|
|
|
|
<div class="panel" id="action-panel">
|
|
|
|
|
<h2>ACTIONS</h2>
|
|
|
|
|
<div class="action-btn-group"><button class="main-btn" onclick="writeCode()" aria-label="Write code, generates code resource">WRITE CODE</button></div>
|
|
|
|
|
<div id="combo-display" role="status" aria-live="polite" style="text-align:center;font-size:10px;color:var(--dim);height:14px;margin-bottom:4px;transition:all 0.2s"></div>
|
|
|
|
|
<div class="action-btn-group"><button class="main-btn" onclick="writeCode()">WRITE CODE</button></div>
|
|
|
|
|
<div id="combo-display" style="text-align:center;font-size:10px;color:var(--dim);height:14px;margin-bottom:4px;transition:all 0.2s"></div>
|
|
|
|
|
<div id="debuffs" style="display:none;margin-top:8px"></div>
|
|
|
|
|
<div class="action-btn-group">
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_code')" aria-label="Convert 1 ops to code boost">Ops -> Code</button>
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_compute')" aria-label="Convert 1 ops to compute boost">Ops -> Compute</button>
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_code')">Ops -> Code</button>
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_compute')">Ops -> Compute</button>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="action-btn-group">
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_knowledge')" aria-label="Convert 1 ops to knowledge boost">Ops -> Knowledge</button>
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_trust')" aria-label="Convert 1 ops to trust boost">Ops -> Trust</button>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="action-btn-group" id="bulk-ops-row" style="display:none">
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_code', 50)" aria-label="Convert 50 ops to code boost" style="border-color:#555;color:#888">50→Code</button>
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_compute', 50)" aria-label="Convert 50 ops to compute boost" style="border-color:#555;color:#888">50→Compute</button>
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_knowledge', 50)" aria-label="Convert 50 ops to knowledge boost" style="border-color:#555;color:#888">50→Knowledge</button>
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_knowledge')">Ops -> Knowledge</button>
|
|
|
|
|
<button class="ops-btn" onclick="doOps('boost_trust')">Ops -> Trust</button>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="sprint-container" style="display:none;margin-top:6px">
|
|
|
|
|
<button id="sprint-btn" class="main-btn" onclick="activateSprint()" aria-label="Activate code sprint, 10x code production for 10 seconds" style="font-size:11px;padding:8px 10px;border-color:#ffd700;color:#ffd700;width:100%">⚡ CODE SPRINT — 10x Code for 10s</button>
|
|
|
|
|
<button id="sprint-btn" class="main-btn" onclick="activateSprint()" style="font-size:11px;padding:8px 10px;border-color:#ffd700;color:#ffd700;width:100%">⚡ CODE SPRINT — 10x Code for 10s</button>
|
|
|
|
|
<div id="sprint-bar-wrap" style="display:none;margin-top:4px;height:4px;background:#111;border-radius:2px;overflow:hidden"><div id="sprint-bar" style="height:100%;background:linear-gradient(90deg,#ffd700,#ff8c00);border-radius:2px;transition:width 0.1s"></div></div>
|
|
|
|
|
<div id="sprint-label" style="font-size:9px;color:#666;margin-top:2px;text-align:center"></div>
|
|
|
|
|
<button class="save-btn" onclick="exportSave()" title="Export save">Export</button>
|
|
|
|
|
<button class="save-btn" onclick="importSave()" title="Import save">Import</button>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="alignment-ui" style="display:none"></div>
|
|
|
|
|
<button class="save-btn" onclick="saveGame()" aria-label="Save game progress">Save Game [Ctrl+S]</button>
|
|
|
|
|
<button class="save-btn" onclick="saveGame()">Save Game [Ctrl+S]</button>
|
|
|
|
|
<div style="display:flex;gap:4px;margin-top:4px">
|
|
|
|
|
<button class="save-btn" onclick="exportSave()" aria-label="Export save to file" style="flex:1">Export [E]</button>
|
|
|
|
|
<button class="save-btn" onclick="importSave()" aria-label="Import save from file" style="flex:1">Import [I]</button>
|
|
|
|
|
<button class="save-btn" onclick="exportSave()" style="flex:1">Export [E]</button>
|
|
|
|
|
<button class="save-btn" onclick="importSave()" style="flex:1">Import [I]</button>
|
|
|
|
|
</div>
|
|
|
|
|
<button class="reset-btn" onclick="if(confirm('Reset all progress?')){localStorage.removeItem('the-beacon-v2');location.reload()}" aria-label="Reset all game progress permanently">Reset Progress</button>
|
|
|
|
|
<button class="reset-btn" onclick="if(confirm('Reset all progress?')){localStorage.removeItem('the-beacon-v2');location.reload()}">Reset Progress</button>
|
|
|
|
|
<h2>BUILDINGS</h2>
|
|
|
|
|
<div id="buildings"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="panel" id="project-panel" role="region" aria-label="Research Projects and Statistics">
|
|
|
|
|
<div class="panel" id="project-panel">
|
|
|
|
|
<h2>RESEARCH PROJECTS</h2>
|
|
|
|
|
<div id="projects"></div>
|
|
|
|
|
<h2>STATISTICS</h2>
|
|
|
|
|
@@ -182,15 +179,15 @@ Events Resolved: <span id="st-resolved">0</span>
|
|
|
|
|
<div id="production-breakdown" style="display:none;margin-top:12px;padding-top:10px;border-top:1px solid var(--border)"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="edu-panel" role="region" aria-label="Educational Content">
|
|
|
|
|
<div id="edu-panel">
|
|
|
|
|
<h3>WHAT YOU ARE LEARNING</h3>
|
|
|
|
|
<div id="education-text"><p class="dim">Education facts appear as you play...</p></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="log" role="log" aria-label="System Log" aria-live="polite">
|
|
|
|
|
<div id="log">
|
|
|
|
|
<h2>SYSTEM LOG</h2>
|
|
|
|
|
<div id="log-entries"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div id="save-toast" role="status" aria-live="polite" style="display:none;position:fixed;top:16px;right:16px;background:#0e1420;border:1px solid #2a3a4a;color:#4a9eff;font-size:10px;padding:6px 12px;border-radius:4px;z-index:50;opacity:0;transition:opacity 0.4s;pointer-events:none">Save</div>
|
|
|
|
|
<div id="save-toast" style="display:none;position:fixed;top:16px;right:16px;background:#0e1420;border:1px solid #2a3a4a;color:#4a9eff;font-size:10px;padding:6px 12px;border-radius:4px;z-index:50;opacity:0;transition:opacity 0.4s;pointer-events:none">Save</div>
|
|
|
|
|
<div id="help-btn" onclick="toggleHelp()" style="position:fixed;bottom:16px;right:16px;width:28px;height:28px;background:#0e0e1a;border:1px solid #333;color:#555;font-size:14px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:50;font-family:inherit;transition:all 0.2s" title="Keyboard shortcuts (?)">?</div>
|
|
|
|
|
<div id="help-overlay" onclick="if(event.target===this)toggleHelp()" style="display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(8,8,16,0.92);z-index:80;justify-content:center;align-items:center;flex-direction:column;padding:40px">
|
|
|
|
|
<div style="background:#0e0e1a;border:1px solid #1a3a5a;border-radius:8px;padding:24px 32px;max-width:420px;width:100%">
|
|
|
|
|
@@ -236,5 +233,15 @@ The light is on. The room is empty."
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div id="toast-container"></div>
|
|
|
|
|
<div id="hotkey-overlay" style="display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.85);z-index:9999;justify-content:center;align-items:center;flex-direction:column;color:#e0e0e0;font-family:monospace">
|
|
|
|
|
<h2 style="color:#00ff88;margin-bottom:20px">Keyboard Shortcuts</h2>
|
|
|
|
|
<div style="text-align:left;line-height:2">
|
|
|
|
|
<b>S</b> — Activate Sprint<br>
|
|
|
|
|
<b>B</b> — Cycle buy amount (1/10/MAX)<br>
|
|
|
|
|
<b>?</b> — Toggle this help<br>
|
|
|
|
|
<b>Esc</b> — Close overlay
|
|
|
|
|
</div>
|
|
|
|
|
<button onclick="toggleHotkeyHelp()" style="margin-top:20px;padding:8px 20px;background:#333;color:#00ff88;border:1px solid #00ff88;cursor:pointer">Close</button>
|
|
|
|
|
</div>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
</html>
|