/* ==========================================================================
   FlyConnect - responsive behaviour
   The comp is a fixed 1920px canvas; everything below reflows it down to
   320px while keeping the same reading order and visual hierarchy.
   ========================================================================== */

/* ------------------------------------------------- large desktop <1400px - */
@media (max-width: 1399.98px) {
  :root {
    --fc-gutter: 28px;
  }

  .fc-about__grid {
    gap: 60px;
  }

  .fc-hero__grid {
    gap: 36px;
  }

  .fc-survey__card {
    width: 500px;
    padding: 26px;
  }

  .fc-survey__copy {
    padding: 50px 40px;
    max-width: 60%;
  }

  .fc-final {
    padding: 44px;
  }
}

/* --------------------------------------------------------- desktop <1200 - */
@media (max-width: 1199.98px) {
  .fc-hero {
    padding-top: 150px;
  }

  .fc-hero__grid {
    grid-template-columns: minmax(0, 1fr);
    padding-bottom: 120px;
  }

  .fc-hero__art {
    justify-content: flex-start;
  }

  .fc-about__grid,
  .fc-faq__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 48px;
  }

  /* width:100% is load-bearing. The panel's only child is absolutely
     positioned, so with auto margins it would shrink-wrap to zero width and
     aspect-ratio would then collapse its height to zero too. */
  .fc-artpanel {
    width: 100%;
    max-width: 560px;
    margin-inline: auto;
  }

  /* Stacked, the ask panel is a full-width block rather than a column. */
  .fc-askpanel {
    width: 100%;
    max-width: 560px;
    margin-inline: auto;
  }

  .fc-faq__list {
    margin-top: 34px;
  }

  /* survey: card drops below the panel instead of floating over it */
  .fc-survey__inner {
    padding-top: 0;
  }

  .fc-survey__panel {
    min-height: 0;
  }

  .fc-survey__copy {
    max-width: none;
    padding: 48px 40px;
  }

  .fc-survey__card {
    position: static;
    width: 100%;
    margin-top: 26px;
  }

  .fc-final {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
    padding: 44px 40px;
  }

  /* same reason as .fc-artpanel above — its columns are absolutely positioned */
  .fc-slides {
    width: 100%;
    max-width: 460px;
    margin-inline: auto;
  }

  .fc-footer__grid {
    grid-template-columns: 160px minmax(0, 1fr);
    gap: 60px;
  }

  .fc-footer__cols {
    gap: 48px;
  }
}

/* ------------------------------------------------- tablet / mobile <992 -- */
@media (max-width: 991.98px) {
  :root {
    --fc-gutter: 20px;
  }

  html {
    scroll-padding-top: 100px;
  }

  /* nav collapses into a drawer */
  .fc-nav {
    height: 68px;
    padding: 0 12px 0 20px;
  }

  .fc-nav__links,
  .fc-nav > .fc-btn {
    display: none;
  }

  .fc-nav__toggle {
    display: inline-flex;
  }

  .fc-hero {
    padding-top: 128px;
  }

  .fc-hero__grid {
    padding-bottom: 110px;
    gap: 20px;
  }

  .fc-section {
    padding: 48px 0;
  }

  /* Tablets keep a two-up grid — a single column here would stretch a
     two-line card to ~800px, which reads terribly. */
  .fc-grid-2,
  .fc-grid-3 {
    gap: 20px;
  }

  .fc-grid-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* An odd last card would sit alone on the left; centre it at the same
     width instead so the row still reads as deliberate. */
  .fc-grid-3 > :last-child:nth-child(odd) {
    grid-column: 1 / -1;
    margin-inline: auto;
  }

  .fc-feature,
  .fc-step,
  .fc-quote {
    min-height: 0;
  }

  .fc-step {
    padding: 32px 24px;
  }

  .fc-survey {
    padding-block: 40px;
  }

  .fc-survey__copy {
    padding: 36px 28px;
  }

  .fc-survey__card {
    padding: 24px 22px;
  }

  .fc-askpanel {
    padding: 34px 28px;
  }

  .fc-final {
    padding: 36px 28px;
  }

  .fc-footer {
    padding-top: 56px;
  }

  .fc-footer__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 38px;
  }

  .fc-footer__cols {
    grid-template-columns: minmax(0, 1fr);
    gap: 38px;
  }

  .fc-footer__bottom {
    margin-top: 40px;
    justify-content: center;
    text-align: center;
  }
}

/* ------------------------------------------------------------- mobile <768 */
@media (max-width: 767.98px) {
  /* below tablet everything finally goes single-column */
  .fc-grid-2,
  .fc-grid-3 {
    grid-template-columns: minmax(0, 1fr);
  }

  .fc-hero {
    padding-top: 118px;
  }

  .fc-hero__stores {
    gap: 14px;
  }

  /* A 625px-tall device under the copy owns too much of a phone screen. */
  .fc-herophone {
    max-width: 252px;
  }

  .fc-store {
    height: 66px;
  }

  .fc-subscribe {
    height: 56px;
    padding-left: 18px;
  }

  .fc-subscribe button {
    padding: 0 16px;
    font-size: 0.9375rem;
  }

  .fc-acc__btn {
    padding: 18px 22px;
    font-size: 1.0625rem;
  }

  .fc-acc__panel p {
    padding: 18px 22px 20px;
  }

  .fc-feature,
  .fc-quote {
    padding: 24px;
  }

  .fc-survey__card h3 {
    font-size: 1.3125rem;
  }

  .fc-slides {
    max-width: 340px;
  }

  .fc-footer__brand img {
    width: 160px;
    height: 128px;
  }
}

/* ------------------------------------------------------- small phones <576 */
@media (max-width: 575.98px) {
  :root {
    --fc-gutter: 16px;
    --fc-radius-lg: 18px;
  }

  .fc-nav {
    width: calc(100% - 24px);
    padding: 0 10px 0 16px;
  }

  .fc-nav__brand img {
    width: 46px;
    height: 38px;
  }

  .fc-navwrap {
    padding-top: 14px;
  }

  .fc-hero {
    padding-top: 104px;
  }

  .fc-eyebrow {
    height: 38px;
    padding: 0 18px;
    font-size: 0.875rem;
  }

  .fc-hero__stores {
    gap: 12px;
  }

  .fc-store {
    height: 58px;
  }

  .fc-survey__copy,
  .fc-survey__card,
  .fc-final {
    padding: 24px 18px;
  }

  .fc-quote__by img {
    width: 52px;
    height: 52px;
  }

  .fc-quote__by {
    gap: 14px;
  }

  .fc-btn {
    height: 50px;
    padding: 0 24px;
  }

  .fc-social {
    gap: 10px;
  }
}

/* ------------------------------------------------------- touch pointers -- */
/* Grow the hit areas that are visually small by design. */
@media (pointer: coarse) {
  /* iOS Safari zooms the page when a focused control is under 16px.
     Bumping the size is the standard way to stop that jump. */
  .fc-field input,
  .fc-field select,
  .fc-field textarea,
  .fc-textarea,
  .fc-subscribe input {
    font-size: 16px;
  }

  .fc-radio {
    padding-block: 10px;
    margin-bottom: 0;
  }

  .fc-nav__brand {
    padding: 5px;
  }

  .fc-social a {
    width: 44px;
    height: 44px;
  }

  .fc-footer__contact a {
    display: inline-block;
    padding-block: 4px;
  }
}

/* ----------------------------------------------------------------- print - */
@media print {
  .fc-navwrap,
  .fc-subscribe,
  .fc-survey__card form,
  .fc-social {
    display: none !important;
  }

  body {
    background: #fff;
  }

  .has-js .fc-reveal {
    opacity: 1;
    transform: none;
  }
}

/* ------------------------------------------------ testimonial slider - */
@media (max-width: 1199.98px) {
  .fc-carousel__slide {
    flex: 0 0 calc((100% - 30px) / 2);
  }
}

@media (max-width: 767.98px) {
  .fc-carousel__track {
    gap: 18px;
  }

  .fc-carousel__slide {
    flex: 0 0 100%;
  }
}

/* -------------------------------------------------- contact & thank-you -- */
@media (max-width: 1199.98px) {
  .fc-contact__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 44px;
  }
}

@media (max-width: 991.98px) {
  .fc-contact__card {
    padding: 30px;
  }

  .fc-thanks {
    padding: 150px 0 70px;
  }

  .fc-thanks__card {
    padding: 44px 30px;
  }
}

@media (max-width: 575.98px) {
  .fc-form__row {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
  }

  .fc-contact__card {
    padding: 24px 20px;
  }

  .fc-thanks {
    padding: 128px 0 56px;
  }

  .fc-thanks__card {
    padding: 34px 22px;
  }

  .fc-thanks__icon {
    width: 68px;
    height: 68px;
    font-size: 2rem;
  }

  .fc-thanks__actions .fc-btn {
    width: 100%;
  }
}

/* ------------------------------------------------------ footer QR / get -- */
@media (max-width: 991.98px) {
  .fc-get__cta {
    padding: 32px 24px;
  }
}

@media (max-width: 767.98px) {
  /* No point scanning a QR on the phone you are already holding. */
  .fc-get__scan {
    display: none;
  }

  .fc-footer__qr {
    margin-top: 22px;
  }
}


/* ----------------------------------------------- v2 additions: new layouts */
@media (max-width: 1199.98px) {
  /* Four across becomes two: eight cards at desktop width would otherwise
     squeeze to ~230px each on a laptop. */
  .fc-grid-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
  }
}

@media (max-width: 991.98px) {
  .fc-legal {
    padding-top: 120px;
  }

  .fc-legal__toc ol {
    columns: 1;
  }
}

@media (max-width: 767.98px) {
  .fc-grid-4 {
    grid-template-columns: minmax(0, 1fr);
  }

  .fc-disclaimer {
    flex-direction: column;
    gap: 12px;
    padding: 22px;
  }

  .fc-safety__links .fc-btn {
    width: 100%;
  }

  .fc-legal {
    padding-top: 108px;
  }

  .fc-legal__toc {
    padding: 20px;
  }
}
