.shader-title {
  position: relative;
  width: fit-content;
  max-width: 100%;
  cursor: default;
}

.shader-title::before {
  position: absolute;
  inset: clamp(-5rem, -7vw, -3rem) clamp(-9rem, -9vw, -3.5rem);
  content: "";
  pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
  .shader-title::before {
    pointer-events: auto;
  }
}

.shader-title__fallback {
  display: block;
  padding: 0.1em 0.3em 0.17em;
  color: #f7f7f5;
  white-space: nowrap;
  text-shadow: 0 0 1.1em rgba(174, 198, 255, 0.08);
}

.shader-title__canvas {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  opacity: 0;
  pointer-events: none;
}

.shader-title.is-shader-ready .shader-title__fallback {
  opacity: 0;
}

.shader-title.is-shader-ready .shader-title__canvas {
  opacity: 1;
}

@media (max-width: 30rem) {
  .hero-lockup h1.shader-title {
    font-size: clamp(1.9rem, 9.5vw, 2.5rem);
  }
}

@media (prefers-contrast: more) {
  .shader-title.is-shader-ready .shader-title__canvas {
    opacity: 0;
  }

  .shader-title.is-shader-ready .shader-title__fallback {
    opacity: 1;
  }
}

@media print {
  .shader-title__canvas {
    display: none;
  }

  .shader-title__fallback,
  .shader-title.is-shader-ready .shader-title__fallback {
    color: #000;
    opacity: 1;
    text-shadow: none;
  }
}
