From 33ba2a78b2e1980a5454d4bb050eef8b8f0c89c7 Mon Sep 17 00:00:00 2001 From: truetype Date: Mon, 29 Jun 2026 16:38:52 +0200 Subject: [PATCH] feat(ui): adattamento mobile responsive MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Hamburger button (☰) nell'header per aprire sidebar - Sidebar come drawer overlay su mobile (<768px) - Sidebar backdrop con chiusura al tap - Swipe a sinistra per chiudere sidebar - Safe-area per iPhone notch - Font-size 16px su input (previene zoom iOS) - dvh per altezza viewport mobile - Auto-focus input solo su desktop --- src/web/static/index.html | 126 +++++++++++++++++++++++++++++++++++++- 1 file changed, 124 insertions(+), 2 deletions(-) diff --git a/src/web/static/index.html b/src/web/static/index.html index 9ef6ac9..9e18ca6 100644 --- a/src/web/static/index.html +++ b/src/web/static/index.html @@ -621,6 +621,103 @@ html, body { margin-right: 12px; } @keyframes spin { to { transform: rotate(360deg); } } + +/* Hamburger menu button */ +#btn-menu { + display: none; + background: none; + border: none; + color: var(--text-secondary); + font-size: 22px; + cursor: pointer; + padding: 4px 6px; + line-height: 1; +} + +/* Sidebar backdrop (mobile) */ +#sidebar-backdrop { + display: none; + position: fixed; + inset: 0; + background: rgba(0,0,0,0.5); + z-index: 8; +} + +/* ============================================================ + Mobile Responsive + ============================================================ */ +@media (max-width: 768px) { + #btn-menu { display: block; } + + #sidebar { + position: fixed; + left: -320px; + top: 0; + bottom: 0; + width: 300px; + min-width: 300px; + z-index: 9; + transition: left 0.25s ease; + box-shadow: 4px 0 20px rgba(0,0,0,0.5); + } + #sidebar.open { left: 0; } + #sidebar-backdrop.open { display: block; } + + #app { flex-direction: column; } + #main { + width: 100%; + height: 100dvh; + } + + #header { + padding: 0 12px; + gap: 10px; + min-height: 48px; + height: 48px; + } + #header h1 { font-size: 14px; letter-spacing: 1px; } + #header .turn-badge { font-size: 11px; } + + #chat { + padding: 12px; + gap: 10px; + font-size: 15px; + } + + #input-area { + padding: 8px 10px; + padding-bottom: max(8px, env(safe-area-inset-bottom)); + } + #input-area input { + font-size: 16px; /* prevent zoom on iOS */ + padding: 10px 12px; + } + #btn-send { + width: 44px; + height: 44px; + font-size: 20px; + } + + /* Welcome screen */ + #welcome h1 { font-size: 28px; } + #welcome .subtitle { font-size: 14px; } + .camp-list { max-width: 100%; padding: 0 12px; } + #new-camp-form { width: 100%; max-width: 100%; padding: 0 12px; } + + /* Sidebar content */ + .sidebar-section { padding: 10px 12px; } + .sidebar-section h2 { font-size: 10px; } + .char-name { font-size: 14px; } + .stat-grid { gap: 3px; } + .stat-row { font-size: 12px; } + .area-item { font-size: 12px; } +} + +@media (max-width: 480px) { + #sidebar { width: 260px; min-width: 260px; left: -260px; } + #header h1 { font-size: 12px; } + .msg-bubble { font-size: 14px; } +} @@ -651,7 +748,7 @@ html, body {
Nessuna area