/* ─── Premium Glassmorphism Dark Mode Design System ─── */ :root { --bg-primary: #0b0f19; --bg-grid: rgba(99, 102, 241, 0.03); --card-bg: rgba(17, 24, 39, 0.65); --card-border: rgba(255, 255, 255, 0.08); --primary-gradient: linear-gradient(135deg, #8b5cf6 0%, #6366f1 100%); --secondary-gradient: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); --danger-gradient: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); --success-gradient: linear-gradient(135deg, #10b981 0%, #059669 100%); --text-primary: #f3f4f6; --text-secondary: #9ca3af; --text-muted: #6b7280; --accent-glow: rgba(99, 102, 241, 0.3); --accent-color: #6366f1; --focus-ring: 0 0 0 3px rgba(99, 102, 241, 0.4); --radius-lg: 16px; --radius-md: 10px; --radius-sm: 6px; --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Reset and Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } body { background-color: var(--bg-primary); background-image: radial-gradient(circle at 10% 20%, rgba(99, 102, 241, 0.08) 0%, transparent 40%), radial-gradient(circle at 90% 80%, rgba(139, 92, 246, 0.08) 0%, transparent 40%), linear-gradient(to right, var(--bg-grid) 1px, transparent 1px), linear-gradient(to bottom, var(--bg-grid) 1px, transparent 1px); background-size: 100% 100%, 100% 100%, 40px 40px, 40px 40px; color: var(--text-primary); min-height: 100vh; display: flex; flex-direction: column; overflow-x: hidden; } #root { min-height: 100vh; display: flex; flex-direction: column; flex: 1; } ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: var(--bg-primary); } ::-webkit-scrollbar-thumb { background: #1f2937; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #374151; } .page-container { flex: 1; display: flex; align-items: center; justify-content: center; padding: 2.5rem 1.5rem; } .navbar { background: rgba(11, 15, 25, 0.7); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-bottom: 1px solid var(--card-border); padding: 1rem 2rem; display: flex; justify-content: space-between; align-items: center; position: sticky; top: 0; z-index: 100; } .nav-brand { font-size: 1.4rem; font-weight: 700; background: var(--primary-gradient); -webkit-background-clip: text; -webkit-text-fill-color: transparent; display: flex; align-items: center; gap: 8px; text-decoration: none; } .nav-links { display: flex; gap: 1.5rem; align-items: center; } .nav-link { color: var(--text-secondary); text-decoration: none; font-size: 0.95rem; font-weight: 500; transition: var(--transition-smooth); padding: 0.5rem 1rem; border-radius: var(--radius-sm); } .nav-link:hover { color: var(--text-primary); background: rgba(255, 255, 255, 0.05); } .nav-link.active { color: var(--accent-color); background: rgba(99, 102, 241, 0.1); } .glass-card { background: var(--card-bg); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid var(--card-border); border-radius: var(--radius-lg); padding: 2.5rem; width: 100%; max-width: 460px; box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.5); animation: fadeIn 0.4s ease-out; } .glass-card.wide { max-width: 800px; } @keyframes fadeIn { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } } h1, h2, h3 { font-weight: 700; letter-spacing: -0.025em; margin-bottom: 1.5rem; } h2 { font-size: 1.8rem; background: linear-gradient(to right, #ffffff, #d1d5db); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .card-subtitle { color: var(--text-secondary); font-size: 0.95rem; margin-top: -1rem; margin-bottom: 2rem; } .form-group { margin-bottom: 1.25rem; display: flex; flex-direction: column; gap: 6px; } label { font-size: 0.85rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-secondary); } input { background: rgba(31, 41, 55, 0.5); border: 1px solid var(--card-border); border-radius: var(--radius-md); padding: 0.8rem 1rem; color: var(--text-primary); font-size: 0.95rem; transition: var(--transition-smooth); width: 100%; } input:focus { outline: none; border-color: var(--accent-color); box-shadow: var(--focus-ring); background: rgba(31, 41, 55, 0.8); } input::placeholder { color: var(--text-muted); } .btn { background: var(--primary-gradient); border: none; border-radius: var(--radius-md); color: white; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-weight: 600; font-size: 0.95rem; padding: 0.85rem 1.5rem; transition: var(--transition-smooth); width: 100%; box-shadow: 0 4px 12px rgba(139, 92, 246, 0.25); gap: 8px; } .btn:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(139, 92, 246, 0.4); filter: brightness(1.1); } .btn:active:not(:disabled) { transform: translateY(0); } .btn:disabled { opacity: 0.6; cursor: not-allowed; } .btn.btn-secondary { background: rgba(255, 255, 255, 0.08); border: 1px solid var(--card-border); color: var(--text-primary); box-shadow: none; } .btn.btn-secondary:hover:not(:disabled) { background: rgba(255, 255, 255, 0.15); box-shadow: none; } .btn.btn-danger { background: var(--danger-gradient); box-shadow: 0 4px 12px rgba(239, 68, 68, 0.25); } .btn.btn-danger:hover:not(:disabled) { box-shadow: 0 6px 20px rgba(239, 68, 68, 0.4); } .btn-group { display: flex; gap: 1rem; margin-top: 1.5rem; } .alert { padding: 0.85rem 1rem; border-radius: var(--radius-md); font-size: 0.9rem; font-weight: 500; margin-bottom: 1.25rem; display: flex; align-items: center; gap: 8px; animation: shake 0.4s ease-out; } .alert-error { background: rgba(239, 68, 68, 0.12); border: 1px solid rgba(239, 68, 68, 0.3); color: #fca5a5; } .alert-success { background: rgba(16, 185, 129, 0.12); border: 1px solid rgba(16, 185, 129, 0.3); color: #a7f3d0; } .alert-info { background: rgba(59, 130, 246, 0.12); border: 1px solid rgba(59, 130, 246, 0.3); color: #93c5fd; } @keyframes shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } } .footer-text { text-align: center; font-size: 0.9rem; color: var(--text-secondary); margin-top: 1.5rem; } .footer-text a { color: #8b5cf6; text-decoration: none; font-weight: 600; transition: var(--transition-smooth); } .footer-text a:hover { text-decoration: underline; color: #a78bfa; } .dashboard-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; } @media (min-width: 768px) { .dashboard-grid { grid-template-columns: 2fr 1fr; } } .info-table { width: 100%; border-collapse: collapse; margin-bottom: 1.5rem; } .info-table tr { border-bottom: 1px solid var(--card-border); } .info-table tr:last-child { border-bottom: none; } .info-table td { padding: 0.9rem 0; font-size: 0.95rem; } .info-table td.label { font-weight: 600; color: var(--text-secondary); width: 35%; } .info-table td.value { color: var(--text-primary); word-break: break-all; } .status-badge { display: inline-flex; align-items: center; padding: 0.2rem 0.6rem; border-radius: 20px; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; } .status-badge.active { background: rgba(16, 185, 129, 0.15); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.3); } .users-list { max-height: 250px; overflow-y: auto; margin-top: 1rem; display: flex; flex-direction: column; gap: 10px; padding-right: 5px; } .user-item { background: rgba(255, 255, 255, 0.03); border: 1px solid var(--card-border); padding: 0.75rem 1rem; border-radius: var(--radius-md); display: flex; justify-content: space-between; align-items: center; } .user-item-info { display: flex; flex-direction: column; } .user-item-name { font-weight: 600; font-size: 0.95rem; } .user-item-email { color: var(--text-secondary); font-size: 0.8rem; } .otp-container { display: flex; justify-content: center; gap: 10px; margin: 1.5rem 0; } .otp-box { width: 48px; height: 48px; font-size: 1.5rem; font-weight: 700; text-align: center; background: rgba(31, 41, 55, 0.6); } .simulation-log-box { margin-top: 1.5rem; background: #090d16; border: 1px dashed rgba(99, 102, 241, 0.3); border-radius: var(--radius-md); padding: 1rem; font-family: 'Courier New', Courier, monospace; } .simulation-log-title { font-size: 0.75rem; font-weight: 700; color: #818cf8; margin-bottom: 0.5rem; text-transform: uppercase; } .simulation-log-content { font-size: 0.85rem; color: #a7f3d0; white-space: pre-wrap; word-break: break-all; }