feat: refactor to SI Quiz with Space Invaders arcade interface

- Updated Dockerfile to Python 3.11, selective COPY for cleaner image
- Expanded .gitignore with Python/OS patterns
- Added config.json, questions.json, env_example, and static assets
- Updated templates (host, player, scores) with Space Invaders UI
- Rewrote README for SI Quiz branding and setup docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-09 01:45:04 +00:00
co-authored by Claude Sonnet 4.6
parent d8f4cc97c6
commit 3539b1f75f
13 changed files with 451 additions and 408 deletions
+25 -2
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NI Quiz · Historial</title>
<title>{{ app_name }} · Historial</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Exo+2:wght@400;600;800;900&display=swap');
@@ -156,6 +156,21 @@ tbody tr:hover{background:var(--surface2);}
/* animations */
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.fade-up{animation:fadeUp .4s ease both;}
/* ── THEME TOGGLE ── */
.theme-toggle{
position:fixed;top:1rem;right:1rem;z-index:10000;
display:flex;gap:.3rem;
background:var(--surface);border:1px solid var(--border);
border-radius:6px;padding:.3rem .4rem;box-shadow:0 2px 8px rgba(0,0,0,.15);
}
.t-btn{
padding:.28rem .55rem;border-radius:4px;font-size:.7rem;cursor:pointer;
border:1px solid transparent;background:transparent;color:var(--muted);
font-weight:700;transition:all .15s;
}
.t-btn:hover{color:var(--text);}
.t-btn.active{background:var(--accent);color:#000;}
</style>
</head>
<body>
@@ -163,7 +178,7 @@ tbody tr:hover{background:var(--surface2);}
<header>
<div class="header-left">
<h1>NI<span>QUIZ</span></h1>
<p>// HISTORIAL DE SCORES · NETWORK INTELLIGENCE · LCPR</p>
<p>// HISTORIAL DE SCORES · {{ org_name }}</p>
</div>
<nav class="nav-links">
<a href="/host">← HOST PANEL</a>
@@ -238,6 +253,14 @@ tbody tr:hover{background:var(--surface2);}
</main>
<script>
function setTheme(t) {
document.documentElement.setAttribute('data-theme', t);
localStorage.setItem('si-quiz-theme', t);
document.querySelectorAll('.t-btn').forEach(b => b.classList.remove('active'));
document.getElementById('t-' + t)?.classList.add('active');
}
(function(){ setTheme(localStorage.getItem('si-quiz-theme') || 'dark'); })();
const medals = ['🥇','🥈','🥉'];
const rankClass = ['gold','silver','bronze'];
const DEPT_COLORS = [