/* Homepage opening animation. Kept separate so other pages remain unaffected. */
.home-preloader {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: radial-gradient(ellipse at 50% 46%, #603747 0%, #35232d 43%, #1b1b1d 100%);
  color: #f6eee2;
  isolation: isolate;
  animation: preloader-failsafe .5s ease 3s forwards;
}
.home-preloader.is-leaving {
  animation: preloader-leave .5s cubic-bezier(.65, 0, .3, 1) forwards;
}
body.is-preloading { overflow: hidden; }
.preloader-grid {
  position: absolute;
  inset: -70%;
  opacity: .27;
  background: repeating-linear-gradient(90deg, transparent 0 104px, rgba(246,224,189,.2) 105px, transparent 106px),
              repeating-linear-gradient(0deg, transparent 0 104px, rgba(246,224,189,.14) 105px, transparent 106px);
  transform: rotate(-16deg);
  animation: preloader-grid-drift 9s linear infinite;
  mask-image: radial-gradient(ellipse at center, #000 10%, transparent 59%);
}
.home-preloader::before,
.home-preloader::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.home-preloader::before {
  background: linear-gradient(110deg, transparent 26%, rgba(194,150,100,.12) 48%, transparent 70%);
  transform: translateX(-120%);
  animation: preloader-light-sweep 2.8s ease-in-out infinite;
}
.home-preloader::after {
  inset: 20px;
  border: 1px solid rgba(243,210,171,.16);
}
.preloader-orbit {
  position: absolute;
  width: min(58vw, 510px);
  aspect-ratio: 1;
  border: 1px solid rgba(229,188,143,.29);
  border-radius: 50%;
  pointer-events: none;
}
.preloader-orbit::before,
.preloader-orbit::after {
  content: "";
  position: absolute;
  top: 50%;
  left: -4px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #ddb788;
  box-shadow: 0 0 17px 5px rgba(225,171,107,.55);
}
.preloader-orbit::after {
  top: auto;
  left: auto;
  bottom: 18%;
  right: 9%;
  width: 4px;
  height: 4px;
}
.preloader-orbit--outer {
  border-style: dashed;
  border-color: rgba(229,188,143,.27);
  animation: preloader-spin 11s linear infinite;
}
.preloader-orbit--inner {
  width: min(49vw, 435px);
  border-color: rgba(229,188,143,.18);
  animation: preloader-spin 8s linear infinite reverse;
}
.preloader-orbit--inner::before { width: 5px; height: 5px; box-shadow: 0 0 12px 3px rgba(225,171,107,.45); }
.preloader-content {
  position: relative;
  z-index: 2;
  width: min(380px, calc(100vw - 80px));
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  animation: preloader-appear .7s cubic-bezier(.2,.8,.2,1) both;
}
.preloader-overline,
.preloader-signature {
  font: 700 10px/1.4 "Plus Jakarta Sans", sans-serif;
  letter-spacing: .24em;
  color: #ddbb90;
}
.preloader-overline { margin-bottom: 27px; }
.preloader-logo-frame {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  padding: 24px 25px;
}
.preloader-logo-frame img {
  width: 100%;
  height: auto;
  filter: brightness(1.35) drop-shadow(0 10px 18px rgba(0,0,0,.55));
  animation: preloader-logo-float 2.4s ease-in-out infinite alternate;
}
.preloader-loading {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-top: 32px;
  font: 600 12px/1.5 "Plus Jakarta Sans", sans-serif;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.preloader-dots { display: flex; align-items: center; gap: 4px; height: 12px; }
.preloader-dots i {
  display: block;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: #dfb781;
  animation: preloader-dot .9s ease-in-out infinite alternate;
}
.preloader-dots i:nth-child(2) { animation-delay: .18s; }
.preloader-dots i:nth-child(3) { animation-delay: .36s; }
.preloader-track {
  position: relative;
  width: 100%;
  height: 2px;
  margin: 16px 0 20px;
  background: rgba(255,236,210,.21);
  overflow: hidden;
}
.preloader-track span {
  display: block;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, #855461, #f2d1a1 72%, #fff8e9);
  transform: scaleX(0);
  transform-origin: left;
  animation: preloader-progress 3s cubic-bezier(.3,.02,.35,1) forwards;
}
.preloader-signature { font-size: 9px; letter-spacing: .32em; opacity: .8; }
@keyframes preloader-spin { to { transform: rotate(360deg); } }
@keyframes preloader-grid-drift { to { transform: translate(104px, 104px) rotate(-16deg); } }
@keyframes preloader-light-sweep { 50%, 100% { transform: translateX(120%); } }
@keyframes preloader-logo-float { to { transform: translateY(-5px); } }
@keyframes preloader-appear { from { opacity: 0; transform: translateY(22px) scale(.95); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes preloader-dot { from { opacity: .22; transform: translateY(0); } to { opacity: 1; transform: translateY(-4px); } }
@keyframes preloader-progress { to { transform: scaleX(1); } }
@keyframes preloader-leave { to { opacity: 0; visibility: hidden; transform: translateY(-12px); } }
/* Removes the overlay after 3 seconds even when JavaScript is disabled or fails. */
@keyframes preloader-failsafe { to { opacity: 0; visibility: hidden; pointer-events: none; } }
@media (max-width: 650px) {
  .home-preloader::after { inset: 12px; }
  .preloader-content { width: min(270px, calc(100vw - 92px)); }
  .preloader-overline { font-size: 8px; letter-spacing: .16em; }
  .preloader-orbit--outer { width: 92vw; }
  .preloader-orbit--inner { width: 78vw; }
  .preloader-logo-frame { padding: 19px 15px; }
}
@media (prefers-reduced-motion: reduce) {
  .home-preloader, .home-preloader * { animation-duration: .01ms !important; }
  .home-preloader { animation-delay: .2s !important; }
}