/* Shared by the initial HTML and the React loading state. */
body { margin: 0; }
.weave-loader {
  min-height: 100vh;
  min-height: 100dvh;
  box-sizing: border-box;
  padding: 32px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--canvas, #0a0d11);
  color: var(--ink, #edf2f5);
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  text-align: center;
}
.weave-loader-symbol { position: relative; width: 128px; height: 128px; margin-bottom: 24px; }
.weave-loader-symbol img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: contain; }
.weave-loader-base { opacity: .12; }
.weave-loader-reveal { animation: weave-logo-reveal 2.8s ease-in-out infinite; }
.weave-loader strong { font-size: 22px; letter-spacing: -.04em; font-weight: 600; }
.weave-loader p { margin: 10px 0 0; font-size: 14px; line-height: 1.5; color: var(--muted, #9aa5b1); }
@keyframes weave-logo-reveal {
  0% { clip-path: inset(100% 0 0); opacity: .7; }
  55%, 78% { clip-path: inset(0 0 0); opacity: 1; }
  100% { clip-path: inset(0 0 0); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .weave-loader-reveal { animation: none; clip-path: none; opacity: 1; }
}
