﻿.site-loader {
  position: fixed;
  inset: 0;
  z-index: 1400;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 22% 18%, rgba(110, 115, 84, 0.08), transparent 28%),
    radial-gradient(circle at 78% 82%, rgba(216, 194, 190, 0.22), transparent 32%),
    var(--bg, #f9f4ef);
  transition: opacity 620ms ease, visibility 620ms ease;
}

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

.site-loader-inner {
  display: grid;
  justify-items: center;
  gap: 16px;
  text-align: center;
}

.site-loader-mark {
  width: 42px;
  height: 42px;
  animation: loaderSpin 2.8s linear infinite;
}

.site-loader-mark img {
  width: 100%;
  height: 100%;
}

.site-loader-label {
  margin: 0;
  font-size: 0.76rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink, #1a1a18);
}

.site-loader-line {
  width: 86px;
  height: 1px;
  overflow: hidden;
  background: rgba(26, 26, 24, 0.12);
}

.site-loader-line::after {
  content: "";
  display: block;
  width: 45%;
  height: 100%;
  background: #6e7354;
  animation: loaderSweep 1.2s ease-in-out infinite;
}

@keyframes loaderSpin {
  from { transform: rotate(0deg) scale(0.96); }
  50% { transform: rotate(12deg) scale(1); }
  to { transform: rotate(360deg) scale(0.96); }
}

@keyframes loaderSweep {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(240%); }
}

.cursor-dot,
.cursor-ring {
  display: none;
}

@media (pointer: fine) {
  html,
  body,
  a,
  button,
  input,
  textarea,
  select,
  summary,
  [role="button"] {
    cursor: none !important;
  }

  .cursor-dot,
  .cursor-ring {
    display: block;
    position: fixed;
    top: 0;
    left: 0;
    pointer-events: none;
    z-index: 1500;
    opacity: 0;
    transform: translate(-50%, -50%);
    transition:
      opacity 180ms ease,
      width 220ms ease,
      height 220ms ease,
      border-color 220ms ease,
      background-color 220ms ease;
  }

  .cursor-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--accent, #6e7354);
  }

  .cursor-ring {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 1px solid rgba(26, 26, 24, 0.22);
    background: rgba(249, 244, 239, 0.08);
    backdrop-filter: blur(1px);
  }

  body.cursor-visible .cursor-dot,
  body.cursor-visible .cursor-ring {
    opacity: 1;
  }

  body.cursor-hover .cursor-ring {
    width: 48px;
    height: 48px;
    border-color: rgba(110, 115, 84, 0.52);
    background: rgba(110, 115, 84, 0.08);
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-loader,
  .cursor-dot,
  .cursor-ring {
    transition: none;
  }

  .site-loader-mark,
  .site-loader-line::after {
    animation: none;
  }
}


