:root {
  --ground: #08080a;
  --point: #e9e4da;
  --name: #d8d2c6;
}

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

body {
  background: var(--ground);
  overflow: hidden;
  /* The lens takes touch drags; there is nothing to scroll. */
  touch-action: none;
}

body.following {
  cursor: none;
}

.field {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  fill: var(--point);
}

/* Its own compositing layer, so frames drawn in the glass layer never repaint the
   full-screen blur underneath. */
.backdrop {
  will-change: transform;
}

.blurred {
  opacity: 0.75;
}

.focused {
  opacity: 0.85;
}

.name {
  fill: var(--name);
  font-family: 'Cormorant Garamond', 'Iowan Old Style', Palatino, Georgia, serif;
  font-weight: 500;
  font-size: clamp(1.5rem, 4.2vw, 3.6rem);
  letter-spacing: 0.4em;
  text-transform: uppercase;
  text-anchor: middle;
  dominant-baseline: middle;
  /* Letter-spacing trails the last glyph; this re-centres the word. */
  transform: translateX(0.2em);
  user-select: none;
}

.name-haze {
  opacity: 0.55;
}

.lead {
  fill: var(--name);
  font-family: 'Cormorant Garamond', 'Iowan Old Style', Palatino, Georgia, serif;
  font-weight: 500;
  font-size: 1rem;
  letter-spacing: 0.3em;
  text-anchor: middle;
  dominant-baseline: middle;
  transform: translateX(0.15em);
  user-select: none;
}

.lead-haze {
  opacity: 0.25;
}

footer {
  position: fixed;
  inset: auto 0 max(5vh, 28px) 0;
  text-align: center;
}

/* Same size as the drawn text, so its box is where the words are, but the
   glyphs themselves come from the SVG. */
.lead-link {
  font-family: 'Cormorant Garamond', 'Iowan Old Style', Palatino, Georgia, serif;
  font-size: 1rem;
  letter-spacing: 0.3em;
  padding: 0.5em 0 0.5em 0.3em;
  color: transparent;
  text-decoration: none;
  pointer-events: none;
}

.revealed .lead-link {
  pointer-events: auto;
  cursor: pointer;
}

.lead-link:focus-visible {
  color: var(--name);
  outline: 1px solid var(--name);
  outline-offset: 4px;
}

.fringe {
  opacity: 0.3;
}

.gem {
  fill: #e5b567;
}

.gem-halo {
  opacity: 0.18;
}

@media (prefers-reduced-motion: no-preference) {
  .gem-halo {
    animation: shimmer 3.2s ease-in-out infinite;
  }
}

@keyframes shimmer {
  50% {
    opacity: 0.38;
  }
}

#traces circle {
  fill: #e5b567;
  opacity: 0;
  transition: opacity 2.5s ease;
}

#traces circle.noticed {
  opacity: 0.55;
}

#traces circle.fading {
  opacity: 0;
  transition-duration: 6s;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
