.loading-overlay{position:fixed;top:31px;left:0;width:100vw;height:calc(100vh - 31px);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999;background:linear-gradient(270deg,#090512,#0b0418,#0b0418);background-size:400% 400%;animation:gradientAnimation 10s ease infinite}.loading-overlay.fade-in{animation:fadeInAnimation .5s ease-in forwards}.loading-overlay.fade-out{animation:fadeOutAnimation .5s ease-out forwards}@keyframes gradientAnimation{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.error-message{font-size:1.5rem;font-weight:700;margin-bottom:20px;text-shadow:2px 2px 4px rgba(0,0,0,.7);padding:0 2rem;text-align:center}.custom-spinner{position:relative;width:120px;height:120px;opacity:0}.custom-spinner.fade-in{animation:spinnerFadeIn 2s ease-in 1s forwards}.custom-spinner.fade-out{animation:spinnerFadeOut .2s ease-out forwards}.custom-spinner div{box-sizing:border-box;position:absolute;width:100%;height:100%;border:10px solid transparent;border-top-color:#f59e0b;border-radius:50%;animation:custom-spin 1.8s cubic-bezier(.68,-.55,.27,1.55) infinite}.custom-spinner div:nth-child(2){border-color:transparent transparent #9333ea;animation-delay:-.5s}.custom-spinner div:nth-child(3){animation-direction:reverse;animation-delay:-1s}@keyframes custom-spin{0%{transform:rotate(0deg) scale(1)}50%{transform:rotate(180deg) scale(.6)}to{transform:rotate(1turn) scale(1)}}@keyframes fadeOutAnimation{0%{opacity:1}to{opacity:0;pointer-events:none}}@keyframes fadeInAnimation{0%{opacity:0}to{opacity:1}}@keyframes spinnerFadeIn{0%{opacity:0}to{opacity:1}}@keyframes spinnerFadeOut{0%{opacity:1}to{opacity:0}}