/* Entrance Animations */ .animate-entrance { opacity: 0; animation-fill-mode: forwards; } @keyframes entrance-slide-in-left { from { transform: translateX(-40px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes entrance-slide-in-down { from { transform: translateY(-40px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } @keyframes entrance-slide-in-up { from { transform: translateY(40px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .entrance-sidebar { animation: entrance-slide-in-left 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; } .entrance-header { animation: entrance-slide-in-down 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.2s forwards; } .entrance-card { animation: entrance-slide-in-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; } .entrance-chatbot { animation: entrance-slide-in-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.8s forwards; } /* --- PROFESSIONAL LOGOUT: Terminal Shutdown --- */ @keyframes component-disassemble { from { transform: scale(1); filter: blur(0); opacity: 1; } to { transform: scale(0.95); filter: blur(10px); opacity: 0; } } .exit-disassemble { animation: component-disassemble 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards !important; } /* Logout Portal Overlay */ .logout-portal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(5, 5, 10, 0.98); backdrop-filter: blur(25px); z-index: 99999; display: flex; justify-content: center; align-items: center; flex-direction: column; color: white; opacity: 0; transition: opacity 0.5s ease; pointer-events: none; } .logout-portal-overlay.show { opacity: 1; pointer-events: all; } .logout-portal-message { font-size: 1.2rem; font-weight: 500; letter-spacing: 4px; text-transform: uppercase; margin-bottom: 20px; animation: text-flicker 2s infinite; } @keyframes text-flicker { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } }