.loading-container{min-height:100vh;width:100%;display:flex;align-items:center;justify-content:center;background-color:var(--background);position:relative;overflow:hidden}.loading-bg-glow{position:absolute;width:600px;height:600px;background:radial-gradient(circle,var(--primary) 0,transparent 70%);opacity:.15;filter:blur(80px);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);animation:pulse-glow 4s ease-in-out infinite alternate}.loading-content{position:relative;z-index:10;display:flex;flex-direction:column;align-items:center;gap:2.5rem;padding:2rem;max-width:600px;width:100%}.loading-logo{font-size:3.5rem;font-weight:800;letter-spacing:-.02em;background:linear-gradient(135deg,var(--foreground) 30%,var(--primary));-webkit-background-clip:text;background-clip:text;color:transparent;margin:0;opacity:0;animation:fade-in-up .8s ease-out forwards}.loading-progress-wrapper{width:100%;max-width:320px;display:flex;flex-direction:column;gap:1rem;opacity:0;animation:fade-in-up .8s ease-out .2s forwards}.loading-progress-bar{height:4px;width:100%;background-color:var(--muted);border-radius:9999px;overflow:hidden;position:relative}.loading-progress-fill{position:absolute;top:0;bottom:0;left:0;width:100%;background:linear-gradient(90deg,var(--primary),var(--accent));transform-origin:left;animation:refined-progress 2s cubic-bezier(.65,0,.35,1) infinite}.loading-status{text-align:center;font-size:.875rem;font-weight:500;color:var(--muted-foreground);letter-spacing:.02em;display:flex;align-items:center;justify-content:center;gap:.5rem}.loading-dots span{animation:blink 1.4s infinite both;font-size:1.2em;line-height:.5}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes refined-progress{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-glow{0%{transform:translate(-50%,-50%) scale(.8);opacity:.1}to{transform:translate(-50%,-50%) scale(1.2);opacity:.2}}@keyframes blink{0%{opacity:.2}20%{opacity:1}to{opacity:.2}}