From 351d5f1cca455e5dc30461056fe9c089a0296953 Mon Sep 17 00:00:00 2001 From: Antigravity Date: Tue, 22 Sep 2026 11:18:34 +0000 Subject: [PATCH] feat(admin-configurator): add guest login screen, responsive navbar menu, fix player modals, sessions and audit logs (fixes #1, #2, #3, #5, #6, #7) --- game/configurator/css/style.css | 171 ++++++++- game/configurator/index.html | 27 +- game/configurator/js/configurator.js | 432 ++++++++++++++++------ game/configurator_work/css/style.css | 171 ++++++++- game/configurator_work/index.html | 27 +- game/configurator_work/js/configurator.js | 432 ++++++++++++++++------ scripts/db.py | 6 +- 7 files changed, 1031 insertions(+), 235 deletions(-) diff --git a/game/configurator/css/style.css b/game/configurator/css/style.css index 8914393..f71af0f 100644 --- a/game/configurator/css/style.css +++ b/game/configurator/css/style.css @@ -148,20 +148,17 @@ body { /* Nav Tabs */ .tabs-navigation { display: flex; + flex-wrap: wrap; gap: 8px; - overflow-x: auto; + overflow-x: visible; + scrollbar-width: none; padding-bottom: 12px; margin-bottom: 20px; - border-bottom: 1px solid rgba(255, 255, 255, 0.06); - scrollbar-width: thin; + border-bottom: 1px solid rgba(255, 255, 255, 0.08); } .tabs-navigation::-webkit-scrollbar { - height: 4px; -} -.tabs-navigation::-webkit-scrollbar-thumb { - background: var(--border-color); - border-radius: 4px; + display: none; } .nav-tab-btn { @@ -177,6 +174,7 @@ body { font-weight: 600; cursor: pointer; white-space: nowrap; + flex-shrink: 0; transition: var(--transition); } @@ -654,7 +652,8 @@ body { padding: 16px; } -.modal-overlay.open { +.modal-overlay.open, +.modal-overlay.active { opacity: 1; pointer-events: auto; } @@ -821,10 +820,29 @@ input:checked + .slider-round:before { .header-actions { width: 100%; justify-content: space-between; + flex-wrap: wrap; + gap: 8px; } .controls-grid { grid-template-columns: 1fr; } + .tabs-navigation { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 6px; + overflow-x: visible; + } + .nav-tab-btn { + justify-content: center; + padding: 8px 10px; + font-size: 12px; + } +} + +@media (max-width: 480px) { + .tabs-navigation { + grid-template-columns: 1fr; + } } @@ -1241,3 +1259,138 @@ input:checked + .slider-round:before { .player-name-link:hover { color: #a5d6a7; } + +/* ========================================================== + Full-Screen Login Screen for Guest State (Cyberpunk Botanical) + ========================================================== */ +.login-page-screen { + min-height: 100vh; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + padding: 24px 16px; + background-color: var(--bg-main); + background-image: + radial-gradient(circle at 50% 30%, rgba(76, 175, 80, 0.12) 0%, transparent 60%), + radial-gradient(circle at 80% 80%, rgba(0, 229, 255, 0.08) 0%, transparent 50%), + linear-gradient(180deg, #090d13 0%, #0d121c 100%); + position: relative; + z-index: 10; +} + +.login-card { + width: 100%; + max-width: 440px; + background: var(--bg-card); + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + border: 1px solid var(--border-color); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-card), 0 0 40px rgba(76, 175, 80, 0.15); + padding: 36px 32px; + animation: loginCardFadeIn 0.35s cubic-bezier(0.16, 1, 0.3, 1); +} + +@keyframes loginCardFadeIn { + from { + opacity: 0; + transform: translateY(16px) scale(0.98); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +.login-card-header { + text-align: center; + margin-bottom: 28px; +} + +.login-brand-icon { + font-size: 42px; + margin-bottom: 8px; + filter: drop-shadow(0 0 16px var(--accent-green-glow)); + animation: pulseGlow 3s ease-in-out infinite alternate; +} + +@keyframes pulseGlow { + 0% { transform: scale(1); filter: drop-shadow(0 0 12px var(--accent-green-glow)); } + 100% { transform: scale(1.05); filter: drop-shadow(0 0 24px var(--accent-cyan-glow)); } +} + +.login-brand-title { + font-size: 20px; + font-weight: 700; + color: var(--text-main); + letter-spacing: -0.3px; + margin-bottom: 8px; + text-shadow: 0 0 20px rgba(76, 175, 80, 0.3); +} + +.login-brand-subtitle { + font-size: 13px; + color: var(--text-muted); + line-height: 1.5; +} + +.password-input-wrapper { + position: relative; + display: flex; + align-items: center; +} + +.password-input-wrapper .form-input { + padding-right: 44px; +} + +.btn-toggle-pwd { + position: absolute; + right: 10px; + background: transparent; + border: none; + color: var(--text-dim); + font-size: 16px; + cursor: pointer; + padding: 4px; + border-radius: var(--radius-sm); + transition: var(--transition); +} + +.btn-toggle-pwd:hover { + color: var(--text-main); + transform: scale(1.1); +} + +.login-error-alert { + background: rgba(255, 82, 82, 0.15); + border: 1px solid rgba(255, 82, 82, 0.45); + color: #ff8a80; + padding: 10px 14px; + border-radius: var(--radius-md); + font-size: 13px; + margin-bottom: 16px; + display: flex; + align-items: center; + gap: 8px; + animation: shakeAlert 0.3s ease; +} + +@keyframes shakeAlert { + 0%, 100% { transform: translateX(0); } + 25% { transform: translateX(-4px); } + 75% { transform: translateX(4px); } +} + +.btn-block { + width: 100%; + padding: 12px; + font-size: 14px; + font-weight: 600; + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + margin-top: 8px; +} diff --git a/game/configurator/index.html b/game/configurator/index.html index 166cc6e..0bfb566 100644 --- a/game/configurator/index.html +++ b/game/configurator/index.html @@ -8,7 +8,31 @@ -
+ + + + +