/* ─── WORD CYCLE ─────────────────────────────────────────────── */
.word-cycle {
  display: inline-block;
  position: relative;
  color: var(--orange);
  font-weight: 700;
  font-style: italic;
  min-width: 3ch;
}
.word-cycle.exit {
  animation: wordExit .3s cubic-bezier(.55,0,1,.45) forwards;
}
.word-cycle.enter {
  animation: wordEnter .4s cubic-bezier(0,.55,.45,1) forwards;
}
@keyframes wordExit {
  0%   { opacity: 1; transform: translateY(0) }
  100% { opacity: 0; transform: translateY(-14px) }
}
@keyframes wordEnter {
  0%   { opacity: 0; transform: translateY(14px) }
  100% { opacity: 1; transform: translateY(0) }
}

/* ─── SVG EYEBROW DRAW ───────────────────────────────────────── */
.eyebrow-svg {
  display: block;
  margin-top: 4px;
  overflow: visible;
}
.eyebrow-svg path {
  fill: none;
  stroke: var(--orange);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-dasharray: 200;
  stroke-dashoffset: 200;
  transition: stroke-dashoffset 0.9s cubic-bezier(.22,1,.36,1);
}
.js-eyebrow.in + .eyebrow-svg path,
.js-eyebrow.in ~ .eyebrow-svg path {
  stroke-dashoffset: 0;
}

/* ─── SCROLL REVEAL ──────────────────────────────────────────── */
.js-reveal {
  opacity: 0;
  transform: translateY(36px);
  transition: opacity .75s cubic-bezier(.22,1,.36,1),
              transform .75s cubic-bezier(.22,1,.36,1);
}
.js-reveal.in { opacity: 1; transform: none; }

/* stagger children of a group */
.js-reveal-group > * {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .65s cubic-bezier(.22,1,.36,1),
              transform .65s cubic-bezier(.22,1,.36,1);
}
.js-reveal-group.in > *:nth-child(1) { transition-delay:.05s; }
.js-reveal-group.in > *:nth-child(2) { transition-delay:.15s; }
.js-reveal-group.in > *:nth-child(3) { transition-delay:.25s; }
.js-reveal-group.in > *:nth-child(4) { transition-delay:.32s; }
.js-reveal-group.in > *:nth-child(5) { transition-delay:.39s; }
.js-reveal-group.in > *:nth-child(6) { transition-delay:.46s; }
.js-reveal-group.in > * { opacity: 1; transform: none; }

/* quote banner */
.quote-banner { opacity: 0; transform: translateY(24px);
  transition: opacity .8s .1s ease, transform .8s .1s ease; }
.quote-banner.in { opacity: 1; transform: none; }

/* contact grid */
.contact-grid { opacity: 0; transform: translateY(28px);
  transition: opacity .7s ease, transform .7s ease; }
.contact-grid.in { opacity: 1; transform: none; }
