/* 사용자 요청(2026-09-21): 앱 번들보다 먼저 표시하고 라우트 대기에도 같은 테마를 유지한다. */
html { background: #f8fafc; }
html[data-theme="dark"] { background: #0f172a; }
body { margin: 0; }
.app-loading {
  box-sizing: border-box;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 24px;
  background: #f8fafc;
  color: #475569;
  font: 500 15px/1.5 system-ui, sans-serif;
}
html[data-theme="dark"] .app-loading { background: #0f172a; color: #cbd5e1; }
.app-loading-spinner {
  box-sizing: border-box;
  width: 32px;
  height: 32px;
  border: 3px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: app-loading-spin .8s linear infinite;
}
.app-loading a { color: inherit; text-underline-offset: 3px; }
.app-loading [hidden] { display: none; }
@keyframes app-loading-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .app-loading-spinner { animation: none; } }
