.login-page-container { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 50%, #3b82f6 100%); position: relative; overflow: hidden; padding: 1rem; } // Background Shapes .background-shapes { position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; z-index: 0; } .shape { position: absolute; border-radius: 50%; background: rgba(255, 255, 255, 0.1); animation: float 6s ease-in-out infinite; &.shape-1 { width: 200px; height: 200px; top: 10%; left: 10%; animation-delay: 0s; } &.shape-2 { width: 150px; height: 150px; top: 60%; right: 15%; animation-delay: 2s; } &.shape-3 { width: 100px; height: 100px; bottom: 20%; left: 20%; animation-delay: 4s; } } @keyframes float { 0%, 100% { transform: translateY(0px) rotate(0deg); } 50% { transform: translateY(-20px) rotate(180deg); } } // Main Content .login-content { display: grid; grid-template-columns: 1fr 1fr; max-width: 1200px; width: 100%; background: rgba(255, 255, 255, 0.95); border-radius: 20px; box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); overflow: hidden; position: relative; z-index: 1; } // Branding Section .branding-section { background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 50%, #3b82f6 100%); padding: 3rem; display: flex; align-items: center; justify-content: center; color: white; position: relative; &::before { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: url('data:image/svg+xml,'); opacity: 0.3; } } .branding-content { position: relative; z-index: 1; text-align: center; } .logo-container { display: flex; align-items: center; justify-content: center; margin-bottom: 2rem; gap: 1rem; .logo-image { height: 60px; width: auto; filter: brightness(0) invert(1); } .logo-text { h1 { margin: 0; font-size: 2.5rem; font-weight: 700; letter-spacing: -0.02em; } .tagline { font-size: 1rem; opacity: 0.9; font-weight: 300; } } } .welcome-text { margin-bottom: 3rem; h2 { font-size: 2rem; font-weight: 600; margin: 0 0 1rem 0; letter-spacing: -0.01em; } p { font-size: 1.1rem; opacity: 0.9; line-height: 1.6; margin: 0; } } .features-list { display: flex; flex-direction: column; gap: 1rem; .feature-item { display: flex; align-items: center; gap: 1rem; padding: 0.75rem; background: rgba(255, 255, 255, 0.1); border-radius: 12px; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); transition: all 0.3s ease; &:hover { background: rgba(255, 255, 255, 0.2); transform: translateX(5px); } .feature-icon { font-size: 1.5rem; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, 0.2); border-radius: 10px; } span { font-weight: 500; font-size: 1rem; } } } // Login Section .login-section { padding: 3rem; display: flex; align-items: center; justify-content: center; } .login-card { width: 100%; max-width: 400px; } .login-header { text-align: center; margin-bottom: 2rem; h3 { font-size: 2rem; font-weight: 700; color: #1a1a1a; margin: 0 0 0.5rem 0; letter-spacing: -0.01em; } p { color: #666; font-size: 1rem; margin: 0; } } .login-actions { margin-bottom: 2rem; } .signin-button { width: 100%; height: 56px; border-radius: 12px; font-size: 1.1rem; font-weight: 600; background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 50%, #3b82f6 100%); border: none; box-shadow: 0 8px 25px rgba(30, 58, 138, 0.3); transition: all 0.3s ease; &:hover { transform: translateY(-2px); box-shadow: 0 12px 35px rgba(30, 58, 138, 0.4); } &:active { transform: translateY(0); } .button-content { display: flex; align-items: center; justify-content: center; gap: 0.5rem; } .button-icon { width: 20px; height: 20px; } } // Demo Section .demo-section { background: #f8f9fa; border-radius: 16px; padding: 1.5rem; border: 1px solid #e9ecef; } .demo-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1rem; color: #495057; font-weight: 600; font-size: 0.9rem; .demo-icon { width: 16px; height: 16px; } } .credential-tabs { display: flex; background: white; border-radius: 8px; padding: 4px; margin-bottom: 1rem; border: 1px solid #e9ecef; } .tab-button { flex: 1; padding: 0.75rem 1rem; border: none; background: transparent; border-radius: 6px; font-size: 0.9rem; font-weight: 500; color: #6c757d; cursor: pointer; transition: all 0.2s ease; &.active { background: #1e40af; color: white; box-shadow: 0 2px 4px rgba(30, 64, 175, 0.2); } &:hover:not(.active) { background: #f8f9fa; color: #495057; } } .credential-content { .credential-item { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem; background: white; border-radius: 8px; margin-bottom: 0.5rem; border: 1px solid #e9ecef; transition: all 0.2s ease; &:hover { border-color: #1e40af; box-shadow: 0 2px 8px rgba(30, 64, 175, 0.1); } .label { font-weight: 600; color: #495057; min-width: 60px; font-size: 0.9rem; } .value { flex: 1; font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace; font-size: 0.9rem; color: #1a1a1a; background: #f8f9fa; padding: 0.25rem 0.5rem; border-radius: 4px; } .copy-btn { background: #1e40af; border: none; border-radius: 6px; padding: 0.5rem; color: white; cursor: pointer; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; &:hover { background: #1e3a8a; transform: scale(1.05); } svg { width: 14px; height: 14px; } } } } // Login Form Styles .login-form-state { .login-header { position: relative; text-align: center; .back-button { position: absolute; left: 0; top: 50%; transform: translateY(-50%); background: none; border: none; padding: 0.5rem; border-radius: 8px; cursor: pointer; color: #666; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; &:hover { background: #f8f9fa; color: #1e40af; } svg { width: 20px; height: 20px; } } h3 { margin: 0 0 0.5rem 0; } p { margin: 0 0 1.5rem 0; font-size: 0.95rem; } } } .login-form { .error-message { display: flex; align-items: center; gap: 0.5rem; background: #fee2e2; color: #dc2626; padding: 0.75rem 1rem; border-radius: 8px; border: 1px solid #fecaca; margin-bottom: 1.5rem; font-size: 0.9rem; font-weight: 500; .error-icon { width: 16px; height: 16px; flex-shrink: 0; } } .form-field { margin-bottom: 1.5rem; kendo-label { display: block; margin-bottom: 0.5rem; font-weight: 600; color: #374151; font-size: 0.9rem; } kendo-textbox { width: 100%; .k-textbox { height: 48px; border-radius: 8px; border: 2px solid #e5e7eb; font-size: 1rem; transition: all 0.2s ease; &:focus { border-color: #1e40af; box-shadow: 0 0 0 3px rgba(30, 64, 175, 0.1); } &.k-invalid { border-color: #dc2626; } } } .field-error { margin-top: 0.25rem; font-size: 0.8rem; color: #dc2626; font-weight: 500; } &.checkbox-field { margin-bottom: 1rem; .checkbox-container { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; user-select: none; kendo-checkbox { margin: 0; } .checkbox-label { font-size: 0.9rem; color: #6b7280; font-weight: 500; margin: 0; } &:hover .checkbox-label { color: #1e40af; } // Style when checkbox is checked &:has(kendo-checkbox:checked) .checkbox-label { color: #1e40af; } } } } .form-actions { margin-top: 2rem; .submit-button { width: 100%; height: 48px; border-radius: 8px; font-size: 1rem; font-weight: 600; background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 50%, #3b82f6 100%); border: none; box-shadow: 0 4px 12px rgba(30, 58, 138, 0.3); transition: all 0.3s ease; &:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(30, 58, 138, 0.4); } &:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } .button-content { display: flex; align-items: center; justify-content: center; gap: 0.5rem; } .button-icon { width: 18px; height: 18px; } } } } // Mobile Responsive @media (max-width: 768px) { .login-page-container { padding: 0.5rem; } .login-content { grid-template-columns: 1fr; border-radius: 16px; } .branding-section { padding: 2rem 1.5rem; order: 2; } .login-section { padding: 2rem 1.5rem; order: 1; } .logo-container { flex-direction: column; gap: 0.5rem; .logo-text h1 { font-size: 2rem; } } .welcome-text { margin-bottom: 2rem; h2 { font-size: 1.5rem; } p { font-size: 1rem; } } .features-list { .feature-item { padding: 0.5rem; .feature-icon { width: 35px; height: 35px; font-size: 1.25rem; } span { font-size: 0.9rem; } } } .login-header h3 { font-size: 1.75rem; } .signin-button { height: 50px; font-size: 1rem; } .demo-section { padding: 1rem; } .credential-tabs { .tab-button { padding: 0.5rem 0.75rem; font-size: 0.85rem; } } .credential-content { .credential-item { padding: 0.5rem; .label { min-width: 50px; font-size: 0.85rem; } .value { font-size: 0.85rem; } } } // Login form mobile styles .login-form-state { .login-header { .back-button { padding: 0.4rem; svg { width: 18px; height: 18px; } } } } .login-form { .form-field { margin-bottom: 1.25rem; kendo-textbox .k-textbox { height: 44px; font-size: 0.95rem; } } .form-actions .submit-button { height: 44px; font-size: 0.95rem; } } } @media (max-width: 480px) { .login-page-container { padding: 0.25rem; } .branding-section, .login-section { padding: 1.5rem 1rem; } .logo-container .logo-text h1 { font-size: 1.75rem; } .welcome-text h2 { font-size: 1.25rem; } .features-list { .feature-item { .feature-icon { width: 30px; height: 30px; font-size: 1rem; } span { font-size: 0.85rem; } } } // Login form extra small mobile styles .login-form { .form-field { margin-bottom: 1rem; kendo-textbox .k-textbox { height: 40px; font-size: 0.9rem; } } .form-actions .submit-button { height: 40px; font-size: 0.9rem; } } }