/* ---------- Service rows (Services page, "What we offer") ---------- */

/* Photo and copy per offering. Stacked on phones; from tablet up the photo
   alternates sides so four rows read as a zig-zag instead of a stripe. No
   borders or boxes: whitespace and the tinted offset block carry the rhythm. */
.service-rows {
  list-style: none;
  padding: 0;
  margin: 32px 0 0;
  display: grid;
  gap: calc(var(--space-section) * 0.75);
}

.service-row {
  display: grid;
  gap: 20px;
}

.service-row__photo {
  position: relative;
  margin: 0;
}

.service-row__photo img {
  position: relative;
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--r-lg);
}

.service-row__num {
  display: block;
  font-family: var(--serif);
  font-size: var(--size-h2);
  line-height: 1;
  color: var(--cb-600);
  margin-bottom: 8px;
}

.service-row__body h3 {
  margin: 0 0 8px;
}

.service-row__body p {
  margin: 0;
  color: var(--cocoa);
  max-width: 46em;
}

@media (min-width: 768px) {
  .service-row {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: center;
    gap: 40px;
  }

  /* Offset tint behind the photo. Only from tablet up: on phones the 16px
     shift would push into the 20px gutter. */
  .service-row__photo::before {
    content: "";
    position: absolute;
    inset: 16px -16px -16px 16px;
    background-color: var(--cb-100);
    border-radius: var(--r-lg);
  }

  /* Even rows: photo on the right, tint mirrored so it still leans toward the copy. */
  .service-row:nth-child(even) .service-row__photo {
    order: 2;
  }

  .service-row:nth-child(even) .service-row__photo::before {
    inset: 16px 16px -16px -16px;
  }
}

@media (min-width: 1280px) {
  .service-row {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
    gap: 64px;
  }

  .service-row:nth-child(even) {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  }
}
