Spaces:
Sleeping
Sleeping
| /* Login.css */ | |
| .login-page { | |
| min-height: 100vh; | |
| background: var(--bg-gradient); | |
| display: flex; | |
| flex-direction: column; | |
| padding: 24px 16px; | |
| } | |
| .login-content { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 100%; | |
| } | |
| .login-page-footer { | |
| flex-shrink: 0; | |
| width: 100%; | |
| padding-top: 24px; | |
| display: flex; | |
| justify-content: center; | |
| } | |
| .login-page-copyright { | |
| max-width: 720px; | |
| margin: 0 auto; | |
| padding: 0 16px 8px 16px; | |
| font-size: 12px; | |
| line-height: 1.4; | |
| color: var(--text-tertiary); | |
| text-align: center; | |
| } | |
| .login-container { | |
| width: 100%; | |
| max-width: 420px; | |
| background: var(--bg-primary); | |
| border: 1px solid var(--border-primary); | |
| border-radius: 20px; | |
| box-shadow: var(--shadow-xl); | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| overflow: hidden; | |
| animation: fadeInUp 0.6s ease-out; | |
| } | |
| [data-theme="dark"] .login-container { | |
| box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.6); | |
| } | |
| /* Header Section */ | |
| .login-header { | |
| text-align: center; | |
| padding: 40px 32px 32px 32px; | |
| background: var(--bg-secondary); | |
| border-bottom: 1px solid var(--border-primary); | |
| } | |
| .logo-container { | |
| width: 56px; | |
| height: 56px; | |
| background: var(--accent-gradient); | |
| border-radius: 16px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| margin: 0 auto 20px auto; | |
| box-shadow: var(--shadow-md); | |
| } | |
| .logo-icon { | |
| width: 28px; | |
| height: 28px; | |
| color: #FFFFFF; | |
| } | |
| .login-title { | |
| font-size: 28px; | |
| font-weight: 700; | |
| color: var(--text-primary); | |
| margin: 0 0 8px 0; | |
| line-height: 1.2; | |
| } | |
| .login-subtitle { | |
| font-size: 16px; | |
| color: var(--text-secondary); | |
| margin: 0; | |
| line-height: 1.5; | |
| } | |
| /* Form Container */ | |
| .login-form-container { | |
| padding: 32px; | |
| } | |
| .login-form { | |
| margin-bottom: 24px; | |
| } | |
| /* Form Groups */ | |
| .form-group { | |
| margin-bottom: 20px; | |
| } | |
| .form-label { | |
| display: block; | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin-bottom: 8px; | |
| } | |
| /* Input Container */ | |
| .input-container { | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| } | |
| .input-icon { | |
| position: absolute; | |
| left: 16px; | |
| width: 16px; | |
| height: 16px; | |
| color: var(--text-tertiary); | |
| z-index: 1; | |
| transition: color 0.2s ease; | |
| } | |
| .form-input { | |
| width: 100%; | |
| padding: 16px 16px 16px 48px; | |
| border: 1px solid var(--border-secondary); | |
| border-radius: 12px; | |
| background: var(--input-bg); | |
| color: var(--text-primary); | |
| font-size: 16px; | |
| transition: all 0.2s ease; | |
| outline: none; | |
| } | |
| .form-input::placeholder { | |
| color: var(--text-tertiary); | |
| } | |
| .form-input:focus { | |
| border-color: var(--accent-primary); | |
| box-shadow: var(--input-focus-shadow); | |
| } | |
| .form-input:focus + .input-icon, | |
| .input-container:focus-within .input-icon { | |
| color: var(--accent-primary); | |
| } | |
| .form-input.error { | |
| border-color: var(--error-text); | |
| background: var(--error-bg); | |
| } | |
| /* Password Toggle */ | |
| .password-toggle { | |
| position: absolute; | |
| right: 16px; | |
| background: none; | |
| border: none; | |
| color: var(--text-tertiary); | |
| cursor: pointer; | |
| padding: 4px; | |
| border-radius: 6px; | |
| transition: all 0.2s ease; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .password-toggle:hover { | |
| color: var(--text-primary); | |
| background: var(--bg-secondary); | |
| } | |
| /* Form Actions */ | |
| .form-actions { | |
| display: flex; | |
| justify-content: flex-end; | |
| margin-bottom: 24px; | |
| } | |
| .forgot-password { | |
| background: none; | |
| border: none; | |
| color: var(--accent-primary); | |
| font-size: 14px; | |
| font-weight: 500; | |
| cursor: pointer; | |
| padding: 4px 8px; | |
| border-radius: 6px; | |
| transition: all 0.2s ease; | |
| } | |
| .forgot-password:hover { | |
| background: var(--bg-secondary); | |
| color: var(--accent-primary); | |
| } | |
| /* Error Messages */ | |
| .error-message { | |
| display: block; | |
| color: var(--error-text); | |
| font-size: 13px; | |
| margin-top: 6px; | |
| font-weight: 500; | |
| } | |
| .submit-error { | |
| background: var(--error-bg); | |
| border: 1px solid var(--error-border); | |
| border-radius: 8px; | |
| padding: 12px 16px; | |
| margin-bottom: 20px; | |
| color: var(--error-text); | |
| font-size: 14px; | |
| font-weight: 500; | |
| text-align: center; | |
| } | |
| /* Submit Button */ | |
| .submit-btn { | |
| width: 100%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 8px; | |
| background: var(--accent-gradient); | |
| color: #FFFFFF; | |
| border: none; | |
| padding: 16px 24px; | |
| border-radius: 12px; | |
| font-size: 16px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| box-shadow: var(--shadow-md); | |
| margin-bottom: 24px; | |
| } | |
| .submit-btn:hover:not(:disabled) { | |
| transform: translateY(-2px); | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .submit-btn:active:not(:disabled) { | |
| transform: translateY(0); | |
| } | |
| .submit-btn:disabled { | |
| opacity: 0.7; | |
| cursor: not-allowed; | |
| transform: none; | |
| } | |
| .submit-btn.loading { | |
| pointer-events: none; | |
| } | |
| /* Loading Spinner */ | |
| .loading-spinner { | |
| width: 16px; | |
| height: 16px; | |
| border: 2px solid rgba(255, 255, 255, 0.3); | |
| border-top: 2px solid #FFFFFF; | |
| border-radius: 50%; | |
| animation: spin 1s linear infinite; | |
| } | |
| @keyframes spin { | |
| 0% { transform: rotate(0deg); } | |
| 100% { transform: rotate(360deg); } | |
| } | |
| /* Divider */ | |
| .divider { | |
| position: relative; | |
| text-align: center; | |
| margin: 24px 0; | |
| } | |
| .divider::before { | |
| content: ''; | |
| position: absolute; | |
| top: 50%; | |
| left: 0; | |
| right: 0; | |
| height: 1px; | |
| background: var(--border-secondary); | |
| } | |
| .divider span { | |
| background: var(--bg-primary); | |
| color: var(--text-tertiary); | |
| font-size: 13px; | |
| font-weight: 500; | |
| padding: 0 16px; | |
| position: relative; | |
| z-index: 1; | |
| } | |
| /* Social Login */ | |
| .social-login { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| margin-bottom: 24px; | |
| } | |
| .google-btn, | |
| .phone-btn { | |
| width: 100%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 12px; | |
| padding: 14px 20px; | |
| border: 1px solid var(--border-secondary); | |
| border-radius: 12px; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| font-size: 15px; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all 0.2s ease; | |
| } | |
| .google-btn:hover:not(:disabled), | |
| .phone-btn:hover:not(:disabled) { | |
| border-color: var(--border-primary); | |
| background: var(--bg-secondary); | |
| transform: translateY(-1px); | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .google-btn:disabled, | |
| .phone-btn:disabled { | |
| opacity: 0.6; | |
| cursor: not-allowed; | |
| transform: none; | |
| } | |
| .google-icon { | |
| width: 18px; | |
| height: 18px; | |
| flex-shrink: 0; | |
| } | |
| /* Footer */ | |
| .login-footer { | |
| text-align: center; | |
| padding: 24px 32px 16px 32px; | |
| border-top: 1px solid var(--border-primary); | |
| background: var(--bg-secondary); | |
| } | |
| .login-footer p { | |
| color: var(--text-secondary); | |
| font-size: 14px; | |
| margin: 0; | |
| } | |
| .login-powered-by { | |
| margin-top: 16px; | |
| padding-top: 16px; | |
| border-top: 1px solid var(--border-secondary); | |
| text-align: center; | |
| } | |
| .login-powered-by .footer-neon-link { | |
| font-size: 13px; | |
| color: var(--text-tertiary); | |
| } | |
| .link-btn { | |
| background: none; | |
| border: none; | |
| color: var(--accent-primary); | |
| font-size: 14px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| padding: 0; | |
| text-decoration: underline; | |
| text-underline-offset: 2px; | |
| transition: color 0.2s ease; | |
| } | |
| .link-btn:hover { | |
| color: var(--accent-secondary); | |
| } | |
| /* Animations */ | |
| @keyframes fadeInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Mobile Responsive */ | |
| @media (max-width: 480px) { | |
| .login-page { | |
| padding: 16px 12px; | |
| } | |
| .login-container { | |
| max-width: 100%; | |
| border-radius: 16px; | |
| } | |
| .login-header { | |
| padding: 32px 24px 24px 24px; | |
| } | |
| .login-title { | |
| font-size: 24px; | |
| } | |
| .login-subtitle { | |
| font-size: 15px; | |
| } | |
| .login-form-container { | |
| padding: 24px; | |
| } | |
| .form-input { | |
| font-size: 16px; /* Prevents zoom on iOS */ | |
| padding: 14px 14px 14px 44px; | |
| } | |
| .submit-btn { | |
| padding: 14px 20px; | |
| font-size: 15px; | |
| } | |
| .google-btn, | |
| .phone-btn { | |
| padding: 12px 16px; | |
| font-size: 14px; | |
| } | |
| .login-footer { | |
| padding: 20px 24px 24px 24px; | |
| } | |
| } | |
| /* Focus and Accessibility */ | |
| .submit-btn:focus-visible, | |
| .google-btn:focus-visible, | |
| .phone-btn:focus-visible, | |
| .forgot-password:focus-visible, | |
| .link-btn:focus-visible, | |
| .password-toggle:focus-visible { | |
| outline: 2px solid var(--accent-primary); | |
| outline-offset: 2px; | |
| } | |
| .form-input:focus-visible { | |
| outline: none; /* Handled by border and shadow */ | |
| } | |
| /* High Contrast Mode */ | |
| @media (prefers-contrast: high) { | |
| .login-container { | |
| border-width: 2px; | |
| } | |
| .form-input { | |
| border-width: 2px; | |
| } | |
| .submit-btn { | |
| border: 2px solid var(--accent-primary); | |
| } | |
| } | |
| /* Reduced Motion */ | |
| @media (prefers-reduced-motion: reduce) { | |
| .login-container, | |
| .submit-btn, | |
| .google-btn, | |
| .phone-btn, | |
| .form-input, | |
| .password-toggle, | |
| .forgot-password, | |
| .link-btn { | |
| transition: none; | |
| } | |
| .loading-spinner { | |
| animation: none; | |
| } | |
| .fadeInUp { | |
| animation: none; | |
| } | |
| } |