.site-loader { display: none; }

.has-site-loader .site-loader {
  align-items: center;
  background:
    radial-gradient(circle at 50% 42%, rgba(221, 180, 100, .16), transparent 27%),
    radial-gradient(circle at 18% 12%, rgba(104, 18, 30, .055), transparent 30%),
    linear-gradient(135deg, #fbf7ee 0%, #f3ead9 54%, #fbf8f1 100%);
  clip-path: inset(0);
  color: #5b101a;
  display: grid;
  inset: 0;
  justify-items: center;
  overflow: hidden;
  position: fixed;
  text-align: center;
  z-index: 10000;
  animation: site-loader-failsafe .01s linear 7s forwards;
}

.site-loader::before,
.site-loader::after {
  content: "";
  pointer-events: none;
  position: absolute;
}
.site-loader::before {
  border: 1px solid rgba(173, 127, 48, .18);
  border-radius: 50%;
  height: min(78vw, 780px);
  width: min(78vw, 780px);
}
.site-loader::after {
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.58), transparent);
  inset: -20% -65%;
  opacity: 0;
  transform: translateX(-38%) rotate(-14deg);
}
.site-loader.is-running::after { animation: site-loader-light 1.35s cubic-bezier(.22,1,.36,1) .35s both; }

.site-loader-inner {
  align-items: center;
  display: flex;
  flex-direction: column;
  isolation: isolate;
  position: relative;
  transform: translateY(-1.5vh);
  z-index: 1;
}
.site-loader-ornament {
  height: 205px;
  margin-bottom: 25px;
  position: relative;
  width: 205px;
}
.site-loader-ornament::before,
.site-loader-ornament::after {
  border-radius: 50%;
  content: "";
  inset: 0;
  position: absolute;
}
.site-loader-ornament::before {
  background: conic-gradient(from 210deg, transparent 0 18%, #c79a49 34%, #efd18b 49%, #8c621f 63%, transparent 80%);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 1px), #000 0);
  mask: radial-gradient(farthest-side, transparent calc(100% - 1px), #000 0);
  opacity: 0;
  transform: rotate(-70deg) scale(.84);
}
.site-loader-ornament::after {
  border: 1px solid rgba(104, 18, 30, .12);
  inset: 10px;
  opacity: 0;
  transform: scale(.84);
}
.is-running .site-loader-ornament::before { animation: loader-ring .95s cubic-bezier(.22,1,.36,1) .08s both; }
.is-running .site-loader-ornament::after { animation: loader-halo .8s cubic-bezier(.22,1,.36,1) .22s both; }

.site-loader-logo {
  filter: blur(9px) drop-shadow(0 18px 25px rgba(68, 15, 22, .18));
  height: 156px;
  left: 50%;
  object-fit: contain;
  opacity: 0;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -46%) scale(.82);
  width: 128px;
}
.is-running .site-loader-logo { animation: loader-mark .9s cubic-bezier(.22,1,.36,1) .12s both; }

.site-loader-kicker,
.site-loader-name,
.site-loader-legacy,
.site-loader-progress { opacity: 0; }
.site-loader-kicker {
  align-items: center;
  color: #a17736;
  display: flex;
  font-size: 7px;
  font-weight: 700;
  gap: 12px;
  letter-spacing: .34em;
  margin-bottom: 12px;
  text-transform: uppercase;
}
.site-loader-kicker::before,
.site-loader-kicker::after { background: #c99f55; content: ""; height: 1px; width: 28px; }
.site-loader-name {
  color: #5f101b;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(20px, 2vw, 27px);
  font-weight: 600;
  letter-spacing: .055em;
  line-height: 1.18;
  max-width: 520px;
  text-transform: uppercase;
}
.site-loader-legacy {
  color: #8b7962;
  font-size: 8px;
  font-weight: 600;
  letter-spacing: .3em;
  margin-top: 10px;
  text-transform: uppercase;
}
.site-loader-progress {
  background: rgba(104, 18, 30, .12);
  height: 1px;
  margin-top: 31px;
  overflow: hidden;
  position: relative;
  width: min(230px, 58vw);
}
.site-loader-progress span {
  background: linear-gradient(90deg, transparent, #b37e28 30%, #efcf89 72%, transparent);
  inset: 0;
  position: absolute;
  transform: translateX(-100%);
}
.is-running .site-loader-kicker { animation: loader-copy .62s cubic-bezier(.22,1,.36,1) .52s both; }
.is-running .site-loader-name { animation: loader-copy .72s cubic-bezier(.22,1,.36,1) .64s both; }
.is-running .site-loader-legacy { animation: loader-copy .65s cubic-bezier(.22,1,.36,1) .77s both; }
.is-running .site-loader-progress { animation: loader-fade .4s ease .83s both; }
.is-running .site-loader-progress span { animation: loader-progress 1.35s cubic-bezier(.65,0,.35,1) .45s both; }

.site-loader.is-complete {
  animation: none;
  clip-path: inset(0 0 100% 0);
  opacity: 0;
  transition: clip-path .88s cubic-bezier(.76,0,.24,1), opacity .58s ease .18s;
}

@keyframes loader-ring { from { opacity: 0; transform: rotate(-70deg) scale(.84); } to { opacity: 1; transform: rotate(0) scale(1); } }
@keyframes loader-halo { from { opacity: 0; transform: scale(.84); } to { opacity: 1; transform: scale(1); } }
@keyframes loader-mark { from { filter: blur(9px) drop-shadow(0 18px 25px rgba(68,15,22,.18)); opacity: 0; transform: translate(-50%,-46%) scale(.82); } to { filter: blur(0) drop-shadow(0 18px 25px rgba(68,15,22,.18)); opacity: 1; transform: translate(-50%,-50%) scale(1); } }
@keyframes loader-copy { from { filter: blur(5px); opacity: 0; transform: translateY(14px); } to { filter: blur(0); opacity: 1; transform: translateY(0); } }
@keyframes loader-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes loader-progress { from { transform: translateX(-100%); } to { transform: translateX(100%); } }
@keyframes site-loader-light { 0% { opacity: 0; transform: translateX(-38%) rotate(-14deg); } 38% { opacity: .8; } 100% { opacity: 0; transform: translateX(38%) rotate(-14deg); } }
@keyframes site-loader-failsafe { to { opacity: 0; pointer-events: none; visibility: hidden; } }

@media (max-width: 600px) {
  .site-loader-ornament { height: 178px; margin-bottom: 22px; width: 178px; }
  .site-loader-logo { height: 137px; width: 112px; }
  .site-loader-name { font-size: 19px; max-width: 315px; }
  .site-loader-kicker { font-size: 6px; letter-spacing: .28em; }
  .site-loader-legacy { font-size: 7px; letter-spacing: .25em; }
}

@media (prefers-reduced-motion: reduce) {
  .site-loader { display: none !important; }
}
