/* Carregador de navegacao (js/nav-loader.js): quando um link interno demora
   a responder (o servidor as vezes segura a resposta por 3-6 s), um anel com o
   V aparece no centro da tela, enche de forma simulada e as bolinhas da marca
   vem de fora, batem no anel e somem. O documento antigo continua vivo por
   baixo, entao nada aqui bloqueia clique. */
.nav-loader {
  position: fixed;
  inset: 0;
  z-index: 1500;
  display: grid;
  place-items: center;
  /* halo escuro no centro: o V e o anel aparecem limpos mesmo sobre texto */
  background: radial-gradient(circle 300px at 50% 50%, color-mix(in srgb, var(--bg, #0b0c0e) 94%, transparent) 0%, color-mix(in srgb, var(--bg, #0b0c0e) 82%, transparent) 55%, color-mix(in srgb, var(--bg, #0b0c0e) 68%, transparent) 100%);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.28s ease;
}

.nav-loader[hidden] {
  display: none;
}

.nav-loader.is-on {
  opacity: 1;
}

.nav-loader-fx {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 380px;
  height: 380px;
  margin: -190px 0 0 -190px;
  pointer-events: none;
}

.nav-loader-core {
  position: relative;
  width: 140px;
  height: 140px;
  transform: scale(0.84);
  transition: transform 0.4s cubic-bezier(0.2, 0.9, 0.3, 1.25);
}

.nav-loader.is-on .nav-loader-core {
  transform: none;
}

.nav-loader-ring {
  display: block;
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
  overflow: visible;
}

.nav-loader-ring .nl-track {
  fill: none;
  stroke: var(--border-strong, rgba(255, 255, 255, 0.18));
  stroke-width: 3;
}

.nav-loader-ring .nl-arc {
  fill: none;
  stroke-width: 4.5;
  stroke-linecap: round;
  stroke-dasharray: 377;
  stroke-dashoffset: 377;
}

.nav-loader-mark {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 62px;
  height: 62px;
  margin: -31px 0 0 -31px;
  animation: nl-breathe 1.9s ease-in-out infinite;
}

@keyframes nl-breathe {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}

@media (max-width: 479px) {
  .nav-loader-fx {
    width: 320px;
    height: 320px;
    margin: -160px 0 0 -160px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nav-loader,
  .nav-loader-core {
    transition: none;
  }

  .nav-loader-mark {
    animation: none;
  }

  .nav-loader-fx {
    display: none;
  }
}
