.loading-indicator[hidden] { display: none; }
.loading-indicator {
  position: fixed;
  z-index: 1000;
  right: 24px;
  bottom: 24px;
  display: flex;
  align-items: center;
  gap: 14px;
  max-width: calc(100vw - 32px);
  padding: 16px 22px;
  border: 1px solid var(--line, #dce4df);
  border-radius: 12px;
  color: var(--text, #163b32);
  background: var(--surface, #fff);
  box-shadow: 0 8px 32px rgb(0 0 0 / 14%);
  pointer-events: none;
}
.loading-indicator strong, .loading-indicator small { display: block; }
.loading-indicator strong { font-size: 14px; }
.loading-indicator small { margin-top: 4px; color: var(--muted, #697a74); font-size: 12px; }
.loading-spinner {
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  border: 3px solid var(--line, #dce4df);
  border-top-color: var(--accent, #1a644e);
  border-radius: 50%;
  animation: loading-spin .8s linear infinite;
}
.loading-track { position: fixed; inset: 0 0 auto; height: 3px; overflow: hidden; background: var(--line, #dce4df); }
.loading-track::after {
  content: "";
  display: block;
  width: 35%;
  height: 100%;
  background: var(--accent, #1a644e);
  animation: loading-slide 1.5s ease-in-out infinite;
}
.is-loading #workspace main { cursor: progress; }
@keyframes loading-spin { to { transform: rotate(360deg); } }
@keyframes loading-slide { from { transform: translateX(-100%); } to { transform: translateX(390%); } }
@media (max-width: 600px) {
  .loading-indicator { right: 16px; bottom: 16px; padding: 14px 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .loading-spinner, .loading-track::after { animation: none; }
  .loading-track::after { width: 100%; opacity: .65; }
}
