:root {
  --sky-1: #030207;
  --sky-2: #0a0710;
  --sky-3: #150c12;
  --sky-4: #2a1510;
  --sky-5: #3b1d0e;
  --far: #221519;
  --mid: #120b10;
  --ground: #07050a;
  --gold-hi: #fff3c8;
  --gold: #f2cf7a;
  --gold-mid: #e2b650;
  --gold-deep: #b8862f;
  --gold-dark: #7a5a1e;
  --ink: #f5ecd6;
  --px: 0;
  --py: 0;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

::selection {
  background: rgba(226, 182, 80, .4);
  color: #fff;
}

html,
body {
  margin: 0;
  padding: 0;
  min-height: 100%;
}

body {
  background: var(--ground);
  color: var(--ink);
  font-family: Georgia, serif;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

.scene {
  position: fixed;
  inset: 0;
  overflow: hidden;
  z-index: 0;
}

.sky {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 90% 40% at 50% 78%, rgba(226, 182, 80, .16) 0%, transparent 70%),
    linear-gradient(to bottom,
      var(--sky-1) 0%,
      var(--sky-2) 35%,
      var(--sky-3) 58%,
      var(--sky-4) 70%,
      var(--sky-5) 78%,
      var(--sky-5) 100%);
}

.sun {
  position: absolute;
  left: 50%;
  top: 76%;
  width: min(36vw, 26svh, 320px);
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 42% 38%, #fff8e0 0%, #f0d58c 55%, #c79a3e 100%);
  box-shadow:
    0 0 50px 10px rgba(242, 207, 122, .3),
    0 0 160px 60px rgba(226, 182, 80, .14);
  transform: translate(-50%, -50%) translate(calc(var(--px) * -6px), calc(var(--py) * -4px));
  animation: moon-rise 2.4s cubic-bezier(.2, .7, .2, 1) both, moon-glow 7s ease-in-out 2.4s infinite;
}

@keyframes moon-rise {
  from { top: 90%; opacity: .4; }
  to   { top: 76%; opacity: 1; }
}

@keyframes moon-glow {
  0%, 100% { filter: brightness(1); }
  50%      { filter: brightness(1.1); }
}

.layer {
  position: absolute;
  left: calc(-4% - 48px);
  width: calc(108% + 96px);
  bottom: 0;
  display: block;
  transition: transform .6s cubic-bezier(.2, .7, .2, 1);
}

.layer.far {
  height: 60svh;
  fill: var(--far);
  transform: translateX(calc(var(--px) * -8px));
}

.layer.mid {
  height: 50svh;
  fill: var(--mid);
  transform: translateX(calc(var(--px) * -16px));
}

.layer.near {
  height: 34svh;
  fill: var(--ground);
  transform: translateX(calc(var(--px) * -26px));
}

#dust {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.cactus,
.agave {
  position: absolute;
  fill: var(--ground);
  transition: transform .6s cubic-bezier(.2, .7, .2, 1);
  transform: translateX(calc(var(--px) * -26px));
}

.cactus {
  left: 9vw;
  bottom: 19svh;
  height: 17svh;
}

.agave.a1 {
  left: 15vw;
  bottom: 20.5svh;
  height: 5svh;
}

.agave.a2 {
  right: 27vw;
  bottom: 20.5svh;
  height: 6.5svh;
}

.tumbleweed {
  position: absolute;
  bottom: 18svh;
  left: 0;
  width: clamp(26px, 3.4vw, 44px);
  fill: none;
  stroke: #2a2024;
  stroke-width: 2;
  stroke-linecap: round;
  animation: tumble 16s linear 4s infinite;
  transform: translateX(-80px);
}

@keyframes tumble {
  0%   { transform: translateX(-80px) translateY(0) rotate(0deg); }
  10%  { transform: translateX(10vw) translateY(-14px) rotate(260deg); }
  20%  { transform: translateX(20vw) translateY(0) rotate(520deg); }
  32%  { transform: translateX(34vw) translateY(-10px) rotate(860deg); }
  44%  { transform: translateX(48vw) translateY(0) rotate(1180deg); }
  58%  { transform: translateX(64vw) translateY(-12px) rotate(1560deg); }
  72%  { transform: translateX(80vw) translateY(0) rotate(1940deg); }
  86%  { transform: translateX(96vw) translateY(-6px) rotate(2300deg); }
  100% { transform: translateX(110vw) translateY(0) rotate(2640deg); }
}

.hero {
  position: relative;
  z-index: 1;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 16px;
  pointer-events: none;
}

.title-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  animation: rise 1.4s cubic-bezier(.2, .7, .2, 1) .3s both;
}

.wordmark {
  margin: 0;
  font-family: 'Sancreek', Georgia, serif;
  font-weight: 400;
  font-size: clamp(3rem, min(13vw, 17svh), 180px);
  line-height: 1.1;
  letter-spacing: .01em;
  background-image:
    linear-gradient(110deg, transparent 44%, rgba(255, 252, 235, .95) 50%, transparent 56%),
    linear-gradient(to bottom,
      var(--gold-hi) 0%,
      var(--gold) 28%,
      var(--gold-deep) 52%,
      #f6dc8f 70%,
      var(--gold-dark) 100%);
  background-size: 300% 100%, 100% 100%;
  background-repeat: no-repeat;
  background-position: 150% 0, 0 0;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: var(--gold);
  filter: drop-shadow(0 4px 0 rgba(0, 0, 0, .95)) drop-shadow(0 0 26px rgba(226, 182, 80, .22));
  animation: shine 7s ease-in-out 2.2s infinite;
  user-select: none;
}

@keyframes shine {
  0%        { background-position: 150% 0, 0 0; }
  35%, 100% { background-position: -50% 0, 0 0; }
}

@keyframes rise {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (max-width: 640px) {
  .cactus { left: 4vw; height: 13svh; }
  .agave.a1 { left: 16vw; height: 4svh; }
  .agave.a2 { right: 30vw; height: 5svh; }
}

@media (max-height: 500px) {
  .wordmark { font-size: clamp(2.4rem, 16vh, 110px); }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }

  .tumbleweed { display: none; }
}
