* { margin: 0; padding: 0; box-sizing: border-box; } body { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #0a0a0f; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #fff; } .spinner { width: 48px; height: 48px; border: 3px solid rgba(255,255,255,0.1); border-top: 3px solid #7c3aed; border-right: 3px solid #a78bfa; border-radius: 50%; animation: spin 0.8s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite; } @keyframes spin { to { transform: rotate(360deg); } } .text { margin-top: 20px; font-size: 15px; color: rgba(255,255,255,0.6); letter-spacing: 0.5px; } .dots::after { content: ''; animation: dots 1.5s steps(4, end) infinite; } @keyframes dots { 0% { content: ''; } 25% { content: '.'; } 50% { content: '..'; } 75% { content: '...'; } 100% { content: ''; } } .pulse { margin-top: 32px; width: 120px; height: 2px; background: linear-gradient(90deg, transparent, rgba(124,58,237,0.5), transparent); border-radius: 1px; animation: pulse 1.8s ease-in-out infinite; } @keyframes pulse { 0%, 100% { opacity: 0.2; transform: scaleX(0.8); } 50% { opacity: 1; transform: scaleX(1); } }