/* === LOADING OVERLAY === */ #loading-overlay{position:fixed;inset:0;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#e4ecf4;transition:opacity .6s ease,visibility .6s ease} #loading-overlay.done{opacity:0;visibility:hidden} #loading-overlay .loader-whale{width:64px;height:64px;animation:whalePulse 1.6s ease-in-out infinite} #loading-overlay .loader-whale svg{width:100%;height:100%} #loading-overlay .loader-text{margin-top:18px;font-size:13px;color:#4a9fd4;letter-spacing:3px;font-family:"PingFang SC",sans-serif;animation:fadeInText 1.6s ease-in-out infinite alternate} #loading-overlay .loader-dots{margin-top:12px;display:flex;gap:6px} #loading-overlay .loader-dots span{width:6px;height:6px;border-radius:50%;background:#4a9fd4;animation:dotPulse 1.4s ease-in-out infinite} #loading-overlay .loader-dots span:nth-child(2){animation-delay:.2s} #loading-overlay .loader-dots span:nth-child(3){animation-delay:.4s} @keyframes whalePulse{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-8px) scale(1.05)}} @keyframes fadeInText{0%{opacity:.5}100%{opacity:1}} @keyframes dotPulse{0%,100%{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}