/* Fullscreen viewer — loading state while video buffers */
#viewer { position: fixed; }

.viewer-load-overlay {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  background: rgba(0, 0, 0, 0.72);
  pointer-events: none;
}
.viewer-stage .viewer-load-overlay {
  border-radius: 0;
}

.viewer-load-overlay.show {
  display: flex;
}

.viewer-load-spinner {
  width: 40px;
  height: 40px;
  border: 3px solid rgba(255, 255, 255, 0.12);
  border-top-color: #e63946;
  border-radius: 50%;
  animation: phViewerSpin 0.75s linear infinite;
}

@keyframes phViewerSpin {
  to { transform: rotate(360deg); }
}

.viewer-load-title {
  font-size: 15px;
  font-weight: 700;
  color: #fff;
  letter-spacing: 0.02em;
}

.viewer-load-hint {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.55);
  max-width: 240px;
  text-align: center;
  line-height: 1.4;
}

/* Keep first frames visible while buffering — hiding the video feels much slower */
#vVid.vid-buffering {
  opacity: 1;
  visibility: visible;
}

/* Grid tile — brief feedback when opening viewer */
.vslot-opening::after {
  content: "Opening…";
  position: absolute;
  inset: 0;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.65);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #fff;
  pointer-events: none;
}

.tile-opening::after {
  content: "Opening…";
  position: absolute;
  inset: 0;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.65);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #fff;
  pointer-events: none;
}
