body:has(.thor-loading--initial) { margin: 0; }
.thor-loading {
  --loading-primary: var(--primary, 220 75% 36%);
  --loading-muted: var(--muted-foreground, 220 12% 42%);
  --loading-track: var(--border, 216 22% 85%);
  --loading-surface: var(--background, 216 33% 97%);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 22px; min-height: 50vh; color: hsl(var(--loading-primary));
}
.thor-loading--initial { min-height: 100vh; background: hsl(var(--loading-surface)); font-family: sans-serif; }
.thor-loading__logo { width: 112px; height: 112px; object-fit: contain; animation: thor-loading-breathe 2.4s ease-in-out infinite; }
.thor-loading__track { width: 144px; height: 3px; overflow: hidden; border-radius: 3px; background: hsl(var(--loading-track)); }
.thor-loading__progress { width: 48px; height: 100%; border-radius: inherit; background: hsl(var(--loading-primary)); animation: thor-loading-sweep 1.6s ease-in-out infinite; }
.thor-loading__label { font-size: 12px; font-weight: 500; color: hsl(var(--loading-muted)); letter-spacing: 0; }
@keyframes thor-loading-breathe { 0%,100% { transform: translateY(0); opacity: .85; } 50% { transform: translateY(-5px); opacity: 1; } }
@keyframes thor-loading-sweep { 0% { transform: translateX(-48px); } 100% { transform: translateX(144px); } }
@media (prefers-reduced-motion: reduce) { .thor-loading__logo,.thor-loading__progress { animation: none; } .thor-loading__progress { width: 72px; } }
