/* Authentication Styles */ .auth-body { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 20px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } .auth-container { width: 100%; max-width: 400px; position: relative; } .auth-card { background: white; border-radius: 12px; box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); padding: 40px; margin-bottom: 20px; } .auth-header { text-align: center; margin-bottom: 30px; } .auth-header h1 { color: #2c3e50; font-size: 2rem; font-weight: 600; margin-bottom: 8px; } .auth-header p { color: #7f8c8d; font-size: 14px; margin: 0; } .auth-form { width: 100%; } .form-group { margin-bottom: 24px; } .form-group label { display: block; margin-bottom: 6px; font-weight: 500; color: #2c3e50; font-size: 14px; } .form-group input { width: 100%; padding: 12px 16px; border: 2px solid #e1e8ed; border-radius: 8px; font-size: 16px; transition: all 0.3s ease; background-color: #fff; box-sizing: border-box; } .form-group input:focus { outline: none; border-color: #667eea; box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); } .form-group input:invalid { border-color: #e74c3c; } .form-group input:valid { border-color: #27ae60; } .help-text { font-size: 12px; color: #7f8c8d; margin-top: 6px; line-height: 1.4; clear: both; } .checkbox-group { margin: 28px 0; } .checkbox-label { display: flex !important; align-items: center !important; flex-direction: row !important; flex-wrap: nowrap !important; cursor: pointer; font-size: 14px; color: #2c3e50; line-height: 1.6; gap: 12px !important; } .checkbox-text { display: inline !important; } .checkbox-label input[type="checkbox"] { width: 0; height: 0; margin: 0; opacity: 0; position: absolute; pointer-events: none; } .checkmark { width: 18px; height: 18px; border: 2px solid #e1e8ed; border-radius: 4px; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; flex-shrink: 0; margin-top: 1px; } .checkbox-label input[type="checkbox"]:checked+.checkmark { background-color: #667eea; border-color: #667eea; } .checkbox-label input[type="checkbox"]:checked+.checkmark::after { content: '✓'; color: white; font-size: 12px; font-weight: bold; } .checkbox-label input[type="checkbox"]:focus+.checkmark { box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); } .form-actions { margin: 30px 0 20px 0; } .btn-full { width: 100%; justify-content: center; padding: 14px 20px; font-size: 16px; font-weight: 600; border-radius: 8px; transition: all 0.3s ease; position: relative; overflow: hidden; } .btn-primary { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(102, 126, 234, 0.3); } .btn-secondary { background: #f8f9fa; color: #495057; border: 2px solid #e1e8ed; text-decoration: none; display: flex; align-items: center; } .btn-secondary:hover { background: #e9ecef; border-color: #adb5bd; transform: translateY(-1px); } .btn-loading { display: flex; align-items: center; justify-content: center; gap: 8px; } .loading-spinner { width: 16px; height: 16px; border: 2px solid rgba(255, 255, 255, 0.3); border-top: 2px solid white; border-radius: 50%; animation: spin 1s linear infinite; } .loading-spinner.large { width: 32px; height: 32px; border-width: 3px; border-color: rgba(102, 126, 234, 0.3); border-top-color: #667eea; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .auth-links { text-align: center; margin: 20px 0; } .auth-link { color: #667eea; text-decoration: none; font-size: 14px; font-weight: 500; transition: color 0.3s ease; } .auth-link:hover { color: #5a6fd8; text-decoration: underline; } .auth-divider { text-align: center; margin: 30px 0 20px 0; position: relative; } .auth-divider::before { content: ''; position: absolute; top: 50%; left: 0; right: 0; height: 1px; background: #e1e8ed; } .auth-divider span { background: white; padding: 0 20px; color: #7f8c8d; font-size: 14px; position: relative; } .auth-footer { margin-top: 20px; } /* Password Requirements */ .password-requirements { margin-top: 10px; padding: 16px; background: #f8f9fa; border-radius: 6px; border: 1px solid #e9ecef; clear: both; } .requirement { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; font-size: 12px; color: #6c757d; } .requirement:last-child { margin-bottom: 0; } .req-icon { width: 16px; height: 16px; display: flex; align-items: center; justify-content: center; font-size: 10px; flex-shrink: 0; } .requirement.valid { color: #28a745; } .requirement.valid .req-icon { color: #28a745; } .requirement.valid .req-icon::before { content: '✓'; } .requirement.invalid { color: #dc3545; } .requirement.invalid .req-icon { color: #dc3545; } .requirement.invalid .req-icon::before { content: '✗'; } /* Error and Success Messages */ .auth-error, .auth-success { background: white; border-radius: 8px; padding: 16px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); margin-bottom: 20px; animation: slideIn 0.3s ease; } .auth-error { border-left: 4px solid #e74c3c; } .auth-success { border-left: 4px solid #27ae60; } .error-content, .success-content { display: flex; align-items: center; gap: 12px; } .error-icon, .success-icon { font-size: 18px; flex-shrink: 0; } .error-message, .success-message { color: #2c3e50; font-size: 14px; font-weight: 500; } @keyframes slideIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } /* Email Verification Styles */ .verification-state { text-align: center; padding: 20px 0; } .verification-icon { margin-bottom: 24px; } .verification-icon .icon { font-size: 48px; display: block; } .verification-icon.success .icon { color: #27ae60; } .verification-icon.error .icon { color: #e74c3c; } .verification-icon.loading { display: flex; justify-content: center; align-items: center; height: 48px; } .verification-content h2 { color: #2c3e50; font-size: 1.5rem; font-weight: 600; margin-bottom: 12px; } .verification-content p { color: #7f8c8d; font-size: 14px; line-height: 1.5; margin-bottom: 0; } /* Mobile Responsive */ @media (max-width: 480px) { .auth-body { padding: 10px; } .auth-card { padding: 30px 20px; } .auth-header h1 { font-size: 1.75rem; } .form-group input { font-size: 16px; /* Prevents zoom on iOS */ } .btn-full { padding: 16px 20px; font-size: 16px; } .checkbox-label { display: flex !important; align-items: center !important; flex-direction: row !important; } .checkbox-text { display: inline !important; } } /* High contrast mode support */ @media (prefers-contrast: high) { .auth-card { border: 2px solid #000; } .form-group input { border-width: 2px; } .form-group input:focus { border-width: 3px; } } /* Reduced motion support */ @media (prefers-reduced-motion: reduce) { .loading-spinner { animation: none; } .btn-primary:hover, .btn-secondary:hover { transform: none; } @keyframes slideIn { from { opacity: 0; } to { opacity: 1; } } } /* Dark mode support */ @media (prefers-color-scheme: dark) { .auth-body { background: linear-gradient(135deg, #2c3e50 0%, #34495e 100%); } .auth-card { background: #2c3e50; color: #ecf0f1; } .auth-header h1 { color: #ecf0f1; } .auth-header p { color: #bdc3c7; } .form-group label { color: #ecf0f1; } .form-group input { background: #34495e; border-color: #4a5f7a; color: #ecf0f1; } .form-group input:focus { border-color: #667eea; background: #34495e; } .help-text { color: #bdc3c7; } .checkbox-label { color: #ecf0f1; } .checkmark { border-color: #4a5f7a; background: #34495e; } .btn-secondary { background: #34495e; color: #ecf0f1; border-color: #4a5f7a; } .btn-secondary:hover { background: #4a5f7a; } .auth-divider::before { background: #4a5f7a; } .auth-divider span { background: #2c3e50; color: #bdc3c7; } .password-requirements { background: #34495e; border-color: #4a5f7a; } .requirement { color: #bdc3c7; } .auth-error, .auth-success { background: #2c3e50; } .error-message, .success-message { color: #ecf0f1; } .verification-content h2 { color: #ecf0f1; } .verification-content p { color: #bdc3c7; } }