:root{
  --loader-navy:#08234A;
  --loader-navy-soft:#183D72;
  --loader-gold:#D7AB3F;
  --loader-gold-soft:#E8CA75;
  --loader-cream:#F8F4EC;
  --loader-white:#FFFFFF;
  --loader-text:#23334F;
  --loader-text-soft:rgba(35,51,79,.56);
}

html.has-loader-active,
html.has-loader-active body{
  overflow:hidden !important;
}

.site-loader{
  position:fixed;
  inset:0;
  z-index:99999;
  display:grid;
  place-items:center;
  padding:24px;
  overflow:hidden;
  background:
    radial-gradient(circle at 20% 18%, rgba(215,171,63,.16), transparent 24%),
    radial-gradient(circle at 82% 20%, rgba(8,35,74,.10), transparent 26%),
    radial-gradient(circle at 50% 82%, rgba(215,171,63,.08), transparent 24%),
    linear-gradient(180deg, #f8f4ec 0%, #f6f1e8 48%, #f9f5ee 100%);
  transition:opacity .55s ease, visibility .55s ease;
}

.site-loader::before,
.site-loader::after{
  content:"";
  position:absolute;
  inset:auto;
  pointer-events:none;
}

.site-loader::before{
  width:min(92vw,720px);
  height:min(92vw,720px);
  border-radius:50%;
  background:
    radial-gradient(circle, rgba(255,255,255,.82) 0%, rgba(255,255,255,.36) 42%, transparent 72%);
  filter:blur(6px);
  animation:loaderAura 7.5s ease-in-out infinite;
}

.site-loader::after{
  width:100%;
  height:100%;
  background:
    linear-gradient(120deg, transparent 0 42%, rgba(255,255,255,.24) 50%, transparent 58% 100%);
  opacity:.52;
  transform:translateX(-100%);
  animation:loaderLightSweep 9s ease-in-out infinite;
}

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

.loader-shell{
  position:relative;
  z-index:1;
  width:min(90vw,420px);
  display:grid;
  justify-items:center;
  gap:18px;
  padding:18px 24px 24px;
  text-align:center;
}

.loader-mark{
  position:relative;
  width:270px;
  height:270px;
  display:grid;
  place-items:center;
  animation:loaderLogoEnter 1s cubic-bezier(.2,.9,.25,1) both;
}

.loader-mark::before,
.loader-mark::after{
  content:"";
  position:absolute;
  border-radius:50%;
  pointer-events:none;
}

.loader-mark::before{
  inset:22px;
  background:
    radial-gradient(circle, rgba(255,255,255,.94) 0%, rgba(255,255,255,.52) 55%, transparent 72%);
  box-shadow:
    0 24px 60px rgba(8,35,74,.10),
    inset 0 0 0 1px rgba(215,171,63,.10);
  animation:loaderHaloPulse 4.8s ease-in-out infinite;
}

.loader-mark::after{
  inset:42px;
  border:1px solid rgba(8,35,74,.08);
  animation:loaderInnerPulse 3.4s ease-in-out infinite;
}

.loader-mark img{
  position:relative;
  z-index:3;
  width:210px;
  height:auto;
  object-fit:contain;
  filter:drop-shadow(0 18px 30px rgba(8,35,74,.14));
  animation:loaderLogoBreath 3.1s ease-in-out infinite;
}

.loader-orbit,
.loader-sweep{
  position:absolute;
  border-radius:50%;
  pointer-events:none;
}

.loader-orbit-a{
  inset:0;
  border:1px solid rgba(215,171,63,.20);
  animation:loaderOrbitSoft 10s linear infinite;
}

.loader-orbit-b{
  inset:16px;
  border:1px solid rgba(8,35,74,.12);
  animation:loaderOrbitSoftReverse 8.4s linear infinite;
}

.loader-sweep{
  inset:6px;
  background:conic-gradient(from 90deg, transparent 0 74%, rgba(215,171,63,.68) 82%, transparent 90% 100%);
  -webkit-mask:radial-gradient(circle at center, transparent 0 72%, #000 74% 77%, transparent 79%);
  mask:radial-gradient(circle at center, transparent 0 72%, #000 74% 77%, transparent 79%);
  animation:loaderSweep 2.8s linear infinite;
}

.loader-brand{
  display:grid;
  gap:8px;
  color:var(--loader-navy);
  animation:loaderTextEnter .85s ease .18s both;
}

.loader-brand strong{
  display:none;
}

.loader-brand span{
  font-size:.82rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--loader-text);
  font-weight:800;
}

.loader-line{
  position:relative;
  width:180px;
  height:4px;
  overflow:hidden;
  border-radius:999px;
  background:rgba(8,35,74,.10);
  animation:loaderTextEnter .85s ease .3s both;
}

.loader-line span{
  display:block;
  width:0%;
  height:100%;
  border-radius:inherit;
  background:linear-gradient(90deg, var(--loader-gold), var(--loader-gold-soft), var(--loader-navy));
  box-shadow:0 0 18px rgba(215,171,63,.28);
  transition:width .22s ease;
}

@keyframes loaderLogoEnter{
  0%{opacity:0; transform:translateY(24px) scale(.88)}
  100%{opacity:1; transform:translateY(0) scale(1)}
}

@keyframes loaderTextEnter{
  0%{opacity:0; transform:translateY(12px)}
  100%{opacity:1; transform:translateY(0)}
}

@keyframes loaderLogoBreath{
  0%,100%{transform:translateY(0) scale(1)}
  50%{transform:translateY(-5px) scale(1.028)}
}

@keyframes loaderSweep{
  from{transform:rotate(0deg)}
  to{transform:rotate(360deg)}
}

@keyframes loaderOrbitSoft{
  from{transform:rotate(0deg)}
  to{transform:rotate(360deg)}
}

@keyframes loaderOrbitSoftReverse{
  from{transform:rotate(360deg)}
  to{transform:rotate(0deg)}
}

@keyframes loaderAura{
  0%,100%{transform:scale(.98); opacity:.9}
  50%{transform:scale(1.05); opacity:1}
}

@keyframes loaderHaloPulse{
  0%,100%{transform:scale(1); opacity:.9}
  50%{transform:scale(1.04); opacity:1}
}

@keyframes loaderInnerPulse{
  0%,100%{transform:scale(1); opacity:.55}
  50%{transform:scale(1.03); opacity:.88}
}

@keyframes loaderLightSweep{
  0%,100%{transform:translateX(-110%)}
  50%{transform:translateX(110%)}
}

@media (max-width:700px){
  .loader-shell{
    width:min(92vw,340px);
    gap:16px;
    padding:14px 14px 20px;
  }

  .loader-mark{
    width:228px;
    height:228px;
  }

  .loader-mark::before{
    inset:18px;
  }

  .loader-mark::after{
    inset:34px;
  }

  .loader-mark img{
    width:178px;
  }

  .loader-brand span{
    font-size:.7rem;
    letter-spacing:.18em;
  }

  .loader-line{
    width:150px;
  }
}

@media (prefers-reduced-motion:reduce){
  .site-loader,
  .site-loader::before,
  .site-loader::after,
  .loader-mark,
  .loader-mark::before,
  .loader-mark::after,
  .loader-mark img,
  .loader-orbit-a,
  .loader-orbit-b,
  .loader-sweep,
  .loader-brand,
  .loader-line{
    animation:none !important;
    transition:none !important;
  }
}
