/* Shared by the pre-JavaScript document and React's initial loading screen. */
html, body { margin: 0; min-height: 100%; background: #e5e8eb; }
.startup-screen {
  box-sizing: border-box;
  display: grid;
  grid-template-rows: 1fr auto 1fr;
  gap: 24px;
  width: min(100%, 460px);
  min-height: 100svh;
  margin: 0 auto;
  padding: max(24px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));
  background: #ffffff;
  color: #191f28;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  text-align: center;
}
.startup-screen__mark { grid-row: 2; display: grid; justify-items: center; gap: 24px; }
.startup-screen__logo { display: block; width: 112px; height: 112px; border-radius: 24px; }
.startup-screen__spinner {
  box-sizing: border-box;
  width: 24px;
  height: 24px;
  border: 3px solid #e5e8eb;
  border-top-color: #3182f6;
  border-radius: 50%;
  animation: startup-spin 1s linear infinite;
}
.startup-screen__help {
  grid-row: 3;
  align-self: start;
  visibility: hidden;
  /* A module/auth stall still has a usable escape, even if JavaScript fails.
     Keep the delay separate from motion duration for reduced-motion users. */
  animation: startup-help 0s linear 15s forwards;
  font-size: 14px;
  line-height: 1.5;
}
.startup-screen__help p { margin: 0 0 12px; }
.startup-screen__help a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  padding: 0 18px;
  border-radius: 8px;
  background: #f2f4f6;
  color: #1957b2;
  font-weight: 600;
}
.startup-screen__help a:focus-visible { outline: 2px solid #3182f6; outline-offset: 3px; }
@keyframes startup-spin { to { transform: rotate(360deg); } }
@keyframes startup-help { to { visibility: visible; } }
@media (prefers-reduced-motion: reduce) {
  .startup-screen__spinner { animation: none; }
}
