/* BeacoNautics splash — cinematic poster (Option A)
   Logo carries the brand. Page provides a quiet, premium frame. */

:root {
  --navy-deep:   #0A1422;
  --navy:        #0E1A2B;
  --navy-soft:   #14233A;
  --gold:        #E8C77A;
  --gold-soft:   #F5E4A8;
  --cream:       #F4ECDA;
  --cream-dim:   #D9CDB1;
  --ink-dim:     #8FA0B8;
  --rule:        rgba(232,199,122,0.35);
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  min-height: 100vh;
  /* Deep navy with a faint horizon warm-up at the bottom — bleeds into the logo's own sunset */
  background:
    radial-gradient(ellipse 90% 50% at 50% 92%, rgba(232,199,122,0.10) 0%, transparent 70%),
    radial-gradient(ellipse 70% 60% at 50% 55%, #14253D 0%, var(--navy) 55%, var(--navy-deep) 100%);
  color: var(--cream);
  font-family: "Palatino", "Palatino Linotype", "Book Antiqua", Georgia, serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  position: relative;
  overflow-x: hidden;
}

/* ---- Depth layers — give the page atmosphere around the logo ---- */
.depth {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}

/* 1) Warm radial glow — extends the logo's golden halo into the page */
.depth.warm-glow {
  background:
    radial-gradient(circle 55vmin at 50% 46%, rgba(232,199,122,0.18) 0%, rgba(232,199,122,0.09) 28%, transparent 62%),
    radial-gradient(circle 75vmin at 50% 46%, rgba(212,138,72,0.08) 0%, transparent 70%);
  mix-blend-mode: screen;
}

/* 2) Horizon atmosphere — faint haze + suggestion of distant water at the base */
.depth.horizon {
  background:
    radial-gradient(ellipse 120% 22% at 50% 100%, rgba(20,40,70,0.55) 0%, transparent 65%),
    radial-gradient(ellipse 80% 14% at 50% 96%, rgba(232,199,122,0.10) 0%, transparent 70%),
    linear-gradient(180deg, transparent 70%, rgba(8,16,28,0.35) 100%);
}
.depth.horizon::after {
  /* very faint wave ribbon — barely-there suggestion of water meeting horizon */
  content: "";
  position: absolute;
  left: -10%;
  right: -10%;
  bottom: 8%;
  height: 90px;
  background:
    radial-gradient(ellipse 60% 100% at 20% 50%, rgba(244,236,218,0.05) 0%, transparent 60%),
    radial-gradient(ellipse 50% 100% at 70% 50%, rgba(244,236,218,0.04) 0%, transparent 60%);
  filter: blur(8px);
}

/* 3) Cinematic corner vignette — pulls the eye to center like a movie poster */
.depth.vignette {
  background: radial-gradient(ellipse 95% 90% at 50% 50%, transparent 45%, rgba(6,12,22,0.55) 88%, rgba(4,8,16,0.85) 100%);
}

/* Stage — center the hero + sub-headline + CTA */
.stage {
  position: relative;
  z-index: 2;
  flex: 1 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 32px 24px 24px;
  text-align: center;
  overflow: hidden;
}

/* Ambient starfield — fixed full-viewport, distributed around the edges/corners
   so they live OUTSIDE the hero panel and pulse against the navy. */
.ambient {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
}
.star {
  position: absolute;
  width: var(--sz, 2px);
  height: var(--sz, 2px);
  background: var(--cream);
  border-radius: 50%;
  opacity: 0;
  box-shadow: 0 0 6px rgba(244,236,218,0.6), 0 0 12px rgba(232,199,122,0.18);
  animation-name: var(--anim, twinkle);
  animation-duration: var(--dur, 6.5s);
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-delay: var(--d, 0s);
}
/* Four asymmetric twinkle variants — peak at different points in the cycle
   so neighboring stars never share a brightness curve. Combined with varied
   --dur values, the field shimmers irregularly instead of pulsing in waves. */
@keyframes twinkle {
  0%, 100% { opacity: 0.05; transform: scale(0.7); }
  50%      { opacity: 0.9;  transform: scale(1.1); }
}
@keyframes twinkle-b {
  0%, 100% { opacity: 0.1;  transform: scale(0.8); }
  30%      { opacity: 0.85; transform: scale(1.15); }
  60%      { opacity: 0.2;  transform: scale(0.9); }
}
@keyframes twinkle-c {
  0%, 100% { opacity: 0;    transform: scale(0.75); }
  20%      { opacity: 0.35; transform: scale(0.95); }
  70%      { opacity: 0.95; transform: scale(1.2); }
}
@keyframes twinkle-d {
  0%, 100% { opacity: 0.15; transform: scale(0.85); }
  40%      { opacity: 0.5;  transform: scale(1.0); }
  80%      { opacity: 0.9;  transform: scale(1.15); }
}

/* Hero artwork — the logo is the splash */
.hero {
  position: relative;
  z-index: 1;
  margin: 0 0 24px;
  width: min(92vw, 560px);
  max-height: min(62vh, 560px);
  display: flex;
  align-items: center;
  justify-content: center;
  filter: drop-shadow(0 24px 60px rgba(0,0,0,0.55));
  overflow: hidden;
  border-radius: 8px;
}
.hero-img {
  display: block;
  width: 100%;
  height: auto;
  max-height: min(62vh, 560px);
  object-fit: contain;
}

/* Sub-headline — translates the poetic tagline into a practical promise */
.sub-headline {
  position: relative;
  z-index: 1;
  margin: 0 0 28px;
  font-size: clamp(14px, 1.4vw, 17px);
  font-style: italic;
  letter-spacing: 0.015em;
  color: var(--cream-dim);
  max-width: 580px;
  line-height: 1.5;
}

/* Email capture — glass pill */
.notify {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: min(78vw, 380px);
  margin: 0 auto;
}
.cta-eyebrow {
  margin: 0 0 14px;
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--gold);
  opacity: 0.95;
  font-style: normal;
}
.notify-row {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
  background: rgba(244,236,218,0.06);
  border: 1px solid var(--rule);
  border-radius: 18px;
  padding: 10px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.08),
    0 12px 36px rgba(0,0,0,0.35);
}
.notify input[type="text"],
.notify input[type="email"] {
  width: 100%;
  font: inherit;
  font-size: 15px;
  padding: 12px 18px;
  border: none;
  background: transparent;
  color: var(--cream);
  outline: none;
  min-width: 0;
  text-align: center;
}
.notify input[type="text"]::placeholder,
.notify input[type="email"]::placeholder { color: rgba(244,236,218,0.45); font-style: italic; }
.notify input[type="text"]:focus,
.notify input[type="email"]:focus { outline: none; }
/* Horizontal divider between the stacked name + email fields */
.notify input[type="text"] + input[type="email"] {
  border-top: 1px solid var(--rule);
}
.notify button {
  width: 100%;
  font: inherit;
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 14px 22px;
  border: 1px solid var(--gold);
  border-radius: 12px;
  background: linear-gradient(180deg, var(--gold-soft), var(--gold));
  color: var(--navy);
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
  white-space: nowrap;
}
.notify button:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(232,199,122,0.35);
}
.notify-status {
  margin: 12px 0 0;
  font-size: 13px;
  color: var(--gold-soft);
  min-height: 18px;
}
.visually-hidden {
  position: absolute;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* Footer — GMC standard, muted on navy */
.site-footer {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  text-align: center;
  padding: 20px 16px 28px;
  background: linear-gradient(180deg, transparent 0%, rgba(10,20,34,0.7) 100%);
  color: var(--cream-dim);
}
.gmc-tagline {
  margin: 0 0 8px;
  font-style: italic;
  font-size: 10px;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--gold);
  opacity: 0.7;
}
.divider {
  width: 120px;
  height: 1px;
  margin: 0 auto 10px;
  background: linear-gradient(90deg, transparent, var(--rule), transparent);
}
.copyright {
  margin: 0 0 4px;
  font-size: 11px;
  color: var(--cream-dim);
  opacity: 0.7;
}
.parent-note {
  margin: 0;
  font-size: 11px;
  color: var(--cream-dim);
  opacity: 0.55;
  font-style: italic;
}

/* Mobile tuning */
@media (max-width: 640px) {
  .stage { padding: 32px 16px 24px; }
  .hero { margin-bottom: 22px; }
  .sub-headline { margin-bottom: 28px; }
  .notify input[type="text"],
  .notify input[type="email"] { padding: 12px 14px; }
}

/* Reduced motion — pause animations */
@media (prefers-reduced-motion: reduce) {
  .star { animation: none; opacity: 0.5; }
}
