.nc-loader[hidden] { display: none !important; }
.nc-loader {
  position: fixed;
  inset: 0;
  z-index: 20000;
  display: grid;
  place-items: center;
  padding: 1.25rem;
  background: rgba(20, 43, 51, .42);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  opacity: 0;
  transition: opacity .22s ease;
}
.nc-loader.is-visible { opacity: 1; }
.nc-loader-card {
  width: min(100%, 335px);
  padding: 1rem 1.3rem 1.4rem;
  overflow: hidden;
  text-align: center;
  color: #1c3c46;
  background: radial-gradient(circle at 8% 4%, #fff1d8 0, transparent 40%),
              radial-gradient(circle at 95% 90%, #dcf6ef 0, transparent 40%), #fffdfa;
  border: 2px solid rgba(16, 139, 145, .22);
  border-radius: 29px;
  box-shadow: 0 24px 70px rgba(14, 41, 53, .28), 0 5px 18px rgba(14, 41, 53, .11);
  transform: translateY(9px) scale(.97);
  transition: transform .25s ease;
}
.nc-loader.is-visible .nc-loader-card { transform: translateY(0) scale(1); }
.nc-loader-scene {
  position: relative;
  width: min(100%, 280px);
  height: 206px;
  margin: 0 auto;
}
.nc-loader-mascot {
  position: absolute;
  z-index: 1;
  top: 14px;
  left: calc(50% - 90px);
  width: 180px;
  height: 180px;
  object-fit: contain;
  border-radius: 50%;
  mix-blend-mode: multiply;
  animation: nc-mascot-bob 2.6s ease-in-out infinite;
}
.nc-loader-orbit {
  position: absolute;
  z-index: 2;
  inset: 3px 31px 0;
  border: 1.5px dashed rgba(16, 139, 145, .32);
  border-radius: 50%;
  animation: nc-orbit 5.5s linear infinite;
}
.nc-loader-node {
  position: absolute;
  display: block;
  width: 15px;
  height: 15px;
  border: 3px solid #fffdfa;
  border-radius: 50%;
  box-shadow: 0 2px 7px rgba(16, 55, 70, .24);
}
.nc-loader-node-one { top: 5px; left: 37px; background: #eb925e; }
.nc-loader-node-two { top: 81px; right: -8px; background: #18a99f; }
.nc-loader-node-three { bottom: 6px; left: 37px; background: #f8c557; }
.nc-loader-gestures {
  position: absolute;
  z-index: 3;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.nc-loader-hand-left, .nc-loader-hand-right { animation: nc-hand-float 2s ease-in-out infinite; }
.nc-loader-hand-right { animation-delay: -.9s; }
.nc-loader-watch { transform-origin: 38px 148px; animation: nc-watch 5.2s ease-in-out infinite; }
.nc-loader-binoculars { transform-origin: 150px 108px; animation: nc-binoculars 5.2s ease-in-out infinite; }
.nc-loader-wave { animation: nc-wave 5.2s ease-in-out infinite; }
.nc-loader-title {
  margin: -.1rem 0 .15rem;
  font: 800 clamp(1.35rem, 5vw, 1.65rem)/1.2 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: -.035em;
}
.nc-loader-dots { display: inline-block; width: 1.6em; color: #df8052; letter-spacing: .07em; white-space: nowrap; overflow: hidden; vertical-align: bottom; animation: nc-dots 1.2s steps(3, end) infinite; }
.nc-loader-caption { margin: 0; font: 600 .86rem/1.4 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #52717a; }
@keyframes nc-orbit { to { transform: rotate(360deg); } }
@keyframes nc-mascot-bob { 0%, 100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-5px) rotate(2deg); } }
@keyframes nc-hand-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
@keyframes nc-watch { 0%, 37%, 100% { opacity: 1; transform: scale(1); } 43%, 92% { opacity: 0; transform: scale(.8); } }
@keyframes nc-binoculars { 0%, 39%, 94%, 100% { opacity: 0; transform: translateY(5px) scale(.9); } 46%, 86% { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes nc-wave { 0%, 37%, 95%, 100% { opacity: 1; } 43%, 89% { opacity: 0; } }
@keyframes nc-dots { 0% { clip-path: inset(0 100% 0 0); } 100% { clip-path: inset(0 0 0 0); } }
@media (prefers-reduced-motion: reduce) {
  .nc-loader, .nc-loader-card { transition: none; }
  .nc-loader-mascot, .nc-loader-orbit, .nc-loader-hand-left, .nc-loader-hand-right,
  .nc-loader-watch, .nc-loader-wave, .nc-loader-dots { animation: none; }
  .nc-loader-binoculars { animation: none; opacity: 0; }
}
