/* What a customer sees while the portal's script is still downloading (CRM-532):
   a spinner in index.html's #root, which React replaces as soon as it renders.
   Without it a cold load on a slow phone is a blank white page for a second or
   two. A file, not a <style> block, because the page's CSP has no style-src
   (security-headers.caddy); served from public/ so it arrives before the bundle.

   These are the only colours outside the design tokens, deliberately: the
   tokens and the organisation's brand come with the bundle this is waiting for.
   A neutral grey ring reads on any brand and is gone before either loads. */
.portal-boot {
  display: grid;
  place-items: center;
  min-height: 100vh;
}

.portal-boot__spinner {
  width: 32px;
  height: 32px;
  border: 3px solid rgb(0 0 0 / 12%);
  border-top-color: rgb(0 0 0 / 55%);
  border-radius: 50%;
  animation: portal-boot-turn 0.8s linear infinite;
}

@keyframes portal-boot-turn {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .portal-boot__spinner {
    animation-duration: 1.6s;
  }
}
