.portalLoading {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
}
.portalLoading.isNight { background: #0f1012; }
.portalLoadingMark {
  display: block;
  width: clamp(180px, 32vmin, 300px);
  height: clamp(180px, 32vmin, 300px);
  object-fit: contain;
}
video.portalLoadingMark {
  -webkit-mask: url('/assets/loading/cssi-mark.svg') center / 100% 100% no-repeat;
  mask: url('/assets/loading/cssi-mark.svg') center / 100% 100% no-repeat;
}
.portalLoadingLabel {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.portalLoadingFallback { position: absolute; bottom: max(40px, 10vh); text-align: center; }
.portalLoadingFallback button, .portalStartupFailure button {
  padding: 10px 18px;
  border: 1px solid #d8e1e9;
  border-radius: 5px;
  background: #fff;
  color: #243849;
  font: 14px 'Segoe UI', sans-serif;
  cursor: pointer;
}
.portalStartupFailure { flex-direction: column; gap: 20px; color: #243849; font-family: 'Segoe UI', sans-serif; text-align: center; padding: 24px; }
.portalStartupFailure h1 { margin: 0; font-size: 22px; }
.portalStartupFailure p { margin: 0; font-size: 14px; }
.isNight.portalStartupFailure { color: #ececee; }
.isNight .portalLoadingFallback button, .portalStartupFailure.isNight button { background: #1d1e22; border-color: #34353b; color: #ececee; }
.portalLoadingFallback button:focus-visible, .portalStartupFailure button:focus-visible { outline: 2px solid #7094b6; outline-offset: 3px; }
