/* Unified portal loader — site gold/ivory palette */

.portal-loader-host {
  position: relative;
  min-height: 4.5rem;
}

.portal-loader-li {
  list-style: none;
  margin: 0;
  padding: 0;
}

.portal-loader {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  padding: 1.25rem 1rem;
  text-align: center;
  color: hsl(var(--muted-foreground));
  font-size: 0.9rem;
  line-height: 1.4;
}

.portal-loader--inline {
  flex-direction: row;
  justify-content: flex-start;
  gap: 0.65rem;
  padding: 0.65rem 0.25rem;
  font-size: 0.85rem;
}

.portal-loader__ring {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  border: 2.5px solid hsl(var(--border) / 0.85);
  border-top-color: hsl(var(--gold));
  border-right-color: hsl(var(--gold-light) / 0.85);
  animation: portal-loader-spin 0.85s linear infinite;
  flex-shrink: 0;
}

.portal-loader--inline .portal-loader__ring {
  width: 1.35rem;
  height: 1.35rem;
  border-width: 2px;
}

.portal-loader__label {
  font-family: var(--font-body);
  color: hsl(var(--muted-foreground));
}

.portal-loader--overlay {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: hsl(var(--card) / 0.82);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  border-radius: inherit;
}

.portal-page-loader {
  position: fixed;
  inset: 0;
  z-index: 260;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  background: hsl(var(--background) / 0.72);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.portal-page-loader[hidden] {
  display: none !important;
}

.portal-page-loader .portal-loader {
  padding: 1.75rem 2rem;
  border-radius: 1rem;
  background: hsl(var(--card) / 0.95);
  border: 1px solid hsl(var(--border) / 0.9);
  box-shadow:
    0 8px 28px hsl(var(--gold-dark) / 0.12),
    0 1px 0 0 hsl(var(--gold-light) / 0.2) inset;
  min-width: min(100%, 16rem);
}

.portal-page-loader .portal-loader__ring {
  width: 2.75rem;
  height: 2.75rem;
}

.portal-page-loader .portal-loader__label {
  font-size: 0.95rem;
  color: hsl(var(--foreground));
}

body.portal-initial-loading .site-main {
  visibility: hidden;
}

@keyframes portal-loader-spin {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .portal-loader__ring {
    animation: none;
    border-top-color: hsl(var(--gold));
    border-right-color: hsl(var(--gold));
  }
}
