.CanvasContainer { position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 0; } .LoadingIndicator { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; gap: 16px; pointer-events: none; z-index: 1; opacity: 0.8; } .LoadingIndicator[data-complete="true"] { animation: loadingComplete 0.3s ease-out forwards; } .Spinner { width: 48px; height: 48px; border: 4px solid rgba(255, 255, 255, 0.2); border-top-color: white; border-radius: 50%; animation: spin 1s linear infinite; } .Progress { width: 200px; height: 4px; background: rgba(255, 255, 255, 0.2); border-radius: 2px; overflow: hidden; } .ProgressBar { height: 100%; background: white; border-radius: 2px; transition: width 0.1s ease-out; } .ProgressText { font-size: 14px; color: rgba(255, 255, 255, 0.7); font-variant-numeric: tabular-nums; } @keyframes spin { to { transform: rotate(360deg); } } @keyframes loadingComplete { 0% { opacity: 1; } 100% { opacity: 0; } }