.alb-view--loading { text-align: center; max-width: 560px; margin: 0 auto; width: 100%; }

.alb-loading {
  display: grid; place-items: center; gap: var(--alb-s-5);
  animation: alb-fade-up .6s var(--alb-ease);
}
@keyframes alb-fade-up {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: none; }
}

/* ============ ORBIT (original) ============ */
.alb-orbit {
  width: 88px; height: 88px;
  border-radius: 999px;
  border: 1px solid var(--alb-line-2);
  position: relative;
  animation: alb-spin 6s linear infinite;
  box-shadow: inset 0 0 30px rgba(201,178,122,.06), 0 0 30px rgba(201,178,122,.08);
}
.alb-orbit::before {
  content: "";
  position: absolute; inset: 14px;
  border-radius: 999px;
  border: 1px dashed var(--alb-ink-05);
  animation: alb-spin 12s linear infinite reverse;
}
.alb-orbit__dot {
  position: absolute; top: -4px; left: 50%; transform: translateX(-50%);
  width: 8px; height: 8px; border-radius: 999px;
  background: var(--alb-accent);
  box-shadow: 0 0 14px var(--alb-accent), 0 0 28px var(--alb-accent-45);
}

/* ============ TITLES ============ */
.alb-loading__title {
  font-family: var(--alb-serif); font-weight: 400;
  font-size: var(--alb-fs-2xl);
  margin: var(--alb-s-2) 0 0;
  letter-spacing: -.01em;
  color: var(--alb-ink);
}
.alb-loading__sub {
  font-family: var(--alb-mono); font-size: var(--alb-fs-base);
  color: var(--alb-ink-dim);
  margin: 0;
  letter-spacing: .1em;
  transition: color .4s var(--alb-ease);
}
.alb-loading__sub.is-ready { color: var(--alb-accent); }

/* ============ PROGRESS BAR ============ */
.alb-progress {
  width: 100%; max-width: 420px;
  height: 2px;
  background: var(--alb-ink-08);
  border-radius: 999px;
  overflow: hidden;
  margin-top: var(--alb-s-2);
}
.alb-progress__fill {
  width: 0%;
  height: 100%;
  background: linear-gradient(90deg, var(--alb-accent), var(--alb-accent-light));
  border-radius: 999px;
  box-shadow: 0 0 12px var(--alb-accent-45);
  transition: width .7s var(--alb-ease);
}

/* ============ LOG LIST ============ */
.alb-log {
  list-style: none; padding: 0; margin: var(--alb-s-4) 0 0;
  width: 100%; max-width: 420px;
  text-align: left;
  display: flex; flex-direction: column;
  gap: var(--alb-s-2);
}
.alb-log__item {
  display: grid;
  grid-template-columns: 16px 1fr auto;
  align-items: center;
  gap: var(--alb-s-3);
  padding: 8px 0;
  font-family: var(--alb-mono); font-size: 12px;
  color: var(--alb-ink-mute);
  opacity: 0;
  transform: translateY(4px);
  transition: opacity .4s var(--alb-ease), transform .4s var(--alb-ease), color .3s var(--alb-ease);
}
.alb-log__item.is-active { opacity: 1; transform: none; color: var(--alb-ink-dim); }
.alb-log__item.is-done   { opacity: 1; transform: none; color: var(--alb-ink); }

.alb-log__mark {
  position: relative;
  width: 16px; height: 16px;
  flex-shrink: 0;
}
.alb-log__mark::before,
.alb-log__mark::after {
  content: "";
  position: absolute; inset: 0;
  border-radius: 999px;
  transition: opacity .3s var(--alb-ease), transform .3s var(--alb-ease);
}
.alb-log__mark::before { border: 1px solid var(--alb-ink-14); opacity: 1; }
.alb-log__mark::after  { opacity: 0; }

.alb-log__item.is-active .alb-log__mark::before {
  border-color: var(--alb-accent-45);
  animation: alb-mark-pulse 1.2s var(--alb-ease) infinite;
}
@keyframes alb-mark-pulse {
  0%, 100% { box-shadow: 0 0 0 0 var(--alb-accent-25); }
  50%      { box-shadow: 0 0 0 4px rgba(201,178,122,0); }
}

.alb-log__item.is-done .alb-log__mark::before {
  background: var(--alb-accent);
  border-color: var(--alb-accent);
  box-shadow: 0 0 10px var(--alb-accent-45);
}
.alb-log__item.is-done .alb-log__mark::after {
  opacity: 1;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%230a0b12' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M2.5 6l2.5 2.5 4.5-5'/></svg>") center / 10px 10px no-repeat;
}

.alb-log__label { color: inherit; letter-spacing: .04em; }
.alb-log__value {
  color: var(--alb-accent);
  font-size: 11px;
  letter-spacing: .06em;
  opacity: 0;
  transition: opacity .3s var(--alb-ease);
}
.alb-log__item.is-done .alb-log__value { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .alb-orbit, .alb-orbit::before, .alb-log__item.is-active .alb-log__mark::before { animation: none !important; }
}
