/*
 * Layout consistency layer, loaded after the Webflow export CSS.
 *
 * The export gave every container and card its own width: on a phone cards
 * sat 10, 20 or 30px from the screen edge, on desktop anywhere between 144
 * and 320px. Everything below lines them up on one page gutter per
 * breakpoint, without touching the export file itself.
 */

:root {
  /* Width of the content column; the gutter is what is left on each side. */
  --content-width: min(80vw, 1500px);
}

@media screen and (max-width: 991px) {
  :root {
    --content-width: 90vw;
  }
}

@media screen and (max-width: 767px) {
  :root {
    --content-width: calc(100vw - 40px);
  }
}

/* Every page-level container shares one outer edge. */
.container,
.container-medium,
.container-medium.fleet {
  width: var(--content-width);
  max-width: none;
  min-width: 0;
}

/*
 * .container-small stays a narrower reading column on desktop (long text
 * reads better at that width), but cards that live in it take the full
 * content width so they line up with every other card on the page.
 */
.container-small.card,
.container-small:has(> .card),
.container-small:has(.reviews-collection-list),
.container-small:has(.top-service-card) {
  width: var(--content-width);
  min-width: 0;
  max-width: none;
}

@media screen and (max-width: 991px) {
  .container-small {
    width: var(--content-width);
    min-width: 0;
  }
}

/* The app card sat 20px inside its wrapper; let it take the wrapper's edge. */
.container.sd-card {
  padding-left: 0;
  padding-right: 0;
}

/* Column rows: the gutter between columns stays, the outer edge lines up. */
@media screen and (min-width: 768px) {
  .service-card-coll-list.w-row,
  .reviews-collection-list.w-row {
    display: block;
    width: calc(100% + 20px);
    margin-left: -10px;
    margin-right: -10px;
  }
}

/* Stacked on a phone, the columns need no side padding at all. */
@media screen and (max-width: 767px) {
  .reviews-collection-list.w-row > .w-col,
  .service-card-coll-list.w-row > .w-col {
    padding-left: 0;
    padding-right: 0;
  }
}

/* Review cards carried a 10px margin on top of their column padding. */
.review-wrapper.card {
  margin-left: 0;
  margin-right: 0;
}

/* Lists that shrink-wrapped and centred their cards now fill the column. */
.w-dyn-list:has(.top-service-card) {
  align-self: stretch;
  width: 100%;
}

@media screen and (max-width: 767px) {
  .fleet-card {
    margin-left: 0;
    margin-right: 0;
  }

  /* The caption on fleet cards had a left margin but none on the right. */
  .fleet-content-wrapper.m-10.container-medium {
    width: auto;
    margin-left: var(--padding-m);
    margin-right: var(--padding-m);
  }
}

/*
 * Icon + title rows (about page and elsewhere): keep the icon next to the
 * title, aligned left, at every width. The export turned this row into a
 * centred three-column grid below 992px.
 */
.content-icontext {
  text-align: left;
}

.content-icontext > .wrapper.flex-horiz-cc {
  display: flex;
  flex-flow: row nowrap;
  justify-content: flex-start;
  align-items: center;
  place-items: center start;
  gap: var(--padding-s);
}

.content-icontext > .wrapper.flex-horiz-cc > img {
  flex: 0 0 auto;
}

@media screen and (max-width: 767px) {
  /* Images and content blocks in a .p-10 column sat 24px further in than the rest of the page. */
  .container-medium > .col.p-10 {
    padding-left: 0;
    padding-right: 0;
  }

  /* A hero that opens with its h1 (no pill above it) slid under the floating nav. */
  .section .col.flex-verti-cc > .hero-heading:first-child {
    margin-top: 72px;
  }
}

@media screen and (max-width: 767px) {
  /* Contact: the social block was left-aligned under a centred contact list. */
  .social-wrapper {
    text-align: center;
    align-items: center;
  }
}
