html, body { margin: 0; background: #f4f8f3; }
.app-loading-screen {
  box-sizing: border-box; position: relative; display: grid; place-items: center;
  width: 100%; min-height: 100vh; min-height: 100dvh; padding: 32px 24px;
  background: #f4f8f3; color: #243b34;
  font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
  text-align: center; line-height: 1.6;
}
.app-loading-content { display: flex; flex-direction: column; align-items: center; }
.app-loading-emblem, .app-loading-emblem svg { display: block; width: 80px; height: 80px; }
.app-loading-gaze { animation: app-loading-look 4s ease-in-out infinite; }
.app-loading-eye { vector-effect: non-scaling-stroke; }
.app-loading-eye--left { transform-origin: 26px 34px; animation: app-loading-wink 4s ease-in-out infinite; }
.app-loading-eye--right { transform-origin: 53px 34px; animation: app-loading-blink 4s ease-in-out infinite; }
.app-loading-message { margin: 16px 0 0; color: #63776b; font-size: 14px; }
.app-loading-actions { margin-top: 20px; }
.app-loading-retry { position: absolute; bottom: max(28px, env(safe-area-inset-bottom)); left: 24px; right: 24px; margin: 0; color: #63776b; font-size: 12px; visibility: hidden; animation: app-loading-reveal 0s 15s forwards; }
.app-loading-retry a { color: #1d6756; text-underline-offset: 3px; }
.app-loading-retry.is-visible { visibility: visible; animation: none; }
.app-loading-noscript { position: absolute; bottom: 72px; left: 24px; right: 24px; font-size: 13px; }
.app-loading-screen[aria-busy=false] .app-loading-gaze, .app-loading-screen[aria-busy=false] .app-loading-eye { animation: none; }
@keyframes app-loading-look { 0%, 20%, 100% { transform: translate(0, 0); } 30%, 46% { transform: translate(2px, -1px); } 64%, 80% { transform: translate(-2px, 0); } }
@keyframes app-loading-wink { 0%, 18%, 78%, 100% { transform: scaleY(.07); } 25%, 68% { transform: scaleY(1); } }
@keyframes app-loading-blink { 0%, 48%, 58%, 100% { transform: scaleY(1); } 52%, 54% { transform: scaleY(.07); } }
@keyframes app-loading-reveal { to { visibility: visible; } }
@media (prefers-reduced-motion: reduce) {
  .app-loading-gaze, .app-loading-eye { animation: none; }
  .app-loading-eye--left { transform: scaleY(.07); }
}
