/* NXT GEN WEB: shared readability and responsive text corrections.
 * Load after the page modules and shared brand styles.
 * Selectors intentionally exclude illustration/device-mockup text and SVGs.
 */

/* Section labels retain a readable size at every breakpoint. */
body.ng-chrome .ngh .ngh-kicker,
body.ng-chrome .ngm .ngm-kicker,
body.ng-chrome .ngx .ngx-kicker,
body.ng-chrome .ngcity .ngcity-eyebrow,
body.ng-chrome .ngq .ngq-eyebrow,
body.ng-chrome .ngq-closing .ngq-closing__eyebrow,
body.ng-chrome .ngsv .ngsv-kicker,
body.ng-chrome .ngsr .ngsr__eyebrow {
  font-size:16px;
  line-height:1.5;
  letter-spacing:.06em;
}

/* main-pages-refresh.css uses important declarations below 540px. */
body.ng-chrome .ngm .ngm-kicker {
  font-size:16px !important;
  letter-spacing:.06em !important;
}

/* The shared next-move template has important inline stylesheet rules. */
body.ng-chrome .ng-next-move .ng-next-move__kicker,
body.ng-chrome .ngh-cta .ngh-kicker,
body.ng-chrome .ngm-cta .ngm-kicker,
body.ng-chrome .ngx-cta .ngx-kicker,
body.ng-chrome .ngq-closing .ngq-closing__eyebrow {
  font-size:20px !important;
  line-height:1.4 !important;
  letter-spacing:.06em !important;
}

/* Descriptive copy previously set below the normal body-text scale. */
body.ng-chrome .ngm .ngm-plan>p:not(.ngm-plan-range),
body.ng-chrome .ngx .ngx-board>p,
body.ng-chrome .ngx .ngx-local-card p,
body.ng-chrome .ngcity .ngcity-contact-form>p,
body.ng-chrome .ngq .ngq-panel-intro,
body.ng-chrome .ngq .ngq-process p,
body.ng-chrome .ngq .ngq-human p,
body.ng-chrome .ngq .ngq-inline-note,
body.ng-chrome .ngq .ngq-recap p,
body.ng-chrome .ngq .ngq-questions details p,
body.ng-chrome .ngsv .ngsv-section p,
body.ng-chrome .ngf .ngf-store p,
body.ng-chrome .ngf .ngf-capabilities small,
body.ng-chrome .ngh .ngh-award__copy>p:last-of-type,
body.ng-chrome .ngf-bottom .ngh-award__detail,
body.ng-chrome .package-info .package-detail {
  font-size:16px;
  line-height:1.6;
}

/* Homepage supporting labels, captions and dates. */
body.ng-chrome .ngh .ngh-hero__note,
body.ng-chrome .ngh .ngh-featured__top,
body.ng-chrome .ngh .ngh-featured figcaption span,
body.ng-chrome .ngh .ngh-hero__ribbon,
body.ng-chrome .ngh .ngh-brands__label,
body.ng-chrome .ngh .ngh-step-number,
body.ng-chrome .ngh .ngh-blog-card time,
body.ng-chrome .ngh .ngh-hero__bottom p,
body.ng-chrome .ngh .ngh-intro-video figcaption,
body.ng-chrome .ngh .ngh-bitcoin__visual>span,
body.ng-chrome .ngh .ngh-bitcoin__tags span,
body.ng-chrome .ngh .ngh-texas__seal>small,
body.ng-chrome .ngh .ngh-ai__benefits span,
body.ng-chrome .ngh .ngh-payment-strip__inner>p,
body.ng-chrome .ngh .ngh-payment-mark>span,
body.ng-chrome .ngh .ngh-payment-note,
body.ng-chrome .ngh .ngh-core-service__top>span:last-child,
body.ng-chrome .ngh .ngh-core-service__support-heading p,
body.ng-chrome .ngh .ngh-team-caption p,
body.ng-chrome .ngh .ngh-texas__cities li>span,
body.ng-chrome .ngh .ngh-award__source,
body.ng-chrome .ngh .ngh-selected-portfolio .ngh-project__eyebrow,
body.ng-chrome .ngf-bottom .ngh-award__source {
  font-size:14px;
  line-height:1.5;
}

/* These notes have important declarations in their page modules. */
body.ng-chrome .ngh .ngh-hero__reassurance,
body.ng-chrome .ngm .ngm-cta .ngm-payment-note,
body.ng-chrome .ngx .ngx-count {
  font-size:14px !important;
  line-height:1.5 !important;
}

/* Shared service, secondary, city, industry and review metadata. */
body.ng-chrome .ngm .ngm-breadcrumb,
body.ng-chrome .ngm .ngm-facts,
body.ng-chrome .ngm .ngm-contact-links small,
body.ng-chrome .ngx .ngx-crumb,
body.ng-chrome .ngx .ngx-note,
body.ng-chrome .ngx .ngx-process span,
body.ng-chrome .ngx .ngx-post-copy .ngx-post-meta,
body.ng-chrome .ngcity .ngcity-small-note,
body.ng-chrome .ngcity .ngcity-breadcrumb,
body.ng-chrome .ngcity .ngcity-hero-art figcaption,
body.ng-chrome .ngcity .ngcity-planning-note,
body.ng-chrome .ngcity .ngcity-visual-label,
body.ng-chrome .ngcity .ngcity-local-visual small,
body.ng-chrome .ngcity .ngcity-service-top,
body.ng-chrome .ngcity .ngcity-work-links span,
body.ng-chrome .ngcity .ngcity-steps b,
body.ng-chrome .ngcity .ngcity-hero-note,
body.ng-chrome .ngcity .ngcity-facts,
body.ng-chrome .ngcity .ngcity-also,
body.ng-chrome .ngcity .ngcity-contact-form .wpcf7-not-valid-tip,
body.ng-chrome .ngsv .ngsv-sidebar li:before,
body.ng-chrome .ngsv .ngsv-privacy,
body.ng-chrome .ngsv .nf-field-description,
body.ng-chrome .ngi-main .ngi-photo figcaption,
body.ng-chrome .ngsr .ngsr__rating,
body.ng-chrome .ngsr .ngsr__topic,
body.ng-chrome .ngsr .ngsr__person p,
body.ng-chrome .ngsr .ngsr__source,
body.ng-chrome .ngsr .ngsr__note,
body.ng-chrome .ngx-bottom .ngx-review-context,
body.ng-chrome .ngx-bottom .ngx-review-source,
body.ng-chrome .ngf .ngf-directory-heading>span {
  font-size:14px;
  line-height:1.5;
}

/* Functional body links and buttons do not shrink on phones. */
body.ng-chrome .ngh .ngh-btn,
body.ng-chrome .ngh .ngh-link,
body.ng-chrome .ngh .ngh-award__link,
body.ng-chrome .ngh .ngh-texas__cities li>a,
body.ng-chrome .ngm .ngm-button,
body.ng-chrome .ngm .ngm-link,
body.ng-chrome .ngm .ngm-related-links a,
body.ng-chrome .ngm .ngm-contact-form input[type=submit],
body.ng-chrome .ngm .ngm-contact-form button[type=submit],
body.ng-chrome .ngx .ngx-btn,
body.ng-chrome .ngx .ngx-quick-links a,
body.ng-chrome .ngcity .ngcity-button,
body.ng-chrome .ngcity .ngcity-inline-link,
body.ng-chrome .ngcity .ngcity-page-nav a,
body.ng-chrome .ngcity .ngcity-contact-form input[type=submit],
body.ng-chrome .ngq .ngq-button,
body.ng-chrome .ngq .ngq-back,
body.ng-chrome .ngq .ngq-work-link,
body.ng-chrome .ngf-bottom .ngh-award__link,
body.ng-chrome .pagination .page-numbers {
  font-size:16px;
  line-height:1.4;
}

/* Allow enlarged labels to make a button taller instead of overflowing. */
body.ng-chrome .ngh .ngh-btn,
body.ng-chrome .ngm .ngm-button,
body.ng-chrome .ngx .ngx-btn,
body.ng-chrome .ngcity .ngcity-button,
body.ng-chrome .ngq .ngq-button {
  height:auto;
  max-width:100%;
  white-space:normal;
}

body.ng-chrome .ngh .ngh-video-toggle,
body.ng-chrome .ngh .ngh-team-caption button {
  font-size:15px;
  line-height:1.4;
  min-height:44px;
  max-width:100%;
  white-space:normal;
}

body.ng-chrome .ngh .ngh-team-caption {
  flex-wrap:wrap;
}

body.ng-chrome .ngh .ngh-team-caption p {
  min-width:0;
}

/* Keep legacy text-entry controls at the same scale as the refreshed forms. */
body.ng-chrome :is(input[type=text],input[type=email],input[type=tel],input[type=url],input[type=search],input[type=number],input[type=password],select,textarea) {
  font-size:16px;
  line-height:1.5;
  max-width:100%;
  box-sizing:border-box;
}

body.ng-chrome .wpcf7-checkbox .wpcf7-list-item label,
body.ng-chrome .ngx label,
body.ng-chrome .ngcity .ngcity-contact-form label {
  font-size:16px;
  line-height:1.5;
}

/* Quote form: labels and text-entry controls are functional text. */
body.ng-chrome .ngq .ngq-field>label,
body.ng-chrome .ngq .ngq-field-label,
body.ng-chrome .ngq .ngq-context .ngq-field>label,
body.ng-chrome .ngq .ngq-service-picker .wpcf7-list-item-label,
body.ng-chrome .ngq .ngq-contact-picker label,
body.ng-chrome .ngq .ngq-consent,
body.ng-chrome .ngq .ngq-recap>strong,
body.ng-chrome .ngq .ngq-questions summary,
body.ng-chrome .ngq .ngq-process h2,
body.ng-chrome .ngq .ngq-process strong,
body.ng-chrome .ngq .ngq-human strong {
  font-size:16px;
  line-height:1.5;
}

body.ng-chrome .ngq input[type=text],
body.ng-chrome .ngq input[type=email],
body.ng-chrome .ngq input[type=tel],
body.ng-chrome .ngq select,
body.ng-chrome .ngq textarea {
  font-size:16px;
  line-height:1.5;
  min-height:52px;
}

body.ng-chrome .ngq input[type=text],
body.ng-chrome .ngq input[type=email],
body.ng-chrome .ngq input[type=tel],
body.ng-chrome .ngq select {
  height:auto;
}

body.ng-chrome .ngq .ngq-breadcrumb,
body.ng-chrome .ngq .ngq-preview-banner,
body.ng-chrome .ngq .ngq-form-meta,
body.ng-chrome .ngq .ngq-step,
body.ng-chrome .ngq .ngq-step b,
body.ng-chrome .ngq .ngq-service-picker small,
body.ng-chrome .ngq .ngq-field>label em,
body.ng-chrome .ngq .ngq-field small,
body.ng-chrome .ngq .ngq-required-note,
body.ng-chrome .ngq .ngq-form-fine,
body.ng-chrome .ngq .ngq-reassurance,
body.ng-chrome .ngq .ngq-error,
body.ng-chrome .ngq .wpcf7-not-valid-tip,
body.ng-chrome .ngq .wpcf7-response-output,
body.ng-chrome .ngq .ngq-form-alert,
body.ng-chrome .ngq .ngq-preview-result {
  font-size:14px;
  line-height:1.5;
}

body.ng-chrome .ngq .ngq-process li>span {
  font-size:14px;
  line-height:25px;
}

body.ng-chrome .ngq .ngq-form-meta,
body.ng-chrome .ngq .ngq-reassurance,
body.ng-chrome .ngq .ngq-actions {
  flex-wrap:wrap;
}

body.ng-chrome .ngq .ngq-step {
  min-width:0;
  flex-wrap:wrap;
  align-content:flex-start;
  align-items:flex-start;
}

body.ng-chrome .ngq .ngq-service-picker label {
  height:auto;
}

body.ng-chrome .ngq .ngq-button {
  min-height:52px;
}

/* Footer labels, addresses and legal links are readable without zooming. */
body.ng-chrome .ngc-more__panel>span,
body.ng-chrome .ngc-mobile__panel>p,
body.ng-chrome .ngc-footer h2,
body.ng-chrome .ngc-footer__address span,
body.ng-chrome .ngc-footer__social a,
body.ng-chrome .ngc-footer__additional>span,
body.ng-chrome .ngc-footer__additional a,
body.ng-chrome .ngc-footer__bottom p,
body.ng-chrome .ngc-footer__bottom a {
  font-size:14px;
  line-height:1.5;
}

/* site-chrome.css declares this address size important. */
body.ng-chrome .ngc-footer__address {
  font-size:14px !important;
  line-height:1.5;
}

body.ng-chrome .ngc-footer__bottom>div {
  flex-wrap:wrap;
}

/* Pricing content needs more than five narrow columns on smaller desktops. */
body.ng-chrome .ngm .ngm-plan {
  min-width:0;
}

body.ng-chrome .ngm .ngm-plan h3,
body.ng-chrome .ngm .ngm-plan .ngm-plan-range {
  overflow-wrap:break-word;
}

@media (min-width:801px) and (max-width:1100px) {
  body.ng-chrome .ngm .ngm-plans--5 {
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
}

@media (min-width:801px) and (max-width:1100px) {
  body.ng-chrome .ngq .ngq-service-picker .wpcf7-form-control {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media (max-width:600px) {
  body.ng-chrome .ng-next-move .ng-next-move__kicker,
  body.ng-chrome .ngh-cta .ngh-kicker,
  body.ng-chrome .ngm-cta .ngm-kicker,
  body.ng-chrome .ngx-cta .ngx-kicker,
  body.ng-chrome .ngq-closing .ngq-closing__eyebrow {
    font-size:18px !important;
  }

  /* Reserve room for readable quote text and the menu at 320px. */
  body.ng-chrome .ngc-brand {
    flex:0 1 138px;
    min-width:0;
  }

  body.ng-chrome .ngc-mobile {
    flex:0 0 auto;
  }

  body.ng-chrome .ngc-header .ngc-quote {
    font-size:15px;
    line-height:1.3;
    min-height:44px;
  }
}

/* Keep the remaining shared metadata and expandable navigation legible. */
body.ng-chrome .ngh .ngh-google-proof strong,
body.ng-chrome .ngh .ngh-google-feature__eyebrow,
body.ng-chrome .ngh .ngh-google-feature__quote figcaption strong,
body.ng-chrome .ngh .ngh-google-feature__quote figcaption span,
body.ng-chrome .ngh .ngh-team-stages span,
body.ng-chrome .ngh .ngh-graphic-label {
  font-size:14px;
  line-height:1.5;
}
body.ng-chrome .ngh .ngh-selected-portfolio .ngh-project__body > p:not(.ngh-project__eyebrow) {
  font-size:16px;
  line-height:1.6;
}
body.ng-chrome .ngc-more__resources { flex-wrap:wrap; gap:12px 20px; }
body.ng-chrome .ngc-footer__grid > * { min-width:0; }
body.ng-chrome .ngc-mobile__secondary a { font-size:16px; line-height:1.45; }
body.ng-chrome .ngh .ngh-team-stages { flex-wrap:wrap; }
body.ng-chrome :is(main, .ngc-footer) :is(p, h1, h2, h3, h4, label) { overflow-wrap:break-word; }
body.ng-chrome :is(.ngh-btn,.ngm-button,.ngx-btn,.ngcity-button,.ngq-button) svg { flex-shrink:0; }
@media(max-width:1100px) {
  body.ng-chrome .ngc-mobile > summary { width:44px; min-width:44px; min-height:44px; }
}
@media(max-width:600px) {
  /* Enough room below the action and final links to scroll clear of floating controls. */
  body.ng-chrome .ngh-cta,
  body.ng-chrome .ngm-cta,
  body.ng-chrome .ngq-closing { padding-bottom:92px; }
  body.ng-chrome .ng-next-move { padding-bottom:92px !important; }
  body.ng-chrome .ngc-footer__inner { padding-bottom:96px; }
  body.ng-chrome .ngh .ngh-hero__bottom { flex-wrap:wrap; }
}
/* Verified Chatbase launcher: retain its 55px icon target without the wide mobile pill. */
@media(max-width:600px) {
  body.ng-chrome #chatbase-bubble-button {
    box-sizing:border-box !important;
    width:55px !important;
    min-width:55px !important;
    padding:0 !important;
    gap:0 !important;
    justify-content:center !important;
  }
  body.ng-chrome #chatbase-bubble-label { display:none !important; }
}
/* Keep enlarged local-page jump links visible without horizontal panning. */
body.ng-chrome .ngcity .ngcity-page-nav .ngcity-shell {
  flex-wrap:wrap;
  justify-content:flex-start;
  gap:0 26px;
  overflow-x:visible;
}
body.ng-chrome .ngcity .ngcity-page-nav a { white-space:normal; padding:13px 0; }
body.ng-chrome .ngh #awards .ngh-award__link { font-size:16px; line-height:1.4; }

/* Constrain legacy single-entry content to its padded tablet column. */
body.ng-chrome.single .container-content-page .container-full-post {max-width:100%}

/* Industry landing-page labels. */
body.ng-chrome .ngi-main .ngx-eyebrow {font-size:16px;line-height:1.5;letter-spacing:.06em}

/* Areas Served labels, coverage cards and photo captions. */
body.ng-chrome .nga .nga-kicker {font-size:16px;line-height:1.5;letter-spacing:.06em}
body.ng-chrome .nga .nga-cta .nga-kicker {font-size:20px;line-height:1.4}
body.ng-chrome .nga .nga-map figcaption,
body.ng-chrome .nga .nga-feature>span,
body.ng-chrome .nga .nga-service-grid>a>span,
body.ng-chrome .nga .nga-city-grid small,
body.ng-chrome .nga .nga-coverage-card small {font-size:14px;line-height:1.5}
body.ng-chrome .nga .nga-directory-top p,
body.ng-chrome .nga .nga-directory-top a,
body.ng-chrome .nga .nga-feature strong {font-size:16px;line-height:1.5}
body.ng-chrome .nga .nga-city-grid a>span:first-child {min-width:0;overflow-wrap:break-word}
body.ng-chrome .nga .nga-city-grid a>span:last-child {flex-shrink:0}
body.ng-chrome #ngx-main .ai-photo figcaption,
body.ng-chrome #ngx-main .ai-network-photo figcaption {font-size:14px;line-height:1.5}
body.ng-chrome #ngx-main .ai-hero-visual .ngx-eyebrow,
body.ng-chrome #ngx-main .ai-hero-visual .ngx-social-tiles>div>span {font-size:14px;line-height:1.5;letter-spacing:.05em}
@media(max-width:600px){body.ng-chrome .nga .nga-cta .nga-kicker {font-size:18px}}
@media(max-width:380px){body.ng-chrome #ngx-main .ai-hero-visual .ngx-social-tiles {grid-template-columns:minmax(0,1fr)}}

/* Readability additions for the web design, logo, ecommerce and survey pages.
 * Append after the existing shared audit styles. Decorative SVG text and the
 * contents of the interactive device mockup are deliberately excluded.
 */

/* The web design template supplies its own inline stylesheet and breakpoints. */
body.ng-chrome .ngw-design .ngw-eyebrow {
  font-size:16px;
  line-height:1.5;
  letter-spacing:.06em;
}

body.ng-chrome .ngw-design .ngw-cta .ngw-eyebrow {
  font-size:20px;
  line-height:1.4;
}

body.ng-chrome .ngw-design .ngw-cta p:not(.ngw-eyebrow) {
  font-size:20px;
  line-height:1.6;
}

body.ng-chrome .ngw-design .ngw-hero__note,
body.ng-chrome .ngw-design .ngw-hero__ribbon>span,
body.ng-chrome .ngw-design .ngw-brands p,
body.ng-chrome .ngw-design .ngw-service-card__number,
body.ng-chrome .ngw-design .ngw-process__steps b,
body.ng-chrome .ngw-design .ngwsb-actual__chips span,
body.ng-chrome .ngw-design .ngwsb-actual__caption .ngwsb-actual__note,
body.ng-chrome .ngw-design .ngw-conversion__details span,
body.ng-chrome .ngw-design .ngw-hero__project-top,
body.ng-chrome .ngw-design .ngw-hero__project-top strong,
body.ng-chrome .ngw-design .ngw-hero__caption span,
body.ng-chrome .ngw-design .ngw-project__caption p,
body.ng-chrome .ngw-design .ngw-testimonial__label,
body.ng-chrome .ngw-design .ngw-editorial-photo figcaption {
  font-size:14px;
  line-height:1.5;
}

/* This one source rule is important; the status span inherits the corrected size. */
body.ng-chrome .ngw-design .ngwd .ngwd__note {
  font-size:14px !important;
  line-height:1.5;
}

/* Keep this page's real controls aligned with the shared 16px control scale. */
body.ng-chrome .ngw-design .ngw-btn,
body.ng-chrome .ngw-design .ngw-link,
body.ng-chrome .ngw-design .ngwd__toggle,
body.ng-chrome .ngw-design .ngwd__link,
body.ng-chrome .ngw-design .ngwsb-actual__link {
  font-size:16px;
  line-height:1.4;
}

/* The long quote-button text may wrap after the font increase. */
body.ng-chrome .ngw-design .ngw-btn,
body.ng-chrome .ngw-design .ngwd__toggle,
body.ng-chrome .ngw-design .ngwd__link {
  max-width:100%;
  height:auto;
  white-space:normal;
}

body.ng-chrome .ngw-design .ngw-cta__inner>div {
  min-width:0;
}

/* Logo page: the floating caption and captions below actual logo samples. */
body.ng-chrome .ngx .ngx-visual--logo>.ngx-float,
body.ng-chrome .ngx .ngx-logo-sample figcaption>span {
  font-size:14px;
  line-height:1.5;
}

/* Shopify and WooCommerce capability-board labels, not artwork internals. */
body.ng-chrome .ngf .ngf-store-top,
body.ng-chrome .ngf .ngf-capabilities li>span {
  font-size:14px;
  line-height:1.5;
}

/* Shared by all five simple survey forms, including their validation text. */
body.ng-chrome .ngsv .ngsv-field em,
body.ng-chrome .ngsv .ngsv-submit p,
body.ng-chrome .ngsv .wpcf7-not-valid-tip {
  font-size:14px;
  line-height:1.5;
}

@media (max-width:600px) {
  body.ng-chrome .ngw-design .ngw-cta .ngw-eyebrow {
    font-size:18px;
  }

  body.ng-chrome .ngw-design .ngw-cta p:not(.ngw-eyebrow) {
    font-size:18px;
  }
}


/* Give the entire closing invitation a comfortable reading size. */
body.ng-chrome .ng-next-move .ng-next-move__copy,
body.ng-chrome .ngh-cta p:not(.ngh-kicker),
body.ng-chrome .ngm-cta p:not(.ngm-kicker):not(.ngm-payment-note),
body.ng-chrome .ngx-cta p:not(.ngx-kicker),
body.ng-chrome .nga-cta p:not(.nga-kicker),
body.ng-chrome .ngq-closing p:not(.ngq-closing__eyebrow) {
  font-size:20px !important;
  line-height:1.65 !important;
}
body.ng-chrome .ng-next-move a.ng-next-move__button {
  font-size:16px;
  max-width:100%;
  white-space:normal;
}
@media(max-width:600px) {
  body.ng-chrome .ng-next-move .ng-next-move__copy,
  body.ng-chrome .ngh-cta p:not(.ngh-kicker),
  body.ng-chrome .ngm-cta p:not(.ngm-kicker):not(.ngm-payment-note),
  body.ng-chrome .ngx-cta p:not(.ngx-kicker),
  body.ng-chrome .nga-cta p:not(.nga-kicker),
  body.ng-chrome .ngq-closing p:not(.ngq-closing__eyebrow) {
    font-size:18px !important;
  }
}

/* Chatbase calculates a compact width when initialized on a phone.
 * Let the closed tablet/desktop pill fit its label after a viewport resize. */
@media(min-width:601px) {
  body.ng-chrome #chatbase-bubble-button[aria-expanded="false"] {
    width:max-content !important;
    min-width:55px !important;
  }
}


