/* ==========================================================================
   Mobile refinements. Loaded last so it settles anything the desktop rules
   leave awkward on a phone.
   ========================================================================== */

@media (max-width: 640px) {

  /* --- Actions: stack full width. Two buttons of different widths sitting
         side by side reads as an accident, and full-width taps convert. --- */
  .btn-row {
    flex-direction: column;
    align-items: stretch;
    gap: .7rem;
  }

  .btn {
    width: 100%;
    justify-content: space-between;
    padding: 1.15em 1.4em;
  }

  .btn:not(:has(.btn__arrow)) { justify-content: center; }

  /* --- Hero: tighten the vertical rhythm --- */
  .hero { min-height: 0; }

  .hero__inner {
    padding-top: calc(var(--nav-h) + 2.5rem);
    padding-bottom: 2rem;
  }

  .hero h1 { max-width: 100%; margin-bottom: 1.6rem; }
  .hero__sub { margin-bottom: 1.8rem; }
  .hero__actions { margin-bottom: 2rem; }

  .hero__spec {
    padding-block: 1.25rem;
    gap: 1rem;
    margin-bottom: 1.25rem;
  }

  .hero__brief { font-size: 11.5px; letter-spacing: .04em; }
  .hero__creed { font-size: 10.5px; }
  .hero__reg { display: none; }

  .hero__stat { padding: 1.1rem .9rem; }
  .hero__stat b { font-size: 1.6rem; }

  /* --- Section rhythm --- */
  .section { padding-block: clamp(3rem, 11vw, 4.5rem); }
  .sec-head { margin-bottom: 2rem; }

  /* --- Cards and grids --- */
  .case-grid { grid-template-columns: 1fr; }
  .svc { min-height: 0; padding: 1.6rem 1.4rem; }
  .svc__num { margin-bottom: 1.4rem; }

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

  /* --- Split media: badge overlapping a short image gets cramped --- */
  .split__badge {
    position: static;
    box-shadow: none;
    border: 1px solid var(--line);
    border-top: 0;
    min-width: 0;
    padding: 1.1rem 1.2rem;
  }

  /* --- Steps --- */
  .step { padding-block: 1.4rem; }

  /* --- Coverage map: give it room and drop the chamfer frame padding --- */
  .coverage { gap: 2rem; }
  .hud { --cut: 16px; }
  .hud__readout { position: static; display: block; margin-top: .75rem; }

  /* --- Forms --- */
  .formcard { padding: 1.4rem 1.2rem; }
  .form-foot { flex-direction: column; align-items: stretch; gap: .9rem; }
  .form-foot .note { text-align: center; }

  /* --- Footer --- */
  .foot__bottom { flex-direction: column; align-items: flex-start; gap: .8rem; }
  .foot__bottom nav { gap: 1rem; }

  /* --- Type --- */
  .lead { font-size: 1.05rem; }
  .pull p { font-size: 1.35rem; }
}

/* Very small phones */
@media (max-width: 380px) {
  .hero__stats { grid-template-columns: 1fr; }
  .credband { grid-template-columns: 1fr; }
  .btn { font-size: 10.5px; letter-spacing: .1em; }
}

/* Touch devices: hover sweeps never trigger, so make the resting state the
   confident one and drop the lift. */
@media (hover: none) {
  .btn:hover { transform: none; box-shadow: none; }
  .btn:active::before { transform: translateY(0); }
  .case:hover { transform: none; }
  .svc:hover { background: var(--paper); }
}
