/* ------------------------------------------------------------------
   Grabba Gang - static "coming soon" page.

   Fully self-contained: no build step, no framework, no theme dependency.
   Mirrors the home page hero - the staggered GRABBA wordmark sits behind
   the ink splash, with the logo in front of it. Design tokens, type and the
   stagger/splash animations are copied in from the main site's styles so
   this page reads as the same brand.
   ------------------------------------------------------------------ */

:root {
  --font-body-family: "rustica", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-body-weight: 400;
  --font-body-weight-bold: 700;

  --font-heading-family: "futura-pt-condensed", "Futura", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-heading-weight: 800;

  --color-black: #0e0e0e;
  --color-white: #ffffff;
  --color-yellow: #fcc00b;
  --color-muted-black: rgba(14, 14, 14, 0.07);
  --color-gray-1: #888888;
  --color-gray-2: #444444;

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);

  --gutter: 24px;
  --max-w: 1440px;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--color-white);
  color: var(--color-gray-2);
  font-family: var(--font-body-family);
  font-weight: var(--font-body-weight);
  font-size: 16px;
  line-height: 1.5;
  overflow-x: hidden;
}

img {
  max-width: 100%;
}

/* .coming-soon */
.coming-soon {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 100vh;
  min-height: 100svh;
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 40px var(--gutter) 32px;
  overflow: hidden;
  text-align: center;
}

@media screen and (min-width: 1025px) {
  .coming-soon {
    padding: 40px 77px 32px;
  }
}

/* .coming-soon__rail - vertical side type, as on the home page hero */
.coming-soon__rail {
  display: none;
  position: absolute;
  top: 50%;
  color: var(--color-gray-1);
  font-size: 11px;
  font-weight: var(--font-body-weight-bold);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  white-space: nowrap;
  writing-mode: vertical-rl;
  opacity: 0;
  animation: fadeUp 0.8s var(--ease-out) 2.1s forwards;
}

@media screen and (min-width: 1025px) {
  .coming-soon__rail {
    display: block;
  }
}

.coming-soon__rail--left {
  left: 24px;
  transform: translateY(-50%) rotate(180deg);
}

.coming-soon__rail--right {
  right: 24px;
  transform: translateY(-50%);
}

/* .coming-soon__stage - the layered wordmark / splash / logo lockup */
.coming-soon__stage {
  position: relative;
  display: grid;
  place-items: center;
  width: 100%;
  margin-bottom: 8px;
  /* min-height: 40vh; */
}

/* .coming-soon__splash
   The splash is 500x401 (ratio 1.247), so capping the width against viewport
   height keeps the whole lockup + copy above the fold on short screens. */
.coming-soon__splash {
  position: relative;
  z-index: 1;
  width: min(720px, 100%, calc(40vh * 1.247));
  width: min(720px, 100%, calc(40svh * 1.247));
  opacity: 0;
  transform: scale(0.85);
  animation: splashIn 0.9s var(--ease-out) 0.15s forwards;
}

.coming-soon__splash-img {
  display: block;
  width: 100%;
  height: auto;
}

/* .coming-soon__logo - sits in front of the splash */
.coming-soon__logo {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 2;
  width: 210px;
  height: auto;
  transform: translate(-50%, -50%) scale(0.96);
  opacity: 0;
  animation: logoIn 0.9s var(--ease-out) 0.9s forwards;

  @media screen and (min-width: 1025px) {
    width: 67%;
  }
}

/* .stagger-title - sits behind the splash */
.stagger-title {
  position: absolute;
  top: 0%;
  left: 50%;
  z-index: 0;
  transform: translate(-50%, -50%);
}

.stagger-title__text {
  margin: 0;
  color: var(--color-muted-black);
  font-family: var(--font-heading-family);
  font-weight: 800;
  font-size: var(--stagger-title-font-size-mobile, 32vw);
  line-height: 0.85;
  text-transform: uppercase;
  white-space: nowrap;
  pointer-events: none;
  user-select: none;
}

@media screen and (min-width: 768px) {
  .stagger-title__text {
    font-size: var(--stagger-title-font-size-tablet, 30vw);
  }
}

@media screen and (min-width: 1025px) {
  .stagger-title__text {
    font-size: var(--stagger-title-font-size-desktop, 300px);
  }
}

/* Visible by default so the wordmark still shows without JS. */
.stagger-title__letter {
  display: inline-block;
}

.stagger-title__letter--space {
  width: 0.3em;
}

/* `html.stagger-js` is set in the markup before first paint, so with JS the
   letters start hidden with no flash; the observer adds `is-in-view`. */
html.stagger-js .stagger-title__text .stagger-title__letter {
  transform: translateY(110%);
  opacity: 0;
}

html.stagger-js .stagger-title__text.is-in-view .stagger-title__letter {
  animation: staggerLetterRise 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  animation-delay: calc(0.4s + var(--i) * 0.1s);
}

/* .coming-soon__content */
.coming-soon__content {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 520px;
}

/* .coming-soon__pill */
.coming-soon__pill {
  display: flex;
  gap: 0.5em;
  width: max-content;
  margin: 0 0 16px;
  padding: 3px 20px 6px;
  border-radius: 9999px;
  background: var(--color-yellow);
  color: var(--color-black);
  font-size: 36px;
  font-weight: var(--font-body-weight-bold);
  letter-spacing: 0.08em;

  @media screen and (min-width: 768px) {
    margin-top: 60%
  }
}

.coming-soon__pill span {
  display: block;
}

/* .coming-soon__pill span::before {
  content: "\2022";
  display: inline-flex;
  position: relative;
  top: 4px;
  height: auto;
  margin-right: 10px;
  font-size: 1.75em;
  line-height: 1px;
} */

/* .coming-soon__title */
.coming-soon__title {
  margin: 0;
  color: var(--color-black);
  font-family: var(--font-heading-family);
  font-weight: var(--font-heading-weight);
  font-size: 46px;
  line-height: 46px;
  letter-spacing: -1.5px;
  text-transform: uppercase;
}

@media screen and (min-width: 768px) {
  .coming-soon__title {
    font-size: 58px;
    line-height: 58px;
  }
}

.coming-soon__title .big-yellow-text {
  display: block;
  color: var(--color-yellow);
  font-size: 68px;
  line-height: 54px;
}

@media screen and (min-width: 768px) {
  .coming-soon__title .big-yellow-text {
    font-size: 84px;
    line-height: 65px;
  }
}

/* .coming-soon__body */
.coming-soon__body {
  margin: 16px 0 0;
  color: var(--color-gray-2);
  font-size: 13px;
  font-weight: 300;
  line-height: 20px;
}

/* .coming-soon__cta */
.coming-soon__cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: max-content;
  margin-top: 24px;
  padding: 12px 30px;
  border-radius: 9999px;
  background: var(--color-black);
  color: var(--color-yellow);
  font-family: var(--font-body-family);
  font-weight: 800;
  font-size: 13px;
  letter-spacing: 0.1em;
  text-decoration: none;
  text-transform: uppercase;
  transition: transform 0.25s var(--ease-out), background 0.2s ease;
}

.coming-soon__cta:hover {
  background: #1a1a1a;
  transform: translateY(-2px);
}

.coming-soon__cta span {
  transition: transform 0.25s var(--ease-out);
}

.coming-soon__cta:hover span {
  transform: translateX(4px);
}

/* .coming-soon__footnote */
.coming-soon__footnote {
  margin: 32px 0 0;
  color: var(--color-gray-1);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

/* Short viewports (laptops, landscape phones) - keep the whole lockup,
   copy and footnote above the fold. */
@media screen and (max-height: 780px) {
  .coming-soon {
    padding-top: 24px;
    padding-bottom: 24px;
  }

  .coming-soon__title {
    font-size: 46px;
    line-height: 46px;
  }

  .coming-soon__title .big-yellow-text {
    font-size: 68px;
    line-height: 54px;
  }

  .coming-soon__footnote {
    margin-top: 20px;
  }
}

/* Animations - shared with the theme */
.anim-fade {
  opacity: 0;
  transform: translateY(20px);
  animation: fadeUp 0.8s var(--ease-out) var(--delay, 0s) forwards;
}

@keyframes fadeUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes splashIn {
  0% {
    opacity: 0;
    transform: scale(0.7);
  }

  60% {
    opacity: 1;
  }

  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes logoIn {
  to {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}

@keyframes staggerLetterRise {
  0% {
    transform: translateY(110%);
    opacity: 0;
  }

  60% {
    opacity: 0.9;
  }

  100% {
    transform: translateY(0);
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .anim-fade,
  .coming-soon__rail,
  .coming-soon__splash,
  html.stagger-js .stagger-title__text .stagger-title__letter,
  html.stagger-js .stagger-title__text.is-in-view .stagger-title__letter {
    animation: none;
    opacity: 1;
    transform: none;
  }

  .coming-soon__rail--left {
    transform: translateY(-50%) rotate(180deg);
  }

  .coming-soon__rail--right {
    transform: translateY(-50%);
  }

  .coming-soon__logo {
    animation: none;
    opacity: 1;
    transform: translate(-50%, -50%);
  }
}
