diff --git a/game.js b/game.js index 97f019d..ca36112 100644 --- a/game.js +++ b/game.js @@ -3228,3 +3228,15 @@ window.addEventListener('keydown', function (e) { saveGame(); } }); + +// Save-on-pause: auto-save when tab is hidden or window loses focus +// Prevents lost progress if browser crashes, tab closes, or device sleeps +document.addEventListener('visibilitychange', function () { + if (document.hidden) saveGame(); +}); +window.addEventListener('blur', function () { + saveGame(); +}); +window.addEventListener('beforeunload', function () { + saveGame(); +}); diff --git a/index.html b/index.html index b6e5673..1338608 100644 --- a/index.html +++ b/index.html @@ -67,6 +67,7 @@ body{background:var(--bg);color:var(--text);font-family:'SF Mono','Cascadia Code .build-btn.can-buy{border-color:#2a3a4a;background:#0e1420} .build-btn.can-buy:hover{border-color:var(--accent);box-shadow:0 0 8px var(--glow)} .build-btn:disabled{opacity:0.3;cursor:not-allowed} +.build-btn,.project-btn,.ops-btn,.main-btn{touch-action:manipulation} .b-name{color:var(--accent);font-weight:600}.b-count{float:right;color:var(--gold)}.b-cost{color:var(--dim);display:block}.b-effect{color:var(--green);display:block;font-size:9px} .project-btn{display:block;width:100%;text-align:left;padding:6px 10px;margin-bottom:4px;border-radius:4px;cursor:pointer;font-family:inherit;font-size:10px;background:#0c0c18;border:1px solid var(--border);color:var(--text);transition:all 0.15s} .project-btn.can-buy{border-color:#3a2a0a;background:#141008}