.auth-layout{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.auth-brand{background:linear-gradient(135deg,#06060f,#0d0d2a 60%,#120a2e);border-right:1px solid var(--border);display:flex;align-items:center;justify-content:center;padding:60px 40px;position:relative;overflow:hidden}.auth-brand:before{content:"";position:absolute;width:600px;height:600px;background:radial-gradient(circle,rgba(124,58,237,.12) 0%,transparent 70%);top:-100px;left:-100px;pointer-events:none}.auth-brand:after{content:"";position:absolute;width:400px;height:400px;background:radial-gradient(circle,rgba(59,130,246,.08) 0%,transparent 70%);bottom:-50px;right:-50px;pointer-events:none}.auth-brand-inner{position:relative;z-index:1;max-width:360px}.auth-logo{margin-bottom:20px}.auth-brand-name{font-family:var(--font-display);font-size:36px;font-weight:700;background:linear-gradient(135deg,#f1f5f9,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px}.auth-brand-tagline{color:var(--text-secondary);font-size:15px;margin-bottom:48px}.auth-brand-features{display:flex;flex-direction:column;gap:14px}.auth-feature{display:flex;align-items:center;gap:12px;color:var(--text-secondary);font-size:14px}.auth-feature-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);box-shadow:0 0 8px #7c3aed99;flex-shrink:0}.auth-content{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:var(--bg-surface)}@media (max-width: 768px){.auth-layout{grid-template-columns:1fr}.auth-brand{display:none}.auth-content{padding:32px 20px}}.dash-layout{display:flex;min-height:100vh;background:var(--bg-deep)}.dash-sidebar{width:260px;background:var(--bg-surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex-shrink:0}.sidebar-logo{height:60px;display:flex;align-items:center;padding:0 16px;border-bottom:1px solid rgba(255,255,255,.05);flex-shrink:0;gap:10px;position:relative}.sidebar-logo-icon{width:32px;height:32px;background:#7c3aed1f;border:1px solid rgba(124,58,237,.25);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#a78bfa}.sidebar-logo-text{display:flex;flex-direction:column;line-height:1}.sidebar-logo-name{font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--text-primary)}.sidebar-logo-by{font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;margin-top:2px}.sidebar-app-switcher-btn{margin-left:auto;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:7px;color:var(--text-muted);cursor:pointer;transition:all .2s}.sidebar-app-switcher-btn:hover,.sidebar-app-switcher-btn.open{background:#ffffff0f;color:var(--text-primary)}.sidebar-app-dropdown{position:absolute;top:54px;left:8px;right:8px;background:#0d0d22;border:1px solid rgba(255,255,255,.1);border-radius:12px;box-shadow:0 10px 40px #0009;padding:12px;z-index:1000;animation:appSwitcherIn .2s ease}@keyframes appSwitcherIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.sidebar-app-dropdown-title{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--text-muted);padding:4px 8px 10px;border-bottom:1px solid rgba(255,255,255,.05);margin-bottom:8px}.sidebar-app-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:10px;text-decoration:none;background:#ffffff05;margin-bottom:4px;border:1px solid transparent;transition:all .2s}.sidebar-app-item:hover{background:#ffffff0d;border-color:#ffffff1a}.sidebar-app-item.current{background:#7c3aed14;border-color:#7c3aed40}.sidebar-app-item-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-app-item-info{display:flex;flex-direction:column;min-width:0}.sidebar-app-item-name{font-size:13px;font-weight:600;color:var(--text-primary)}.sidebar-app-item-desc{font-size:11px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-app-item-check{margin-left:auto;color:var(--success)}.dash-sidebar-top{flex:1;overflow-y:auto;padding:16px 8px}.sidebar-nav{display:flex;flex-direction:column;gap:4px}.sidebar-section-label{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--text-muted);padding:12px 12px 6px;letter-spacing:.5px}.sidebar-nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:var(--text-secondary);font-size:13.5px;font-weight:500;text-decoration:none;transition:all .15s;cursor:pointer;border:none;background:transparent}.sidebar-nav-item:hover{background:#ffffff0d;color:var(--text-primary)}.sidebar-nav-item.active{background:linear-gradient(135deg,#7c3aed26,#3b82f614);color:var(--text-primary);box-shadow:inset 2px 0 0 var(--primary)}.sidebar-bottom{padding:12px 8px 16px;border-top:1px solid rgba(255,255,255,.05);background:#0000001a}.logout-btn{color:#f87171;margin-bottom:8px}.logout-btn:hover{background:#f871711a;color:#fca5a5}.sidebar-user-bottom{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;cursor:pointer;transition:background .2s}.sidebar-user-bottom:hover{background:#ffffff0a}.user-avatar{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;font-weight:700;color:#fff;font-size:13px}.user-avatar img{width:100%;height:100%;object-fit:cover}.user-info{display:flex;flex-direction:column;min-width:0;line-height:1.3}.user-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:11px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-main{flex:1;padding:40px;overflow-y:auto;background:var(--bg-deep)}.dash-content{max-width:900px;margin:0 auto}@media (max-width: 1000px){.dash-sidebar{width:72px}.sidebar-logo-text,.sidebar-logo-name,.sidebar-logo-by,.sidebar-app-switcher-btn,.nav-section-label,.dash-nav-item span,.user-info{display:none}.dash-nav-item{justify-content:center;padding:12px 0}.dash-content{padding:20px}}.auth-form-wrap{width:100%;max-width:400px}.auth-form-header{margin-bottom:28px}.auth-form-header h2{font-family:var(--font-display);font-size:26px;font-weight:700;margin-bottom:6px}.auth-form-header p{color:var(--text-secondary);font-size:14px}.form-link{color:var(--primary);text-decoration:none;font-size:13px}.form-link:hover{text-decoration:underline}.input-password-wrap{position:relative}.input-eye{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0}.input-eye:hover{color:var(--text-secondary)}.auth-switch{text-align:center;margin-top:20px;color:var(--text-secondary);font-size:13px}.auth-switch a{color:var(--primary);text-decoration:none;font-weight:600}.auth-switch a:hover{text-decoration:underline}.totp-input{text-align:center;font-size:28px;letter-spacing:12px;font-family:var(--font-display);font-weight:700}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-deep: #06060f;--bg-surface: #0d0d1a;--bg-card: rgba(255,255,255,.04);--bg-card-hover:rgba(255,255,255,.07);--border: rgba(255,255,255,.08);--border-focus: rgba(124,58,237,.6);--primary: #7c3aed;--primary-hover:#6d28d9;--accent: #3b82f6;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #475569;--success: #10b981;--warning: #f59e0b;--error: #ef4444;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--font-sans: "Inter", system-ui, sans-serif;--font-display: "Space Grotesk", sans-serif;--shadow-card: 0 4px 32px rgba(0,0,0,.4);--shadow-glow: 0 0 40px rgba(124,58,237,.2)}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--bg-deep);color:var(--text-primary);min-height:100vh;line-height:1.6;-webkit-font-smoothing:antialiased}.input{width:100%;padding:12px 16px;background:#ffffff0d;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;font-family:var(--font-sans);outline:none;transition:border-color .2s,box-shadow .2s}.input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px #7c3aed26}.input::placeholder{color:var(--text-muted)}.input:disabled{opacity:.5;cursor:not-allowed}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border-radius:var(--radius-sm);border:none;font-size:14px;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:all .2s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:#ffffff12;color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:#ffffff1f}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{color:var(--text-primary);background:#ffffff0d}.btn-danger{background:#ef44441f;color:var(--error);border:1px solid rgba(239,68,68,.2)}.btn-danger:hover{background:#ef444433}.btn-full{width:100%}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.alert{padding:12px 16px;border-radius:var(--radius-sm);font-size:13px;display:flex;align-items:flex-start;gap:10px}.alert-error{background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:#fca5a5}.alert-success{background:#10b9811a;border:1px solid rgba(16,185,129,.2);color:#6ee7b7}.alert-info{background:#3b82f61a;border:1px solid rgba(59,130,246,.2);color:#93c5fd}.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.form-field{margin-bottom:16px}.form-hint{font-size:11px;color:var(--text-muted);margin-top:4px}.divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--text-muted);font-size:12px}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:100px;font-size:11px;font-weight:600}.badge-violet{background:#7c3aed33;color:#a78bfa}.badge-green{background:#10b98133;color:#6ee7b7}.badge-red{background:#ef444433;color:#fca5a5}
