.site-loader {
  position: fixed;
  z-index: 9999;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff;
  background:
    radial-gradient(circle at 50% 42%, rgba(20,148,91,.78), transparent 28%),
    linear-gradient(145deg,#032f24,#07513b 62%,#087a4b);
  transition: opacity .42s ease, visibility .42s ease;
  animation: loader-failsafe .35s 4s forwards;
}

body.page-loading { overflow: hidden; }

.site-loader::before,
.site-loader::after {
  content: "";
  position: absolute;
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 50%;
}

.site-loader::before { width: 460px; height: 460px; }
.site-loader::after { width: 620px; height: 620px; }

.site-loader.is-hiding {
  visibility: hidden;
  opacity: 0;
  animation: none;
  pointer-events: none;
}

.loader-content {
  position: relative;
  z-index: 1;
  display: grid;
  justify-items: center;
  padding: 30px;
  text-align: center;
}

.loader-emblem {
  position: relative;
  display: grid;
  width: 150px;
  height: 150px;
  place-items: center;
}

.loader-emblem img {
  position: relative;
  z-index: 2;
  width: 104px;
  height: 104px;
  border: 5px solid #fff;
  border-radius: 50%;
  background: #fff;
  object-fit: cover;
  box-shadow: 0 18px 38px rgba(0,25,17,.38);
  animation: loader-logo-pulse 1.65s ease-in-out infinite;
}

.loader-ring {
  position: absolute;
  border-radius: 50%;
}

.loader-ring-one {
  inset: 8px;
  border: 2px solid transparent;
  border-top-color: #f47b20;
  border-right-color: rgba(244,123,32,.35);
  animation: loader-ring-spin 1.25s linear infinite;
}

.loader-ring-two {
  inset: 0;
  border: 1px dashed rgba(255,255,255,.42);
  animation: loader-ring-spin-reverse 5s linear infinite;
}

.loader-content > strong {
  margin-top: 15px;
  color: #fff;
  font-size: 1.25rem;
  letter-spacing: .22em;
}

.loader-caption {
  margin-top: 5px;
  color: #cce1d8;
  font-size: .68rem;
  letter-spacing: .06em;
}

.loader-progress {
  position: relative;
  overflow: hidden;
  width: 180px;
  height: 3px;
  margin-top: 24px;
  border-radius: 4px;
  background: rgba(255,255,255,.14);
}

.loader-progress i {
  position: absolute;
  inset: 0 auto 0 0;
  width: 42%;
  border-radius: inherit;
  background: #f47b20;
  animation: loader-progress 1.05s ease-in-out infinite;
}

@keyframes loader-ring-spin { to { transform: rotate(360deg); } }
@keyframes loader-ring-spin-reverse { to { transform: rotate(-360deg); } }
@keyframes loader-logo-pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.045); } }
@keyframes loader-progress { 0% { transform: translateX(-115%); } 100% { transform: translateX(340%); } }
@keyframes loader-failsafe { to { visibility:hidden; opacity:0; pointer-events:none; } }

@media(max-width:600px) {
  .site-loader::before { width:320px; height:320px; }
  .site-loader::after { width:430px; height:430px; }
  .loader-emblem { width:132px; height:132px; }
  .loader-emblem img { width:92px; height:92px; }
}

@media(prefers-reduced-motion:reduce) {
  .loader-emblem img,.loader-ring,.loader-progress i { animation:none; }
  .site-loader { animation-delay:1.2s; }
}
