/* Escala tipográfica accesible compartida por todo el sitio SRR. */
:root {
  --text-xs: .75rem;
  --text-sm: .875rem;
  --text-base: 1rem;
  --leading-copy: 1.6;
}

body {
  font-size: var(--text-base);
  line-height: 1.55;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

p { line-height: var(--leading-copy); }

/* Navegación y controles compactos: nunca menos de 12 px. */
.topbar,
.topbar a,
.nav-menu > a,
.button,
.eyebrow,
.tag,
.section-heading--with-link > a {
  font-size: var(--text-xs);
}

/* Texto de lectura principal. */
.hero-copy > p:not(.eyebrow),
.intro-copy p,
.remote-copy p:not(.eyebrow),
.pbip p,
.sv-hero-copy > p:not(.eyebrow),
.sv-intro p,
.sv-portfolio > .shell > div:first-child > p,
.sv-benefits > div:first-child > p,
.sv-why p,
.sv-faq details p,
.contact-copy > p:not(.eyebrow),
.contact-heading > p:last-child,
.contact-faq p {
  font-size: var(--text-base);
  line-height: var(--leading-copy);
}

/* Tarjetas, listas y contenido secundario. */
.capabilities__grid span,
.service-card p,
.remote-cards p,
.pbip-services span,
.sector-grid h3,
.process-grid h3,
.process-grid p,
.article-grid h3,
.article-grid p,
.cta-band p,
.sv-checks li,
.sv-capabilities span,
.sv-service h3,
.sv-service p,
.sv-portfolio h3,
.sv-portfolio .sv-checks li,
.sv-benefits .sv-checks li,
.sv-sector h3,
.sv-process h3,
.sv-process p,
.sv-why-items span,
.sv-certifications span,
.sv-faq summary,
.sv-cta p,
.vp-feature p,
.ep-feature p,
.mt-feature p,
.sp-feature p,
.ic-feature p,
.contact-proof,
.contact-channels span,
.contact-services a,
.office-grid p,
.office-grid a {
  font-size: var(--text-sm);
  line-height: 1.5;
}

/* Formularios: etiquetas claras y campos a 16 px para evitar zoom móvil. */
.sv-form-card > p,
.sv-form-card label,
.sv-form-card .sv-form-note,
.contact-form-card > p,
.contact-form-card label,
#services-status,
#vp-status,
#ep-status,
#mt-status,
#sp-status,
#ic-status,
#contact-status {
  font-size: var(--text-sm);
  line-height: 1.5;
}

.sv-form-card input,
.sv-form-card select,
.sv-form-card textarea,
.contact-form-card input,
.contact-form-card select,
.contact-form-card textarea {
  min-height: 44px;
  font-size: var(--text-base);
  line-height: 1.4;
}

/* Información auxiliar y pie: mínimo absoluto de 12 px. */
.sv-form-trust span,
.footer p,
.footer__grid > div > a,
.footer__bottom,
.footer__bottom a,
.socials a,
.compliance-grid span,
.city-tags span {
  font-size: var(--text-xs);
  line-height: 1.5;
}

.footer h2,
.compliance-grid strong {
  font-size: var(--text-sm);
}

.footer__grid {
  row-gap: 28px;
}

/* Home: corrige la escala compacta heredada del boceto de referencia. */
.proof-item span,
.service-card a,
.remote-copy .button,
.coverage-card .button,
.process-grid li > span,
.article-grid span,
.article-grid a,
.cta-band .button {
  font-size: var(--text-xs) !important;
}

.service-card p,
.remote-cards p,
.pbip-services span,
.process-grid p,
.article-grid p,
.cta-band p {
  font-size: var(--text-sm) !important;
  line-height: 1.5;
}

/* Guarda Virtual usa una composición propia y requiere la misma escala. */
.gv-form-card > p,
.gv-form-card label,
.gv-form-status,
.gv-capabilities span,
.gv-form-trust span {
  font-size: var(--text-sm) !important;
  line-height: 1.5;
}

.gv-form-card input,
.gv-form-card select,
.gv-form-card textarea {
  min-height: 44px;
  font-size: var(--text-base) !important;
}

.gv-intro__grid p,
.gv-environments__copy p,
.gv-benefits__copy p,
.gv-why p,
.gv-faq details p,
.gv-final-cta p {
  font-size: var(--text-base) !important;
  line-height: var(--leading-copy);
}

.gv-checks li,
.gv-feature-grid p,
.gv-environment-cards li,
.gv-benefits__copy li,
.gv-sector-grid h3,
.gv-process h3,
.gv-process p,
.gv-why__item span,
.gv-certifications span,
.gv-faq summary,
.gv-final-cta span {
  font-size: var(--text-sm) !important;
  line-height: 1.5;
}

.gv-environments__copy .button,
.gv-final-cta .button,
.gv-process li > span {
  font-size: var(--text-xs) !important;
}

/* Normaliza reglas más específicas de las páginas de servicio. */
.sv-page .eyebrow,
.sv-page .sv-form-trust span {
  font-size: var(--text-xs) !important;
}

.sv-page .sv-portfolio-cards .sv-checks li,
.sv-page .sv-benefits .sv-checks li,
.sv-page .sv-process p,
.sv-page .sv-cta p:last-child,
.sv-page .sv-certifications span {
  font-size: var(--text-sm) !important;
  line-height: 1.5;
}

.vp-trust p,
.ep-trust p,
.mt-trust p,
.sp-trust p,
.ic-trust p {
  font-size: var(--text-base) !important;
  line-height: var(--leading-copy);
}

.sv-form-card select,
.contact-form-card select {
  font-size: var(--text-sm);
}

/* El contenido debe crecer y envolver sin recortarse. */
.service-card,
.remote-cards article,
.process-grid li,
.article-grid article,
.sv-service,
.sv-portfolio-cards article,
.sv-process li,
.contact-channels > a,
.contact-services > a {
  height: auto;
  overflow: visible;
}

h1, h2, h3 {
  text-wrap: balance;
}

@media (max-width: 760px) {
  body { font-size: var(--text-base); }

  .footer__grid > div > a,
  .footer p,
  .footer__bottom,
  .sv-form-trust span {
    font-size: var(--text-sm);
  }

  .sv-form-card select,
  .contact-form-card select {
    font-size: var(--text-base);
  }
}
