/* ---------- Tokens ---------- */
:root {
  --ink: #0b3039;
  /* main text color used across the page */
  --ink-soft: #214650;
  /* softer secondary text color */
  --maxw: 820px;
  /* max readable width for text blocks */
  --pin-extra: 2500px;

  --hero-h: 150vh;
  --mid-h: 80vh;
  --reef-h: 250vh;

  --theme-offset: 20vh;
  /* how far down the theme block sits */
  --rays: 5vh;

  /* "Named" z-index layers so stacking is easy to reason about */
  --z-birds: 30;
  /* birds float above most things */
  --z-froth: 28;
  --z-surface: 27;
  /* water surface sits on top of the hero */
  --z-hero: 26;
  /* cat/buoy */
  --z-intro: 20;
  /* hero headline/copy */
  --z-rainbow: 18;
  /* rainbow accent, under surface */
  --z-divein: 17;
  /* ready to dive in text */
  --z-theme: 16;
  /* theme text/video */
  --z-fish: 14;
  /* small decorative fish */
  --z-school: 13;
  /* school of fish */
  --z-cutoff: 12;
  --z-reefs: 11;
  /* reef coral clusters */
  --z-shark: 10;
  /* shark silhouette */
  --z-rocks: 9;
  /* foreground rock shelf/footer */
  --z-mola: 8;
  /* mola mola */
  --z-rays: 6;
  /* sunbeams */
  --z-clouds: 5;
  /* clouds behind everything else */
  --z-bg: 1;
  /* background fallback */
}

/* ---------- Base ---------- */
* {
  box-sizing: border-box;
  /* padding/border are included in width/height */
}

html,
body {
  height: 100%;
  /* allow 100vh calculations to work as expected */

  /* this is the code that removes the horizontal scroll issue,
     BUT it disables vertical scrolling for mobile and tablet.
    overflow-x: hidden;
    max-width: 100vw; */
}

body {
  margin: 0;
  /* remove default page margin */
  color: var(--ink);
  /* use the main text color */
  background-color: #6bbbd1;
  font-family: 'brother-1816', sans-serif;
  font-weight: 400;
  line-height: 1.5;
}

/* Desktop default */
body.bg-desktop {
  background: url("assets/background/bg-desktop.png") center top/cover no-repeat;
  background-color: #6bbbd1;
}

/* Tablet override */
@media (min-width: 769px) and (max-width: 1024px) {
  body.bg-desktop {
    background: url("assets/background/bg-tablet.png") center top/cover no-repeat;
    background-color: #6bbbd1;
  }
}

/* Mobile override */
@media (max-width: 768px) {
  body.bg-desktop {
    background: url("assets/background/bg-mobile.png") center top/cover no-repeat;
    background-color: #6bbbd1;
  }
}

.background {
  top: 0;
  width: 100%;
}

/* Utility */
.wrap {
  position: relative;
  /* create positioning context for absolute children */
  width: 100%;
  /* full-width section */
  min-height: 100vh;
  /* each section at least one viewport tall */
}

.dive-in {
  position: relative;
  z-index: var(--z-divein);
  max-width: var(--maxw);
  top: -30vw;
  margin: 0 auto;
  /* center the content block */
  padding: 0 60px;
  /* side padding for breathing room */
}

.theme-content {
  position: relative;
  z-index: var(--z-theme);
  top: 10vw;
}

.content {
  max-width: var(--maxw);
  /* cap line length for readability */
  margin: 0 auto;
  /* center the content block */
  padding: 0 60px;
  /* side padding for breathing room */
}

.shadow-soft {
  text-shadow: 0 1px 0 rgba(255, 255, 255, .6), 0 2px 12px rgba(11, 48, 57, .25);
  /* gentle highlight + glow to lift text on busy BG */
}

.caption {
  font-size: 12px;
  /* small label style */
  letter-spacing: .04em;
  /* slight tracking for uppercase */
  text-transform: uppercase;
  /* label look */
  color: var(--ink-soft);
  /* softer tone */
  margin-top: 8px;
  /* space from element above */
}

/* Navigation */

.nav {
  position: fixed;
  z-index: 9999;
  width: 100%;
}

/* Hide mobile-only controls by default (desktop & tablet) */
.nav-toggle,
.nav-backdrop {
  display: none;
}

.nav-wrapper {
  background: rgba(255, 255, 255, 0.5);
  padding: 10px 18px;
  border-radius: 1000px;
  font-family: "brother-1816";
  font-size: 16px;
  font-style: normal;
  font-weight: 500;
  line-height: 150%;
  border-radius: 1000px;
  border: 1px solid #DDE6EB;
  -webkit-backdrop-filter: blur(1px);
  backdrop-filter: blur(1px);
  display: flex;
  flex-direction: row;
  margin: 1% auto 0 auto;
  padding: 1% 2%;
  width: 90%;
  justify-content: center;
  column-gap: 24px;
  /* stable desktop gap */
}

.nav-item {
  flex: 0 1 8%;
  text-align: center;
  position: relative;
  text-decoration: none;
  color: #0b3039;
  /* explicit base color to enable smooth transition */
  cursor: pointer;
  transition: font-weight 0.2s ease, color 0.4s ease;
}

/* Ensure underline width matches the word by measuring the inner span */
.nav-item .label {
  display: inline-block;
  position: relative;
}

/* Underline indicator */
.nav-item .label::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -4px;
  /* closer to text */
  transform: translateX(-50%) scaleX(0);
  width: 100%;
  height: 2px;
  /* thinner underline */
  background: #0b3039;
  /* base underline color */
  border-radius: 2px;
  transition: transform 0.3s ease, background-color 0.4s ease;
  transform-origin: center;
}

/* Tablet/Small desktop spacing (exclude mobile) */
@media (max-width: 1024px) and (min-width: 481px) {
  .nav-wrapper {
    width: 94%;
    padding: 8px 14px;
    column-gap: 24px;
    /* match desktop gap */
    justify-content: center;
    /* same alignment as desktop */
  }

  .nav-item {
    flex: 0 1 auto;
    /* let items size to text */
  }
}

@media (max-width: 768px) and (min-width: 481px) {
  .nav-wrapper {
    font-size: 15px;
    column-gap: 24px;
    /* match desktop gap */
    width: 96%;
    justify-content: center;
    /* same alignment as desktop */
  }
}

/* Active state */
.nav-item.active,
.nav-item[aria-current="true"] {
  font-weight: 700;
}

.nav-item.active .label::after,
.nav-item[aria-current="true"] .label::after {
  transform: translateX(-50%) scaleX(1);
}

/* Hover state */
.nav-item:hover {
  font-weight: 600;
}

.nav-item:hover .label::after {
  transform: translateX(-50%) scaleX(0.5);
  opacity: 0.5;
}

.nav-item.active:hover .label::after,
.nav-item[aria-current="true"]:hover .label::after {
  transform: translateX(-50%) scaleX(1);
  opacity: 1;
}

/* Invert mode: when nav sits over dark background */
.nav.invert .nav-item,
.nav-wrapper.invert .nav-item {
  color: #ffffff;
}

.nav.invert .nav-item .label::after,
.nav-wrapper.invert .nav-item .label::after {
  background: #ffffff;
}

/* ---------- Hero (sky + surface) ---------- */
header.hero {
  min-height: var(--hero-h);
  /* hero fills the first screen */
}

header.hero .layer {
  position: absolute;
  /* layer fills the hero section */
  inset: 0;
  /* shorthand: top/right/bottom/left: 0 */
  pointer-events: none;
  /* clicks pass through (they’re decorative) */
}

header.hero .intro {
  z-index: 100;
}

.layer>.sprite,
.wrap img.sprite {
  position: absolute;
  /* every sprite can be placed with top/right/etc. */
  display: block;
  /* remove inline gaps */
  pointer-events: none;
  /* decorative; no mouse events */
  user-select: none;
  /* can’t select the image like text */
  -webkit-user-drag: none;
  /* prevents drag ghost in WebKit browsers */
}

/* clouds */
.clouds {
  z-index: var(--z-clouds);
  /* place behind most foreground items */
}

.clouds img {
  inset: auto;
  /* clear previous inset so we can set only top/left */
  top: 0;
  /* pin top edge */
  left: 0;
  /* pin left edge */
  width: 100%;
  /* stretch clouds art across the viewport width */
  height: auto;
}

/* birds */
.birds {
  z-index: var(--z-birds);
  /* high layer so birds sit above scene */
}

.birds .left {
  top: 5%;
  /* position from top using viewport height */
  left: 4vw;
  /* position from left using viewport width */
  width: 18vw;
  /* scale with viewport width */
  min-width: 100px;
  /* don’t get smaller than this */
}

.birds .right {
  top: 20vh;
  right: 6vw;
  /* anchor to right edge */
  width: 8vw;
  min-width: 100px;
}

/* froth */
.froth {
  z-index: var(--z-froth);
  /* sits above cat/buoy due to higher z-index */
}

.froth .water {
  top: 45%;
  /* waterline vertical position */
  left: 0;
  /* span from the left */
  width: 100%;
  /* full width ripple strip */
}

/* surface & rainbow */
.surface {
  z-index: var(--z-surface);
  /* sits below cat/buoy due to lower z-index */
}

.surface .water {
  top: 47%;
  /* waterline vertical position */
  left: 0;
  /* span from the left */
  width: 100%;
  /* full width ripple strip */
  mix-blend-mode: multiply;
}

.surface .rainbow {
  z-index: var(--z-rainbow);
  /* separate stacking within the surface layer */
  top: 37vh;
  right: 4vw;
  width: 35vw;
  /* big, responsive size */
  min-width: 160px;
  /* blend the rainbow light with background colors */
  filter: grayscale(90%) brightness(400%) contrast(100%) saturate(100%) opacity(100%);
  opacity: .5;
  mix-blend-mode: plus-lighter;
}

/* cat on buoy */
.hero-figure {
  z-index: var(--z-hero);
  /* under surface, over clouds */
}

.hero-figure .cat {
  animation: floatY 4.2s ease-in-out infinite;
  /* bobbing motion */
  top: 22%;
  left: 5vw;
  width: 40vw;
  /* responsive size */
  min-width: 340px;
  /* minimum pixel width for detail */
}

/* intro text block */
.intro {
  position: absolute;
  /* place the text “inside” the hero scene */
  top: 20%;
  left: 55vw;
  z-index: var(--z-intro);
  /* above decorative art so it’s readable */
  width: min(520px, 34vw);
  /* cap width: whichever is smaller wins */
  color: var(--ink);
}

.intro span {
  opacity: .92;
  /* slight fade so headline pops more */
  font-size: 1vw;
}

.intro h1 {
  margin-bottom: 12px;
  /* space below the headline */
  font-size: 3vw;
}

header.hero .meta {
  display: grid;
  grid-template-columns: auto 1fr;
  /* icon | text */
  grid-auto-rows: auto;
  align-items: center;
  column-gap: 10px;
  row-gap: 10px;
  font-size: 20px;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.intro .shadow-soft {
  color: #08272e;
  /* override color for a darker tone */
}

/* ---------- Midwater ---------- */
section.midwater {
  min-height: var(--mid-h);
  overflow: visible;
  /* taller section for art + copy */
  position: relative;
  /* create a new positioning context */
  padding-top: var(--theme-offset);
  /* pushes the whole block down */
}

section.midwater .layer {
  position: absolute;
  /* full-size positioning layer */
  inset: 0;
  pointer-events: none;
}

.rays {
  z-index: var(--z-rays);
  /* rays sit behind fish/content */
}

.rays .beams {
  top: -50%;
  /* start a bit below the surface */
  height: var(--rays-h);
  /* tall cone; image scales by height */
  right: 5%;

  /* recolor golden rays to light gray */
  filter: grayscale(90%) brightness(400%) contrast(100%) saturate(100%) opacity(100%);
  opacity: 0.9;
  mix-blend-mode: plus-lighter;
}

.intro .shadow-soft {
  color: #08272e;
  /* override color for a darker tone */
}

.video-wrap {
  width: min(720px, 100%);
  /* responsive: cap at 720px or 90% of container */
  aspect-ratio: 16/9;
  /* maintain video aspect ratio */
  margin: 20px auto 0;
  /* center horizontally, with top margin */
  position: relative;
  /* so children can be absolutely positioned */
  border-radius: 16px;
  /* rounded corners */
  overflow: hidden;
  /* crop video edges to rounded corners */
  box-shadow: 0 12px 40px rgba(6, 30, 38, .35);
  /* soft drop shadow */
  background: #0d2f37;
  /* fallback color before video loads */
}

.video-wrap iframe,
.video-wrap video {
  position: absolute;
  /* stretch the media to fill the wrapper */
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

/* ---------- Reef & Seafloor ---------- */
section.reef {
  min-height: var(--reef-h);
  overflow: visible;
  /* tall canvas for reefs + fish */
  position: relative;
  /* positioning context */
}

section.reef .layer {
  position: absolute;
  /* each layer spans the whole section */
  inset: 0;
  pointer-events: none;
}

/* school + decorative fish */
.school {
  z-index: var(--z-school);
  /* schooling fish layer */
}

.school .sprite {
  top: 60vh;
  /* lower in the scene */
  left: 18vw;
  /* center-left placement */
  width: 35vw;
  min-width: 260px;
}

.decor-fish {
  z-index: var(--z-fish);
  /* small fish above reefs */
}

.decor-fish .blue {
  top: 119vh;
  /* anchor relative to bottom */
  left: 32vw;
  width: 12vw;
  min-width: 80px;
}

.decor-fish .clown {
  top: 132vh;
  left: 40vw;
  width: 7vw;
  min-width: 52px;
}

.decor-fish .trigger {
  top: 90vh;
  right: 13vw;
  width: 14vw;
  min-width: 80px;
}

/* reefs */
.reefs {
  z-index: var(--z-reefs);
  /* coral sits in front of background, behind rocks */
}

.reefs .left {
  bottom: 25vh;
  /* sit up from the rock shelf */
  left: 0;
  /* glued to left edge */
  width: 58vw;
  /* responsive size */
  min-width: 420px;
  /* keep detail readable */
}

.reefs .right {
  bottom: 15vh;
  /* slight asymmetry vs left */
  right: 0;
  /* glued to right edge */
  width: 34vw;
  min-width: 360px;
}

/* rocks shelf + shark */
.rocks {
  z-index: var(--z-rocks);
  /* foreground rock shelf */
}

.rocks .shelf {
  bottom: 0;
  /* sit at the bottom like a footer */
  left: 0;
  width: 100%;
  /* span full width */
}

.cutoff {
  z-index: var(--z-cutoff);
  /* foreground rock shelf */
}

.cutoff .shelf {
  bottom: 0;
  /* sit at the bottom like a footer */
  left: 0;
  width: 100%;
  /* span full width */
}

.shark {
  z-index: var(--z-shark);
  /* shark layer */
}

.shark .leo {
  bottom: 27vh;
  /* swim just above the rocks */
  left: 14vw;
  width: 45vw;
  min-width: 320px;
  opacity: .95;
  /* faint translucency to feel underwater */
}

/* ---------- Motion (respect reduced motion) ---------- */
@keyframes floatY {
  0% {
    transform: translateY(0)
  }

  /* start neutral */
  50% {
    transform: translateY(-6px)
  }

  /* bob up slightly */
  100% {
    transform: translateY(0)
  }

  /* return */
}

@keyframes driftX {
  0% {
    transform: translateX(0)
  }

  50% {
    transform: translateX(10px)
  }

  /* gentle horizontal drift */
  100% {
    transform: translateX(0)
  }
}

@keyframes swim {
  0% {
    transform: translateX(0)
  }

  50% {
    transform: translateX(12px) translateY(-2px)
  }

  /* slight arc */
  100% {
    transform: translateX(0)
  }
}

.birds .left,
.birds .right {
  animation: driftX 16s ease-in-out infinite;
  /* slow lateral drift */
}

.mola .fish {
  animation: floatY 4.2s ease-in-out infinite;
  /* bobbing motion */
  top: 15%;
  /* vertical position within the section (now % based) */
  right: 8vw;
  /* stick to the right */
  left: auto;
  /* make sure nothing is stretching it */
  width: 30vw;
  /* size */
  min-width: 220px;
  position: absolute;
}

.decor-fish .blue,
.decor-fish .clown,
.decor-fish .trigger,
.shark .leo {
  animation: swim 5.5s ease-in-out infinite;
  /* small swimming movement */
}

@media (prefers-reduced-motion:reduce) {

  /* If the user prefers less motion, disable all animations */
  .birds .left,
  .birds .right,
  .mola .fish,
  .decor-fish .blue,
  .decor-fish .clown,
  .decor-fish .trigger {
    animation: none !important;
  }
}

/* ---------- Desktop lock & safety ---------- */
@media (min-width:1200px) {
  body {
    font-size: 17px;
    /* bump the base font size on larger screens */
  }
}

@media (min-width: 1400px) {
  :root {
    --theme-offset: 50vh;
  }
}

@media (max-width: 1100px) {
  :root {
    --theme-offset: 30vh;
  }
}







/* ========== TRACKS ========== */
.tracks {
  position: relative;
  background: #1e262d;
  color: #d8e7ee;
  padding: 80px 0 120px;
  overflow: hidden;
}

.tracks .content {
  max-width: 1200px;
}

.tracks .section-title {
  margin-bottom: 28px;
  text-align: left;
}

/* rows */
.tracks-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.track {
  position: relative;
  display: grid;
  grid-template-columns: 400px 1fr;
  /* LEFT column (numbers/titles), RIGHT column (copy) */
  align-items: start;
  column-gap: 48px;
  border-top: none;
}


.tracks .content .tracks-list {
  border-top: none;
  margin-top: 8px;
  /* space below "Prize Tracks" */
}

/* line divider BEFORE tracks */
.tracks .section-title {
  position: relative;
  padding-bottom: 28px;
}

.tracks .section-title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;

  width: 100%;
  height: 6px;

  background: url("assets/tracks/track-line-divider.png") left center / contain no-repeat;
  opacity: 0.8;
}

/* line dividers between tracks */
.track+.track::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;

  width: 100%;
  height: 6px;
  /* match PNG height */

  background: url("assets/tracks/track-line-divider.png") left center / contain no-repeat;
  opacity: 0.75;
}

.track:first-child {
  border-top: none;
}

/* left column */
.track-header {
  margin: 0;
  display: flex;
  gap: 12px;
  align-items: baseline;
}

.track h2 {
  margin: 0;
  font-size: 24px;
  font-weight: 500;
  white-space: nowrap;
}

/* right column */
.track-content {
  margin: 0;
  max-width: 100%;
  padding: 36px 0;
}

.track p {
  margin: 0 0 18px;
  font-size: 18px;
  line-height: 1.6;
  color: #d8e7ee;
}

.track .focus {
  margin-top: 18px;
}

.track .focus .meta-item.caption {
  font-size: 12px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--Cool-White, #E7F7FA);
  margin-bottom: 8px;
}

.track .focus ul {
  margin: 0;
  padding-left: 18px;
  /* real bullets */
  list-style: disc;
}

.track .focus li {
  margin: 2px 0 0;
  line-height: 1.7;
}

/* decorations */
.track .decor {
  position: absolute;
  pointer-events: none;
  opacity: .95;
  z-index: 1;
  width: 120px;
  height: auto;
}

/* row 1: starfish on the right near top */
.tracks-list>li:nth-child(1) .decor {
  left: 120px;
  top: 150px;
  width: 250px;
}

/* row 2: mussels on the right, a bit lower */
.tracks-list>li:nth-child(2) .decor {
  right: -10px;
  top: 220px;
  width: 220px;
}

/* row 3: none */
.tracks-list>li:nth-child(3) .decor {
  display: none;
}

/* row 4: crab on the LEFT */
.tracks-list>li:nth-child(4) .decor {
  left: 30px;
  top: 170px;
  width: 270px;
}

/* responsive */
@media (max-width:900px) {
  .track {
    grid-template-columns: 1fr;
    /* stack */
    row-gap: 12px;
  }

  .track h2 {
    white-space: normal;
  }

  .track .decor {
    position: static;
    width: 110px;
    margin: 10px 0 0 auto;
    display: block;
  }
}


/* ========== MIDNIGHT ZONE (Schedules) ========== */

/* Tall canvas so we can run:
   A) normal scroll → B) sticky with inner scroll → C) unpin and scroll out */
.midnight {
  position: relative;
  --cave-extra: 120vh;
  min-height: calc(180vh + var(--cave-extra));
  background: #101417;
  /* baseline bg color, overriden with gradient below */
  color: #E7F7FA;
  overflow-x: hidden;
  overflow-y: visible;

  /* Allow normal scroll chaining; avoid trapping scroll before sticky engages */
  overscroll-behavior: auto;

  padding-bottom: 80px;
  z-index: 0;
  /* stays under the FAQ we’re about to raise */
}

/* Soft atmospheric darkening over the art for readability */
.midnight::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
      #2D4147 30%,
      #233137 50%,
      #101417 80%);
  pointer-events: none;
  z-index: 0;
}

/* ---- Sticky stage (used if .pin exists in the HTML) ---- */
.midnight .pin {
  position: sticky;
  top: 0;
  height: 100vh;
  /* fills the viewport while pinned */
  min-height: calc(100vh + var(--pin-extra));
  overflow: visible;
  z-index: 0;
  /* art sits under the content layer */
}

/* Fallback if .pin isn't present: keep content readable & centered */
.midnight>.content.schedules {
  position: relative;
  z-index: 2;
  max-width: 1040px;
  margin: 0 auto;
  padding: clamp(18vh, 22vh, 28vh) 0 24vh;
  /* pushes text below the cave */
}

/* ---- Background art ---- */
.midnight-art {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

/* Cave spans the full viewport width without negative offsets */
.midnight-art .cave {
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100vw;
  /* fill the screen width */
  height: auto;
  max-width: none;
  opacity: .95;
}

.midnight-art .jellies {
  position: absolute;
  left: 9vw;
  top: 100vh;
  width: 250px;
  opacity: .85;
}

.midnight-art .tuna {
  position: absolute;
  right: 12vw;
  bottom: 120vh;
  width: 500px;
  opacity: .85;
}

/* ---- Scrolling text panel (engages only if .schedule-panel exists) ---- */
.schedule-panel {
  position: absolute;
  right: 4vw;
  /* align near right/center per figma */
  top: clamp(56vh, 70vh, 80vh);
  /* starting Y inside the viewport, reduced on large screens to avoid visible gap */
  width: min(800px, 80vw);
  /* Keep internal interactions local so page scroll remains smooth */
  overscroll-behavior: contain;
  overflow: visible;
  z-index: 2;
  /* above art, below section overlay */
  -webkit-overflow-scrolling: touch;
}

/* The inner block is what we slide with transform */
#schedulesInner {
  will-change: transform;
  backface-visibility: hidden;
}

/* If .schedule-panel isn't present, we keep using .content.schedules fallback above */

/* ---- Typography & layout for headings and lists ---- */
.midnight .section-title {
  margin: 0 0 0px;
}

.schedules {
  /* when used inside .schedule-panel or as fallback .content.schedules */
  max-width: 1040px;
}

.schedule-columns {
  display: grid;
  gap: 48px;
  grid-template-columns: 1fr;
  /* single stack (your figma shows one column) */
}

.schedule header {
  margin-bottom: 7%;
}

.schedule h3 {
  margin-bottom: 6px;
}

.schedule .meta {
  display: grid;
  grid-template-columns: auto 1fr;
  /* icon | text */
  grid-auto-rows: auto;
  align-items: center;
  column-gap: 13px;
  row-gap: 3px;
}

.schedule .meta img {
  display: block;
  /* remove inline-image baseline shift */
  align-self: center;
  padding-top: 40%;
  /* add padding to top so time/location icons show up in line with text */
}

.schedule .meta-item {
  color: #E7F7FA;
  line-height: 90%;
  display: inline-flex;
  font-size: 15px;
  font-weight: 500;
}

/* Timeline with left rail and ticks like the mock */
.timeline {
  margin: 0;
  padding: 0;
  list-style: none;
}

.timeline li {
  position: relative;
  padding: 10px 0;
  display: grid;
  grid-template-columns: 110px 1fr;
  /* time column + event column */
  gap: 20px;
}

/*
original normal lines to separate time/event rows:
.timeline li+li {
  border-top: 1px solid rgba(255, 255, 255, .06);
}
*/

/* new lines that fade out part1: */
.timeline li {
  position: relative;
}

/* new lines that fade out part2: */
.timeline li+li::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;

  width: 100%;
  height: 6px;
  /* match your PNG height */

  background: url("assets/midnight-zone/schedule-line-divider.png") left center / contain no-repeat;
  opacity: 0.8;
  /* optional softening */
}

.timeline li::before {
  content: none;
}

.timeline .time {
  font-family: "IBM Plex Mono";

  font-style: normal;
  font-weight: 500;
  line-height: 150%;

  text-transform: uppercase;
  letter-spacing: .05em;

  display: flex;
  flex-direction: column;
  height: 26px;
  justify-content: flex-end;
}

.timeline .evt {
  line-height: 150%;
}

.timeline .highlight .evt {
  font-weight: 600;
}

/* ---- Responsive adjustments ---- */
@media (max-width: 1100px) {
  .schedule-panel {
    right: 6vw;
    width: min(600px, 88vw);
  }
}

@media (max-width: 768px) {
  .midnight {
    min-height: 320vh;
    /* keep enough scroll room on small screens */
  }

  .schedule-panel {
    right: 5vw;
    top: 14vh;
    width: 90vw;
    height: calc(100vh - 16vh);
  }

  .midnight-art .jellies {
    left: 4vw;
    top: 24vh;
    width: 150px;
  }

  .midnight-art .tuna {
    right: 3vw;
    bottom: 8vh;
    width: 220px;
  }

  .timeline li {
    grid-template-columns: 90px 1fr;
    gap: 14px;
  }

  .timeline .evt {
    align-self: center;

    display: flex;
    flex-direction: column;
    height: 26px;
    justify-content: flex-end;
  }
}

/* ---- Reduced motion safety ---- */
@media (prefers-reduced-motion: reduce) {
  .midnight .pin {
    position: static;
    height: auto;
  }

  .schedule-panel {
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
    padding-right: 0;
  }
}




/* ========== FAQ ========== */
.faq {
  position: relative;
  z-index: 5;
  /* above midnight art/overlay */
  /* no more negative overlap; now it just sits under the tuna/pinned area */
  margin-top: 120px;
  scroll-margin-top: 80px;
  color: #d8e7ee;
  padding: 120px 0 400px;
}

.faq .content {
  max-width: 90vw;
}

.faq .section-title {
  margin-bottom: 16px;
}

.faq-intro {
  margin: 0 0 32px;
  color: rgba(216, 231, 238, .7);
  max-width: 620px;
}

.faq-grid {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}

.faq-column {
  flex: 1;
  display: flex;
  flex-direction: column;
}

@media (max-width: 800px) {
  .faq-grid {
    flex-direction: column;
  }
}

.faq-grid details {
  border-bottom: 1px solid rgba(157, 196, 208, .12);
  padding: 18px 0;
  transition: border-color .2s ease;
}

.faq-grid summary {
  cursor: pointer;
  list-style: none;
  position: relative;
  padding-right: 52px;
  display: block;
}

.faq-grid summary::-webkit-details-marker {
  display: none;
}

.faq-grid summary::before {
  content: none;
}

.faq-grid summary::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 22px;
  width: 9px;
  height: 9px;
  border-bottom: 2px solid rgba(219, 234, 240, .8);
  border-right: 2px solid rgba(219, 234, 240, .8);
  transform: translateY(-60%) rotate(45deg);
  transition: transform .2s ease;
}

.faq-grid details[open] summary::after {
  transform: translateY(-45%) rotate(-135deg);
}

.faq-grid details[open] {
  border-bottom-color: rgba(157, 196, 208, .4);
}

.faq-grid details p {
  margin: 1rem 0 0;
  color: #c6dae2;
  font-size: 20px;
  font-weight: 400;
}

.faq-grid a {
  color: #8ed4e9;
  text-decoration: none;
}

.faq-grid a:hover {
  text-decoration: underline;
}



/* ========== OCEAN BOTTOM (CTA) ========== */
.ocean.bottom {
  position: relative;
  background: #101417;
  color: #eaf3f6;
  min-height: 100vh;
  padding: 120px 0 300px;
  overflow-y: visible;
}

.bottom .content {
  max-width: 960px;
  text-align: center;
  position: relative;
  z-index: 2;
}

.bottom-art .sand {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: -2px;
  width: 100%;
  max-width: none;
  pointer-events: none;
}

.bottom-art .ship {
  position: absolute;
  left: 8vw;
  bottom: 110px;
  width: 65vw;
  opacity: .9;
  z-index: 2;
}

.bottom-art .anchor {
  position: absolute;
  left: 12px;
  bottom: 80px;
  width: 21vw;
  opacity: .8;
  z-index: 3;
}

.bottom-art .treasure {
  position: absolute;
  right: -4vw;
  bottom: 30px;
  width: 45vw;
  opacity: .95;
  z-index: 2;
}

.countdown {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 18px;
  margin-bottom: 22px;
  font-feature-settings: "tnum" 1;
}

.countdown .unit {
  display: flex;
  flex-direction: column;
  align-items: center;
  border-radius: 18px;
  padding: 18px 28px 16px;
  min-width: 96px;
  box-shadow: 0 16px 40px rgba(0, 0, 0, .35);
}

.countdown strong {
  font-family: "IBM Plex Mono";
  font-size: 63px;
  font-style: normal;
  font-weight: 500;
  line-height: 110%;
  /* 69.3px */
}

.countdown span {
  color: var(--Cool-White, #E7F7FA);
}

.countdown .sep {
  color: var(--Cool-White, #E7F7FA);
  font-family: "IBM Plex Mono";
  font-size: 55px;
  font-style: normal;
  font-weight: 400;
  line-height: 110%;
  /* 60.5px */
}

@media (max-width: 640px) {
  .countdown {
    flex-wrap: nowrap;
    gap: 10px;
  }

  .countdown .unit {
    padding: 12px 0px 10px;
    min-width: 40px;
  }

  .countdown strong {
    font-size: 32px;
  }

  .countdown .sep {
    display: inline;
    font-size: 28px !important;
  }
}

.btn-primary {
  display: inline-block;
  margin-top: 14px;
  padding: 15px 40px;
  border-radius: 999px;
  background: #AB4A3F;
  color: #E7F7FA;
  text-decoration: none;
  font-weight: 500;
  font-size: 15px;
}

/* ========== FOOTER ========== */
.footer {
  position: relative;
  background: #a5c0c3;
  color: #0b3039;
  padding: 140px 0 60px;
  /* more room for art + panel */
  overflow: hidden;
}

.footer-inner {
  position: relative;
  z-index: 2;
  /* above art */
  max-width: 100%;
  margin: 0 auto;
  padding: 0 40px;
}

/* top sand + fish art */
.footer-art {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.footer-sand {
  position: absolute;
  top: -20vh;
  /* slightly overlapping from above */
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  z-index: 0;
}

.footer-fish {
  position: absolute;
  top: 0vh;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
}

/* ---- Sponsors ---- */
.sponsors {
  position: relative;
  z-index: 2;
  max-width: 100%;
}

.sponsors-panel {
  margin: 650px 0 100px;
  border-radius: 24px;
  padding: 18px 10px;
  overflow: hidden;
  width: 100%;
}

/* Flex-based sponsor layout */
.sponsors-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  column-gap: 40px;
  /* space between cards horizontally */
  row-gap: 35px;
  /* space between rows */
  margin: 0 auto;
  max-width: 80vw;
}

/* Cards: same height, width based on logo size */
.sponsor-card {
  height: 170px;
  /* all cards same height */
  padding: 3px 10px;
  /* breathing room around logos */

  background: #ffffff;
  border-radius: 20px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);

  display: flex;
  align-items: center;
  justify-content: center;

  flex: 0 0 auto;
  /* <- width = intrinsic, do NOT stretch */
  width: auto;
}

.sponsor-card img {
  height: 90%;
  /* fills most of the card height */
  width: auto;
  /* keep aspect ratio */
  max-width: 100%;
  /* don’t overflow card */
  object-fit: contain;
  display: block;
}

/* Tablet: tighter width so it tends to wrap into ~2 per row */
@media (max-width: 1024px) {
  .sponsors-grid {
    max-width: 80vw;
    /* usually gives 2 cards per row */
  }

  .sponsors-panel {
    margin: 300px 0 100px;
  }

  .sponsor-card {
    height: 140px;
    padding: 2px 4px;
  }
}

/* Mobile */
@media (max-width: 480px) {
  .sponsors-grid {
    column-gap: 15px;
    /* space between cards horizontally */
    row-gap: 15px;
    /* space between rows */
    max-width: 80vw;
  }

  .sponsor-card {
    height: 65px;
    padding: 2px 4px;
    border-radius: 7px;
  }
}


/* ---- Divider line ---- */
.footer-divider {
  margin: 32px 70px 24px;
  border: 0;

  height: 4px;
  /* match PNG height */
  background: url("assets/footer/footer-line-divider.png") left center / contain no-repeat;

  opacity: 0.8;
}

/* ---- Bottom rows ---- */
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 24px;
  margin-left: 70px;
  margin-right: 70px;
  flex-wrap: wrap;
}

.footer-left .made {
  margin: 0;
  font-size: 14px;
  margin-top: 10px;
}

/* right side: social icons row + copyright row */
.footer-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
  text-align: right;
  margin-left: auto;
}

.footer .socials {
  display: flex;
  gap: 12px;
  margin: 0;
}

.footer .socials a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  padding: 6px 10px;
}

.footer .copyright {
  font-size: 12px;
  font-weight: 500;
  margin: 0 12px 0 0;
}

/* accessibility helper for hidden headings */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* responsive tweaks */
@media (max-width: 720px) {
  .sponsors-panel {
    margin: 70px 0 32px;
  }

  .footer-inner {
    width: 90vw;
    padding-left: 5vw;
    padding-right: 5vw;
    text-align: left;
  }

  .footer-divider {
    margin: 24px 0 18px;
    /* remove the 70px side margins */
  }

  .footer-bottom {
    margin-left: 0;
    margin-right: 0;
    width: 100%;
  }

  /* make "footer-left" behave like a real full-width block */
  .footer-left {
    width: 100%;
    flex: 0 0 100%;
    max-width: 100%;
  }

  /* socials: smaller + less padding so they feel proportional */
  .footer .socials {
    gap: 8px;
  }

  .footer .socials a {
    padding: 4px;
    /* was 6px 10px */
  }

  .footer .socials img {
    width: 22px;
    height: 22px;
    display: block;
  }
}

/* Mobile responsive styles */
@media (max-width: 480px) {
  :root {
    /* Adjust typography for mobile */
    --h1-size: clamp(2rem, 8vw, 2.5rem);
    --h2-size: clamp(1.5rem, 6vw, 2rem);
    --p-size: clamp(0.95rem, 4vw, 1.15rem);
    --caption-size: clamp(0.65rem, 3vw, 0.8rem);
    --footer-caption-size: clamp(0.65rem, 2vw, 0.75rem);

    /* Adjust spacing for mobile */
    --spacing-sm: clamp(0.75rem, 3vw, 1rem);
    --spacing-md: clamp(1rem, 4vw, 1.5rem);
    --spacing-lg: clamp(1.5rem, 6vw, 2.5rem);
    --spacing-xl: clamp(2rem, 8vw, 3.5rem);
    /* Mobile nav alignment control */
    --nav-mobile-padding-left: 24px;
    /* base left for button */
    --nav-x-offset: 2px;
    /* nudge X bars right to match PNG content */
    --nav-text-offset: 7px;
    /* fine-tune overlay text to align with X */
  }

  /* mobile menu rules */
  .nav-wrapper {
    position: fixed;
    inset: 0;
    /* full-screen overlay */
    z-index: 10000;
    margin: 0;
    /* remove inherited top margin to avoid sliver */
    width: 100vw;
    height: 100vh !important;
    overflow: auto;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 32px;
    padding: 64px 32px;
    /* roomy spacing per mock */
    padding-left: calc(var(--nav-mobile-padding-left) + var(--nav-x-offset) + var(--nav-text-offset));
    /* align text to X visible left edge */

    background: #cfe8ec;
    /* light blue to match screenshot */
    border: 0;
    border-radius: 0;
    box-shadow: none;

    transform: translateY(-104%);
    transition: transform .28s cubic-bezier(.2, .9, .2, 1);
  }

  .nav-wrapper .nav-item {
    display: block;
    text-align: left;
    padding: 0;
    font-size: clamp(32px, 7.5vw, 52px);
    line-height: 1.1;
  }

  /* underline */
  .nav-wrapper .nav-item .label::after {
    content: "";
    position: absolute;
    bottom: -4px;
    /* keep closer spacing */
    left: 50%;
    transform: translateX(-50%) scaleX(0);
    width: 100%;
    height: 2px;
    /* thinner underline */
    background: #0b3039;
    border-radius: 2px;
    /* rounded ends */
    transition: transform 0.3s ease;
    transform-origin: center;
  }

  .nav-wrapper .nav-item.active .label::after,
  .nav-wrapper .nav-item[aria-current="true"] .label::after {
    transform: translateX(-50%) scaleX(1);
  }

  /* Hover animation to match desktop on mobile */
  .nav-wrapper .nav-item:hover .label::after {
    transform: translateX(-50%) scaleX(0.5);
    opacity: 0.6;
  }

  .nav-toggle {
    position: fixed;
    top: 12px;
    left: var(--nav-mobile-padding-left);
    z-index: 10001;
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    /* keep hamburger and X at same left edge */
    width: 40px;
    height: 40px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    box-shadow: none;
  }

  /* Default: show image icon, hide bar icon */
  .nav-toggle .hamburger-icon {
    width: 22px;
    height: 22px;
    display: block;
    margin-left: var(--nav-x-offset);
  }

  .nav-toggle .hamburger {
    display: none;
  }

  /* Backdrop */
  .nav-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.24);
    z-index: 9999;
    display: block;
    opacity: 0;
    transition: opacity .2s ease;
  }

  /* Open state: show panel and backdrop */
  .nav.open .nav-wrapper {
    transform: translateY(0);
  }

  .nav.open .nav-backdrop {
    opacity: 1;
  }

  /* Keep nav colors dark on mobile overlay (disable white invert) */
  .nav.open .nav-item,
  .nav.open.invert .nav-item {
    color: #0b3039;
  }

  .nav.open .nav-item .label::after,
  .nav.open.invert .nav-item .label::after {
    background: #0b3039;
  }

  /* Align X with menu text using CSS only */
  .nav.open .nav-toggle {
    justify-content: flex-start;
  }

  /* Align X with menu text when open: handled via JS (inline style) */

  /* Base bars (hidden by default until open) */
  .nav-toggle .hamburger {
    display: none;
    width: 22px;
    height: 22px;
    position: relative;
    margin-left: var(--nav-x-offset);
    /* shift bars to match hamburger PNG */
  }

  .nav-toggle .hamburger span {
    display: block;
    width: 22px;
    height: 2px;
    background: #0b3039;
    border-radius: 2px;
    transition: transform .2s ease, opacity .2s ease;
  }

  .nav-toggle .hamburger span+span {
    margin-top: 6px;
  }

  /* When open: swap to animated bars (forms an X), hide image icon */
  .nav.open .nav-toggle .hamburger-icon {
    display: none;
  }

  .nav.open .nav-toggle .hamburger {
    display: inline-block;
  }

  /* Invert support: white bars on dark backgrounds */
  .nav.invert .nav-toggle .hamburger span {
    background: #ffffff;
  }

  /* But keep bars dark when the mobile overlay is open */
  .nav.open .nav-toggle .hamburger span,
  .nav.open.invert .nav-toggle .hamburger span {
    background: #0b3039;
  }

  /* Hamburger animation */
  .nav.open .hamburger span:nth-child(1) {
    transform: translateY(8px) rotate(45deg);
  }

  .nav.open .hamburger span:nth-child(2) {
    opacity: 0;
    transform: scaleX(0);
  }

  .nav.open .hamburger span:nth-child(3) {
    transform: translateY(-8px) rotate(-45deg);
  }
}

/* TABLET YUH */
@media (min-width: 769px) and (max-width: 1024px) {
  .intro {
    position: absolute;
    top: 20vh;
    left: 50%;
    transform: translateX(-50%);
    width: 72vw;
    padding: 0;
    text-align: left;
    z-index: var(--z-intro);
  }

  /* EVENT TITLE: "Women of Informatics’ 14th Annual Hackathon" */
  .intro h1 {
    margin-bottom: 1rem;
    font-size: clamp(2.6rem, 8vw, 3.2rem);
    /* MUCH bigger */
    line-height: 1.2;
  }

  /* DATE + LOCATION: "January 24–25, 2026" / "UNIVERSITY OF WASHINGTON HUB" */
  header.hero .meta {
    margin-top: 1.5rem !important;
    font-size: clamp(1.05rem, 3.6vw, 1.25rem);
    /* increase size */
    row-gap: 10px;
  }

  .intro .btn-primary {
    margin-top: 2rem !important;
    padding: 18px 50px;
    font-size: 17px;
  }

  /* optionally, to make meta labels a lil bolder */
  header.hero .meta span,
  header.hero .meta div {
    font-weight: 600;
    font-size: 17px !important;
  }

  /* keep cat smaller + lower */
  .hero-figure .cat {
    top: 50vh;
    left: 30%;
    width: 65vw;
    min-width: 0;
    margin-left: -27.5vw;
  }

  .froth .water {
    top: 51%;
  }

  .surface .water {
    top: 53%;
  }

  .surface .rainbow {
    top: 35%;
    width: 50vw;
  }

  .dive-in {
    top: -70vh;
    width: 87vw;
  }

  .dive-in h1 {
    font-size: 6vw !important;
  }

  .dive-in p {
    font-size: 2.7vw !important;
  }

  .mola .fish {
    top: -12vh;
    right: 10vw;
    width: 40vw;
  }

  .rays .beams {
    top: -60%;
    height: 150vh;
    right: 5vw;
  }

  .theme-content {
    top: -35vh;
  }

  .content {
    width: 87vw;
  }

  .content h1 {
    font-size: 6vw !important;
  }

  .content p {
    font-size: 2.7vw !important;
  }

  section.reef {
    min-height: 50vh;
  }

  .school .sprite {
    top: -16vh;
    left: 18vw;
    width: 35vw;
    min-width: 100px;
  }

  .decor-fish .blue {
    top: 6vh;
    left: 32vw;
    width: 12vw;
    min-width: 20px;
  }

  .decor-fish .clown {
    top: 11vh;
    left: 40vw;
    width: 6vw;
    min-width: 10px;
  }

  .decor-fish .trigger {
    top: -7vh;
    right: 13vw;
    width: 14vw;
    min-width: 25px;
  }

  .reefs .left {
    bottom: 6vh;
    left: 0;
    width: 58vw;
    min-width: 100px;
  }

  .reefs .right {
    bottom: 5vh;
    right: 0;
    width: 34vw;
    min-width: 100px;
  }

  .rocks .shelf {
    bottom: 0;
  }

  .shark .leo {
    bottom: 9vh;
    left: 15vw;
    width: 45vw;
    min-width: 120px;
  }

  .decor-urchin {
    display: none !important;
  }

  /* 1) Give the whole section the Prize Tracks bg */
  .midnight,
  .midnight::before {
    background: linear-gradient(180deg,
        #1e262d 38%,
        #2D4147 50%,
        #101417 90%);
  }

  .midnight::before {
    /* kill the dark gradient overlay on tablet/mobile */
    content: none;
  }

  /* 2) Turn off the "pinned canvas" behavior */
  .midnight .pin {
    position: static;
    /* no sticky */
    height: auto;
    min-height: 0;
  }

  /* 3) Make schedules a normal block ABOVE the art */
  .schedule-panel {
    position: static;
    /* no absolute positioning */
    top: auto;
    right: auto;
    width: auto;
    height: auto;
    overflow: visible;
    z-index: auto;
  }

  /* 4) Give the schedules block its own background + spacing */
  .midnight .content.schedules {
    max-width: 900px;
    margin: 0 auto;
    /* top accounts for nav */
    background: #1e262d;
    /* same as tracks */
    color: #E7F7FA;
  }

  /* 5) Put the art AFTER schedules (in normal flow) */
  .midnight-art {
    bottom: -100vh;
    position: relative;
    /* no longer overlaying everything */
    inset: auto;
    margin-top: 40px;
    /* space between schedules and cave */
    height: 120vh;
    /* give art some space on page */
  }

  /* Cave now participates as “art block” */
  .midnight-art .cave {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    max-width: none;
  }

  /* Optional: keep your jellies/tuna positioned within the art block */
  .midnight-art .jellies {
    top: 30vh;
    left: 6vw;
  }

  .midnight-art .tuna {
    bottom: 10vh;
    right: 6vw;
  }

  /* 6) Remove any scroll-state animation/transform behavior */
  #schedulesInner {
    transform: none !important;
    will-change: auto;
  }

  .faq {
    margin-top: 35vh;
    /* adjust as needed */
    padding: 120px 0 100px;
  }

  .faq-grid {
    grid-template-columns: 1fr !important;
  }

  .faq .content {
    max-width: 720px;
  }

  .faq-grid summary {
    font-size: 20px !important;
  }

  .footer-fish {
    top: 0vh;
  }

  .footer-sand {
    position: absolute;
    top: -10vh;
    /* slightly overlapping from above */
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    z-index: 0;
  }

  .midnight-art .jellies {
    position: absolute;
    left: 15vw;
    top: 40vh;
    width: 180px;
    opacity: .85;
  }

  .midnight-art .tuna {
    position: absolute;
    right: 12vw;
    bottom: 2vh;
    width: 350px;
  }

}

/* MOBILE YUH */
@media (max-width: 768px) {
  .intro {
    position: absolute;
    top: 18vh;
    left: 50%;
    transform: translateX(-50%);
    width: 86vw;
    padding: 0;
    text-align: left;
    z-index: var(--z-intro);
  }

  /* EVENT TITLE: "Women of Informatics’ 14th Annual Hackathon" */
  .intro h1 {
    margin-bottom: 1rem;
    font-size: clamp(2.6rem, 8vw, 3.2rem);
    /* MUCH bigger */
    line-height: 1.1;
  }

  /* DATE + LOCATION: "January 24–25, 2026" / "UNIVERSITY OF WASHINGTON HUB" */
  header.hero .meta {
    margin-top: 0.75rem;
    font-size: clamp(1.05rem, 3.6vw, 1.25rem);
    /* increase size */
    row-gap: 6px;
  }

  .intro .meta span,
  .intro .meta strong {
    font-size: 12px;
  }

  .intro .btn-primary {
    font-size: 12px;
  }

  /* keep cat smaller + lower */
  .hero-figure .cat {
    top: 62vh;
    left: 30%;
    width: 65vw;
    min-width: 0;
    margin-left: -27.5vw;
  }

  .froth .water {
    top: 58%;
  }

  .surface .water {
    top: 60%;
  }

  .surface .rainbow {
    top: 29%;
    width: 50vw;
  }

  .dive-in {
    top: -60vh;
  }

  .dive-in h1 {
    font-size: 8vw !important;
  }

  .dive-in p {
    font-size: 4vw !important;
  }

  .mola .fish {
    top: 15vh;
    right: 20vw;
    min-width: 150px;
  }

  .rays .beams {
    top: -30%;
    height: 150vh;
    right: 5vw;
  }

  .theme-content {
    top: -15vh;
  }

  .content h1 {
    font-size: 8vw !important;
  }

  .content p {
    font-size: 4vw !important;
  }

  section.reef {
    min-height: 50vh;
  }

  .school .sprite {
    top: -4vh;
    left: 18vw;
    width: 35vw;
    min-width: 100px;
  }

  .decor-fish .blue {
    top: 9vh;
    left: 32vw;
    width: 12vw;
    min-width: 20px;
  }

  .decor-fish .clown {
    top: 13vh;
    left: 40vw;
    width: 6vw;
    min-width: 10px;
  }

  .decor-fish .trigger {
    top: 3vh;
    right: 13vw;
    width: 12vw;
    min-width: 20px;
  }

  .reefs .left {
    bottom: 6vh;
    left: 0;
    width: 58vw;
    min-width: 100px;
  }

  .reefs .right {
    bottom: 5vh;
    right: 0;
    width: 34vw;
    min-width: 100px;
  }

  .rocks .shelf {
    bottom: 0;
  }

  .shark .leo {
    bottom: 8vh;
    left: 15vw;
    width: 45vw;
    min-width: 120px;
  }

  .track {
    padding-top: 20px;
    /* space ABOVE content */
    padding-bottom: 20px;
    /* space BELOW content */
  }

  .tracks .section-title {
    margin-bottom: 0px;
  }

  .track-header {
    line-height: 100%;
  }

  .track-content {
    padding: 6px 0;
  }

  /* starfish sizing */
  .tracks-list>li:nth-child(1) .decor {
    width: 100px;
  }

  .decor-urchin {
    display: none !important;
  }

  /* crab sizing */
  .tracks-list>li:nth-child(4) .decor {
    width: 150px;
  }

  /* 1) Give the whole section the Prize Tracks bg */
  .midnight,
  .midnight::before {
    background: linear-gradient(180deg,
        #1e262d 38%,
        #2D4147 50%,
        #101417 90%);
  }

  .midnight::before {
    /* kill the dark gradient overlay on tablet/mobile */
    content: none;
  }

  /* 2) Turn off the "pinned canvas" behavior */
  .midnight .pin {
    position: static;
    /* no sticky */
    height: auto;
    min-height: 0;
  }

  /* 3) Make schedules a normal block ABOVE the art */
  .schedule-panel {
    position: static;
    /* no absolute positioning */
    top: auto;
    right: auto;
    width: auto;
    height: auto;
    overflow: visible;
    z-index: auto;
  }

  /* 4) Give the schedules block its own background + spacing */
  .midnight .content.schedules {
    max-width: 900px;
    margin: 0 auto;
    /* top accounts for nav */
    background: #1e262d;
    /* same as tracks */
    color: #E7F7FA;
  }

  /* 5) Put the art AFTER schedules (in normal flow) */
  .midnight-art {
    bottom: -100vh;
    position: relative;
    /* no longer overlaying everything */
    inset: auto;
    margin-top: 40px;
    /* space between schedules and cave */
    height: 120vh;
    /* give art some space on page */
  }

  /* Cave now participates as “art block” */
  .midnight-art .cave {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    max-width: none;
  }

  /* Optional: keep your jellies/tuna positioned within the art block */
  .midnight-art .jellies {
    top: 35vh;
    left: 12vw;
    width: 50px;
  }

  .midnight-art .tuna {
    bottom: 30vh;
    right: 10vw;
    width: 120px;
  }

  /* 6) Remove any scroll-state animation/transform behavior */
  #schedulesInner {
    transform: none !important;
    will-change: auto;
  }

  .faq {
    /* adjust as needed */
    padding: 0px 0 10px;
  }

  .faq-grid {
    grid-template-columns: 1fr !important;
  }

  .faq .content {
    max-width: 430px;
  }

  .faq-grid summary {
    font-size: 20px !important;
  }

  .ocean.bottom {
    background: #101417;

    min-height: auto;
    padding: 80px 0 280px;
    overflow-y: visible;
  }

  .bottom .content {
    max-width: 960px;
  }

  .bottom-art .sand {
    left: 50%;
  }

  .bottom-art .ship {
    left: 8vw;
    bottom: 30px;
  }

  .bottom-art .anchor {
    left: 6px;
    bottom: 20px;
  }

  .bottom-art .treasure {
    right: -4vw;
    bottom: 10px;
  }

  .footer-fish {
    top: 0vh;
  }

  .footer-sand {
    position: absolute;
    top: -5vh;
    /* slightly overlapping from above */
    left: 50%;
    transform: translateX(-50%);
    width: 100%;
    z-index: 0;
  }
}
