/* ==========================================================================
   responsive.css — breakpoints (loaded last so it overrides the modules)
   ========================================================================== */

/* Large desktop and below ------------------------------------------------ */
@media (max-width: 1080px) {
  .cats { grid-template-columns: repeat(2, 1fr); }
  .why__grid, .services__grid, .strip { grid-template-columns: repeat(2, 1fr); }
  .index-grid { grid-template-columns: repeat(3, 1fr); }
  .footer__grid { grid-template-columns: 1fr 1fr; }
  .brand img { width: 158px; }
  .nav__link { padding: 10px 10px; font-size: .92rem; }
}

/* Tablet / mobile nav ---------------------------------------------------- */
@media (max-width: 900px) {
  .nav-toggle { display: inline-flex; }

  .nav {
    position: absolute; top: 100%; left: 0; right: 0;
    display: block;
    padding: 12px var(--gutter) 22px;
    background: #fff;
    border-bottom: 1px solid var(--line);
    box-shadow: var(--shadow);
    transform: translateY(-14px);
    opacity: 0; visibility: hidden;
    transition: opacity .22s var(--ease), transform .22s var(--ease), visibility .22s;
    max-height: calc(100vh - var(--header-h));
    overflow-y: auto;
  }
  .nav.is-open { opacity: 1; visibility: visible; transform: none; }
  .nav__link {
    padding: 13px 6px; font-size: 1rem;
    border-bottom: 1px solid var(--line); border-radius: 0;
  }
  .nav__link:last-child { border-bottom: 0; }
  .nav > .btn { display: flex; margin-top: 14px; }

  .header__cta .btn { display: none; }
  .header__cta .btn--call { display: inline-flex; }

  .hero__inner { grid-template-columns: 1fr; }
  .grid--sidebar,
  .quality__grid,
  .contact__grid { grid-template-columns: 1fr; }
  .trustbar__grid { grid-template-columns: repeat(2, 1fr); }
  .trustbar__item:nth-child(2) { border-right: 0; }
  .trustbar__item:nth-child(-n+2) { border-bottom: 1px solid rgba(255, 255, 255, .1); }
  .stats { grid-template-columns: repeat(2, 1fr); }

  /* Comfortable touch targets for the link lists */
  .footer__list li + li { margin-top: 2px; }
  .footer__list a { display: block; padding: 11px 0; }
  .contact-card a { padding: 7px 0; }
  .btn--sm { padding: 12px 18px; }
}

/* Small tablet ----------------------------------------------------------- */
@media (max-width: 720px) {
  :root { --gutter: 16px; --header-h: 68px; }

  .cats,
  .index-grid,
  .why__grid,
  .services__grid,
  .strip,
  .footer__grid { grid-template-columns: 1fr; }

  .about__media { grid-template-columns: 1fr; }
  .cat__banner { aspect-ratio: 16 / 7; }
  .grid--2 { grid-template-columns: 1fr; }
  .form-row { grid-template-columns: 1fr; }
  .cta-band { text-align: center; justify-content: center; }
  .cta-band .btn { width: 100%; }
  .section-head { text-align: center; }
}

/* Phone ------------------------------------------------------------------ */
@media (max-width: 520px) {
  body { font-size: 15.5px; }
  .brand img { width: 140px; }
  .hero__actions { flex-direction: column; align-items: stretch; }
  .hero__actions .btn { width: 100%; }
  .trustbar__grid { grid-template-columns: 1fr; }
  .trustbar__item { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .1); }
  .trustbar__item:last-child { border-bottom: 0; }
  .stats { grid-template-columns: 1fr 1fr; }
  .stat span { font-size: .78rem; letter-spacing: .02em; }
  .cat__items { grid-template-columns: repeat(2, 1fr); }
  .cat__item { padding: 14px 10px 16px; }
  .cat__item img { max-width: 108px; }
  .cat__item figcaption { font-size: .78rem; }
  /* a lone 9th tile fills the row instead of leaving a gap */
  .cat__item:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .cat__foot { font-size: .82rem; }
  .floating { right: 12px; bottom: 12px; }
  .fab { width: 50px; height: 50px; }
  /* one floating action is enough on a phone - the WhatsApp one */
  .fab--top { display: none; }
  .footer__bottom { justify-content: center; text-align: center; }
}

/* Touch devices: comfortable tap targets whatever the width --------------- */
@media (hover: none) and (pointer: coarse) {
  .footer__list li + li { margin-top: 2px; }
  .footer__list a { display: block; padding: 11px 0; }
  .contact-card a { padding: 7px 0; }
  .btn--sm { padding: 12px 18px; }
  .index-item { padding: 16px; }
}

/* Narrow phones (iPhone SE / small Androids) ----------------------------- */
@media (max-width: 400px) {
  .brand img { width: 128px; }
  /* the header call button keeps its icon, drops the number, so the row fits */
  .btn--call span { display: none; }
  .btn--call { padding: 11px 13px; }
  .hero__tagline { letter-spacing: .14em; font-size: .82rem; }
  .cat__head h3 { font-size: 1.05rem; }
  .section-head p { font-size: .93rem; }
}

/* The scrim belongs to the mobile drawer only ---------------------------- */
@media (min-width: 901px) {
  .nav-scrim { display: none; }
}

/* Print ------------------------------------------------------------------ */
@media print {
  .header, .floating, .hero__actions, .contact__form, .map-frame { display: none !important; }
  .hero, .section--dark, .footer { background: #fff !important; color: #000 !important; }
  .reveal { opacity: 1 !important; transform: none !important; }
}
