/**
 * @license
 * Copyright 2026 Cactusio
 *
 * This code is part of the Cactusio web platform.
 * All rights remain reserved.
 * Unauthorized use, extraction, or redistribution is not permitted.
 *
 * more info at [https://policies.cactusio.com/en/](https://policies.cactusio.com/en/)
 */
.login-modal{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.75);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:2000;opacity:0;visibility:hidden;transition:.4s cubic-bezier(.19, 1, .22, 1)}.login-modal.visible{opacity:1;visibility:visible}.login-form{background:linear-gradient(145deg,rgba(0,0,0,.85) 0,rgba(0,0,0,.9) 100%);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(0,113,227,.2);border-radius:24px;padding:2.5rem;width:100%;max-width:420px;position:relative;overflow:hidden;box-shadow:0 25px 50px rgba(0,0,0,.4),0 0 0 1px rgba(255,255,255,.05) inset;transform:translateY(30px) scale(.95);opacity:0;transition:transform .6s cubic-bezier(.34, 1.56, .64, 1),opacity .6s}.login-modal.visible .login-form{transform:translateY(0) scale(1);opacity:1}body.light-mode .login-form{background:linear-gradient(145deg,rgba(255,255,255,.85) 0,rgba(248,250,252,.9) 100%);border:1px solid rgba(0,113,227,.3);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px rgba(0,0,0,.05) inset}.close-modal{position:absolute;top:20px;right:20px;background:rgba(255,255,255,.1);border:none;color:var(--text-gray,#aaa);font-size:1.2rem;cursor:pointer;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:.3s;z-index:10;backdrop-filter:blur(10px)}.close-modal:hover{background-color:rgba(255,255,255,.2);color:var(--text-light,#fff);transform:rotate(90deg) scale(1.1)}.login-header{text-align:center;margin-bottom:2rem}.login-header h2{font-size:2.2rem;color:var(--text-light,#fff);margin-bottom:.5rem;background:linear-gradient(135deg,var(--primary-light,#2997ff),var(--secondary-light,#64b5ff));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-fill-color:transparent;font-weight:600}.login-header p{color:var(--text-gray,#aaa);font-size:1rem;opacity:.9}.login-social{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem;transition:.4s}.login-social.hidden{opacity:0;max-height:0;margin-bottom:0;overflow:hidden;transform:translateY(-10px)}.social-btn{display:flex;align-items:center;justify-content:center;gap:.8rem;padding:.9rem 1rem;border-radius:16px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.05);color:var(--text-light);font-size:.95rem;cursor:pointer;transition:.3s cubic-bezier(.4, 0, .2, 1);position:relative;overflow:hidden;font-weight:500}.social-btn::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);transition:left .6s}.social-btn:hover::before{left:100%}.social-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(0,0,0,.15);border-color:rgba(255,255,255,.2)}.google-btn{background:linear-gradient(135deg,rgba(234,67,53,.1),rgba(234,67,53,.05));border-color:rgba(234,67,53,.3)}.google-btn:hover{background:linear-gradient(135deg,rgba(234,67,53,.2),rgba(234,67,53,.1));box-shadow:0 8px 25px rgba(234,67,53,.2)}.github-btn{background:linear-gradient(135deg,rgba(88,166,255,.1),rgba(88,166,255,.05));border-color:rgba(88,166,255,.3)}.github-btn:hover{background:linear-gradient(135deg,rgba(88,166,255,.2),rgba(88,166,255,.1));box-shadow:0 8px 25px rgba(88,166,255,.2)}.microsoft-btn{background:linear-gradient(135deg,rgba(0,120,212,.1),rgba(0,120,212,.05));border-color:rgba(0,120,212,.3)}.microsoft-btn:hover{background:linear-gradient(135deg,rgba(0,120,212,.2),rgba(0,120,212,.1));box-shadow:0 8px 25px rgba(0,120,212,.2)}.login-divider{display:flex;align-items:center;margin:1.5rem 0;color:var(--text-gray,#aaa);transition:.4s}.login-divider.hidden{opacity:0;max-height:0;margin:0;overflow:hidden}.login-divider::after,.login-divider::before{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent)}.login-divider span{padding:0 1.5rem;font-size:.85rem;font-weight:500;color:var(--text-gray,#aaa)}.form-group{margin-bottom:1.5rem;transition:.3s}.form-group label{display:block;margin-bottom:.75rem;color:var(--text-gray,#aaa);font-size:.9rem;font-weight:500}.input-container{position:relative;display:flex;align-items:center;background:rgba(255,255,255,.08);border:2px solid rgba(255,255,255,.1);border-radius:14px;transition:.3s cubic-bezier(.4, 0, .2, 1);overflow:hidden}.input-container:focus-within{border-color:var(--primary-color,#0071e3);box-shadow:0 0 0 4px rgba(0,113,227,.15);background:rgba(255,255,255,.12)}.input-container i{color:var(--text-gray,#aaa);font-size:1rem;padding:0 1rem;transition:color .3s}.input-container:focus-within i{color:var(--primary-color,#0071e3)}.input-container input{width:100%;background:0 0!important;border:none;outline:0;color:var(--text-light,#fff)!important;padding:1rem .75rem 1rem 0;font-size:1rem;transition:.3s;-webkit-box-shadow:0 0 0 1000px transparent inset!important;-webkit-text-fill-color:var(--text-light,#ffffff)!important;box-shadow:0 0 0 1000px transparent inset!important}.input-container input:-webkit-autofill,.input-container input:-webkit-autofill:active,.input-container input:-webkit-autofill:focus,.input-container input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px rgba(255,255,255,.08) inset!important;-webkit-text-fill-color:var(--text-light,#ffffff)!important;background-color:transparent!important;background-image:none!important;color:var(--text-light,#fff)!important;transition:background-color 5000s ease-in-out}body.light-mode .input-container input:-webkit-autofill,body.light-mode .input-container input:-webkit-autofill:active,body.light-mode .input-container input:-webkit-autofill:focus,body.light-mode .input-container input:-webkit-autofill:hover{-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.05) inset!important;-webkit-text-fill-color:#333!important}.input-container input::placeholder{color:var(--text-gray,#aaa);opacity:.7}.input-container input.confirmed{background:linear-gradient(135deg,rgba(0,113,227,.1),rgba(0,113,227,.05))!important;font-weight:500;color:var(--primary-light,#2997ff)!important;-webkit-text-fill-color:var(--primary-light,#2997ff)!important}.toggle-password{background:0 0;border:none;color:var(--text-gray,#aaa);padding:0 1rem;cursor:pointer;font-size:1rem;transition:.3s}.toggle-password:hover{color:var(--text-light,#fff);transform:scale(1.1)}.passkey-auth-option{margin-bottom:1.5rem;border-radius:16px;overflow:hidden;transition:.4s cubic-bezier(.4, 0, .2, 1);display:none}.passkey-auth-option.visible{display:block;animation:.5s cubic-bezier(.34,1.56,.64,1) passkey-slide-in}@keyframes passkey-slide-in{from{opacity:0;transform:translateY(-20px);max-height:0}to{opacity:1;transform:translateY(0);max-height:200px}}.passkey-prompt{background:linear-gradient(135deg,rgba(3,115,252,.15),rgba(3,115,252,.05));border:2px solid rgba(3,115,252,.3);border-radius:16px;padding:1.5rem;display:flex;flex-direction:column;gap:1rem;position:relative;overflow:hidden}.passkey-prompt::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(3,115,252,.6),transparent);animation:2s infinite passkey-shimmer}@keyframes passkey-shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}.passkey-info{display:flex;align-items:center;gap:1rem;color:#0373fc;font-weight:500}.passkey-info i{font-size:1.5rem;background:linear-gradient(135deg,#0373fc,#0366d6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.passkey-auth-btn{background:linear-gradient(135deg,#0373fc,#0366d6);color:#fff;border:none;border-radius:12px;padding:1rem;font-weight:600;font-size:.95rem;cursor:pointer;transition:.3s cubic-bezier(.4, 0, .2, 1);display:flex;align-items:center;justify-content:center;gap:.75rem;position:relative;overflow:hidden;box-shadow:0 4px 15px rgba(3,115,252,.3)}.passkey-auth-btn::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .6s}.passkey-auth-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(3,115,252,.4)}.passkey-auth-btn:hover::before{left:100%}.passkey-auth-btn:active{transform:translateY(0)}.passkey-auth-btn.loading{opacity:.8;cursor:wait}.passkey-auth-btn.loading i{animation:1s linear infinite spin}@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}.auth-divider{display:flex;align-items:center;margin:1rem 0;color:var(--text-gray,#aaa)}.auth-divider::after,.auth-divider::before{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent)}.auth-divider span{padding:0 1rem;font-size:.8rem;color:var(--text-gray,#aaa)}.password-container{display:none;opacity:0;transform:translateY(20px);transition:.4s cubic-bezier(.4, 0, .2, 1)}.password-container.visible{opacity:1;transform:translateY(0)}.remember-forgot{display:none;justify-content:space-between;align-items:center;margin-bottom:1.5rem;font-size:.9rem;opacity:0;transform:translateY(20px);transition:.4s cubic-bezier(.4, 0, .2, 1)}.remember-forgot.visible{opacity:1;transform:translateY(0)}.remember-me{display:flex;align-items:center;gap:.5rem;color:var(--text-gray,#aaa);cursor:pointer;transition:color .3s}.remember-me:hover{color:var(--text-light,#fff)}.remember-me input{width:18px;height:18px;cursor:pointer;accent-color:var(--primary-color,#0071e3)}.forgot-password{color:var(--primary-color,#0071e3);transition:.3s;text-decoration:none;font-weight:500}.forgot-password:hover{color:var(--primary-light,#2997ff);text-decoration:underline}.login-actions{margin-bottom:1.5rem}.login-submit{width:100%;padding:1.1rem;background:linear-gradient(135deg,var(--primary-color,#0071e3),var(--primary-dark,#0058b0));color:#fff;border:none;border-radius:16px;font-size:1rem;font-weight:600;cursor:pointer;transition:.3s cubic-bezier(.4, 0, .2, 1);box-shadow:0 6px 20px rgba(0,113,227,.3);position:relative;overflow:hidden}.login-submit::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .7s}.login-submit:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(0,113,227,.4)}.login-submit:hover::before{left:100%}.login-submit:disabled{opacity:.7;cursor:not-allowed;transform:none}.login-footer{text-align:center;color:var(--text-gray,#aaa);font-size:.9rem}.login-footer a{color:var(--primary-color,#0071e3);transition:color .3s;text-decoration:none;font-weight:500}.login-footer a:hover{color:var(--primary-light,#2997ff);text-decoration:underline}.error-message{background:linear-gradient(135deg,rgba(231,76,60,.15),rgba(231,76,60,.05));border:2px solid rgba(231,76,60,.3);color:#e74c3c;padding:1rem 1.25rem;border-radius:12px;margin-bottom:1.5rem;line-height:1.5;display:none;font-weight:500}.success-message{background:linear-gradient(135deg,rgba(0,113,227,.15),rgba(0,113,227,.05));border:2px solid rgba(0,113,227,.3);color:var(--primary-color,#0071e3);padding:1rem 1.25rem;border-radius:12px;margin-bottom:1.5rem;line-height:1.5;display:none;font-weight:500}.verification-required{background:linear-gradient(135deg,rgba(255,193,7,.15),rgba(255,193,7,.05));border:2px solid rgba(255,193,7,.3);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1.5rem;display:none}.warning-message{color:#f39c12;margin-bottom:1rem;line-height:1.5;font-weight:500}.resend-button{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff;border:none;border-radius:10px;padding:.75rem 1.25rem;font-size:.9rem;font-weight:600;cursor:pointer;transition:.3s;display:block;width:100%}.resend-button:hover{transform:translateY(-2px);box-shadow:0 6px 15px rgba(243,156,18,.3)}.resend-button:disabled{opacity:.6;cursor:not-allowed;transform:none}body.light-mode .input-container{background:rgba(0,0,0,.05);border-color:rgba(0,0,0,.1)}body.light-mode .input-container input{color:#333!important;-webkit-text-fill-color:#333!important}body.light-mode .passkey-prompt{background:linear-gradient(135deg,rgba(3,115,252,.1),rgba(3,115,252,.03))}@media (max-width:576px){.login-form{padding:2rem 1.5rem;max-width:95%;margin:1rem}.login-header h2{font-size:1.8rem}.social-btn{padding:.8rem;font-size:.9rem}.remember-forgot{flex-direction:column;align-items:flex-start;gap:1rem}}.login-glass-highlight{position:absolute;width:200px;height:200px;background:radial-gradient(circle at center,rgba(255,255,255,.1),transparent 70%);border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s;z-index:1}body.light-mode .login-glass-highlight{background:radial-gradient(circle at center,rgba(255,255,255,.3),transparent 70%)}