:root {
  --blue: #dceff4;
  --blue-deep: #c5e1e8;
  --green: #064b37;
  --green-soft: rgba(6, 75, 55, .16);
  --ease: cubic-bezier(.22, 1, .36, 1);
}

* { box-sizing: border-box; }

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

body {
  background: var(--blue);
  color: var(--green);
  font-family: Arial, Helvetica, sans-serif;
  overflow: hidden;
}

.scene {
  position: relative;
  min-height: 100svh;
  display: grid;
  grid-template-rows: auto 1fr auto;
  isolation: isolate;
  overflow: hidden;
  padding: clamp(1.25rem, 3vw, 2.7rem) clamp(1.25rem, 4vw, 4.5rem);
  background:
    radial-gradient(circle at 35% 36%, rgba(255,255,255,.74), transparent 30%),
    linear-gradient(145deg, #e4f4f7 0%, var(--blue) 48%, #cee7ed 100%);
}

.topbar, .footer {
  z-index: 4;
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  font-size: .66rem;
  letter-spacing: .19em;
  line-height: 1.4;
  text-transform: uppercase;
}

.topbar p, .footer p { margin: 0; }

.hero {
  z-index: 3;
  align-self: center;
  justify-self: center;
  width: min(860px, 91vw);
  text-align: center;
  padding: 2rem 0;
}

.logo-wrap {
  width: min(600px, 76vw);
  margin: 0 auto clamp(2.15rem, 5vh, 4rem);
  animation: float 7s ease-in-out infinite;
  will-change: transform;
}

.logo {
  display: block;
  width: 100%;
  height: auto;
  mix-blend-mode: multiply;
  filter: contrast(1.04);
}

.eyebrow {
  margin: 0 0 1rem;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(.74rem, 1.1vw, .92rem);
  font-style: italic;
  letter-spacing: .13em;
}

h1 {
  margin: 0;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(2.6rem, 7vw, 6.4rem);
  font-weight: 400;
  letter-spacing: -.045em;
  line-height: .95;
}

.status {
  width: min(390px, 78vw);
  margin: clamp(2rem, 5vh, 3.5rem) auto 0;
  font-size: .61rem;
  letter-spacing: .22em;
  text-transform: uppercase;
}

.status-line {
  display: block;
  position: relative;
  height: 1px;
  margin-top: .9rem;
  overflow: hidden;
  background: var(--green-soft);
}

.status-line i {
  position: absolute;
  inset: 0 auto 0 0;
  width: 42%;
  background: var(--green);
  transform: translateX(-110%);
  animation: lineTravel 3.4s var(--ease) infinite;
}

.glow, .orb { position: absolute; pointer-events: none; will-change: transform; }

.glow {
  border-radius: 50%;
  filter: blur(18px);
  opacity: .5;
  animation: breathe 10s ease-in-out infinite alternate;
}

.glow--one { width: 58vw; height: 58vw; left: -20vw; top: -26vw; background: rgba(255,255,255,.75); }
.glow--two { width: 50vw; height: 50vw; right: -20vw; bottom: -28vw; background: rgba(124,190,184,.26); animation-delay: -5s; }

.orb { border: 1px solid rgba(6,75,55,.09); border-radius: 50%; }
.orb--one { width: clamp(180px, 25vw, 410px); height: clamp(180px, 25vw, 410px); top: 10%; right: -8%; }
.orb--two { width: clamp(110px, 14vw, 220px); height: clamp(110px, 14vw, 220px); left: 5%; bottom: 8%; }

.grain {
  position: absolute;
  z-index: 2;
  inset: -50%;
  opacity: .055;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E");
  animation: grain .3s steps(2) infinite;
}

.reveal { opacity: 0; transform: translateY(20px); animation: reveal 1.2s var(--ease) forwards; }
.topbar { animation-delay: 1.05s; }
.logo-wrap { animation: reveal 1.35s 1.12s var(--ease) forwards, float 7s 2.5s ease-in-out infinite; }
.eyebrow { animation-delay: 1.35s; }
h1.reveal { animation-delay: 1.48s; }
.status { animation-delay: 1.62s; }
.footer { animation-delay: 1.8s; }

.intro { position: fixed; z-index: 20; inset: 0; display: flex; pointer-events: none; }
.intro span { width: 50%; background: var(--green); animation: curtain 1.25s .25s var(--ease) forwards; }
.intro span:first-child { transform-origin: left; }
.intro span:last-child { transform-origin: right; }

@keyframes curtain { to { transform: scaleX(0); } }
@keyframes reveal { to { opacity: 1; transform: translateY(0); } }
@keyframes float { 0%, 100% { transform: translate3d(var(--mx, 0), calc(var(--my, 0) - 4px), 0); } 50% { transform: translate3d(var(--mx, 0), calc(var(--my, 0) + 5px), 0); } }
@keyframes lineTravel { 0% { transform: translateX(-110%); } 55%, 100% { transform: translateX(345%); } }
@keyframes breathe { to { transform: scale(1.14); opacity: .7; } }
@keyframes grain { 0% { transform: translate(0,0); } 25% { transform: translate(3%,-2%); } 50% { transform: translate(-2%,3%); } 75% { transform: translate(2%,2%); } 100% { transform: translate(-3%,-3%); } }

@media (max-width: 640px) {
  .scene { padding: 1.2rem; }
  .topbar p:last-child { display: none; }
  .footer { align-items: flex-end; font-size: .56rem; letter-spacing: .13em; }
  .footer p:first-child { max-width: 12rem; }
  .logo-wrap { width: 88vw; margin-bottom: 2.4rem; }
  .eyebrow { letter-spacing: .09em; }
  .orb--one { right: -25%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
  .intro { display: none; }
}
