feat: footer, auto-pause on no viewers, and Redsys question submissions

- Footer: add site-footer with one-liner + Cloud Host branding linking to cloudhost.es (mobile only, hidden on desktop)
- Auto-pause: game pauses automatically after AUTOPAUSE_DELAY_MS (default 60s) with no viewers connected; auto-resumes when first viewer connects; shows "Esperando espectadores…" in the UI
- Redsys: new /pregunta page lets viewers pay 1€ via Redsys to submit a fill-in question; submitted questions are used as prompts in the next round instead of AI generation; new redsys.ts implements HMAC_SHA256_V1 signing (3DES key derivation + HMAC-SHA256); notification endpoint at /api/redsys/notificacion handles server-to-server confirmation
- db.ts: questions table with createPendingQuestion / markQuestionPaid / getNextPendingQuestion / markQuestionUsed
- .env.sample: added AUTOPAUSE_DELAY_MS, PUBLIC_URL, REDSYS_* vars

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 14:03:30 +01:00
parent 4b0b9f8f50
commit 2fac92356d
12 changed files with 747 additions and 20 deletions

View File

@@ -736,6 +736,28 @@ body {
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
/* ── Site Footer ──────────────────────────────────────────────── */
.site-footer {
flex-shrink: 0;
padding: 14px 20px;
border-top: 1px solid var(--border);
text-align: center;
font-size: 12px;
color: var(--text-muted);
line-height: 1.7;
}
.site-footer__link {
color: var(--text-dim);
text-decoration: none;
}
.site-footer__link:hover {
color: var(--text);
text-decoration: underline;
}
/* ── Desktop (1024px+) ───────────────────────────────────────── */
@media (min-width: 1024px) {
@@ -791,4 +813,6 @@ body {
padding: 24px;
gap: 24px;
}
.site-footer { display: none; }
}