/* Giữ form ẩn từ lần vẽ đầu tiên tới khi đã quyết định trạng thái phiên. */
html:not([data-session-state="ready"]) .app-wrapper {
  visibility: hidden;
}

.session-startup {
  position: fixed;
  inset: 0;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 24px;
  padding: 24px;
  color: #334155;
  background: radial-gradient(ellipse at center, #fff8df 0%, #fbfcfe 65%);
  text-align: center;
  z-index: 20000;
}

.session-startup p { margin: 0; font-size: 16px; line-height: 1.5; }
.session-startup a { color: #1d4ed8; text-underline-offset: 4px; }
.session-startup__brand {
  position: relative;
  display: grid;
  place-items: center;
  width: 112px;
  height: 112px;
}
.session-startup__brand::before {
  content: "";
  position: absolute;
  inset: -12px;
  border-radius: 50%;
  background: radial-gradient(circle, #ffdf7b80, #ffdf7b00 72%);
  opacity: 0.65;
}
.session-startup__bee {
  position: relative;
  display: block;
  width: 80px;
  height: 80px;
  object-fit: contain;
}
html[data-session-state="pending"] .session-startup__bee {
  animation: session-startup-heartbeat 1.8s ease-in-out infinite;
}
html[data-session-state="pending"] .session-startup__brand::before {
  animation: session-startup-glow 1.8s ease-in-out infinite;
}

html[data-session-state="ready"] .session-startup,
html[data-session-state="pending"] .session-startup__error,
html[data-session-state="error"] .session-startup__pending {
  display: none;
}

@keyframes session-startup-heartbeat {
  0%, 35%, 100% { transform: scale(1); }
  12% { transform: scale(1.08); }
  22% { transform: scale(1.02); }
  28% { transform: scale(1.05); }
}
@keyframes session-startup-glow {
  0%, 35%, 100% { transform: scale(1); opacity: 0.65; }
  12%, 28% { transform: scale(1.1); opacity: 0.95; }
}
@media (prefers-reduced-motion: reduce) {
  html[data-session-state="pending"] .session-startup__bee,
  html[data-session-state="pending"] .session-startup__brand::before { animation: none; }
}
