/* KEYSUN progressive background loading — high-quality 1x preview, full responsive image after decode */
html,
body {
  overflow-x: hidden;
  overflow-x: clip;
}

body {
  position: relative;
  isolation: isolate;
  background: #050914;
}

/* Disable the previous pseudo-element background when this stylesheet is active. */
body::before,
body::after {
  content: none;
  display: none;
}

.site-background {
  position: fixed;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
  background: #050914;
}

.site-background img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}

/* The preview always uses the approved 1x asset; it is already sharp at viewport size. */
.site-bg-preview {
  opacity: 1;
  transition: opacity 180ms ease;
}

/* Without JavaScript the full image remains visible once the browser paints it. */
.site-bg-full {
  opacity: 1;
}

/* With JavaScript, reveal the full-resolution candidate only after decode(). */
html.js .site-bg-full {
  opacity: 0;
  transition: opacity 180ms ease;
}

html.js.bg-full-ready .site-bg-full {
  opacity: 1;
}

html.js.bg-full-ready .site-bg-preview {
  opacity: 0;
}

@media (prefers-reduced-motion: reduce) {
  .site-bg-preview,
  html.js .site-bg-full {
    transition: none;
  }
}

header {
  background: rgba(6, 11, 23, 0.66);
}

.site-footer {
  background: rgba(7, 17, 18, 0.95);
}
