/* Login Page - Full viewport centered layout */ .login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: var(--bg-primary); padding: 24px; position: relative; overflow: hidden; } /* Subtle background pattern */ .login-page::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 20% 50%, rgba(16, 185, 129, 0.08) 0%, transparent 50%), radial-gradient(circle at 80% 50%, rgba(16, 185, 129, 0.05) 0%, transparent 50%); pointer-events: none; } .login-container { width: 100%; max-width: 400px; position: relative; z-index: 1; } /* Card styling */ .login-card { background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: var(--radius-xl); padding: 40px; box-shadow: var(--shadow-lg); } /* Header section */ .login-header { text-align: center; margin-bottom: 32px; } .login-logo { display: inline-flex; align-items: center; justify-content: center; width: 80px; height: 80px; background: var(--accent-gradient); border-radius: var(--radius-lg); color: white; margin-bottom: 24px; box-shadow: var(--shadow-glow); } .login-header h1 { font-size: 1.5rem; font-weight: 600; color: var(--text-primary); margin-bottom: 8px; letter-spacing: -0.02em; } .login-subtitle { color: var(--text-tertiary); font-size: 0.875rem; } .login-subtitle.login-warning { color: var(--warning); font-weight: 500; } /* Error message */ .login-error { display: flex; align-items: center; gap: 10px; background: var(--error-bg); border: 1px solid rgba(239, 68, 68, 0.2); color: var(--error); padding: 12px 16px; border-radius: var(--radius-md); margin-bottom: 24px; font-size: 0.875rem; } .login-error svg { flex-shrink: 0; } /* Form styling */ .login-form { display: flex; flex-direction: column; gap: 20px; } .login-form-group { display: flex; flex-direction: column; gap: 8px; } .login-form-group label { font-size: 0.875rem; font-weight: 500; color: var(--text-secondary); } .login-form-group input { width: 100%; padding: 14px 16px; background: var(--bg-tertiary); border: 1px solid var(--border-primary); border-radius: var(--radius-md); font-size: 0.9375rem; color: var(--text-primary); transition: all var(--transition-fast); } .login-form-group input::placeholder { color: var(--text-muted); } .login-form-group input:hover:not(:disabled) { border-color: var(--border-secondary); background: var(--bg-elevated); } .login-form-group input:focus { outline: none; border-color: var(--accent-primary); box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15); background: var(--bg-elevated); } .login-form-group input:disabled { opacity: 0.6; cursor: not-allowed; } /* Submit button */ .login-submit { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; padding: 14px 20px; background: var(--accent-gradient); border: none; border-radius: var(--radius-md); font-size: 0.9375rem; font-weight: 500; color: white; cursor: pointer; transition: all var(--transition-fast); margin-top: 8px; box-shadow: var(--shadow-sm), 0 0 20px rgba(16, 185, 129, 0.2); } .login-submit:hover:not(:disabled) { transform: translateY(-1px); box-shadow: var(--shadow-md), 0 0 30px rgba(16, 185, 129, 0.3); } .login-submit:active:not(:disabled) { transform: translateY(0); } .login-submit:disabled { opacity: 0.7; cursor: not-allowed; transform: none; } /* Loading spinner */ .login-spinner { width: 16px; height: 16px; border: 2px solid rgba(255, 255, 255, 0.3); border-top-color: white; border-radius: 50%; animation: spin 0.6s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Loading state */ .login-loading { text-align: center; padding: 64px 32px; color: var(--text-tertiary); font-size: 0.9375rem; } /* Footer */ .login-footer { text-align: center; margin-top: 24px; padding-top: 24px; } .login-footer p { color: var(--text-muted); font-size: 0.8125rem; } /* SSO Divider */ .login-divider { display: flex; align-items: center; gap: 16px; margin: 24px 0; } .login-divider::before, .login-divider::after { content: ''; flex: 1; height: 1px; background: var(--border-primary); } .login-divider span { font-size: 0.8125rem; color: var(--text-muted); text-transform: lowercase; } /* SSO Button */ .login-sso-button { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; padding: 14px 20px; background: var(--bg-tertiary); border: 1px solid var(--border-primary); border-radius: var(--radius-md); font-size: 0.9375rem; font-weight: 500; color: var(--text-primary); text-decoration: none; cursor: pointer; transition: all var(--transition-fast); } .login-sso-button:hover { background: var(--bg-hover); border-color: var(--border-secondary); transform: translateY(-1px); box-shadow: var(--shadow-sm); } .login-sso-button:active { transform: translateY(0); } .login-sso-button svg { color: var(--accent-primary); } /* Responsive adjustments */ @media (max-width: 480px) { .login-card { padding: 32px 24px; } .login-logo { width: 64px; height: 64px; } .login-logo svg { width: 36px; height: 36px; } .login-header h1 { font-size: 1.25rem; } }