/* ==========================================================================
   Intro — brand splash shown on first paint, then the two halves part like
   curtains to reveal the hero
   ========================================================================== */
html.intro-lock,
html.intro-lock body {
  overflow: hidden;
}

.intro {
  position: fixed;
  inset: 0;
  z-index: 9999;
  overflow: hidden;
  pointer-events: auto;
  /* whole overlay steps out once the curtains have parted */
  animation: introDone 0s linear 2.35s forwards;
}

@keyframes introDone {
  to {
    visibility: hidden;
  }
}

/* The two cream halves */
.intro-panel {
  position: absolute;
  left: 0;
  right: 0;
  height: 50%;
  background: var(--color-bg);
  animation-duration: 0.85s;
  animation-delay: 1.5s;
  animation-timing-function: cubic-bezier(0.76, 0, 0.24, 1);
  animation-fill-mode: forwards;
}

.intro-panel-top {
  top: 0;
  box-shadow: 0 1px 0 var(--color-bg);
  animation-name: introPanelUp;
}

.intro-panel-bottom {
  bottom: 0;
  animation-name: introPanelDown;
}

@keyframes introPanelUp {
  to {
    transform: translateY(-100.5%);
  }
}

@keyframes introPanelDown {
  to {
    transform: translateY(100.5%);
  }
}

/* Centered logo + wordmark, sitting above the panels */
.intro-inner {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.1rem;
  animation: introInnerOut 0.55s var(--ease) 1.4s forwards;
}

@keyframes introInnerOut {
  to {
    opacity: 0;
    transform: translateY(-14px);
  }
}

.intro-logo {
  width: clamp(74px, 12vw, 116px);
  height: auto;
  opacity: 0;
  transform: scale(0.7) rotate(-7deg);
  animation: introLogoIn 0.9s cubic-bezier(0.34, 1.56, 0.64, 1) 0.15s forwards;
}

@keyframes introLogoIn {
  to {
    opacity: 1;
    transform: scale(1) rotate(0);
  }
}

.intro-word {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 4.6vw, 2.4rem);
  letter-spacing: 0.06em;
  color: var(--color-text);
  opacity: 0;
  transform: translateY(16px);
  animation: introWordIn 0.7s var(--ease) 0.5s forwards;
}

.intro-word span {
  color: #dd5f89;
}

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

.intro-word::after {
  content: "";
  display: block;
  height: 2px;
  width: 0;
  margin: 0.55rem auto 0;
  background: #dd5f89;
  animation: introRule 0.6s var(--ease) 1s forwards;
}

@keyframes introRule {
  to {
    width: 68px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .intro {
    display: none;
  }
}
