/* Shared full-screen loader for non-game DRY Records public shortcodes. */

html.dry-records-public-loader-open,
body.dry-records-public-loader-open,
html:has(.dryRecordsPublicLoader:not(.is-hidden)),
body:has(.dryRecordsPublicLoader:not(.is-hidden)){
  overflow:hidden;
}

body.dry-records-public-loader-open .dry-records-app .aiChatBubble,
body.dry-records-public-loader-open .dry-records-app .aiChatOverlay,
html:has(.dryRecordsPublicLoader:not(.is-hidden)) .dry-records-app .aiChatBubble,
html:has(.dryRecordsPublicLoader:not(.is-hidden)) .dry-records-app .aiChatOverlay{
  display:none !important;
}

.dryRecordsPublicLoader{
  position:fixed;
  inset:0;
  width:100vw;
  height:100vh;
  height:100svh;
  z-index:2147483647;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:28px;
  color:#f8fafc;
  background:
    radial-gradient(760px 440px at 50% 18%, rgba(20,184,166,.18), transparent 62%),
    radial-gradient(620px 360px at 70% 72%, rgba(37,99,235,.16), transparent 64%),
    linear-gradient(180deg, #02040a 0%, #05070d 100%);
  opacity:1;
  visibility:visible;
  transition:opacity .28s ease, visibility .28s ease;
}

.dryRecordsPublicLoader.is-hidden{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}

.dryRecordsPublicLoaderPanel{
  width:min(420px, 100%);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:18px;
  text-align:center;
}

.dryRecordsPublicLoaderPanel img{
  display:block;
  width:min(220px, 58vw);
  height:auto;
  filter:drop-shadow(0 20px 42px rgba(0,0,0,.55));
}

.dryRecordsPublicLoaderText{
  min-height:24px;
  color:#e5edf7;
  font-size:16px;
  font-weight:750;
  line-height:1.4;
}

.dryRecordsPublicLoader[data-state="error"] .dryRecordsPublicLoaderText{
  color:#fecdd3;
}

.dryRecordsPublicLoaderDots{
  display:flex;
  gap:7px;
  align-items:center;
  justify-content:center;
}

.dryRecordsPublicLoaderDots span{
  width:8px;
  height:8px;
  border-radius:50%;
  background:#5eead4;
  animation:dryRecordsPublicLoaderPulse 1s ease-in-out infinite;
}

.dryRecordsPublicLoaderDots span:nth-child(2){animation-delay:.16s}
.dryRecordsPublicLoaderDots span:nth-child(3){animation-delay:.32s}

.dryRecordsPublicLoader[data-state="error"] .dryRecordsPublicLoaderDots span{
  background:#fb7185;
  animation:none;
  opacity:.82;
}

@keyframes dryRecordsPublicLoaderPulse{
  0%, 100%{
    opacity:.32;
    transform:translateY(0);
  }
  50%{
    opacity:1;
    transform:translateY(-5px);
  }
}

@media (prefers-reduced-motion:reduce){
  .dryRecordsPublicLoader{
    transition:none;
  }

  .dryRecordsPublicLoaderDots span{
    animation:none;
  }
}
