/* 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:not([data-session-slow="true"]) .session-startup__slow,
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; }
}

/* Hiện khung ứng dụng sau xác thực; chỉ vùng nội dung chờ dữ liệu. */
html[data-workspace-state="loading"] .main-tabs,
html[data-workspace-state="error"] .main-tabs { display: none !important; }
.workspace-loading { padding: clamp(16px, 3vw, 32px); min-height: 340px; }
.workspace-loading[hidden] { display: none; }
.workspace-loading p { color: #475569; line-height: 1.6; }
.workspace-loading button { margin: 12px 8px 0 0; }
.workspace-loading__skeleton { margin-top: 24px; }
.workspace-loading__filters { display: flex; gap: 16px; margin-bottom: 28px; }
.workspace-loading__filters span { width: 180px; max-width: 30%; height: 36px; }
.workspace-loading__row { height: 38px; margin: 12px 0; }
.workspace-loading__row:nth-child(even) { width: 92%; }
.workspace-loading__filters span, .workspace-loading__row {
  display: block; border-radius: 8px; background: #e8edf3;
  animation: workspace-loading-pulse 1.6s ease-in-out infinite alternate;
}
html[data-workspace-state="error"] .workspace-loading__skeleton,
html[data-workspace-state="error"] #workspaceLoadingMessage { display: none; }
@keyframes workspace-loading-pulse { from { opacity: .5; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .workspace-loading__filters span, .workspace-loading__row { animation: none; }
}
