diff --git a/src/components/admin/AdminCommon.css b/src/components/admin/AdminCommon.css index de48832..51e45e5 100644 --- a/src/components/admin/AdminCommon.css +++ b/src/components/admin/AdminCommon.css @@ -305,3 +305,57 @@ background: rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.45); } + +/* Mobile responsive */ +@media (max-width: 768px) { + .admin-form { + padding: 16px 12px; + } + + .admin-input, + .admin-textarea { + width: 100%; + box-sizing: border-box; + } + + .admin-list-item { + flex-direction: column; + align-items: flex-start; + gap: 8px; + padding: 10px 12px; + } + + .admin-list-info { + width: 100%; + } + + .admin-list-actions { + width: 100%; + justify-content: flex-end; + } + + .admin-form-actions { + flex-direction: column; + } + + .admin-form-actions button { + width: 100%; + min-height: 44px; + } + + .btn-admin-primary, + .btn-admin-secondary, + .btn-admin-edit, + .btn-admin-delete { + min-height: 44px; + } + + .admin-meta-row { + flex-direction: column; + } + + .admin-deploy-header { + flex-direction: column; + align-items: flex-start; + } +} diff --git a/src/pages/AdminPage.css b/src/pages/AdminPage.css index 59fb36e..c8c060d 100644 --- a/src/pages/AdminPage.css +++ b/src/pages/AdminPage.css @@ -95,3 +95,43 @@ margin: 0 auto; padding: 32px 24px 80px; } + +/* Mobile responsive */ +@media (max-width: 768px) { + .admin-header { + flex-direction: column; + gap: 12px; + padding: 12px 16px; + } + + .admin-header-left { + width: 100%; + justify-content: center; + } + + .admin-header-right { + width: 100%; + justify-content: center; + } + + .admin-tabs { + padding: 12px 16px 0; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; + } + + .admin-tabs::-webkit-scrollbar { + display: none; + } + + .admin-tab { + white-space: nowrap; + flex-shrink: 0; + min-height: 44px; + } + + .admin-main { + padding: 20px 12px 60px; + } +} diff --git a/src/pages/AuthPage.css b/src/pages/AuthPage.css index 1a00ba8..a16860b 100644 --- a/src/pages/AuthPage.css +++ b/src/pages/AuthPage.css @@ -165,12 +165,65 @@ color: rgba(255, 255, 255, 0.7); } -.password-strength { - font-size: 0.8rem; - color: rgba(186, 205, 176, 0.7); - margin: -12px 0 0; +/* Validation feedback */ +.input-hint { + font-size: 0.75rem; + color: #888; + margin-top: 2px; } -.password-strength.strength-weak { +.input-hint-error { color: #e57373; } + +.input-hint-success { + color: #bacdb0; +} + +.input-group input.input-valid { + border-color: #bacdb0 !important; +} + +.input-group input.input-invalid { + border-color: #e57373 !important; +} + +.password-strength { + font-size: 0.75rem; + margin-top: 2px; +} + +.strength-weak { + color: #e57373; +} + +.strength-medium { + color: #ffd54f; +} + +.strength-strong { + color: #bacdb0; +} + +/* Mobile responsive */ +@media (max-width: 768px) { + .login-panel { + max-width: 100%; + padding: 32px 20px; + margin: 0 12px; + border-radius: 8px; + } + + .game-title { + font-size: 2.2rem; + } + + .login-header { + margin-bottom: 28px; + } + + .btn-login, + .btn-ssafy { + min-height: 44px; + } +} diff --git a/src/pages/HomePage.css b/src/pages/HomePage.css index 885fd4b..efd630e 100644 --- a/src/pages/HomePage.css +++ b/src/pages/HomePage.css @@ -124,3 +124,43 @@ margin: 0 auto; padding: 40px 24px 80px; } + +/* Mobile responsive */ +@media (max-width: 768px) { + .home-header { + flex-direction: column; + gap: 12px; + padding: 12px 16px; + text-align: center; + } + + .home-user { + width: 100%; + justify-content: center; + } + + .hero-banner { + height: 180px; + } + + .hero-title { + font-size: 1.8rem; + } + + .hero-desc { + font-size: 0.85rem; + } + + .home-main { + padding: 24px 16px 60px; + } + + .btn-logout, + .btn-admin-link, + .btn-header-login { + min-height: 44px; + display: inline-flex; + align-items: center; + justify-content: center; + } +} diff --git a/src/pages/LoginPage.jsx b/src/pages/LoginPage.jsx index de17398..8d4316a 100644 --- a/src/pages/LoginPage.jsx +++ b/src/pages/LoginPage.jsx @@ -51,6 +51,7 @@ export default function LoginPage() { placeholder="아이디를 입력하세요" autoComplete="username" maxLength={50} + aria-describedby={error ? 'login-error' : undefined} /> @@ -64,11 +65,12 @@ export default function LoginPage() { placeholder="비밀번호를 입력하세요" autoComplete="current-password" maxLength={72} + aria-describedby={error ? 'login-error' : undefined} /> {justRegistered &&
회원가입이 완료되었습니다. 로그인해주세요.
} - {error &&{error}
} + {error &&{error}
}