:root { /* Apple + Stripe Color Palette (Light) */ --auth-bg-gradient-1: #fdfbfb; --auth-bg-gradient-2: #ebedee; --auth-bg-gradient-3: #e0c3fc; --auth-bg-gradient-4: #8ec5fc; --auth-glass-bg: rgba(255, 255, 255, 0.7); --auth-glass-border: rgba(255, 255, 255, 0.5); --auth-glass-shadow: rgba(0, 0, 0, 0.05); --auth-text-main: #1d1d1f; --auth-text-muted: #86868b; --auth-input-bg: rgba(255, 255, 255, 0.8); --auth-input-border: #d2d2d7; --auth-input-focus: #0066cc; --auth-input-focus-shadow: rgba(0, 102, 204, 0.2); --auth-btn-bg: #0066cc; --auth-btn-text: #ffffff; --auth-btn-hover: #0077ed; --auth-shape-1: rgba(142, 197, 252, 0.6); --auth-shape-2: rgba(224, 195, 252, 0.6); --auth-shape-3: rgba(255, 209, 255, 0.6); } [data-bs-theme="dark"] { /* Apple + Stripe Color Palette (Dark) */ --auth-bg-gradient-1: #000000; --auth-bg-gradient-2: #1c1c1e; --auth-bg-gradient-3: #2c1b4d; --auth-bg-gradient-4: #1a2a42; --auth-glass-bg: rgba(28, 28, 30, 0.65); --auth-glass-border: rgba(255, 255, 255, 0.1); --auth-glass-shadow: rgba(0, 0, 0, 0.3); --auth-text-main: #f5f5f7; --auth-text-muted: #86868b; --auth-input-bg: rgba(44, 44, 46, 0.8); --auth-input-border: #3a3a3c; --auth-input-focus: #2997ff; --auth-input-focus-shadow: rgba(41, 151, 255, 0.25); --auth-btn-bg: #2997ff; --auth-btn-text: #ffffff; --auth-btn-hover: #0071e3; --auth-shape-1: rgba(26, 42, 66, 0.8); --auth-shape-2: rgba(44, 27, 77, 0.8); --auth-shape-3: rgba(66, 42, 66, 0.8); } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; margin: 0; padding: 0; min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(-45deg, var(--auth-bg-gradient-1), var(--auth-bg-gradient-2), var(--auth-bg-gradient-3), var(--auth-bg-gradient-4)); background-size: 400% 400%; animation: gradientBG 15s ease infinite; color: var(--auth-text-main); overflow: hidden; position: relative; transition: background-color 0.4s ease, color 0.4s ease; } /* Animated Gradient Background */ @keyframes gradientBG { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* Canvas Particle Layer */ #particleCanvas { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; } /* Floating Shapes */ .bg-shape { position: absolute; filter: blur(60px); border-radius: 50%; z-index: 1; animation: float 20s infinite alternate; } .shape-1 { width: 400px; height: 400px; background: var(--auth-shape-1); top: -100px; left: -100px; animation-delay: 0s; } .shape-2 { width: 500px; height: 500px; background: var(--auth-shape-2); bottom: -150px; right: -100px; animation-delay: -5s; } .shape-3 { width: 300px; height: 300px; background: var(--auth-shape-3); top: 40%; left: 50%; animation-delay: -10s; } @keyframes float { 0% { transform: translate(0, 0) rotate(0deg) scale(1); } 33% { transform: translate(30px, -50px) rotate(10deg) scale(1.1); } 66% { transform: translate(-20px, 20px) rotate(-5deg) scale(0.9); } 100% { transform: translate(0, 0) rotate(0deg) scale(1); } } /* Wrapper */ .auth-wrapper { position: relative; z-index: 10; width: 100%; max-width: 1000px; padding-inline: 20px; } /* Glass Card */ .glass-card { background: var(--auth-glass-bg); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); border: 1px solid var(--auth-glass-border); border-radius: 24px; box-shadow: 0 8px 32px var(--auth-glass-shadow), 0 1px 3px rgba(0,0,0,0.02); overflow: hidden; display: flex; flex-direction: row; min-height: 550px; transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); } .glass-card:hover { box-shadow: 0 12px 48px rgba(0,0,0,0.08), 0 1px 3px rgba(0,0,0,0.02); transform: translateY(-2px); } /* Two-column layout */ .auth-illustration { flex: 1; background: rgba(255, 255, 255, 0.03); border-inline-end: 1px solid var(--auth-glass-border); display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 3rem; text-align: center; } .auth-form-container { flex: 1; padding: 3rem; display: flex; flex-direction: column; justify-content: center; position: relative; } /* Typography */ .auth-title { font-weight: 700; font-size: 1.75rem; margin-bottom: 0.5rem; letter-spacing: -0.02em; color: var(--auth-text-main); } .auth-subtitle { color: var(--auth-text-muted); font-size: 0.95rem; margin-bottom: 2rem; } /* Microsoft Fluent / Stripe Inputs */ .form-floating > .form-control, .form-floating > .form-control:focus { background-color: var(--auth-input-bg); border: 1.5px solid var(--auth-input-border); color: var(--auth-text-main); border-radius: 12px; transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1); } .form-floating > .form-control:focus { border-color: var(--auth-input-focus); box-shadow: 0 0 0 4px var(--auth-input-focus-shadow); } .form-floating > label { color: var(--auth-text-muted); } .form-control:focus ~ label { color: var(--auth-input-focus); } /* Micro-interaction Button */ .btn-auth { background-color: var(--auth-btn-bg); color: var(--auth-btn-text); border: none; border-radius: 12px; padding: 14px 20px; font-weight: 600; font-size: 1rem; letter-spacing: 0.01em; transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1); position: relative; overflow: hidden; } .btn-auth:hover { background-color: var(--auth-btn-hover); transform: scale(1.02); box-shadow: 0 4px 12px var(--auth-input-focus-shadow); } .btn-auth:active { transform: scale(0.98); } /* Loading Overlay */ .auth-loading-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: var(--auth-glass-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-radius: 24px; display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 100; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; } .auth-loading-overlay.active { opacity: 1; pointer-events: all; } .spinner { width: 40px; height: 40px; border: 3px solid var(--auth-input-border); border-top-color: var(--auth-btn-bg); border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: 1rem; } @keyframes spin { to { transform: rotate(360deg); } } /* Theme Switcher & Lang Toggle */ .auth-controls { position: absolute; top: 1.5rem; inset-inline-end: 1.5rem; display: flex; gap: 0.5rem; z-index: 20; } .control-btn { background: var(--auth-glass-bg); border: 1px solid var(--auth-glass-border); color: var(--auth-text-muted); width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s ease; } .control-btn:hover { color: var(--auth-text-main); background: var(--auth-input-bg); transform: rotate(15deg) scale(1.1); } /* Responsive */ @media (max-width: 768px) { .glass-card { flex-direction: column; } .auth-illustration { border-inline-end: none; border-bottom: 1px solid var(--auth-glass-border); padding: 2rem; flex: none; } .auth-form-container { padding: 2rem; } }