Add help modal, changelog, map visits, Dockerfile, CI

- Help modal (? button or keyboard shortcut): how-to-play in Swedish,
  flavor text, full changelog sourced from src/data/version.ts
- src/data/version.ts: versioned changelog entries, in-universe Malmö voice
- Map zone clicks: each location on the Leaflet map is now clickable.
  Unlocked cult areas give resources + log entries. Locked locations show
  lore hints. 30s cooldown per location so it's a decision, not a spam button.
- Dockerfile + nginx.conf + docker-compose.yml (port 5684)
- Gitea CI workflow (identical to 2048 — derives image from repo path, needs
  TKNTKN secret, pushes :latest and :sha tags)
- README.md with mechanics summary and docker instructions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Fredrik Johansson
2026-07-07 23:31:37 +02:00
parent f5776f269b
commit 5fcb339408
11 changed files with 420 additions and 3 deletions

View File

@@ -269,6 +269,128 @@ body {
.phase-tag.mid { color: var(--accent); border-color: var(--accent); }
.phase-tag.late { color: var(--dread); border-color: var(--dread); }
/* ── Help button ── */
.help-btn {
margin-left: auto;
background: none;
border: 1px solid var(--border);
color: var(--dim);
font-family: inherit;
font-size: 10px;
letter-spacing: 0.08em;
padding: 3px 10px;
cursor: pointer;
transition: border-color 0.15s, color 0.15s;
}
.help-btn:hover { border-color: var(--accent); color: var(--accent); }
/* ── Help modal ── */
.help-modal {
display: none;
position: fixed;
inset: 0;
background: rgba(6, 6, 14, 0.88);
z-index: 200;
align-items: center;
justify-content: center;
}
.help-modal.visible { display: flex; }
.help-modal-inner {
background: var(--panel);
border: 1px solid var(--border);
width: min(640px, 92vw);
max-height: 80vh;
display: flex;
flex-direction: column;
overflow: hidden;
}
.help-modal-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 18px;
border-bottom: 1px solid var(--border);
flex-shrink: 0;
}
.help-modal-title {
font-size: 11px;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--accent);
}
.help-close {
background: none;
border: none;
color: var(--dim);
font-size: 14px;
cursor: pointer;
padding: 0 4px;
line-height: 1;
transition: color 0.15s;
}
.help-close:hover { color: var(--text); }
.help-modal-body {
overflow-y: auto;
padding: 18px;
display: flex;
flex-direction: column;
gap: 20px;
}
.help-section { display: flex; flex-direction: column; gap: 8px; }
.help-section-title {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--dim);
padding-bottom: 4px;
border-bottom: 1px solid var(--border);
}
.help-list {
list-style: none;
display: flex;
flex-direction: column;
gap: 5px;
font-size: 11px;
line-height: 1.6;
color: var(--text);
}
.help-list li::before { content: '— '; color: var(--dim); }
.help-list strong { color: var(--accent); }
.help-list em { color: var(--dread); font-style: normal; }
.help-flavor {
font-size: 11px;
color: var(--dim);
line-height: 1.8;
font-style: italic;
}
.help-changelog-entry {
margin-bottom: 14px;
}
.help-changelog-version {
font-size: 11px;
font-weight: 700;
color: var(--accent);
margin-bottom: 5px;
}
.help-changelog-date {
font-weight: 400;
color: var(--dim);
margin-left: 6px;
}
@media (max-width: 900px) {
#app { grid-template-columns: 1fr; }
.panel { border-right: none; border-bottom: 1px solid var(--border); }