/* ==========================================================================
   Lobster Analytics — the splash
   Lifted verbatim from lobsteranalytics.com. Colour literals are kept exactly
   as they render live so the mark is pixel-identical; the same palette is
   mirrored into --splash-* tokens in styles.css for anything built alongside it.

   Usage:  <body class="splash-page">
             <div id="lobster-splash" role="button" tabindex="0"> … </div>
           <script type="module">
             import { mountSplash } from "./splash.js";
             mountSplash(document.getElementById("lobster-splash"), { href: "/this-season/" });
           </script>
   ========================================================================== */

/* Full-bleed host. Apply to <body> on a page that is only the splash. */
.splash-page {
  margin: 0;
  padding: 0;
  overflow: hidden;
  background: #000;
}

#lobster-splash {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  cursor: pointer;
  background: #000;
  color: #fff;
  font-family: "Libre Franklin", sans-serif;
  touch-action: manipulation;
}

#lobster-splash * {
  box-sizing: border-box;
}

.la-fade-overlay {
  display: none;
}

.la-bg {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 60%, rgba(34, 211, 238, 0.18), transparent 22%),
    radial-gradient(circle at 50% 48%, rgba(59, 130, 246, 0.12), transparent 30%),
    radial-gradient(circle at 50% 18%, rgba(125, 211, 252, 0.04), transparent 22%),
    linear-gradient(to bottom, rgba(4, 10, 24, 0.18), rgba(0, 0, 0, 0.95));
}

.la-top-glow {
  position: absolute;
  left: 50%;
  top: 18%;
  width: 42vw;
  height: 24vh;
  transform: translateX(-50%);
  border-radius: 999px;
  filter: blur(48px);
  background:
    radial-gradient(circle,
      rgba(255, 222, 160, 0.18) 0%,
      rgba(255, 142, 110, 0.08) 24%,
      rgba(173, 84, 255, 0.06) 44%,
      rgba(125, 211, 252, 0.02) 58%,
      rgba(0, 0, 0, 0) 74%);
  animation: laPulseGlow 9s ease-in-out infinite;
  opacity: 0.28;
}

.la-mid-blend {
  position: absolute;
  left: 50%;
  top: 44%;
  width: 86vw;
  height: 22vh;
  transform: translateX(-50%);
  border-radius: 999px;
  filter: blur(48px);
  background:
    radial-gradient(circle,
      rgba(56, 189, 248, 0.14) 0%,
      rgba(125, 211, 252, 0.06) 30%,
      rgba(0, 0, 0, 0) 72%);
  animation: laMidBlend 6.5s ease-in-out infinite;
  opacity: 0.18;
}

.la-upper-mesh,
.la-lower-lines {
  position: absolute;
  inset: 0;
}

.la-line,
.la-lower-line {
  position: absolute;
  left: -10%;
  display: block;
  height: 2px;
  border-radius: 999px;
  filter: blur(1px);
  transform: translateX(0);
}

.la-line {
  width: 128%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(103, 232, 249, 0.12) 14%,
    rgba(186, 230, 253, 0.52) 50%,
    rgba(103, 232, 249, 0.14) 86%,
    transparent 100%
  );
  box-shadow: 0 0 24px rgba(56, 189, 248, 0.16);
  animation: laDriftSoft ease-in-out infinite;
}

.la-lower-line {
  width: 130%;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(103, 232, 249, 0.10) 15%,
    rgba(186, 230, 253, 0.65) 50%,
    rgba(103, 232, 249, 0.12) 85%,
    transparent 100%
  );
  box-shadow: 0 0 24px rgba(56, 189, 248, 0.15);
  animation: laDriftStrong ease-in-out infinite;
}

.la-title-wrap {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  z-index: 3;
  text-align: center;
  pointer-events: none;
}

.la-title-glow {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 8rem;
  height: 5rem;
  transform: translate(-50%, -50%);
  border-radius: 999px;
  background: rgba(186, 230, 253, 0.08);
  filter: blur(32px);
  animation: laTitleGlow 4.2s ease-in-out infinite;
}

.la-title-line {
  width: 6rem;
  height: 1px;
  margin: 0 auto 1rem;
  background: rgba(186, 230, 253, 0.48);
  box-shadow: 0 0 18px rgba(103, 232, 249, 0.38);
}

.la-title-line-bottom {
  margin: 1rem auto 0;
  background: rgba(186, 230, 253, 0.4);
  box-shadow: 0 0 18px rgba(103, 232, 249, 0.28);
}

.la-title-wrap h1 {
  position: relative;
  z-index: 2;
  margin: 0;
  font-size: clamp(36px, 5vw, 54px);
  font-weight: 600;
  letter-spacing: 0.18em;
  line-height: 1.1;
  color: rgba(255, 255, 255, 0.84);
  text-shadow: 0 0 20px rgba(186, 230, 253, 0.22);
  white-space: nowrap;
}

.la-horizon-glow {
  position: absolute;
  left: 50%;
  top: 58%;
  width: 40vw;
  height: 5rem;
  transform: translateX(-50%);
  border-radius: 999px;
  filter: blur(48px);
  background: rgba(56, 189, 248, 0.10);
  animation: laHorizonBand 5.2s ease-in-out infinite;
  opacity: 0.14;
}

.la-grid {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.la-horizon-1,
.la-horizon-2 {
  fill: none;
  filter: url(#laSoftGlow);
}

.la-horizon-1 {
  stroke: url(#laHorizonGlow);
  stroke-width: 0.35;
}

.la-horizon-2 {
  stroke: rgba(186, 230, 253, 0.18);
  stroke-width: 0.18;
}

.la-particles {
  position: absolute;
  inset: 0;
}

.la-particle {
  position: absolute;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: rgba(103, 232, 249, 0.8);
  box-shadow: 0 0 16px rgba(103, 232, 249, 0.9);
  animation-name: laParticleMove;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
}

.la-enter {
  position: absolute;
  left: 50%;
  bottom: 3.5vh;
  transform: translateX(-50%);
  width: min(90vw, 320px);
  text-align: center;
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(186, 230, 253, 0.5);
  z-index: 4;
  pointer-events: none;
  line-height: 1.4;
}

@keyframes laDriftSoft {
  0%   { transform: translateX(-3%); opacity: 0.85; }
  50%  { transform: translateX(3%); opacity: 1; }
  100% { transform: translateX(-3%); opacity: 0.85; }
}

@keyframes laDriftStrong {
  0%   { transform: translateX(-4%); opacity: 0.8; }
  50%  { transform: translateX(4%); opacity: 1; }
  100% { transform: translateX(-4%); opacity: 0.8; }
}

@keyframes laPulseGlow {
  0%   { opacity: 0.22; transform: translateX(-50%) translateY(-2px) scaleX(1); }
  50%  { opacity: 0.36; transform: translateX(-50%) translateY(2px) scaleX(1.01); }
  100% { opacity: 0.22; transform: translateX(-50%) translateY(-2px) scaleX(1); }
}

@keyframes laMidBlend {
  0%   { opacity: 0.16; transform: translateX(-50%) translateY(0); }
  50%  { opacity: 0.28; transform: translateX(-50%) translateY(-3px); }
  100% { opacity: 0.16; transform: translateX(-50%) translateY(0); }
}

@keyframes laTitleGlow {
  0%   { opacity: 0.08; transform: translate(-50%, -50%) scale(0.96); }
  50%  { opacity: 0.18; transform: translate(-50%, -50%) scale(1.04); }
  100% { opacity: 0.08; transform: translate(-50%, -50%) scale(0.98); }
}

@keyframes laHorizonBand {
  0%   { opacity: 0.10; transform: translateX(-50%) translateY(0) scaleX(0.96); }
  50%  { opacity: 0.22; transform: translateX(-50%) translateY(-2px) scaleX(1.04); }
  100% { opacity: 0.10; transform: translateX(-50%) translateY(0) scaleX(0.98); }
}

@keyframes laParticleMove {
  0%   { transform: translate(0, 0) scale(0.6); opacity: 0; }
  50%  { transform: translate(140px, -12px) scale(1.2); opacity: 0.9; }
  100% { transform: translate(280px, -4px) scale(0.8); opacity: 0; }
}

@media (max-width: 767px) {
  .la-top-glow,
  .la-mid-blend,
  .la-horizon-glow,
  .la-title-glow {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
    background: none !important;
    box-shadow: none !important;
    filter: none !important;
  }

  .la-bg {
    background:
      linear-gradient(to bottom, rgba(4, 10, 24, 0.18), rgba(0, 0, 0, 0.95)) !important;
  }

  .la-title-wrap h1 {
    font-size: 32px;
    letter-spacing: 0.14em;
    white-space: normal;
    text-shadow: none !important;
  }

  .la-title-line,
  .la-title-line-bottom {
    box-shadow: none !important;
  }

  .la-enter {
    font-size: 11px;
    bottom: max(9vh, 72px);
    width: min(88vw, 260px);
  }

  .la-particle:nth-child(n + 11) {
    display: none;
  }

  .la-line:nth-child(n + 6) {
    display: none;
  }

  .la-particle {
    width: 5px;
    height: 5px;
    box-shadow: 0 0 10px rgba(103, 232, 249, 0.7);
  }
}

@media (prefers-reduced-motion: reduce) {
  .la-line,
  .la-lower-line,
  .la-particle,
  .la-top-glow,
  .la-mid-blend,
  .la-title-glow,
  .la-horizon-glow {
    animation: none !important;
  }
}
