diff --git a/frontend/src/app.css b/frontend/src/app.css index 0bd2e58..82ef839 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -52,6 +52,7 @@ html { font-size: 16px; -webkit-font-smoothing: antialiased; + -webkit-text-size-adjust: 100%; } body { @@ -170,6 +171,19 @@ input::placeholder { margin: 0 auto; padding: 0 24px; } +@media (max-width: 640px) { + .container { padding: 0 12px; } +} + +/* ═══════════════════════════════════════════════════════════════ + RESPONSIVE TOUCH ADJUSTMENTS + ═══════════════════════════════════════════════════════════════ */ +@media (max-width: 640px) { + h1 { font-size: 1.5rem; } + h2 { font-size: 1.25rem; } + .btn { padding: 8px 14px; font-size: 0.85rem; min-height: 40px; } + input, textarea, select { font-size: 16px; } /* prevents iOS zoom */ +} /* ═══════════════════════════════════════════════════════════════ SCROLLBAR diff --git a/frontend/src/lib/GameCard.svelte b/frontend/src/lib/GameCard.svelte index ec77ea3..94f4728 100644 --- a/frontend/src/lib/GameCard.svelte +++ b/frontend/src/lib/GameCard.svelte @@ -87,6 +87,12 @@ overflow: hidden; text-overflow: ellipsis; } + @media (max-width: 480px) { + .info { padding: 8px; } + .info h3 { font-size: 0.8rem; } + .year, .genre { font-size: 0.7rem; } + .badge { font-size: 0.6rem; padding: 1px 6px; top: 4px; right: 4px; } + } .year, .genre { font-size: 0.8rem; color: var(--text-dim); diff --git a/frontend/src/lib/Header.svelte b/frontend/src/lib/Header.svelte index 4a69f6a..cc333d2 100644 --- a/frontend/src/lib/Header.svelte +++ b/frontend/src/lib/Header.svelte @@ -40,6 +40,9 @@ align-items: center; justify-content: space-between; } + @media (max-width: 640px) { + .header-inner { padding: 0 12px; } + } .logo { display: flex; align-items: center; @@ -58,6 +61,10 @@ letter-spacing: 0.15em; animation: phosphor-pulse 3s ease-in-out infinite; } + @media (max-width: 640px) { + .logo-text { font-size: 1rem; letter-spacing: 0.1em; } + .logo-icon { width: 28px; height: 28px; } + } nav { display: flex; gap: 8px; diff --git a/frontend/src/pages/GameDetail.svelte b/frontend/src/pages/GameDetail.svelte index 7245585..dbb1855 100644 --- a/frontend/src/pages/GameDetail.svelte +++ b/frontend/src/pages/GameDetail.svelte @@ -545,4 +545,18 @@ background: #112211; color: #66ff66; } + + /* ─── Responsive ────────────────────────────────── */ + @media (max-width: 640px) { + .detail { padding: 16px 0; } + .detail-layout { gap: 16px; } + .cover-section { max-width: 200px; } + .cover-placeholder { font-size: 3rem; } + .media-thumb { width: 160px; height: 90px; } + .scrape-header { flex-direction: column; align-items: flex-start; gap: 8px; } + .scrape-buttons { width: 100%; } + .scrape-buttons .btn { flex: 1; justify-content: center; } + .edit-row { flex-direction: column; } + .edit-row input { width: 100% !important; } + } diff --git a/frontend/src/pages/Library.svelte b/frontend/src/pages/Library.svelte index ad96158..7d25eb0 100644 --- a/frontend/src/pages/Library.svelte +++ b/frontend/src/pages/Library.svelte @@ -105,6 +105,9 @@ .library { padding: 32px 0; } + @media (max-width: 640px) { + .library { padding: 16px 0; } + } .toolbar { display: flex; justify-content: space-between; @@ -124,6 +127,12 @@ align-items: center; flex-wrap: wrap; } + @media (max-width: 640px) { + .toolbar-actions { width: 100%; flex-direction: column; } + .toolbar-actions input[type="text"] { width: 100%; min-width: 0; } + .upload-group { width: 100%; } + .title-input { width: 100% !important; min-width: 0 !important; } + } .toolbar-actions input { min-width: 200px; } @@ -148,6 +157,9 @@ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 20px; } + @media (max-width: 480px) { + .grid { grid-template-columns: repeat(2, 1fr); gap: 12px; } + } .error { background: #331111; border: 1px solid #cc3333; diff --git a/frontend/src/pages/Play.svelte b/frontend/src/pages/Play.svelte index bc5732d..d7c3a3c 100644 --- a/frontend/src/pages/Play.svelte +++ b/frontend/src/pages/Play.svelte @@ -139,6 +139,7 @@