/* =========================================================
   TOKENS
========================================================= */

:root {
  /* ---------- COLOURS ---------- */

  /* Backgrounds */
  --color-bg-white: #ffffff;
  --color-bg-black: #000000;

  /* Text */
  --color-text-dark: #414042;
  --color-text-light: #e2e2e2;

  /* Accent / Brand */
  --color-accent-green: #88b24b;

  /* Buttons */
  --color-btn-cherry: #af0c1a;
  --color-btn-portfolio: #4d4d4f;
  --color-btn-video: #d9dadb;
  --color-btn-clients: #363638;

  /* ---------- TYPOGRAPHY ---------- */

  --font-primary: "Space Mono", monospace;

  /* ---------- LAYOUT ---------- */

  --page-padding: 3rem;

  --hero-height: 94vh;

  --space-section-small: 4rem;
  --space-section-medium: 10rem;
  --space-section-large: 20rem;
  --space-section-xl: 30rem;
  --space-section-xxl: 40rem;
}

/* =========================================================
   BASE / RESET
========================================================= */

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--color-bg-white);
  color: var(--color-text-dark);
  font-family: var(--font-primary);
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

/* =========================================================
   LAYOUT UTILITIES
========================================================= */

.page {
  padding: var(--page-padding);
  padding-bottom: 0;
  overflow-x: hidden;
}

/* =========================================================
   BUTTONS
========================================================= */

:root {
  --btn-underline-offset: -0.15em;
  --btn-underline-height: 0.75px;
  --btn-transition-speed: 220ms;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  border: 2px solid;
  border-radius: 999px;

  font-family: var(--font-primary);
  font-size: 0.75rem;
  line-height: 1;
  letter-spacing: 0.05em;
  text-decoration: none;
  white-space: nowrap;

  background: transparent;
  cursor: pointer;

  appearance: none;
  -webkit-appearance: none;
}

.btn > span {
  position: relative;
  top: -1px;

  display: inline-block;
}

.btn > span::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: var(--btn-underline-offset);
  width: 100%;
  height: var(--btn-underline-height);
  background: currentColor;

  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--btn-transition-speed) ease;
}

@media (hover: hover) and (pointer: fine) {
  .btn:hover > span::after {
    transform: scaleX(1);
  }
}

.btn:focus-visible > span::after {
  transform: scaleX(1);
}

@media (prefers-reduced-motion: reduce) {
  .btn > span::after {
    transition: none;
  }
}

/* Colour variants */
.btn--video {
  border-color: var(--color-btn-video);
  background-color: var(--color-bg-white);
  color: var(--color-text-dark);
}

.btn--portfolio {
  border-color: var(--color-btn-portfolio);
  background-color: transparent;
  color: var(--color-bg-white);
}

.btn--clients {
  border-color: var(--color-btn-clients);
  color: var(--color-text-light);
}

.btn--cherry {
  border-color: var(--color-btn-cherry);
  background-color: transparent;
  color: var(--color-bg-white);
}

.btn--footer {
  border-color: var(--color-btn-portfolio);
  color: var(--color-text-light);
}

/* =========================================================
   SECTIONS
========================================================= */

/* ---------- HEADER ---------- */

/* Container */
.header__container {
  display: grid;
  grid-template-rows: auto 1fr;
  min-height: var(--hero-height);
}

/* Brand row */
.header__date {
  display: none;
}

.header__brand {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.header__brand-wordmark {
  display: block;
  margin: 0;
}

.header__brand-wordmark img {
  display: block;
  width: 10rem;
  height: auto;
}

.header__brand-logo {
  display: block;
  margin: 0.4rem 0.1rem 0 0;
}

.header__brand-logo img {
  margin: 0;
  width: 6.5rem;
  height: auto;
}

/* Sticky/fading logo behaviour */
/* .header__brand-logo {
    opacity: 1;
    transform: translate3d(0, var(--logoY, 0px), 0);
    transition: opacity 200ms ease;
    will-change: transform, opacity;
}

.header__brand-logo.is-fading {
    opacity: 0.35;
}

.header__brand-logo.is-hidden {
    opacity: 0;
    pointer-events: none;
} */

/* Hero */
.header__hero {
  padding-bottom: 3rem;
  display: grid;
  width: 100%;
  grid-template-columns: minmax(24rem, 29.5rem) 2fr;
  align-items: end;
}

/* HERO SPECIALIZING WORD ROLL */
.header__specializing {
  margin-bottom: 4.5rem;
}

.header__specializing-label {
  margin: 0 0 0.35rem;

  font-size: 1rem;
  font-weight: 400;
  line-height: 1.425rem;
  letter-spacing: 0.0475em;
  color: var(--color-text-dark);
}

.header__specializing-title {
  margin: 0;

  display: inline-flex;
  align-items: center;
  gap: 0.08em;

  font-size: 1.75rem;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.015em;
  color: var(--color-text-dark);
}

.header__specializing-word {
  position: relative;
  display: inline-block;
  overflow: hidden;
  line-height: 1.2;
  vertical-align: top;
}

.header__specializing-clip {
  position: relative;
  display: inline-block;
  overflow: hidden;
  line-height: 1.2;
  padding-bottom: 0.12em;
  vertical-align: top;
}

.header__specializing-word,
.header__specializing-clip {
  min-width: 21ch;
}

.header__specializing-word-line {
  display: inline-block;
  white-space: nowrap;
}

.header__specializing-word-line--next {
  position: absolute;
  top: 0;
  left: 0;
}

.header__specializing-char {
  display: inline-block;
  will-change: transform;
  transition: transform 0.7s cubic-bezier(0, 0, 0.2, 1);
}

.header__specializing-word-line--next .header__specializing-char {
  transform: translateY(110%);
}

.header__specializing-word.is-rolling
  .header__specializing-word-line--current
  .header__specializing-char {
  transform: translateY(-110%);
}

.header__specializing-word.is-rolling
  .header__specializing-word-line--next
  .header__specializing-char {
  transform: translateY(0);
}

.header__specializing-char:nth-child(1) {
  transition-delay: 0s;
}

.header__specializing-char:nth-child(2) {
  transition-delay: 0.012s;
}

.header__specializing-char:nth-child(3) {
  transition-delay: 0.024s;
}

.header__specializing-char:nth-child(4) {
  transition-delay: 0.036s;
}

.header__specializing-char:nth-child(5) {
  transition-delay: 0.048s;
}

.header__specializing-char:nth-child(6) {
  transition-delay: 0.06s;
}

.header__specializing-char:nth-child(7) {
  transition-delay: 0.072s;
}

.header__specializing-char:nth-child(8) {
  transition-delay: 0.084s;
}

.header__specializing-char:nth-child(9) {
  transition-delay: 0.096s;
}

.header__specializing-char:nth-child(10) {
  transition-delay: 0.108s;
}

.header__specializing-char:nth-child(11) {
  transition-delay: 0.12s;
}

.header__specializing-char:nth-child(12) {
  transition-delay: 0.132s;
}

.header__specializing-char:nth-child(13) {
  transition-delay: 0.144s;
}

.header__specializing-char:nth-child(14) {
  transition-delay: 0.156s;
}

.header__specializing-char:nth-child(15) {
  transition-delay: 0.168s;
}

.header__specializing-char:nth-child(16) {
  transition-delay: 0.18s;
}

.header__specializing-char:nth-child(17) {
  transition-delay: 0.192s;
}

.header__specializing-char:nth-child(18) {
  transition-delay: 0.204s;
}

.header__specializing-char:nth-child(19) {
  transition-delay: 0.216s;
}

.header__specializing-char:nth-child(20) {
  transition-delay: 0.228s;
}

.header__specializing-char:nth-child(21) {
  transition-delay: 0.24s;
}

.header__specializing-char:nth-child(22) {
  transition-delay: 0.252s;
}

.header__specializing-char:nth-child(23) {
  transition-delay: 0.264s;
}

.header__specializing-char:nth-child(24) {
  transition-delay: 0.276s;
}

.header__specializing-char:nth-child(25) {
  transition-delay: 0.288s;
}

.header__specializing-char:nth-child(26) {
  transition-delay: 0.3s;
}

.header__hero-intro {
  margin-bottom: 0.35rem;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.425rem;
  letter-spacing: 0.0475em;
  color: var(--color-text-dark);
}

/* Video Button */
.header__hero-actions {
  display: flex;
  margin-top: 2.25rem;
  align-items: center;
  gap: 3rem;
}

.header__video-btn {
  padding: 1.65rem 3rem;
}

.link-underline {
  position: relative;
  display: inline-block;
  color: inherit;
  text-decoration: none;
}

.link-underline::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: var(--btn-underline-offset);
  width: 100%;
  height: var(--btn-underline-height);
  background: currentColor;

  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--btn-transition-speed) ease;
}

@media (hover: hover) and (pointer: fine) {
  .link-underline:hover::after {
    transform: scaleX(1);
  }
}

.link-underline:focus-visible::after {
  transform: scaleX(1);
}

.header__contact-status-wrap {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;

  white-space: nowrap;
}

.header__contact-line {
  display: inline-flex;
  align-items: center;
  gap: 1.15rem;

  font-size: 0.75rem;
  line-height: 1;
  letter-spacing: 0.05em;

  white-space: nowrap;
}

.header__contact-link {
  color: var(--color-text-dark);
  text-decoration: none;
}

.header__contact-star {
  display: inline-block;
  margin-right: 0.35rem;
  color: var(--color-accent-green);
  animation: contactStarPulse 1800ms ease-in-out infinite;
}

@keyframes contactStarPulse {
  0%,
  70%,
  100% {
    transform: scale(1);
    opacity: 1;
  }

  85% {
    transform: scale(1.4);
    opacity: 0.7;
  }
}

/* Hero side column */
.header__hero-side {
  margin-bottom: 1rem;
  justify-self: end;
  letter-spacing: 0.04em;
  text-align: right;

  /* ANIMATION */
  opacity: 0;
  transform: translateX(1rem);
  animation: heroSideIn 400ms ease-out forwards;
  animation-delay: 150ms;
}

.header__hero-love {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  margin-bottom: 2rem;
}

.header__hero-love-text {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  font-size: 0.9rem;
  line-height: 1.3;
}

/* Heart: enters, then beats on a loop */
.header__hero-love-heart {
  display: inline-block;
  transform-origin: center;

  /* ANIMATION */
  opacity: 0;
  transform: scale(0.85);
  animation:
    heartIn 250ms ease-out forwards,
    heartBeat 2000ms ease-in-out infinite;

  animation-delay:
        /* Appears after "DO YOU LOVE" */
    350ms,
    /* Starts beating after it's visible */ 300ms;
}

@keyframes heartIn {
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* Subtle throb: small pulses */
@keyframes heartBeat {
  /* Idle most of the time */
  0%,
  80% {
    transform: scale(1);
  }

  /* Quick beat cluster */
  82% {
    transform: scale(1.08);
  }

  84% {
    transform: scale(0.98);
  }

  86% {
    transform: scale(1.06);
  }

  88% {
    transform: scale(1);
  }

  100% {
    transform: scale(1);
  }
}

.header__hero-services {
  list-style: none;
  margin: 0 0 3.25rem;
  padding: 0;
}

.header__hero-service {
  font-size: 0.9rem;
  line-height: 1.3;

  /* ANIMATION */
  opacity: 0;
  transform: translateX(1rem);
  animation: heroItemIn 350ms ease-out forwards;
}

/* Stagger delays */
.header__hero-service:nth-child(1) {
  animation-delay: 250ms;
}

.header__hero-service:nth-child(2) {
  animation-delay: 400ms;
}

.header__hero-service:nth-child(3) {
  animation-delay: 550ms;
}

.header__hero-service:nth-child(4) {
  animation-delay: 700ms;
}

.header__hero-service:nth-child(5) {
  animation-delay: 850ms;
}

.header__hero-service:nth-child(6) {
  animation-delay: 1000ms;
}

.header__hero-service:nth-child(7) {
  animation-delay: 1150ms;
}

.header__hero-service:nth-child(8) {
  animation-delay: 1300ms;
}

@keyframes heroSideIn {
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes heroItemIn {
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

.header__hero-response {
  margin-bottom: 0.65rem;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 2rem;
}

.header__hero-ya,
.header__hero-too {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.3;
}

.header__hero-too-dots::after {
  content: "";
}

/* ANIMATION */
.header__hero-ya,
.header__hero-too {
  opacity: 0;
  transform: translateY(0.5rem);
  animation: heroTooIn 300ms ease-out forwards;
}

.header__hero-ya {
  animation-delay: 1350ms;
}

.header__hero-too {
  animation-delay: 1450ms;
}

@keyframes heroTooIn {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ---------- SCROLL CUE ---------- */

.scroll-cue {
  background: var(--color-bg-black);
  color: var(--color-bg-white);

  margin-left: calc(var(--page-padding) * -1);
  margin-right: calc(var(--page-padding) * -1);

  padding: 0;
}

.scroll-cue__container {
  min-height: 100vh;
  padding: 12rem var(--page-padding) 0;

  display: grid;
  justify-items: end;
  align-items: start;
}

.scroll-cue__content {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2.5rem;
}

.scroll-cue__text {
  margin: 0;

  font-size: 0.9rem;
  line-height: 1;
  letter-spacing: 0.05em;
}

.scroll-cue__pill {
  position: relative;

  width: 3rem;
  height: 4.75rem;

  border: 2px solid var(--color-text-light);
  border-radius: 999px;
}

.scroll-cue__mark {
  position: absolute;
  left: 50%;
  top: 0;

  width: 0.15rem;
  height: 1.25rem;

  background: var(--color-accent-green);
  border-radius: 999px;

  transform: translateX(-50%);

  animation: scrollCueMark 2000ms ease-in-out infinite;
}

@keyframes scrollCueMark {
  0%,
  100% {
    top: 0.75rem;
  }

  50% {
    top: 2.5rem;
  }
}

/* ---------- CHERRY ---------- */

.cherry {
  background: var(--color-bg-black);
  color: var(--color-bg-white);

  margin-left: calc(var(--page-padding) * -1);
  margin-right: calc(var(--page-padding) * -1);

  position: relative;
  padding: 0;
}

.cherry__container {
  padding: 40rem var(--page-padding) 0;
  min-height: 100vh;

  display: grid;
  justify-items: end;
  align-content: end;
  text-align: right;
  gap: 0.75rem;
}

.cherry__icon {
  display: inline-block;
  width: 4rem;
  transform-origin: center bottom;
  animation: cherryJiggle 8s ease-in-out infinite;

  position: relative;
  left: -0.5rem;
  top: -0.55rem;
}

.cherry__icon img {
  display: block;
  width: 100%;
  height: auto;
}

@keyframes cherryJiggle {
  0%,
  94% {
    transform: rotate(0deg);
  }

  95% {
    transform: rotate(-6deg);
  }

  96% {
    transform: rotate(6deg);
  }

  97% {
    transform: rotate(-3deg);
  }

  98% {
    transform: rotate(3deg);
  }

  99% {
    transform: rotate(-2deg);
  }

  100% {
    transform: rotate(0deg);
  }
}

.cherry__intro {
  max-width: 38ch;
  margin-top: 1rem;
  font-size: 1.35rem;
  line-height: 1.2;
}

.cherry__actions {
  margin-top: 1.1rem;
  display: inline-flex;
  gap: 0.75rem;
}

.cherry__portfolio-btn {
  padding: 1.75rem 3.1rem;
}

.cherry__top-btn {
  padding: 1.75rem 2.9rem;
}

/* ---------- BETTER ---------- */

.better {
  background: var(--color-bg-black);
  color: var(--color-bg-white);

  margin-left: calc(var(--page-padding) * -1);
  margin-right: calc(var(--page-padding) * -1);

  padding: var(--space-section-large) 0 0 0;
}

.better__container {
  padding: 23.75rem calc(var(--page-padding) + 0.25rem) 0 var(--page-padding);
  min-height: 100vh;

  display: grid;
  grid-template-rows: auto 1fr;
}

.better__top {
  display: grid;
  justify-items: end;
  gap: 2.5rem;
}

.better__intro {
  max-width: 42ch;
  margin: 0;

  text-align: right;
  font-size: 1rem;
  line-height: 1.4;
  letter-spacing: 0.035em;
}

.better__lead {
  margin: 0;
  display: flex;
  flex-direction: column;
  text-align: right;
  font-size: 2.5rem;
  line-height: 1.17;
}

.better__amp {
  color: var(--color-accent-green);
}

.better__title {
  margin: 0;
  padding-top: 19.5rem;
  display: inline-flex;
  align-items: baseline;
  gap: 0.06em;

  font-size: clamp(5.5rem, 13vw, 12.5rem);
  font-weight: 400;
  line-height: 1;
}

/* Hide type text until JS starts it */
.better__type {
  opacity: 0;
}

.better__type.is-ready {
  opacity: 1;
}

.better__cursor {
  display: inline-block;
  width: 0.037em;
  height: 0.715em;
  background: var(--color-accent-green);
  margin-left: 0.15em;

  vertical-align: baseline;

  animation: cursorBlink 1s steps(1) infinite;
}

@keyframes cursorBlink {
  0%,
  49% {
    opacity: 1;
  }

  50%,
  100% {
    opacity: 0;
  }
}

.better__bottom {
  display: flex;
  align-items: flex-end;
  justify-content: flex-start;
  padding: var(--space-section-xxl) 0 var(--space-section-large) 0;
}

/* ---------- LESS IS MORE ---------- */

.less-is-more {
  background: var(--color-bg-black);
  color: var(--color-bg-white);

  /* Break out of page padding */
  margin-left: calc(var(--page-padding) * -1);
  margin-right: calc(var(--page-padding) * -1);

  padding: var(--space-section-xxl) 0 0 0;
}

.less-is-more__container {
  padding: 0 var(--page-padding);
  min-height: 100vh;

  display: grid;
  align-content: space-between;
}

.less-is-more__content {
  padding-bottom: var(--space-section-xxl);
}

/* Eye statement */
.less-is-more__aside {
  display: inline-flex;
  align-items: center;
  gap: 1rem;

  font-size: 1rem;
  line-height: 1;
  letter-spacing: 0.045em;
}

.less-is-more__eye {
  display: inline-block;
  width: 2.5rem;
}

.less-is-more__eye img {
  display: block;
  width: 100%;
  height: auto;
}

/* Copy block */
.less-is-more__copy {
  margin-bottom: 1.5rem;

  font-size: clamp(1rem, 3vw, 2rem);
  letter-spacing: 0.009em;
  line-height: 1.15;
  max-width: 32ch;
}

/* Accent text starts WHITE like the rest */
.less-is-more__accent {
  color: currentColor;
  position: relative;
  display: inline-block;
}

/* Green reveal overlay (width controlled by --reveal) */
.less-is-more__accent::after {
  content: attr(data-text);
  position: absolute;
  left: 0;
  top: 0;
  width: calc(var(--reveal, 0) * 1%);
  overflow: hidden;
  white-space: nowrap;
  color: var(--color-accent-green);
  pointer-events: none;
}

.less-is-more__accent--reach {
  display: inline-block;
}

/* Button */
.less-is-more__btn {
  padding: 1.75rem 3rem;
  margin-top: 1.5rem;
}

/* ---------- RESULTS ---------- */

.results {
  background: var(--color-bg-white);
  color: var(--color-text-dark);

  margin-left: calc(var(--page-padding) * -1);
  margin-right: calc(var(--page-padding) * -1);

  padding: var(--space-section-xxl) 0;

  transition:
    background-color 250ms ease,
    color 250ms ease;
}

.results__container {
  padding: 15.5rem var(--page-padding);
  min-height: 100vh;

  display: grid;
  justify-items: end;
  align-content: center;
  gap: 1.25rem;

  text-align: right;
}

.results__title,
.results__copy {
  transition: color 250ms ease;
}

.results__title {
  margin: 0;
  margin-right: calc(var(--page-padding) * -0.33);
  font-size: clamp(5rem, 14vw, 12rem);
  color: #232223;
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.015em;
}

.results__copy {
  margin: 0;
  max-width: 43ch;
  font-size: clamp(1rem, 2vw, 1.35rem);
  line-height: 1.25;
}

/* ON ( Green title colour state) */
.results.is-lit .results__title {
  color: var(--color-accent-green);
}

/* Ball Toggle */
.respect__toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: left;
  margin: 1.5rem 2.5rem 0 0;
  min-height: 11rem;
  padding: 2rem 0;
  overflow: visible;
  perspective-origin: calc(50% + 10rem) calc(50% - 10rem);
  perspective: 32em;
}

.respect__toggle [type="checkbox"] {
  position: absolute;
  left: -100vw;
}

.respect__toggle [type="checkbox"] + label {
  --s: 0;
  position: relative;
  border: solid 0.625rem #f0f0f0;
  width: 10rem;
  height: 5rem;
  border-radius: 5rem;
  transform-style: preserve-3d;
  transform: rotatex(90deg) rotate(22.5deg) rotatey(22.5deg);
  box-shadow:
    0.5rem 0.875rem 0 -0.25rem #e0e0e0,
    0.625rem 0.625rem 0 -0.25rem #e0e0e0,
    0.5rem 0.875rem 0.625rem -0.125rem rgba(191, 191, 191, 0.75),
    inset 0.125rem -0.125rem 0.5rem rgba(245, 245, 245, 0.5),
    inset 0.75rem 0.75rem #dfdfdf,
    inset 0.75rem 0.75rem 0.75rem rgba(191, 191, 191, 0.85),
    inset 0 1rem 0.75rem rgba(191, 191, 191, 0.65);
  color: transparent;
  font-size: 0;
  -webkit-tap-highlight-color: transparent;
  cursor: pointer;
}

.respect__toggle [type="checkbox"] + label:before,
.respect__toggle [type="checkbox"] + label:after {
  position: absolute;
  width: 5rem;
  height: 5rem;
  border-radius: 50%;
  transition: 0.35s cubic-bezier(0.21, 0.61, 0.35, 1);
  content: "";
}

.respect__toggle [type="checkbox"] + label:before {
  top: calc(50% + 0.875rem);
  transform-origin: 100% 0;
  transform: translate(calc(var(--s) * (100% + 1rem))) scale(0.8)
    skewx(-22.5deg);
  background: radial-gradient(
    at 50% 25%,
    rgba(160, 160, 160, 0.65),
    transparent 70%
  );
  filter: blur(3px);
}

.respect__toggle [type="checkbox"] + label:after {
  transform: translate(calc(var(--s) * (100% + 1rem))) rotatey(-22.5deg)
    rotate(-22.5deg) rotatex(-90deg) translatey(-50%) rotate(45deg);
  box-shadow: -1px 1px 0.125rem rgba(206, 255, 206, 0.5);
  background:
    radial-gradient(at 0 50%, #6b9a3f, transparent 2.5rem) 0 50%/65% 50%
      no-repeat,
    radial-gradient(at 50% 0%, #acc981 15%, #88b24b 35%, #749740, #a5c97a 65%)
      50%/200%;
  filter: Grayscale(calc(1 - var(--s)));
}

.respect__toggle [type="checkbox"]:checked + label {
  --s: 1;
}

/* ---------- FOOTER ---------- */

.footer {
  background: var(--color-bg-black);
  color: var(--color-bg-white);

  /* Break out of page padding */
  margin-left: calc(var(--page-padding) * -1);
  margin-right: calc(var(--page-padding) * -1.25);

  padding: 33rem 0 var(--page-padding);
}

.footer__container {
  padding: 0 var(--page-padding);
}

/* Big statement (top-right) */
.footer__title {
  margin: 0;
  text-align: right;
  display: grid;
  justify-items: end;

  font-size: clamp(2.5rem, 5vw, 4.5rem);
  font-weight: 400;
  letter-spacing: -0.0225em;
  line-height: 1.05;
}

.footer__title-line {
  display: inline-block;
  opacity: 0;
  transform: translateY(0.75rem);
}

/* ---------- FOOTER TITLE: delayed fold-in on scroll ---------- */
.footer__title.is-inview .footer__title-line {
  animation: footerTitleIn 380ms ease-out forwards;
}

.footer__title.is-inview .footer__title-line:nth-child(1) {
  animation-delay: 100ms;
}

.footer__title.is-inview .footer__title-line:nth-child(2) {
  animation-delay: 350ms;
}

.footer__title.is-inview .footer__title-line:nth-child(3) {
  animation-delay: 600ms;
}

.footer__title-line--creative {
  margin-right: -0.5rem;
}

.footer__period {
  display: inline-block;
  color: var(--color-accent-green);
  margin-left: -0.08em;
}

@keyframes footerTitleIn {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .footer__title-line {
    opacity: 1;
    transform: none;
    animation: none !important;
  }
}

/* Bottom row */
.footer__bottom {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 2rem;
}

/* Left block */
.footer__left {
  text-align: left;
  display: grid;
  gap: 3rem;
  justify-items: start;
}

.footer__contact {
  display: grid;
  gap: 0.5rem;
}

.footer__contact .link-underline {
  width: fit-content;
}

.footer__line {
  margin: 0;
  letter-spacing: 0.2px;
  line-height: 1.2;
  opacity: 0.9;
}

.footer__fine {
  margin: 0;
  font-size: 0.55rem;
  letter-spacing: 0.2px;
  line-height: 1.2;
  opacity: 0.85;
}

/* Right block */
.footer__right {
  text-align: right;
  display: grid;
  justify-items: end;
  gap: var(--space-section-small);
}

.footer__cta {
  margin: 2rem 1rem 0 0;
  padding: 1.75rem 3rem;
}

.footer__fine--mobile {
  display: none;
}

.footer__fine--desktop {
  display: block;
}

.footer__note-mobile {
  display: none;
}

.footer__note {
  margin: 1rem 1.75rem 0 0;
  font-size: 0.65rem;
  letter-spacing: 0.2px;
  line-height: 1.2;
  opacity: 0.85;
}

/* =========================================================
   LIGHTBOX
========================================================= */
.video-popup {
  position: fixed;
  inset: 0;
  z-index: 1200;

  display: grid;
  place-items: center;

  padding: 2rem;
  background: rgba(3, 6, 15, 0.98);

  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.video-popup.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.video-popup__inner {
  position: relative;

  width: min(85vw, 100rem);
  max-height: 85vh;

  aspect-ratio: 16 / 9;
}

.video-popup__iframe {
  width: 100%;
  height: 100%;
  border: 0;
}

.video-close {
  position: absolute;
  top: -1.5rem;
  right: 0;

  padding: 0;
  border: 0;
  background: transparent;

  color: var(--color-text-light);
  font-family: var(--font-primary);
  font-size: 0.65rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;

  cursor: pointer;
}

html.is-video-open {
  overflow: hidden;
}

/* =========================================================
   OVERLAYS
========================================================= */
.overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;

  min-height: 100vh;
  min-height: 100dvh;

  padding: 6rem var(--page-padding);

  display: grid;
  place-items: center;

  background: var(--color-bg-white);
  color: var(--color-text-dark);

  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.overlay.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.overlay__inner {
  display: grid;
  justify-items: center;
  text-align: center;
}

.overlay__icon {
  transform-origin: center bottom;
}

.overlay__title {
  margin: 2rem 0 0;

  font-size: 1.5rem;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.0475em;
}

.overlay__copy {
  max-width: 64ch;
  margin: 2rem 0 0;

  font-size: 1rem;
  line-height: 1.45;
  letter-spacing: 0.035em;
}

.overlay__copy--mobile {
  display: none;
}

.overlay__actions {
  margin-top: 3rem;

  display: flex;
  justify-content: center;
  gap: 1rem;
}

.overlay__btn {
  padding: 1.35rem 3rem;
}

/* Cherry overlay */
.overlay__title-cherry {
  color: #dc0d27;
}

.overlay__icon--cherry {
  width: 5rem;
  height: auto;
  animation: cherryJiggle 8s ease-in-out infinite;
}

/* Portfolio overlay */
.overlay--portfolio {
  background: #03060f;
  color: var(--color-text-light);
}

.overlay__icon--portfolio {
  position: relative;

  width: 5rem;
  height: 5rem;
  min-width: 5rem;
  min-height: 5rem;

  display: grid;
  place-items: center;

  background: transparent;
}

.overlay__icon--portfolio::before {
  content: "";
  position: absolute;
  inset: 0;

  border-radius: 50%;
  background: #222e1d;

  animation: portfolioPulse 1.5s linear infinite;
}

.overlay__icon--portfolio img {
  position: relative;
  z-index: 1;

  width: 4.2rem;
  height: auto;

  transform: translateY(-10px);
}

@keyframes portfolioPulse {
  0%,
  90%,
  100% {
    transform: scale(1);
    opacity: 1;
  }

  92% {
    transform: scale(1.12);
    opacity: 0.72;
  }

  94% {
    transform: scale(1.04);
    opacity: 0.9;
  }

  96% {
    transform: scale(1.09);
    opacity: 0.78;
  }
}

/* Clients overlay */
.overlay--clients {
  background: #03060f;
  color: var(--color-text-light);
}

.overlay__title-green {
  color: var(--color-accent-green);
}

.overlay__inner--clients {
  width: min(100%, 52rem);
}

.overlay__clients-content {
  margin-top: 3rem;

  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  align-items: center;
  justify-content: center;
  gap: 2.5rem;
}

.overlay__terminal {
  width: 100%;
  height: 17rem;
  max-height: 17rem;
  padding: 1.5rem;

  border-radius: 0.75rem;
  background: rgba(15, 23, 42, 0.9);
  border: 1px solid rgba(255, 255, 255, 0.08);

  overflow: hidden;
}

.overlay__terminal-log {
  height: 100%;
  overflow: hidden;

  display: flex;
  flex-direction: column-reverse;
  align-items: flex-start;
  gap: 0.35rem;

  font-size: 0.75rem;
  line-height: 1.2;
  color: #ff4d6d;
  text-align: left;
}

.overlay__terminal-line {
  opacity: 0;
  transform: translateY(0.6rem);
  animation: terminalLineIn 200ms ease forwards;
}

@keyframes terminalLineIn {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.overlay__copy--clients {
  max-width: none;
  margin: 0;
  text-align: left;
}

.overlay__small-note {
  position: absolute;
  right: var(--page-padding);
  bottom: var(--page-padding);

  margin: 0;
  font-size: 0.65rem;
  text-decoration: none;
  color: inherit;
  opacity: 0.65;
}

.overlay__small-note::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: var(--btn-underline-offset);

  width: 100%;
  height: var(--btn-underline-height);

  background: currentColor;

  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--btn-transition-speed) ease;
}

@media (hover: hover) and (pointer: fine) {
  .overlay__small-note:hover::after {
    transform: scaleX(1);
  }
}

.overlay__small-note:focus-visible::after {
  transform: scaleX(1);
}

/* =========================================================
   FUN OVERLAY
========================================================= */

.overlay--fun {
  background: #03060f;
  color: var(--color-text-light);
  overflow-y: auto;
}

.overlay__inner--fun {
  width: min(100%, 56rem);
  transform: translateY(-1rem);
}

.overlay__fun-desktop {
  display: grid;
  justify-items: center;
}

.overlay__fun-demo {
  position: relative;
}

.overlay__fun-close-x {
  position: absolute;
  top: -1.1rem;
  left: 0;

  z-index: 50;

  padding: 0;
  border: 0;
  background: transparent;

  color: var(--color-text-light);
  font-family: var(--font-primary);
  font-size: 0.45rem;
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;

  cursor: pointer;
  opacity: 0.9;
}

.overlay__fun-image-container {
  position: relative;
  width: 29rem;
  height: 29rem;
  cursor: pointer;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.15);
}

.overlay__fun-image-container.is-3d {
  perspective: 1600px;
  perspective-origin: 50% 50%;
  overflow: visible;
  isolation: isolate;
}

.overlay__fun-stack {
  position: absolute;
  inset: 0;
  transform-style: flat;
  will-change: transform;
}

.overlay__fun-image-container.is-3d .overlay__fun-stack {
  transform-style: preserve-3d;
}

.overlay__fun-layer {
  position: absolute;
  inset: 0;
  background-image: url("../assets/img/fun-demo.png");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  backface-visibility: hidden;
  will-change: transform, opacity;
}

.overlay__fun-layer:not(:first-child) {
  opacity: 0;
  transform: scale(0.95);
}

.overlay__fun-layer.rectangle {
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
}

.overlay__fun-layer.circle {
  clip-path: circle(45% at 50% 50%);
}

.overlay__fun-layer.diamond {
  clip-path: polygon(50% 0%, 14.1% 50%, 50% 100%, 85.9% 50%);
}

.overlay__fun-layer.hexagon {
  clip-path: polygon(
    25% 6.7%,
    75% 6.7%,
    100% 50%,
    75% 93.3%,
    25% 93.3%,
    0% 50%
  );
}

.overlay__fun-controls {
  width: 29rem;
  margin-top: 0.85rem;

  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.overlay__fun-shape-controls {
  display: flex;
  gap: 0.6rem;
  align-items: center;
}

.overlay__fun-shape-btn {
  width: 0.8rem;
  height: 0.8rem;
  padding: 0;
  border: 0;

  background: var(--color-text-light);
  cursor: pointer;
  opacity: 0.5;
}

.overlay__fun-shape-btn.active {
  opacity: 1;
  background: var(--color-accent-green);
}

.overlay__fun-shape-btn[data-shape="circle"] {
  border-radius: 50%;
}

.overlay__fun-shape-btn[data-shape="diamond"] {
  width: 0.7rem;
  height: 0.7rem;
  transform: rotate(45deg);
}

.overlay__fun-shape-btn[data-shape="hexagon"] {
  width: 0.9rem;
  height: 0.9rem;
  clip-path: polygon(
    25% 6.7%,
    75% 6.7%,
    100% 50%,
    75% 93.3%,
    25% 93.3%,
    0% 50%
  );
}

.overlay__fun-toggle-controls {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  align-items: flex-end;
}

.overlay__fun-toggle-btn {
  background: none;
  border: none;
  color: #9ca3af;
  cursor: pointer;

  font-family: var(--font-primary);
  font-size: 0.6rem;
  line-height: 1;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.overlay__fun-toggle-btn.active {
  color: var(--color-accent-green);
}

.overlay__fun-mobile {
  display: none;
}

.overlay__fun-mobile-copy {
  max-width: 40ch;
  margin: 2rem 0;

  line-height: 1.5;
  letter-spacing: 0.04em;
}

.overlay__fun-mobile-image {
  width: 100%;
  max-width: 24rem;
  margin-bottom: 2rem;
}

/* =========================================================
   MEDIA QUERIES
========================================================= */
/* ---------- HEADER ---------- */
@media (max-width: 1020px) {
  .header__hero {
    grid-template-columns: 1fr;
    align-items: start;
    padding-bottom: 0;
  }

  .header__hero-side {
    order: 1;
    justify-self: end;
    text-align: right;
    padding: 10.75rem 0;
    margin-bottom: 0;
  }

  .header__hero-left {
    order: 2;
    max-width: 90%;
    margin: 8rem 0 10rem;
  }

  .header__video-btn {
    margin-bottom: 2rem;
  }

  .header__hero-actions {
    flex-direction: column;
    align-items: flex-start;
    gap: 2.5rem;
  }

  .header__contact-line {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 0.75rem;
    row-gap: 0.6rem;

    white-space: normal;
  }

  .header__contact-status-wrap {
    display: contents;
  }

  .header__contact-star {
    grid-column: 1;
    grid-row: 1 / 4;

    align-self: start;
    margin-right: 0;
  }

  .header__contact-status,
  .header__contact-link {
    grid-column: 2;
  }

  .header__contact-divider {
    display: none;
  }

  .header__hero-too-dots::after {
    content: "........";
  }
}

@media (max-width: 900px) {
  /* ---------- FOOTER ---------- */
  .footer {
    padding: 18rem 0 var(--page-padding);
    margin-right: calc(var(--page-padding) * -1);
  }

  .footer__title {
    font-size: clamp(2.5rem, 6.5vw, 4rem);
    line-height: 1.05;
  }

  .footer__bottom {
    grid-template-columns: 1fr auto;
    gap: 1.5rem;
    margin-top: 1.5rem;
    align-items: end;
  }

  .footer__left {
    gap: 2rem;
    max-width: 26ch;
  }

  .footer__right {
    gap: 1.5rem;
  }

  .footer__cta {
    margin: 0;
    padding: 1.5rem 2.6rem;
    font-size: 0.75rem;
  }

  .footer__line {
    font-size: 0.95rem;
  }

  .footer__note {
    margin: 0;
  }
}

/* ---------- LARGE MOBILE/TABLET ---------- */
@media (max-width: 767px) {
  .page {
    padding: 2rem;
    padding-bottom: 0;
  }

  /* ---------- HEADER ---------- */
  .header__date {
    display: block;
    margin: 0;

    align-self: start;

    font-size: 0.7rem;
    line-height: 1;
    letter-spacing: 0.05em;
  }

  .header__brand {
    flex-direction: column-reverse;
    align-items: center;
    gap: 1rem;
  }

  .header__brand-logo {
    margin: 4rem 0 0 0;
  }

  .header__brand-logo img {
    width: 7rem;
  }

  .header__brand-wordmark img {
    width: 9rem;
  }

  .header__hero-side {
    padding: 7rem 0 10rem;
  }

  .header__hero-left {
    max-width: 95%;
    margin: 4rem 0 6rem;
  }

  .header__hero-response {
    padding: var(--space-section-xl) 0 var(--space-section-large);
  }

  /* ---------- CHERRY ---------- */
  .cherry {
    margin-left: calc(var(--page-padding) * -1);
    margin-right: calc(var(--page-padding) * -1);
  }

  .cherry__container {
    min-height: auto;
    justify-items: end;
    align-content: start;
    padding-bottom: var(--space-section-large);
    gap: 0.5rem;
  }

  .cherry__icon {
    width: 3.25rem;
    left: -0.1rem;
    top: 0;
    margin-bottom: 0.75rem;
  }

  .cherry__intro {
    max-width: 78%;
    margin-top: 0;
    font-size: 1rem;
    line-height: 1.45;
  }

  .cherry__actions {
    margin-top: 0.75rem;
    display: grid;
    justify-items: end;
    gap: 1.25rem;
  }

  .cherry__top-btn {
    order: 1;
  }

  .cherry__portfolio-btn {
    padding: 1.75rem 3.1rem;
    order: 2;
  }

  /* ---------- BETTER ---------- */
  .better,
  .better__container {
    padding-top: var(--space-section-large);
  }

  .better__intro {
    max-width: 28ch;
  }

  .better__lead {
    font-size: 2rem;
  }

  /* ---------- LESS IS MORE ---------- */
  .less-is-more__eye {
    width: 2rem;
  }

  .less-is-more__btn {
    padding: 1.5rem 3rem;
    margin-top: 0.5rem;
  }

  /* ---------- RESULTS ---------- */
  .results__copy {
    max-width: 33ch;
    line-height: 1.3;
  }

  .respect__toggle {
    margin: 1.25rem 2rem 0 0;
    min-height: 9rem;
    padding: 1.5rem 0;
    perspective-origin: calc(50% + 8rem) calc(50% - 8rem);
    perspective: 28em;
  }

  .respect__toggle [type="checkbox"] + label {
    width: 8.5rem;
    height: 4.25rem;
    border: solid 0.55rem #f0f0f0;
    border-radius: 4.25rem;
  }

  .respect__toggle [type="checkbox"] + label:before,
  .respect__toggle [type="checkbox"] + label:after {
    width: 4.25rem;
    height: 4.25rem;
  }

  .respect__toggle [type="checkbox"] + label:before {
    top: calc(50% + 0.7rem);
  }

  /* ---------- FOOTER ---------- */
  .footer {
    padding: var(--space-section-xxl) 0 var(--page-padding);
    margin-right: calc(var(--page-padding) * -1);
  }

  .footer__title {
    font-size: clamp(2.25rem, 8vw, 3.75rem);
    text-align: right;
    justify-items: end;
  }

  .footer__bottom {
    grid-template-columns: 1fr;
    margin-top: 2rem;
    gap: 2.5rem;
  }

  .footer__right {
    order: 1;
    justify-items: end;
    text-align: right;
    gap: 2.25rem;
  }

  .footer__note-mobile {
    display: block;
    margin: 0 0 2rem;

    text-align: right;
    font-size: 0.65rem;
    line-height: 1.2;
    letter-spacing: 0.2px;
    opacity: 0.85;
  }

  .footer__note {
    display: none;
  }

  .footer__left {
    order: 2;
    justify-items: end;
    text-align: right;
    max-width: none;
    gap: 4rem;
  }

  .footer__cta {
    margin: 0 0 4rem 0;
    padding: 1.5rem 1.75rem;
    font-size: 0.65rem;
  }

  .footer__contact {
    justify-items: end;
    gap: 0.75rem;
  }

  .footer__contact .link-underline {
    justify-self: end;
  }

  .footer__line,
  .footer__fine {
    line-height: 1.35;
    text-align: right;
  }

  .footer__fine--desktop {
    display: none;
  }

  .footer__fine--mobile {
    display: grid;
    justify-items: end;
    gap: 0.4rem;
    font-size: 0.85rem;
    text-align: right;
  }

  /* ---------- OVERLAYS ---------- */
  .overlay {
    padding: 4rem 2rem;
  }

  .overlay__icon {
    width: 4rem;
  }

  .overlay__title {
    margin-top: 1.5rem;
  }

  .overlay__copy {
    max-width: 38ch;
    margin-top: 2rem;

    line-height: 1.5;
  }

  .overlay__copy--desktop {
    display: none;
  }

  .overlay__copy--mobile {
    display: block;
  }

  .overlay__actions {
    margin-top: 2rem;
    gap: 1rem;
  }

  .overlay__btn {
    padding: 1.5rem 2.75rem;
    font-size: 0.65rem;
  }

  /* Clients overlay */
  .overlay--clients {
    padding-inline: 1.5rem;
  }

  .overlay__inner--clients {
    width: 100%;
    transform: translateY(-1.5rem);
  }

  .overlay--clients .overlay__clients-content {
    width: 100%;
    margin-top: 2rem;
    grid-template-columns: 1fr;
    gap: 1.75rem;
  }

  .overlay--clients .overlay__terminal {
    width: 85%;
    height: 15rem;
    max-height: 15rem;
    justify-self: center;
  }

  .overlay--clients .overlay__copy--mobile.overlay__copy--clients {
    max-width: 40ch;
    margin-top: 0;

    text-align: center;
    justify-self: center;
  }

  .overlay__small-note {
    display: none;
  }

  /* Fun overlay */
  .overlay__fun-desktop {
    display: none;
  }

  .overlay__fun-mobile {
    display: grid;
    justify-items: center;
  }

  .overlay__fun-mobile-copy span {
    color: var(--color-accent-green);
  }

  .overlay__fun-mobile-image {
    display: block;

    width: 100%;
    max-width: 22rem;
    aspect-ratio: 1 / 1;

    object-fit: cover;
    object-position: center;

    margin-bottom: 2rem;
  }
}

/* ---------- SMALL MOBILE ---------- */
@media (max-width: 430px) {
  /* ---------- TEXT/BUTTONS ---------- */
  .header__hero-love-text,
  .header__hero-service,
  .header__hero-too,
  .header__hero-intro,
  .less-is-more__copy,
  .results__copy,
  .overlay__copy,
  .overlay__fun-mobile-copy {
    font-size: 0.9rem;
    line-height: 1.4;
  }

  .header__video-btn,
  .cherry__top-btn,
  .cherry__portfolio-btn,
  .less-is-more__btn {
    font-size: 0.8rem;
  }

  .overlay__btn {
    flex: 1;
    min-width: 0;

    padding: 1.5rem 2.25rem;

    font-size: 0.65rem;
  }

  /* ---------- HEADER ---------- */
  .header__hero-left {
    max-width: 95%;
  }

  .header__video-btn {
    padding: 1.5rem 2.75rem;
  }

  .header__specializing-title {
    font-size: clamp(1.5rem, 6vw, 1.75rem);
  }

  /* ---------- CHERRY ---------- */
  .scroll-cue__text {
    font-size: 0.8rem;
  }

  .cherry__actions {
    margin-top: 0.25rem;
  }

  .cherry__top-btn {
    padding: 1.5rem 2rem;
  }

  .cherry__portfolio-btn {
    padding: 1.65rem 2.25rem;
  }

  /* ---------- BETTER ---------- */
  .better__intro {
    font-size: 0.8rem;
  }

  .better__lead {
    font-size: 1.6rem;
  }

  /* ---------- LESS IS MORE ---------- */
  .less-is-more__aside {
    font-size: 0.9rem;
    gap: 0.75rem;
  }

  .less-is-more__btn {
    padding: 1.35rem 2.55rem;
    margin-top: 0.1rem;
  }

  /* ---------- RESULTS ---------- */
  .results__title {
    font-size: clamp(4rem, 10vw, 10rem);
    margin-right: 0;
  }

  .results__copy {
    max-width: 33ch;
  }

  .results__container {
    padding: 8rem var(--page-padding);
    gap: 0.75rem;
  }

  .respect__toggle {
    margin: 1rem 1rem 0 0;
    min-height: 7rem;
    padding: 1rem 0;
    perspective-origin: calc(50% + 6rem) calc(50% - 6rem);
    perspective: 24em;
  }

  .respect__toggle [type="checkbox"] + label {
    width: 7rem;
    height: 3.5rem;
    border: solid 0.45rem #f0f0f0;
    border-radius: 3.5rem;
  }

  .respect__toggle [type="checkbox"] + label:before,
  .respect__toggle [type="checkbox"] + label:after {
    width: 3.5rem;
    height: 3.5rem;
  }

  .respect__toggle [type="checkbox"] + label:before {
    top: calc(50% + 0.6rem);
  }

  .respect__toggle [type="checkbox"] + label:after {
    box-shadow: -1px 1px 0.1rem rgba(206, 255, 206, 0.5);
  }

  /* ---------- FOOTER ---------- */
  .footer__bottom {
    gap: 1.25rem;
  }

  /* ---------- OVERLAYS ---------- */
  .overlay--portfolio .overlay__btn {
    padding: 1.5rem 2rem;
  }
}

/* ---------- Extra Small Phones ---------- */
@media (max-width: 375px) {
  .header__specializing-title {
    font-size: clamp(1.25rem, 6vw, 1.75rem);
  }

  .header__specializing-word,
  .header__specializing-clip {
    min-width: 19ch;
  }
}
