/* ==========================================================================
   dotMD design system
   1. Tokens
   2. Base elements
   3. Layout helpers
   4. Buttons and pills
   5. Header and navigation
   6. Hero
   7. Cards and grids
   8. Editorial and prose
   9. Forms
   10. Footer
   ========================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");

/* 1. Tokens
   ========================================================================== */

:root {
  /* Brand */
  --color-primary: #feac17;
  --color-primary-soft: #ffc55a;
  --color-primary-ink: #2a1a00;
  --color-secondary: #0f0326;

  /* Surfaces, built from the brand purple */
  --surface-base: #0b0219;
  --surface-raised: #150730;
  --surface-card: #1a0b38;
  --surface-line: rgba(255, 255, 255, 0.1);
  --surface-line-strong: rgba(255, 255, 255, 0.2);

  /* Text */
  --color-text: #f2eefb;
  --color-muted: #a79bc0;
  --color-white: #ffffff;
  --color-off-white: #f4f1eb;

  /* Type */
  --font-display: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-body: var(--font-display);
  --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Metrics */
  /* One page width, matched to the header logo and nav. */
  --container: 82rem;
  --container-wide: 82rem;
  --container-text: 44rem;
  --header-height: 4.75rem;

  --space-2xs: 0.35rem;
  --space-xs: 0.6rem;
  --space-sm: 1rem;
  --space-md: 1.5rem;
  --space-lg: 2.5rem;
  --space-xl: 4.5rem;
  --space-2xl: 7rem;

  --radius-sm: 10px;
  --radius-md: 16px;
  --radius-lg: 24px;
  --radius-pill: 999px;

  --transition: 200ms ease;
  --shadow-card: 0 20px 45px rgba(0, 0, 0, 0.35);
}

/* 2. Base elements
   ========================================================================== */

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

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background: var(--surface-base);
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

img {
  display: block;
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

h1,
h2,
h3,
h4,
p,
ul,
ol,
dl,
dd,
figure,
blockquote {
  margin: 0;
}

ul,
ol {
  padding: 0;
  list-style: none;
}

:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 3px;
}

h1,
h2,
h3 {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.05;
}

h1 {
  font-size: clamp(2.5rem, 5.5vw, 4rem);
}

h2 {
  font-size: clamp(1.9rem, 3.4vw, 2.75rem);
}

h3 {
  font-size: 1.2rem;
  line-height: 1.25;
}

.accent {
  color: var(--color-primary);
}

.lede {
  max-width: 36rem;
  margin-top: var(--space-md);
  color: var(--color-muted);
  font-size: 1.05rem;
}

.section__intro--center .lede,
.closing p {
  margin-inline: auto;
}

.placeholder-note {
  margin-top: var(--space-sm);
  color: var(--color-muted);
  font-size: 0.85rem;
}

.skip-link {
  position: absolute;
  left: 1rem;
  top: -4rem;
  z-index: 60;
  padding: 0.6rem 0.9rem;
  border-radius: var(--radius-pill);
  background: var(--color-primary);
  color: var(--color-primary-ink);
  text-decoration: none;
  font-weight: 600;
}

.skip-link:focus {
  top: 1rem;
}

/* 3. Layout helpers
   ========================================================================== */

.wrap,
.wrap--wide {
  width: min(100% - 2.5rem, var(--container));
  margin-inline: auto;
}

.wrap--text {
  width: min(100% - 2.5rem, var(--container-text));
  margin-inline: auto;
}

.section {
  padding: var(--space-xl) 0;
}

.section--tight {
  padding: var(--space-lg) 0;
}

.section--flush {
  padding-top: 0;
}

.section--band {
  background: var(--surface-raised);
}

.section--dark {
  background: var(--surface-raised);
}

.section__intro {
  /* Wide enough to keep a two-word-per-line heading on one line, while the
     lede inside stays at its own narrower measure. */
  max-width: 52rem;
  margin-bottom: var(--space-lg);
}

.section__intro--center {
  margin-inline: auto;
  text-align: center;
}

.stack {
  margin-top: var(--space-lg);
}

.eyebrow {
  display: inline-block;
  margin-bottom: var(--space-sm);
  color: var(--color-primary);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.eyebrow--plain {
  padding: 0;
  border: 0;
  background: none;
}

/* 4. Buttons and pills
   ========================================================================== */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  min-height: 2.9rem;
  padding: 0.65rem 1.3rem;
  border: 1px solid transparent;
  border-radius: var(--radius-pill);
  font-size: 0.95rem;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: background var(--transition), border-color var(--transition), color var(--transition);
}

.btn--primary {
  background: var(--color-primary);
  color: var(--color-primary-ink);
}

.btn--primary:hover {
  background: var(--color-primary-soft);
}

.btn__spinner {
  display: none;
  width: 1rem;
  height: 1rem;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: btn-spin 700ms linear infinite;
}

.btn.is-loading {
  pointer-events: none;
}

.btn.is-loading .btn__spinner {
  display: inline-block;
}

.btn.is-loading .btn__spinner[hidden] {
  display: inline-block;
}

.btn--ghost {
  border-color: rgba(254, 172, 23, 0.45);
  background: rgba(255, 255, 255, 0.04);
  color: var(--color-text);
}

.btn--ghost:hover {
  border-color: var(--color-primary);
  background: var(--color-primary);
  color: var(--color-primary-ink);
}

.btn--dark {
  background: var(--color-primary);
  color: var(--color-primary-ink);
}

.btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem;
  margin-top: var(--space-md);
}

.pill-list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  row-gap: 0.3rem;
  margin-top: var(--space-lg);
  color: var(--color-muted);
  font-size: 0.88rem;
}

.pill-list li:not(:last-child)::after {
  content: "·";
  margin: 0 0.7rem;
  color: var(--color-primary);
  opacity: 0.7;
}

/* 5. Header and navigation
   ========================================================================== */

.site-header {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: var(--header-height);
  padding: 0.45rem max(1.25rem, calc((100% - var(--container-wide)) / 2));
  background: rgba(11, 2, 25, 0.88);
  border-bottom: 1px solid var(--surface-line);
}

/* The blur lives on a pseudo-element so the header does not become a
   containing block for the fixed mobile navigation overlay. */
.site-header::before {
  position: absolute;
  inset: 0;
  z-index: -1;
  backdrop-filter: blur(10px);
  content: "";
}

.logo {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
}

/* The lockup already contains the wordmark, so the height is set and the
   width follows the artwork's aspect ratio. Kept close to the nav text size
   so the circle does not dominate the bar. */
.logo img {
  display: block;
  width: auto;
  height: 2.7rem;
}

/* After the page scrolls, the bar firms up so it reads as a fixed layer. */
.site-header.is-scrolled {
  background: rgba(11, 2, 25, 0.94);
  box-shadow: 0 10px 30px -20px rgba(0, 0, 0, 0.8);
}

.nav-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.45rem 0.8rem;
  border: 1px solid var(--surface-line-strong);
  border-radius: var(--radius-pill);
  background: transparent;
  font-size: 0.9rem;
  cursor: pointer;
}

.nav-toggle__bars,
.nav-toggle__bars::before,
.nav-toggle__bars::after {
  display: block;
  width: 1rem;
  height: 1px;
  background: currentColor;
  content: "";
}

.nav-toggle__bars {
  position: relative;
}

.nav-toggle__bars::before,
.nav-toggle__bars::after {
  position: absolute;
  left: 0;
}

.nav-toggle__bars::before {
  top: -5px;
}

.nav-toggle__bars::after {
  top: 5px;
}

.site-nav {
  display: none;
}

.site-nav.is-open {
  display: flex;
  position: fixed;
  inset: 0;
  z-index: 50;
  flex-direction: column;
  gap: 1.25rem;
  padding: 1rem 1.5rem 2rem;
  background: var(--surface-base);
  overflow: auto;
}

.site-nav__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.site-nav__close {
  padding: 0.45rem 0.8rem;
  border: 1px solid var(--surface-line-strong);
  border-radius: var(--radius-pill);
  background: transparent;
  cursor: pointer;
}

.site-nav__list {
  display: grid;
  gap: 0.15rem;
}

.site-nav__list > li > a,
.nav-sub__toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 0.8rem 0;
  border: 0;
  border-bottom: 1px solid var(--surface-line);
  background: transparent;
  color: inherit;
  text-align: left;
  text-decoration: none;
  font-family: var(--font-display);
  font-size: 1.45rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  cursor: pointer;
}

.site-nav__list a.is-current {
  color: var(--color-primary);
}

.nav-sub__panel {
  display: none;
}

.nav-sub.is-open .nav-sub__panel {
  display: grid;
  gap: 0.2rem;
  padding: 0.5rem 0 0.75rem;
}

.nav-sub__panel a {
  display: grid;
  gap: 0.1rem;
  padding: 0.5rem 0;
  color: var(--color-muted);
  text-decoration: none;
}

.nav-sub__panel strong {
  color: var(--color-text);
  font-weight: 600;
}

.nav-sub__panel span {
  font-size: 0.88rem;
}

.nav-cta {
  margin-top: auto;
}

/* 6. Hero
   ========================================================================== */

.hero {
  position: relative;
  padding: var(--space-xl) 0 var(--space-lg);
  background: var(--surface-base);
  overflow: hidden;
}

/* Hero and page heroes share a quiet backdrop: a faint dot grid that fades
   out towards the edges, and one soft glow that drifts very slowly. The
   glow also eases upward a little on scroll (see --scroll-y in main.js). */
.hero::before,
.page-hero::before {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image: radial-gradient(rgba(255, 255, 255, 0.09) 1px, transparent 1.2px);
  background-size: 26px 26px;
  mask-image: radial-gradient(60% 70% at 30% 20%, #000 0%, transparent 100%);
  pointer-events: none;
  content: "";
}

.hero::after,
.page-hero::after {
  position: absolute;
  top: -22rem;
  left: -10rem;
  z-index: 0;
  width: 60rem;
  height: 44rem;
  background: radial-gradient(closest-side, rgba(254, 172, 23, 0.16), transparent 70%);
  translate: 0 calc(var(--scroll-y, 0) * -0.08px);
  animation: glow-drift 22s ease-in-out infinite alternate;
  pointer-events: none;
  content: "";
}

.hero > *,
.page-hero > * {
  position: relative;
  z-index: 1;
}

.hero__copy {
  max-width: 46rem;
}

.hero__grid {
  display: grid;
  gap: var(--space-lg);
  align-items: center;
}

.hero__reel {
  position: relative;
  display: block;
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--surface-line-strong);
  box-shadow: 0 40px 80px -40px rgba(0, 0, 0, 0.9);
  transform: perspective(1200px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
  transition: transform 300ms ease;
}

.hero__reel video {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background: var(--surface-card);
}

.hero__reel-tag {
  position: absolute;
  left: 0.9rem;
  bottom: 0.9rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.45rem 0.8rem 0.45rem 0.65rem;
  border-radius: var(--radius-pill);
  background: rgba(11, 2, 25, 0.78);
  backdrop-filter: blur(8px);
  color: var(--color-text);
  font-size: 0.8rem;
  font-weight: 600;
}

.hero__reel-tag .icon {
  color: var(--color-primary);
}

.hero__reel-tag span {
  color: var(--color-muted);
  font-weight: 500;
}

.hero__reel-tag span::before {
  margin-right: 0.5rem;
  content: "·";
}

.hero h1 {
  font-size: clamp(2.6rem, 6vw, 4.25rem);
}

.hero__terminal {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-top: var(--space-md);
  color: var(--color-muted);
  font-family: var(--font-mono);
  font-size: 0.82rem;
}

.hero__dots {
  display: inline-flex;
  gap: 0.25rem;
}

.hero__dots i {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: var(--color-primary);
}

.hero__dots i:nth-child(2) {
  background: #7a6b96;
}

.hero__dots i:nth-child(3) {
  background: #43335f;
}

/* Homepage showreel: a central film with client marks in orbit.
   Distinct from the overlapping video tiles and the device collage. */
.hero--stage .hero-stage {
  --r: 8rem;
  --orbit-ms: 42s;
  position: relative;
  isolation: isolate;
  width: 100%;
  min-height: 24rem;
  margin-inline: auto;
}

.hero-stage__ring,
.hero-stage__dust {
  position: absolute;
  top: 50%;
  left: 50%;
  border-radius: 50%;
  pointer-events: none;
}

.hero-stage__ring {
  width: calc(var(--r) * 2);
  height: calc(var(--r) * 2);
  translate: -50% -50%;
  border: 1px dashed rgba(254, 172, 23, 0.28);
  box-shadow:
    0 0 0 14px rgba(254, 172, 23, 0.04),
    inset 0 0 40px rgba(254, 172, 23, 0.06);
}

.hero-stage__dust {
  width: calc(var(--r) * 2.42);
  height: calc(var(--r) * 2.42);
  translate: -50% -50%;
  border: 1px dotted rgba(255, 255, 255, 0.12);
  animation: orbit-spin calc(var(--orbit-ms) * 1.6) linear infinite reverse;
}

.hero-stage__orbit {
  position: absolute;
  inset: 0;
  animation: orbit-spin var(--orbit-ms) linear infinite;
  pointer-events: none;
  z-index: 2;
}

.hero-stage__slot {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  transform: rotate(calc(var(--i) * 360deg / var(--n))) translateY(calc(var(--r) * -1))
    rotate(calc(var(--i) * -360deg / var(--n)));
}

.hero-stage__mark {
  position: absolute;
  top: 0;
  left: 0;
  display: grid;
  place-items: center;
  width: 3.15rem;
  height: 3.15rem;
  padding: 0.38rem;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.16);
  background: rgba(21, 7, 48, 0.82);
  box-shadow:
    0 10px 24px rgba(0, 0, 0, 0.35),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
  backdrop-filter: blur(10px);
  translate: -50% -50%;
  animation: orbit-counter var(--orbit-ms) linear infinite;
}

.hero-stage__mark img {
  display: block;
  width: auto;
  max-width: 2.15rem;
  height: auto;
  max-height: 1.15rem;
}

.hero-stage__screen {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 3;
  width: min(12.25rem, 50%);
  overflow: hidden;
  aspect-ratio: 16 / 9;
  border-radius: var(--radius-md);
  border: 1px solid var(--surface-line-strong);
  background: var(--surface-card);
  box-shadow:
    0 30px 70px -28px rgba(0, 0, 0, 0.92),
    0 0 0 1px rgba(254, 172, 23, 0.12);
  translate: -50% -50%;
  transform: perspective(1200px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg));
  transition:
    transform 300ms ease,
    aspect-ratio 520ms ease;
}

.hero-stage__screen:has(.hero-stage__slide.is-active[data-wide]) {
  aspect-ratio: 1024 / 467;
}

.hero-stage__screen.has-link {
  cursor: pointer;
}

.hero-stage__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  transition:
    opacity 520ms ease,
    visibility 520ms ease;
}

.hero-stage__slide.is-active {
  z-index: 1;
  opacity: 1;
  visibility: visible;
}

.hero-stage__slide video,
.hero-stage__slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
  background: var(--surface-card);
}

.hero-stage__shine {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(
    105deg,
    transparent 36%,
    rgba(255, 255, 255, 0.16) 48%,
    transparent 60%
  );
  background-size: 220% 100%;
  animation: stage-shine 7.5s ease-in-out infinite;
  pointer-events: none;
}

.hero-stage__tag {
  position: absolute;
  left: 0.7rem;
  bottom: 0.7rem;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.38rem 0.72rem 0.38rem 0.55rem;
  border-radius: var(--radius-pill);
  background: rgba(11, 2, 25, 0.78);
  backdrop-filter: blur(8px);
  color: var(--color-text);
  font-size: 0.78rem;
  font-weight: 600;
}

.hero-stage__live {
  width: 0.48rem;
  height: 0.48rem;
  border-radius: 50%;
  background: var(--color-primary);
  box-shadow: 0 0 0 0 rgba(254, 172, 23, 0.7);
  animation: live-pulse 1.8s ease-out infinite;
}

.hero-stage__sat {
  position: absolute;
  z-index: 4;
  width: 5.6rem;
  overflow: hidden;
  border-radius: 0.7rem;
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: var(--surface-card);
  box-shadow: 0 16px 32px -14px rgba(0, 0, 0, 0.85);
  pointer-events: none;
}

.hero-stage__sat img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: top center;
  background: #1a0b38;
}

.hero-stage__sat--tablet {
  padding: 0.3rem 0.28rem 0.34rem;
  overflow: hidden;
  border-radius: 0.85rem;
  background: #16101f;
  box-shadow:
    0 16px 32px -14px rgba(0, 0, 0, 0.85),
    inset 0 0 0 1px rgba(255, 255, 255, 0.08);
}

.hero-stage__sat--tablet img {
  aspect-ratio: 3 / 4;
  object-fit: cover;
  object-position: top center;
  border-radius: 0.38rem;
}

.hero-stage__sat b {
  position: absolute;
  left: 0.35rem;
  right: 0.35rem;
  bottom: 0.35rem;
  padding: 0.2rem 0.35rem;
  border-radius: 99px;
  background: rgba(11, 2, 25, 0.78);
  color: var(--color-text);
  font-size: 0.52rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-align: center;
}

.hero-stage__sat--a {
  left: 0;
  top: 38%;
  rotate: -12deg;
  animation: chip-drift-a 6.8s ease-in-out infinite;
}

.hero-stage__sat--b {
  right: 0;
  top: 22%;
  rotate: 10deg;
  animation: chip-drift-b 7.6s ease-in-out infinite;
}

.hero-stage__sat--c {
  right: 8%;
  bottom: 0.2rem;
  width: 6.2rem;
  rotate: -7deg;
  animation: chip-drift-c 8.2s ease-in-out infinite;
}

.hero-stage__chip {
  position: absolute;
  z-index: 4;
  padding: 0.32rem 0.7rem;
  border-radius: var(--radius-pill);
  border: 1px solid rgba(254, 172, 23, 0.35);
  background: rgba(21, 7, 48, 0.88);
  color: var(--color-primary);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  pointer-events: none;
  backdrop-filter: blur(8px);
}

.hero-stage__chip--build {
  top: 1.1rem;
  left: 0;
  animation: chip-drift-a 6.5s ease-in-out infinite;
}

.hero-stage__chip--create {
  top: 2.4rem;
  right: 0.2rem;
  animation: chip-drift-b 7.4s ease-in-out infinite;
}

.hero-stage__chip--grow {
  bottom: 2.8rem;
  left: 0.15rem;
  animation: chip-drift-c 8s ease-in-out infinite;
}

/* 7. Cards and grids
   ========================================================================== */

.card-grid,
.work-grid,
.insight-grid,
.archive-grid,
.work-index,
.team-grid,
.video-grid,
.process-list,
.proof-grid,
.gallery,
.post-list,
.split,
.intro-grid,
.why-grid,
.footer-grid,
.stat-row,
.meta-row,
.service-feature {
  display: grid;
  gap: var(--space-md);
}

.card {
  display: grid;
  gap: 0.5rem;
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
  text-decoration: none;
  transition: border-color var(--transition), transform var(--transition);
}

.card:hover {
  border-color: rgba(254, 172, 23, 0.55);
  transform: translateY(-2px);
}

.card--static {
  cursor: default;
}

.card--static:hover {
  border-color: var(--surface-line);
  transform: none;
}

.card--static:hover::after {
  opacity: 0;
}

.card__index {
  color: var(--color-primary);
  font-family: var(--font-mono);
  font-size: 0.8rem;
}

.card p {
  color: var(--color-muted);
  font-size: 0.97rem;
}

.card__go {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.35rem;
  color: var(--color-primary);
  font-size: 0.9rem;
  font-weight: 600;
}

.card__go .icon {
  transition: translate var(--transition);
}

.card:hover .card__go .icon {
  translate: 3px 0;
}

.card__icon,
.why-list__icon {
  display: inline-grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border: 1px solid rgba(254, 172, 23, 0.35);
  border-radius: 12px;
  background: rgba(254, 172, 23, 0.1);
  color: var(--color-primary);
}

.card--service {
  position: relative;
  gap: 0.65rem;
  padding-top: var(--space-lg);
  overflow: hidden;
}

.card--service::after {
  position: absolute;
  right: -3rem;
  top: -3rem;
  width: 9rem;
  height: 9rem;
  border-radius: 50%;
  background: radial-gradient(closest-side, rgba(254, 172, 23, 0.14), transparent);
  opacity: 0;
  transition: opacity var(--transition);
  pointer-events: none;
  content: "";
}

.card--service:hover::after {
  opacity: 1;
}

.card--service h3 {
  margin-top: 0.35rem;
}

/* Proof strip and reviews */

.proof-strip {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-lg);
  background: var(--surface-line);
  overflow: hidden;
}

.proof-strip--pair {
  max-width: 40rem;
}

.proof-strip div {
  padding: 1.35rem 1.4rem;
  background: var(--surface-base);
}

.proof-strip dt {
  color: var(--color-muted);
  font-size: 0.8rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.proof-strip dd {
  margin-top: 0.3rem;
  color: var(--color-primary);
  font-size: clamp(1.7rem, 3vw, 2.3rem);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.1;
}

.review-grid {
  display: grid;
  gap: var(--space-md);
  margin-top: var(--space-lg);
}

.review {
  position: relative;
  display: grid;
  gap: 1rem;
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
}

.review__mark {
  color: var(--color-primary);
}

.review blockquote p {
  color: var(--color-text);
  font-size: 0.98rem;
  line-height: 1.6;
}

.review figcaption {
  display: grid;
  padding-top: 0.9rem;
  border-top: 1px solid var(--surface-line);
  font-size: 0.9rem;
}

.review figcaption span {
  color: var(--color-muted);
}

/* Why split */

.why-split {
  display: grid;
  gap: var(--space-lg);
  align-items: start;
}

.why-split__lead .btn {
  margin-top: var(--space-md);
}

.why-list--icons li {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1rem;
  align-items: start;
}

.card--group {
  border-color: rgba(254, 172, 23, 0.35);
}

.group-label {
  margin-bottom: var(--space-sm);
  color: var(--color-muted);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

/* Work cards */

.work-card,
.work-item,
.archive-card,
.insight-card,
.post-card {
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
  overflow: hidden;
  transition: border-color var(--transition), transform var(--transition);
}

.work-card:hover,
.work-item:hover,
.archive-card:hover,
.insight-card:hover,
.post-card:hover {
  border-color: rgba(254, 172, 23, 0.55);
  transform: translateY(-2px);
}

.work-card {
  display: flex;
}

.work-card a,
.work-item a,
.archive-card a,
.insight-card a,
.post-card a,
.featured-post a {
  display: block;
  color: inherit;
  text-decoration: none;
}

.work-card a {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-height: 100%;
}

.archive-card img,
.insight-card img,
.post-card img {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}

.work-card__logo,
.work-item__logo {
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, 0.02);
}

.work-card__logo {
  min-height: 4.75rem;
  min-width: 0;
  padding: 1.1rem 1.2rem;
  overflow: hidden;
  border-bottom: 1px solid var(--surface-line);
}

.work-item {
  display: flex;
}

.work-item[hidden],
.post-card[hidden],
.featured-post[hidden],
.terms-panel[hidden] {
  display: none;
}

.work-item a {
  display: grid;
  grid-template-columns: 7.5rem minmax(0, 1fr);
  align-items: stretch;
  flex: 1 1 auto;
  width: 100%;
  min-height: 8.5rem;
}

.work-item__logo {
  box-sizing: border-box;
  min-width: 0;
  min-height: 100%;
  padding: 1rem 1.1rem;
  overflow: hidden;
  border-right: 1px solid var(--surface-line);
}

.work-card__logo img,
.work-item__logo img,
.case-brand img {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 1.7rem;
  object-fit: contain;
  object-position: center;
  opacity: 0.78;
}

.work-item__logo span,
.work-card__logo span {
  color: var(--color-muted);
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.work-item .card-body {
  display: grid;
  align-content: center;
  gap: 0.3rem;
  min-width: 0;
  padding: 1.1rem 1.25rem;
}

.work-item .card-body h2 {
  display: -webkit-box;
  overflow: hidden;
  min-height: calc(1.05rem * 1.35 * 2);
  font-size: 1.05rem;
  line-height: 1.35;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
}

.work-item .work-meta {
  display: -webkit-box;
  overflow: hidden;
  min-height: calc(0.93rem * 1.45 * 2);
  line-height: 1.45;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
}

.work-item:hover,
.work-card:hover {
  border-color: rgba(254, 172, 23, 0.4);
}

.work-item--next,
.work-card--next {
  border-color: rgba(254, 172, 23, 0.45);
  background:
    radial-gradient(18rem 10rem at 100% 0%, rgba(254, 172, 23, 0.12), transparent 70%),
    var(--surface-card);
}

.work-next__mark {
  display: grid;
  place-items: center;
  width: 2.4rem;
  height: 2.4rem;
  border: 1px solid rgba(254, 172, 23, 0.4);
  border-radius: 12px;
  background: rgba(254, 172, 23, 0.12);
  color: var(--color-primary);
}

.case-brand {
  margin-bottom: var(--space-md);
}

.case-brand img {
  max-height: 1.85rem;
  max-width: 9rem;
}

.case-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 1.15rem 2.1rem;
  margin-top: var(--space-md);
  padding-top: var(--space-md);
  border-top: 1px solid var(--surface-line);
}

.case-meta dt {
  margin-bottom: 0.25rem;
  color: var(--color-muted);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.case-meta dd {
  max-width: 22rem;
  font-size: 0.95rem;
}

.card-body {
  padding: var(--space-md);
}

.card-body h2,
.card-body h3,
.post-card h2,
.featured-post h2 {
  margin-bottom: 0.35rem;
  font-size: 1.3rem;
}

.featured-post h2 {
  font-size: clamp(1.5rem, 2.5vw, 2rem);
}

.card-body p:not(.eyebrow),
.work-meta,
.insight-card p,
.post-card p,
.team-card p {
  color: var(--color-muted);
  font-size: 0.93rem;
}

.card-body p + p {
  margin-top: 0.5rem;
}

.work-meta strong {
  color: var(--color-text);
}

.tag {
  display: inline-block;
  margin-bottom: 0.6rem;
  color: var(--color-primary);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* Process */

.process-list li {
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
}

.process-list span {
  display: block;
  margin-bottom: 0.5rem;
  color: var(--color-primary);
  font-family: var(--font-mono);
  font-size: 0.82rem;
}

.process-list strong {
  display: block;
  margin-bottom: 0.3rem;
  font-size: 1.1rem;
  font-weight: 600;
}

.process-list p {
  color: var(--color-muted);
  font-size: 0.95rem;
}

/* Why list */

.why-list {
  display: grid;
  gap: var(--space-md);
}

.why-list li {
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
  color: var(--color-muted);
}

.why-list strong {
  display: block;
  margin-bottom: 0.35rem;
  color: var(--color-text);
  font-size: 1.1rem;
  font-weight: 600;
}

.compare {
  display: grid;
  gap: var(--space-md);
}

.compare__col {
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
}

.compare__col h3 {
  margin-bottom: var(--space-sm);
}

.compare__col li {
  padding: 0.65rem 0;
  border-top: 1px solid var(--surface-line);
  color: var(--color-text);
}

.compare__col li:first-of-type {
  border-top: 0;
  padding-top: 0;
}

.compare__col--muted {
  background: transparent;
}

.compare__col--muted li {
  color: var(--color-muted);
}

.device-grid {
  display: grid;
  gap: var(--space-xl);
}

.device-pair {
  position: relative;
  margin: 0;
}

.device-pair__desktop {
  overflow: hidden;
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-lg);
  background: var(--surface-card);
  box-shadow: var(--shadow-card);
}

.device-pair__bar {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  height: 1.25rem;
  padding: 0 0.7rem;
  background: #100526;
  border-bottom: 1px solid var(--surface-line);
}

.device-pair__bar i {
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.16);
}

.device-pair__bar i:nth-child(1) {
  background: #ff5f57;
}

.device-pair__bar i:nth-child(2) {
  background: #febc2e;
}

.device-pair__bar i:nth-child(3) {
  background: #28c840;
}

.device-pair__desktop img {
  display: block;
  width: 100%;
  aspect-ratio: 1024 / 467;
  object-fit: cover;
  object-position: top center;
}

.device-pair__phone {
  position: absolute;
  right: 5%;
  bottom: 0;
  z-index: 2;
  width: 22%;
  min-width: 5.6rem;
  padding: 0.3rem 0.28rem 0.5rem;
  border-radius: 1.1rem;
  background: #07010f;
  border: 1px solid var(--surface-line-strong);
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.5);
  transition: transform 400ms ease;
}

.device-pair:has(> a):hover .device-pair__phone {
  transform: translateY(-0.5rem);
}

.device-pair:has(> a) {
  cursor: pointer;
}

.device-pair__phone img {
  display: block;
  width: 100%;
  aspect-ratio: 575 / 1024;
  object-fit: cover;
  object-position: top center;
  border-radius: 0.78rem;
}

.device-pair__phone::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0.22rem;
  width: 30%;
  height: 0.16rem;
  border-radius: 99px;
  background: rgba(255, 255, 255, 0.22);
  transform: translateX(-50%);
}

.device-pair figcaption {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  max-width: 68%;
  margin-top: 2.4rem;
}

.device-pair figcaption strong {
  color: var(--color-text);
  font-size: 1.05rem;
  font-weight: 600;
}

.device-pair figcaption span {
  color: var(--color-muted);
  font-size: 0.9rem;
}

.device-pair--featured .device-pair__desktop {
  box-shadow: 0 28px 64px rgba(0, 0, 0, 0.45);
}

.chart-frame {
  max-width: 40rem;
  margin: 0 0 var(--space-lg);
}

.chart-frame__stage {
  overflow: hidden;
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-lg);
  background: #ffffff;
  box-shadow: var(--shadow-card);
}

.chart-frame__stage .device-pair__bar {
  background: #f3f4f6;
  border-bottom-color: rgba(0, 0, 0, 0.08);
}

.chart-frame img {
  display: block;
  width: 100%;
  height: auto;
}

.chart-frame figcaption,
.chart-frame__caption {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  margin-top: 1.1rem;
}

.chart-frame figcaption strong,
.chart-frame__caption strong {
  color: var(--color-text);
  font-size: 1.05rem;
  font-weight: 600;
}

.chart-frame figcaption span,
.chart-frame__caption span {
  color: var(--color-muted);
  font-size: 0.9rem;
}

a.chart-frame {
  display: block;
  color: inherit;
  text-decoration: none;
}

a.chart-frame:hover .chart-frame__stage {
  border-color: rgba(254, 172, 23, 0.45);
}

.chart-frame + .proof-grid {
  max-width: 40rem;
  margin-bottom: var(--space-lg);
}

.device-pair__link {
  display: block;
  color: inherit;
  text-decoration: none;
}

.device-pair__cta {
  display: inline-block;
  margin-top: 0.35rem;
  color: var(--color-primary);
  font-size: 0.86rem;
  font-weight: 600;
}

.page-hero--split {
  padding-bottom: var(--space-lg);
}

.page-hero__grid {
  display: grid;
  gap: var(--space-md);
  align-items: center;
}

.page-hero__copy {
  max-width: 40rem;
}

.page-hero__media {
  width: min(100%, 22rem);
  min-width: 0;
}

.page-hero__media .device-pair {
  margin: 0;
}

.page-hero__media .device-pair__phone {
  display: none;
}

.page-hero__media .device-pair figcaption,
.page-hero__media .chart-frame__caption {
  max-width: none;
  margin-top: 0.7rem;
}

.page-hero__media .hero__reel {
  display: block;
  box-shadow: 0 16px 32px -24px rgba(0, 0, 0, 0.85);
}

.page-hero--montage {
  z-index: 1;
  overflow: visible;
  padding-bottom: var(--space-xl);
}

.page-hero--montage .page-hero__media {
  width: min(100%, 24rem);
  max-width: none;
  margin-inline: auto;
}

.page-hero--seo {
  z-index: 1;
  overflow: visible;
  padding-bottom: var(--space-xl);
}

.page-hero--seo .page-hero__media {
  width: min(100%, 36rem);
  max-width: none;
}

.page-hero--seo .seo-graph {
  margin: 0;
}

.hero-montage {
  position: relative;
  height: 22.5rem;
  isolation: isolate;
}

.hero-montage::before {
  content: "";
  position: absolute;
  inset: 10% 6% 6% 8%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(254, 172, 23, 0.24), transparent 68%);
  filter: blur(30px);
  pointer-events: none;
  z-index: 0;
  animation: glow-drift 22s ease-in-out alternate infinite;
}

.hero-montage__tile {
  position: absolute;
  display: block;
  color: inherit;
  text-decoration: none;
  transition: transform 280ms ease;
}

.hero-montage__tile:not(a) {
  pointer-events: none;
}

a.hero-montage__tile {
  cursor: pointer;
}

.hero-montage__tile:focus-visible {
  outline: none;
}

.hero-montage__frame {
  display: block;
  overflow: hidden;
  border-radius: 1.05rem;
  border: 1px solid rgba(255, 255, 255, 0.22);
  box-shadow:
    0 18px 40px -18px rgba(0, 0, 0, 0.88),
    0 0 0 1px rgba(254, 172, 23, 0.12);
  background: var(--surface-card);
  transition:
    border-color 280ms ease,
    box-shadow 280ms ease;
}

.hero-montage__frame video,
.hero-montage__frame img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.04);
  animation: montage-push 16s ease-in-out alternate infinite;
}

.hero-montage--sites .hero-montage__frame img {
  object-position: top center;
}

.hero-montage--sites .hero-montage__tile--lead:not(.hero-montage__tile--tablet) .hero-montage__frame,
.hero-montage--sites .hero-montage__tile--inset:not(.hero-montage__tile--tablet) .hero-montage__frame,
.hero-montage--sites .hero-montage__tile--peek:not(.hero-montage__tile--tablet) .hero-montage__frame,
.hero-montage--sites .hero-montage__tile--deck .hero-montage__frame {
  display: flex;
  flex-direction: column;
}

.hero-montage--sites .hero-montage__tile--lead:not(.hero-montage__tile--tablet) .hero-montage__frame img,
.hero-montage--sites .hero-montage__tile--inset:not(.hero-montage__tile--tablet) .hero-montage__frame img,
.hero-montage--sites .hero-montage__tile--peek:not(.hero-montage__tile--tablet) .hero-montage__frame img,
.hero-montage--sites .hero-montage__tile--deck .hero-montage__frame img {
  flex: 1;
  min-height: 0;
  height: auto;
}

.hero-montage--sites .hero-montage__tile--portrait {
  width: 30%;
}

.hero-montage--sites .hero-montage__tile--portrait .hero-montage__frame,
.hero-montage--sites .hero-montage__tile--handset .hero-montage__frame {
  position: relative;
  aspect-ratio: 9 / 17;
  border-radius: 1.15rem;
  background: #07010f;
}

.hero-montage--sites .hero-montage__tile--portrait .hero-montage__frame::after,
.hero-montage--sites .hero-montage__tile--handset .hero-montage__frame::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0.16rem;
  width: 28%;
  height: 0.14rem;
  border-radius: 99px;
  background: rgba(255, 255, 255, 0.22);
  transform: translateX(-50%);
}

.hero-montage--sites .hero-montage__tile--portrait img,
.hero-montage--sites .hero-montage__tile--handset img {
  position: absolute;
  top: 0.32rem;
  right: 0.28rem;
  bottom: 0.5rem;
  left: 0.28rem;
  width: calc(100% - 0.56rem);
  height: calc(100% - 0.82rem);
  border-radius: 0.78rem;
  transform: none;
  animation: none;
}

.hero-montage--sites .hero-montage__tile--tablet .hero-montage__frame {
  position: relative;
  display: block;
  aspect-ratio: 3 / 4;
  overflow: hidden;
  border-radius: 1rem;
  background: #16101f;
  box-shadow:
    0 18px 40px -18px rgba(0, 0, 0, 0.88),
    inset 0 0 0 0.38rem #2a2038;
}

.hero-montage--sites .hero-montage__tile--tablet .hero-montage__frame::before {
  content: "";
  position: absolute;
  top: 0.14rem;
  left: 50%;
  z-index: 2;
  width: 0.3rem;
  height: 0.3rem;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.16);
  transform: translateX(-50%);
}

.hero-montage--sites .hero-montage__tile--tablet img {
  position: absolute;
  top: 0.42rem;
  right: 0.38rem;
  bottom: 0.42rem;
  left: 0.38rem;
  width: calc(100% - 0.76rem);
  height: calc(100% - 0.84rem);
  object-fit: cover;
  object-position: top center;
  border-radius: 0.4rem;
  transform: none;
  animation: none;
}

.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--lead {
  left: 21%;
  top: 10%;
  width: 50%;
  z-index: 4;
  transform: rotate(-2.5deg);
}

.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--lead:hover,
.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--lead:focus-visible {
  transform: rotate(-2.5deg) scale(1.04);
}

.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--peek {
  left: 3%;
  top: 5%;
  width: 27%;
  z-index: 2;
  transform: rotate(-8deg);
}

.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--peek:hover,
.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--peek:focus-visible {
  transform: rotate(-8deg) scale(1.05);
}

.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--inset {
  right: 3%;
  bottom: -6%;
  width: 23%;
  z-index: 3;
  transform: rotate(4.5deg);
}

.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--inset:hover,
.hero-montage--sites .hero-montage__tile--tablet.hero-montage__tile--inset:focus-visible {
  transform: rotate(5deg) scale(1.05);
}

.hero-montage--sites .hero-montage__tile--portrait {
  right: 5%;
  top: 3%;
  width: 22%;
  z-index: 5;
  transform: rotate(7.5deg);
}

.hero-montage--sites .hero-montage__tile--portrait:hover,
.hero-montage--sites .hero-montage__tile--portrait:focus-visible {
  transform: rotate(7.5deg) scale(1.05);
}

.hero-montage--sites .hero-montage__tile--handset {
  left: 8%;
  bottom: 1%;
  width: 21%;
  z-index: 6;
  transform: rotate(6deg);
}

.hero-montage--sites .hero-montage__tile--handset:hover,
.hero-montage--sites .hero-montage__tile--handset:focus-visible {
  transform: rotate(6deg) scale(1.05);
}

.hero-montage__tile--handset {
  left: 5%;
  bottom: 0;
  width: 24%;
  z-index: 5;
  transform: rotate(5.5deg);
}

.hero-montage__tile--handset .hero-montage__frame {
  aspect-ratio: 9 / 17;
  animation: montage-float-a 9s ease-in-out infinite;
}

.hero-montage__tile--handset:hover,
.hero-montage__tile--handset:focus-visible {
  transform: rotate(5.5deg) scale(1.06);
}

.hero-montage__tile--lead {
  left: 0;
  top: 22%;
  width: 78%;
  z-index: 2;
  transform: rotate(-4.5deg);
}

.hero-montage__tile--lead .hero-montage__frame {
  aspect-ratio: 16 / 9;
  animation: montage-float-a 7.2s ease-in-out infinite;
}

.hero-montage__tile--portrait {
  right: 0;
  top: 0;
  width: 36%;
  z-index: 3;
  transform: rotate(7deg);
}

.hero-montage__tile--portrait .hero-montage__frame {
  aspect-ratio: 3 / 4;
  animation: montage-float-b 8.4s ease-in-out infinite;
}

.hero-montage__tile--portrait video {
  object-position: 28% 42%;
}

.hero-montage__tile--inset video {
  object-position: 50% 50%;
}

.hero-montage__tile--inset {
  right: 1%;
  bottom: 0;
  width: 54%;
  z-index: 4;
  transform: rotate(-7deg);
}

.hero-montage__tile--inset .hero-montage__frame {
  aspect-ratio: 16 / 9;
  animation: montage-float-c 6.6s ease-in-out infinite;
}

.hero-montage__tile--peek {
  left: -2%;
  top: 0;
  width: 40%;
  z-index: 3;
  transform: rotate(-8.5deg);
}

.hero-montage__tile--peek .hero-montage__frame {
  aspect-ratio: 16 / 9;
  animation: montage-float-c 7.8s ease-in-out infinite;
}

.hero-montage__tile--deck {
  left: 6%;
  bottom: -2%;
  width: 36%;
  z-index: 5;
  transform: rotate(6.5deg);
}

.hero-montage__tile--deck .hero-montage__frame {
  aspect-ratio: 16 / 9;
  animation: montage-float-b 8s ease-in-out infinite;
}

.hero-montage__tile--tall {
  width: 28%;
}

.hero-montage__tile--tall .hero-montage__frame {
  aspect-ratio: 9 / 16;
}

.hero-montage__tile--tall video {
  object-position: 50% 18%;
}

.hero-montage__label {
  position: absolute;
  left: 0.55rem;
  bottom: 0.55rem;
  padding: 0.28rem 0.55rem;
  border-radius: var(--radius-pill);
  background: rgba(11, 2, 25, 0.78);
  backdrop-filter: blur(8px);
  color: var(--color-text);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  opacity: 0;
  transform: translateY(4px);
  transition:
    opacity 200ms ease,
    transform 200ms ease;
}

.hero-montage__tile:hover .hero-montage__label,
.hero-montage__tile:focus-visible .hero-montage__label {
  opacity: 1;
  transform: none;
}

.hero-montage__tile:hover,
.hero-montage__tile:focus-visible {
  z-index: 6;
}

.hero-montage__tile--lead:hover,
.hero-montage__tile--lead:focus-visible {
  transform: rotate(-4.5deg) scale(1.045);
}

.hero-montage__tile--portrait:hover,
.hero-montage__tile--portrait:focus-visible {
  transform: rotate(7deg) scale(1.06);
}

.hero-montage__tile--inset:hover,
.hero-montage__tile--inset:focus-visible {
  transform: rotate(-7deg) scale(1.05);
}

.hero-montage__tile--peek:hover,
.hero-montage__tile--peek:focus-visible {
  transform: rotate(-8.5deg) scale(1.05);
}

.hero-montage__tile--deck:hover,
.hero-montage__tile--deck:focus-visible {
  transform: rotate(6.5deg) scale(1.05);
}

.hero-montage__tile:hover .hero-montage__frame,
.hero-montage__tile:focus-visible .hero-montage__frame {
  border-color: rgba(254, 172, 23, 0.55);
  box-shadow:
    0 24px 50px -16px rgba(0, 0, 0, 0.92),
    0 0 0 1px rgba(254, 172, 23, 0.35);
}

.page-hero__media .chart-frame {
  max-width: none;
  margin: 0;
}

.film-grid,
.proof-stage-grid,
.still-grid,
.service-quote {
  display: grid;
  gap: var(--space-md);
}

.film-grid {
  align-items: start;
}

.film-card {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-lg);
  background: var(--surface-card);
  color: inherit;
  text-decoration: none;
  box-shadow: var(--shadow-card);
  transition: border-color var(--transition), transform var(--transition);
}

.film-card video {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background: #07010f;
}

.film-card__meta {
  display: grid;
  gap: 0.15rem;
  padding: 1rem 1.1rem 1.15rem;
}

.film-card__meta strong {
  font-size: 1.02rem;
}

.film-card__meta span {
  color: var(--color-muted);
  font-size: 0.9rem;
}

a.film-card {
  cursor: pointer;
}

a.film-card:hover {
  border-color: rgba(254, 172, 23, 0.55);
  transform: translateY(-2px);
}

.film-card--tall video {
  aspect-ratio: 3 / 4;
  object-position: 50% 18%;
}

.still-grid img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
}

.proof-stage-grid .chart-frame {
  max-width: none;
  margin: 0;
}

.service-quote {
  padding: var(--space-lg);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-lg);
  background: var(--surface-card);
}

.service-quote blockquote {
  margin: 0;
}

.service-quote p {
  font-size: 1.15rem;
  line-height: 1.55;
}

.service-quote footer {
  margin-top: 1rem;
  color: var(--color-muted);
  font-size: 0.92rem;
}

.service-quote strong {
  display: block;
  color: var(--color-text);
}

.service-list li::before {
  position: absolute;
  top: 1.15rem;
  bottom: 1.15rem;
  left: 0;
  width: 3px;
  border-radius: 99px;
  background: var(--color-primary);
  opacity: 0.75;
  content: "";
}

/* Proof */

.proof-grid p {
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
}

.proof-grid strong {
  display: block;
  color: var(--color-primary);
  font-size: clamp(1.9rem, 4vw, 2.6rem);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1;
}

.proof-grid span {
  display: block;
  margin-top: 0.4rem;
  color: var(--color-muted);
  font-size: 0.92rem;
}

.seo-metrics {
  max-width: none;
  margin: 0 0 var(--space-lg);
}

.seo-graph-grid,
.seo-methods {
  display: grid;
  gap: var(--space-md);
}

.seo-graph {
  display: grid;
  gap: 0.85rem;
  margin: 0;
  padding: 1.15rem 1.15rem 0.85rem;
  overflow: hidden;
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-lg);
  background:
    radial-gradient(120% 80% at 100% 0%, rgba(254, 172, 23, 0.14), transparent 55%),
    linear-gradient(180deg, #1a0b38 0%, #0b0219 100%);
  box-shadow: var(--shadow-card);
}

.seo-graph__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0 0.15rem;
}

.seo-graph__title {
  color: var(--color-muted);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.seo-graph__value {
  color: var(--color-primary);
  font-size: clamp(1.35rem, 2.4vw, 1.85rem);
  font-weight: 650;
  letter-spacing: -0.03em;
  line-height: 1;
}

.seo-graph__value small {
  margin-left: 0.25rem;
  color: var(--color-muted);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0;
}

.seo-graph svg {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 800 / 320;
}

/* Logos */

.logo-strip {
  padding: 1.35rem 0;
  border-top: 1px solid var(--surface-line);
  border-bottom: 1px solid var(--surface-line);
  overflow: hidden;
}

.logo-marquee {
  overflow: hidden;
  mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
}

.logo-marquee__track {
  display: flex;
  width: max-content;
  animation: logo-marquee 48s linear infinite;
}

.logo-marquee:hover .logo-marquee__track {
  animation-play-state: paused;
}

.logo-row {
  display: flex;
  align-items: center;
  gap: 3.4rem;
  padding-right: 3.4rem;
}

.logo-row img {
  display: block;
  width: auto;
  height: 2rem;
  opacity: 0.72;
}

@keyframes logo-marquee {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-50%);
  }
}

/* Service lists on interior pages */

.service-list {
  display: grid;
  gap: var(--space-sm);
}

.service-list li {
  position: relative;
  padding: var(--space-md) var(--space-md) var(--space-md) calc(var(--space-md) + 0.45rem);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
}

.service-list a {
  display: block;
  color: inherit;
  text-decoration: none;
}

.service-list h3 {
  margin-bottom: 0.3rem;
}

.service-list span {
  color: var(--color-muted);
  font-size: 0.95rem;
}

/* FAQ */

.faq {
  display: grid;
  gap: 0.6rem;
}

.faq details {
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
  transition: border-color var(--transition);
}

.faq details:hover {
  border-color: rgba(254, 172, 23, 0.4);
}

.faq summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  font-size: 1.05rem;
  font-weight: 600;
  list-style: none;
  cursor: pointer;
}

.faq summary::-webkit-details-marker,
.faq summary::marker {
  display: none;
  content: "";
}

.faq summary::after {
  flex: 0 0 0.5rem;
  width: 0.5rem;
  height: 0.5rem;
  margin-top: -0.2rem;
  border-right: 2px solid var(--color-primary);
  border-bottom: 2px solid var(--color-primary);
  transform: rotate(45deg);
  transition: transform var(--transition), margin var(--transition);
  content: "";
}

.faq details[open] summary::after {
  margin-top: 0.15rem;
  transform: rotate(225deg);
}

.faq p {
  margin-top: 0.6rem;
  color: var(--color-muted);
}

/* Closing CTA */

.closing {
  padding: var(--space-2xl) 0;
  background:
    radial-gradient(50rem 24rem at 50% 0%, rgba(254, 172, 23, 0.16), transparent 65%),
    var(--surface-raised);
  text-align: center;
}

.closing p {
  max-width: 34rem;
  margin: var(--space-md) auto 0;
  color: var(--color-muted);
  font-size: 1.05rem;
}

.closing .btn-row {
  justify-content: center;
}

/* 8. Editorial and prose
   ========================================================================== */

.page-hero {
  position: relative;
  padding: var(--space-xl) 0 var(--space-lg);
  background: var(--surface-base);
  overflow: hidden;
}

/* Without this the hero's bottom padding and the next section's top padding
   stack up to about 7rem of empty space. */
.page-hero + .section:not(.section--flush) {
  padding-top: var(--space-lg);
}

.page-hero--dark {
  background: var(--surface-raised);
}

.filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: var(--space-lg);
}

.filters button {
  padding: 0.45rem 0.9rem;
  border: 1px solid var(--surface-line-strong);
  border-radius: var(--radius-pill);
  background: transparent;
  font-size: 0.9rem;
  cursor: pointer;
}

.filters button[aria-pressed="true"] {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-primary-ink);
  font-weight: 600;
}

.split img,
.intro-grid img,
.service-feature img,
.case-hero img,
.media-frame img,
.hero__frame img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  border-radius: var(--radius-lg);
}

/* Both sit directly under a paragraph, so they need their own top margin. */
.meta-row {
  margin-top: var(--space-lg);
}

.stat-row {
  margin-top: var(--space-md);
}

.meta-row div,
.stat-row div {
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
}

.meta-row dt,
.stat-row span {
  color: var(--color-muted);
  font-size: 0.85rem;
}

.stat-row strong {
  display: block;
  color: var(--color-primary);
  font-size: clamp(1.8rem, 3.5vw, 2.4rem);
  font-weight: 600;
  letter-spacing: -0.03em;
}

.prose {
  max-width: var(--container-text);
}

.prose > * + * {
  margin-top: 1.1rem;
}

.prose h2 {
  margin-top: 2.25rem;
  font-size: 1.8rem;
}

.prose p,
.prose li {
  color: var(--color-muted);
}

.prose ul {
  padding-left: 1.15rem;
  list-style: disc;
}

.prose a {
  color: var(--color-primary);
}

.prose img {
  border-radius: var(--radius-md);
}

.prose img[src*="/clients/"] {
  width: auto;
  max-width: 11rem;
  max-height: 2.6rem;
  height: auto;
  margin-block: 0.35rem 0.15rem;
  border-radius: 0;
  object-fit: contain;
}

.case-copy > p:first-child {
  display: none;
}

/* Case study teaser: a short silent cut that sits between the hero and the
   copy. The band has no top padding so it reads as part of the hero. */
.case-reel-band {
  padding-bottom: 0;
}

.case-reel {
  margin-block: 0;
}

.case-reel video {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background: var(--surface-card);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-lg);
  box-shadow: 0 30px 60px -40px rgba(0, 0, 0, 0.8);
}

.case-reel figcaption {
  margin-top: 0.75rem;
  color: var(--color-muted);
  font-size: 0.85rem;
}

.case-copy img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 32rem;
  object-fit: contain;
  margin-inline: auto;
  padding: 0.75rem;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
}

.prose pre {
  overflow-x: auto;
  padding: 1rem 1.15rem;
  border-radius: var(--radius-md);
  background: var(--surface-card);
  border: 1px solid var(--surface-line);
  font-size: 0.88rem;
}

.prose code {
  font-family: var(--font-mono);
}

.prose blockquote {
  padding: 1rem 1.25rem;
  border-left: 3px solid var(--color-primary);
  border-radius: var(--radius-sm);
  background: var(--surface-card);
  font-size: 1.2rem;
  line-height: 1.4;
}

.prose table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.97rem;
}

.prose th,
.prose td {
  padding: 0.7rem 0.5rem;
  border-bottom: 1px solid var(--surface-line);
  text-align: left;
}

.gallery img {
  width: 100%;
  object-fit: cover;
  border-radius: var(--radius-md);
}

.video-slot {
  display: grid;
  place-items: end start;
  min-height: 15rem;
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card) center / cover no-repeat;
}

.video-slot span {
  padding: 0.35rem 0.6rem;
  border-radius: var(--radius-pill);
  background: rgba(11, 2, 25, 0.8);
  font-size: 0.88rem;
}

.team-card {
  padding-bottom: 1.25rem;
}

.team-card img {
  width: 14rem;
  max-width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  object-position: 50% 18%;
  border-radius: var(--radius-md);
}

.team-card h3 {
  margin: 0.75rem 0 0.15rem;
}

.team-card__link {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: 0.75rem;
  color: var(--color-primary);
  font-size: 0.88rem;
  font-weight: 600;
  text-decoration: none;
}

.team-card__link:hover {
  color: var(--color-text);
}

/* The blog listing is a tight feed. Thumbs stay small so the titles
   carry the scan, not a wall of photographs. */
.blog-wrap {
  width: min(100% - 2.5rem, 58rem);
}

.blog-wrap .filters {
  margin-bottom: var(--space-md);
}

.featured-post {
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
  overflow: hidden;
  transition: border-color var(--transition), transform var(--transition);
}

.featured-post:hover {
  border-color: rgba(254, 172, 23, 0.55);
  transform: translateY(-2px);
}

.featured-post img {
  width: 100%;
  max-height: 10rem;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.featured-post .lede {
  margin-top: 0.45rem;
  font-size: 0.92rem;
}

.featured-post .card-body {
  padding: 1rem 1.1rem 1.15rem;
}

.featured-post h2 {
  font-size: 1.2rem;
}

.post-list {
  gap: 0.85rem;
}

.post-card {
  padding: 0;
}

.post-card img {
  aspect-ratio: 16 / 9;
  max-height: 7.25rem;
}

.post-card .card-body {
  padding: 0.75rem 0.9rem 0.9rem;
}

.post-card h3 {
  font-size: 0.98rem;
  line-height: 1.3;
}

/* 9. Forms
   ========================================================================== */

.form {
  display: grid;
  gap: 1rem;
}

.form[hidden] {
  display: none;
}

.brief {
  gap: 1.35rem;
}

.brief > .btn {
  justify-self: start;
  min-width: 12.5rem;
}

.brief-step {
  position: relative;
  display: block;
  margin: 0;
  padding: 0;
  border: 0;
  min-inline-size: 0;
}

.brief-step legend {
  display: block;
  float: none;
  width: 100%;
  padding: 0;
  margin: 0 0 0.65rem;
  font-size: 0.92rem;
  font-weight: 600;
}

.brief-picks,
.budget-picks,
.form-grid {
  display: grid;
  gap: 0.65rem;
}

.brief-pick,
.budget-pick {
  display: grid;
  gap: 0.3rem;
  padding: 1rem 1.05rem;
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color var(--transition), background var(--transition);
}

.brief-pick__index {
  color: var(--color-primary);
  font-family: var(--font-mono);
  font-size: 0.75rem;
}

.brief-pick strong {
  font-size: 1.05rem;
}

.brief-pick span:last-child {
  color: var(--color-muted);
  font-size: 0.88rem;
}

.budget-pick {
  min-height: 2.7rem;
  place-items: center;
  padding: 0.55rem 0.85rem;
  border-radius: var(--radius-pill);
  font-size: 0.88rem;
  font-weight: 600;
}

.brief-pick[aria-pressed="true"],
.budget-pick[aria-pressed="true"] {
  border-color: var(--color-primary);
  background: rgba(254, 172, 23, 0.1);
}

.brief-fallback {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
}

.form-honey {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.form-note {
  color: var(--color-muted);
  font-size: 0.92rem;
}

.contact-shell {
  display: grid;
  gap: var(--space-xl);
}

.brief-panel {
  display: grid;
  scroll-margin-top: calc(var(--header-height) + 1.25rem);
}

.brief-panel .form {
  transition: opacity 180ms ease;
}

.brief-panel.is-sending .form {
  opacity: 0.55;
  pointer-events: none;
}

.studio-bar {
  display: grid;
  gap: var(--space-md);
  padding-top: var(--space-lg);
  border-top: 1px solid var(--surface-line);
}

.studio-bar__label {
  margin: 0 0 0.35rem;
  color: var(--color-muted);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.studio-bar__block {
  display: grid;
  justify-items: start;
  gap: 0.2rem;
}

.studio-mail {
  color: var(--color-primary);
  font-size: 1.05rem;
  font-weight: 600;
  text-decoration: none;
  word-break: break-word;
}

.studio-copy {
  justify-self: start;
  padding: 0;
  border: 0;
  background: none;
  color: var(--color-muted);
  font: inherit;
  font-size: 0.88rem;
  cursor: pointer;
}

.studio-copy:hover,
.studio-mail:hover {
  color: var(--color-text);
}

.studio-address,
.studio-legal {
  margin: 0;
  color: var(--color-muted);
  font-size: 0.95rem;
}

.next-steps {
  display: grid;
  gap: 0.85rem;
  padding: 0;
  list-style: none;
  counter-reset: step;
}

.next-steps li {
  display: grid;
  gap: 0.2rem;
  padding-left: 2.1rem;
  counter-increment: step;
  position: relative;
}

.next-steps li::before {
  position: absolute;
  left: 0;
  top: 0.15rem;
  color: var(--color-primary);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  content: counter(step, decimal-leading-zero);
}

.next-steps span {
  color: var(--color-muted);
  font-size: 0.9rem;
}

.studio-bar .btn {
  justify-self: start;
  align-self: end;
}

.form label {
  display: grid;
  gap: 0.4rem;
  font-size: 0.92rem;
  font-weight: 600;
}

.form input,
.form select,
.form textarea {
  width: 100%;
  min-height: 2.9rem;
  padding: 0.65rem 0.85rem;
  border: 1px solid var(--surface-line-strong);
  border-radius: var(--radius-sm);
  background: var(--surface-card);
}

.form textarea {
  min-height: 9rem;
  resize: vertical;
}

.form .is-invalid {
  border-color: #ff7a8a;
}

.form-error {
  color: #ff9aa6;
  font-size: 0.86rem;
  font-weight: 500;
}

.form-success {
  display: grid;
  justify-items: start;
  align-content: center;
  gap: 0.85rem;
  min-height: 22rem;
  padding: var(--space-lg) 0;
}

.form-success[hidden] {
  display: none;
}

.form-success__mark {
  display: grid;
  place-items: center;
  width: 3.25rem;
  height: 3.25rem;
  margin-bottom: 0.35rem;
  border: 1px solid rgba(254, 172, 23, 0.35);
  border-radius: 50%;
  background: rgba(254, 172, 23, 0.16);
  color: var(--color-primary);
}

.form-success h2 {
  font-size: clamp(1.8rem, 3vw, 2.4rem);
}

.form-success h2:focus {
  outline: none;
}

.brief-panel.is-sent .form-success {
  justify-items: center;
  text-align: center;
  animation: rise 500ms ease both;
}

.plan-grid {
  display: grid;
  gap: var(--space-md);
  margin-bottom: var(--space-lg);
}

.plan-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
}

.plan-card__body {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  flex: 1 1 auto;
}

.plan-card__cta {
  padding-top: 1.25rem;
}

.plan-card--featured {
  border-color: rgba(254, 172, 23, 0.55);
}

.plan-card__price {
  font-size: 2rem;
  font-weight: 650;
  letter-spacing: -0.04em;
}

.plan-card__price span {
  color: var(--color-muted);
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0;
}

.plan-card ul {
  display: grid;
  gap: 0.4rem;
  flex: 0 0 auto;
  margin: 0;
  color: var(--color-muted);
  font-size: 0.95rem;
  line-height: 1.4;
}

.plan-card ul li {
  margin: 0;
}

.plan-card__cta .btn {
  align-self: start;
}

.tld-grid,
.host-offer-grid {
  display: grid;
  gap: var(--space-md);
  margin-bottom: var(--space-md);
}

.tld-card {
  display: grid;
  gap: 0.35rem;
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
}

.tld-card .plan-card__price span {
  display: block;
  margin-top: 0.2rem;
}

.contact-aside {
  align-self: start;
  padding: var(--space-md);
  border: 1px solid var(--surface-line);
  border-radius: var(--radius-md);
  background: var(--surface-card);
  color: var(--color-muted);
}

.contact-aside h2 {
  margin-bottom: 0.6rem;
  color: var(--color-text);
  font-size: 1.15rem;
}

.contact-aside p + p {
  margin-top: 0.75rem;
}

.contact-aside a {
  color: var(--color-primary);
}

/* 10. Footer
   ========================================================================== */

.site-footer {
  padding: var(--space-xl) 0 var(--space-lg);
  border-top: 1px solid var(--surface-line);
  background: var(--surface-base);
  color: var(--color-muted);
  font-size: 0.95rem;
}

.site-footer a {
  color: inherit;
  text-decoration: none;
}

.site-footer a:hover {
  color: var(--color-primary);
}

/* A little larger in the footer, where there is room for the tagline to read. */
.footer-brand .logo img {
  height: 2.6rem;
}

.footer-brand p {
  max-width: 22rem;
  margin-top: var(--space-sm);
}

.footer-grid h2 {
  margin-bottom: var(--space-sm);
  color: var(--color-text);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.footer-grid li + li {
  margin-top: 0.45rem;
}

.footer-base {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-top: var(--space-lg);
  padding-top: var(--space-md);
  border-top: 1px solid var(--surface-line);
  font-size: 0.9rem;
}
