/* Shared layout contract. Load after page styles; keep content at its natural height. */
:root {
  --zl-card-title: 22px;
  --zl-body-size: 16px;
  --zl-card-padding: 24px;
  --zl-grid-gap: 24px;
  --zl-section-title: 36px;
  --zl-article-title: 28px;
}
html body main :is(.za-grid-2,.za-grid-3,.za-grid-4,.zc-catalog-grid,.zc-related-grid) {
  gap: var(--zl-grid-gap);
  align-items: stretch;
}
html body main :is(.za-grid-2,.za-grid-3,.za-grid-4,.zc-catalog-grid,.zc-related-grid)>* {
  min-width: 0;
  box-sizing: border-box;
}
html body main .zc-related-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
html body main .zab-support__grid>* { min-width: 0; overflow-wrap: break-word; }
html body main .zab-support__portal-card,
html body main .zab-support__portal-card ul { grid-template-columns: minmax(0,1fr); min-width: 0; }
html body main .zab-support__portal-card li { min-width: 0; }
html body.zv-enabled main .za-card,
html body main .zr-editorial .za-card {
  padding: var(--zl-card-padding);
  min-width: 0;
  box-sizing: border-box;
}
html body.zv-enabled main .za-card:not(.zc-article) :is(h2,h3),
html body main .zr-editorial .za-card :is(h2,h3) {
  font-size: var(--zl-card-title);
  line-height: 1.35;
  letter-spacing: -.02em;
  margin: 0 0 12px;
  overflow-wrap: break-word;
}
html body.zv-enabled main .za-card :is(p,li),
html body main .zr-editorial .za-card :is(p,li) {
  font-size: var(--zl-body-size);
  line-height: 1.65;
  overflow-wrap: break-word;
}
html body.zv-enabled main .za-card p { margin: 0 0 16px; }
html body.zv-enabled main .za-section h2,
html body main .zr-editorial> .za-container>h2 {
  font-size: var(--zl-section-title);
  line-height: 1.2;
  letter-spacing: -.025em;
}
/* Card titles must win over section headings, regardless of whether h2 or h3 is used. */
html body.zv-enabled main .za-section .za-card:not(.zc-article) h2 {
  font-size: var(--zl-card-title);
  line-height: 1.35;
}
html body.zv-enabled main .zc-article h2 {
  font-size: var(--zl-article-title);
  line-height: 1.3;
  letter-spacing: -.02em;
}
html body.zv-enabled main .za-hero h1,
html body main .zhp-hero h1 {
  font-size: clamp(32px,3.7vw,48px);
  line-height: 1.15;
  overflow-wrap: break-word;
}
html body.zv-enabled main .za-hero__grid { align-items: start; }
html body.zv-enabled main .za-hero p { font-size: 18px; line-height: 1.65; }
/* Catalogs: equal rows on wide screens, flexible text and aligned final links. */
html body main :is(.zr-editorial .za-grid-3,.zc-catalog-grid,.zc-related-grid) {
  grid-auto-rows: 1fr;
}
html body main a.za-card.zc-link-card,
html body main .zr-editorial a.za-card {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  height: 100%;
  min-height: 0;
  text-decoration: none;
}
html body main a.za-card.zc-link-card>span:last-child,
html body main .zr-editorial a.za-card>span:last-child {
  margin-top: auto;
  padding-top: 16px;
  font-size: 15px;
  line-height: 1.4;
}
html body main a.za-card :is(.za-card-img,.zc-card-media) { flex-shrink: 0; }
html body main :is(.za-btn,.zhp-button) {
  min-height: 48px;
  height: auto;
  padding: 12px 20px;
  line-height: 1.4;
  text-align: center;
  box-sizing: border-box;
  max-width: 100%;
}
html body main a[href^="tel:"] { white-space: nowrap; }
@media(max-width:1100px) and (min-width:641px) {
  html body main :is(.za-grid-3,.za-grid-4,.zc-catalog-grid,.zc-related-grid) {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
}
@media(max-width:640px) {
  html body main .zab-support__grid { grid-template-columns: minmax(0,1fr); }
  :root {
    --zl-card-title: 20px;
    --zl-card-padding: 20px;
    --zl-grid-gap: 16px;
    --zl-section-title: 28px;
    --zl-article-title: 24px;
  }
  html body main :is(.za-grid-2,.za-grid-3,.za-grid-4,.zc-catalog-grid,.zc-related-grid) {
    grid-template-columns: minmax(0,1fr);
    grid-auto-rows: auto;
  }
  html body.zv-enabled main .za-hero h1,
  html body main .zhp-hero h1 { font-size: 32px; }
  html body.zv-enabled main .za-section { padding: 40px 0; }
  html body main a.za-card.zc-link-card,
  html body main .zr-editorial a.za-card { height: auto; }
}

/* Explicit dark-surface text; never inherit the light-section paragraph color. */
html body.zv-enabled main .zhd-portal p { color: #e2ecf8; }
html body main .zhd-portal .zr-support-hours strong { color: #ffffff; }
html body main .zhd-portal .zr-support-hours a { color: #9fddff; text-decoration: underline; text-underline-offset: .2em; }
html body main .zhd-portal .zr-support-hours p { font-size: 16px; line-height: 1.7; margin: 0; }
html body main .zhd-portal .zr-support-hours { width: min(1240px, calc(100% - 28px)); margin-inline: auto; padding: 20px 0 32px; }
/* Mobile already has persistent call and request actions. Avoid a second overlay. */
@media(max-width:960px) { html body .zs-contact-widget { display: none; } }
/* Section labels must remain readable on their actual surface. */
html body.zv-enabled main .zc-faq>summary { padding-right:54px; overflow-wrap:break-word; }
html body.zv-enabled main .zc-section-head>span { width:auto; min-width:38px; height:auto; min-height:38px; padding:8px; box-sizing:border-box; line-height:1.35; }
html body.zv-enabled main .zc-section-head>div { min-width:0; }
html body .zr-request__eyebrow { color:#fff; background:#1d4ed8; line-height:1.5; }
html body .zr-request__intro>.zhp-button { margin-bottom:24px; }
html body .zr-request__benefits { margin-top:0; }
html body .zr-request__benefits h3 { margin:0 0 12px; line-height:1.35; }
html body .zr-request__benefits p { margin:0; line-height:1.6; }
@media(max-width:640px) {
 html body.zv-enabled main .zc-case-architecture { display:flex; flex-direction:column; align-items:stretch; overflow:visible; gap:8px; }
 html body.zv-enabled main .zc-case-architecture>b { min-width:0; width:100%; white-space:normal; box-sizing:border-box; }
 html body.zv-enabled main .zc-case-architecture>i { align-self:center; transform:rotate(90deg); }
 html body main table[data-responsive-table] { display:block; width:100%; min-width:0; border:0; }
 html body main table[data-responsive-table] thead { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
 html body main table[data-responsive-table] tbody { display:block; }
 html body main table[data-responsive-table] tbody tr { display:block; padding:12px 16px; border-bottom:1px solid #d8e2ef; }
 html body main table[data-responsive-table] td { display:block; width:100%; min-width:0; padding:8px 0; border:0; white-space:normal; overflow-wrap:break-word; font-size:16px; line-height:1.5; }
 html body main table[data-responsive-table] td::before { content:attr(data-label); display:block; font-weight:700; color:#172b46; font-size:13px; margin-bottom:4px; }
 html body main .zc-service-map__flow { display:flex; flex-direction:column; align-items:stretch; overflow:visible; gap:8px; }
 html body main .zc-service-map__flow>span { min-width:0; width:100%; }
 html body main .zc-service-map__flow>i { align-self:center; transform:rotate(90deg); }
 html body main .zc-quick-nav { position:static; }
 html body main .zc-quick-nav>.za-container { display:flex; flex-wrap:wrap; overflow:visible; gap:8px; padding-block:12px; }
 html body main .zc-quick-nav a { white-space:normal; font-size:14px; line-height:1.4; }
 html body main :is(.zr-editorial .za-grid-3,.zc-catalog-grid,.zc-related-grid) { grid-auto-rows:auto; }
 html body main .zr-editorial a.za-card { height:auto; }
 html body .zr-request__benefits article { padding:20px; gap:16px; grid-template-columns:36px minmax(0,1fr); }
 html body .zr-request__eyebrow { font-size:12px; letter-spacing:.06em; padding:8px 12px; }
}
html body.zv-enabled main .zc-eyebrow { color:#1748ac; }
html body.zv-enabled main .zab-section-head:not(.zab-section-head--light) .za-eyebrow { color:#1748ac; }
html body.zv-enabled main .zab-section-head--light .za-eyebrow { color:#fff; background:#1d4ed8; }
.zr-case-update { padding:48px 0; background:#f1f6fc; color:#15243a; }
.zr-case-update__inner { width:min(1120px,calc(100% - 40px)); margin:auto; }
.zr-case-update h2 { font-size:clamp(26px,3vw,36px); line-height:1.25; margin:0 0 24px; }
.zr-case-update h3 { font-size:22px; line-height:1.35; margin:28px 0 12px; }
.zr-case-update p { font-size:17px; line-height:1.7; max-width:850px; margin:0 0 16px; }
.zr-case-update a { color:#1748ac; text-decoration:underline; text-underline-offset:.2em; }
html body.zv-enabled main .zc-channel__content>span { white-space:normal; overflow-wrap:break-word; }
html body.zv-enabled main .zc-section--dark .zc-eyebrow { color:#9ecaff; }
html body.zv-enabled main .zc-case-visual--logo .za-case-photo figcaption { color:#53657d; }
/* Numbered steps retain their own row above injected icons. */
html body.zv-enabled main .zc-steps .za-card>b{position:static;display:block;margin:0 0 14px;line-height:1.4}
html body.zv-enabled main .za-grid-3+.zc-related-grid,
html body.zv-enabled main .za-grid-3+.za-card,
html body.zv-enabled main .za-grid-3+.za-note{margin-top:24px}
html body.zv-enabled main .zc-form .zc-consent-note{margin:14px 0 20px;line-height:1.6}
html body.zv-enabled main .zp-hero-note span{color:#334b68}
html body.zv-enabled main .zab-contact-link{color:#9dccff}
html body.zv-enabled main .rt-role-card>small{color:#9b420d}
html body.zv-enabled main .zab-development__case p,
html body.zv-enabled main .zc-proof__copy p{color:#52647c}
@media(min-width:641px) and (max-width:1024px){
 html body main .zc-quick-nav {position:static}
 html body main .zc-quick-nav>.za-container {display:flex;flex-wrap:wrap;overflow:visible;gap:8px;padding-block:12px}
 html body main .zc-quick-nav a {white-space:normal;line-height:1.4}
}
html body main .zhd-portal__media-note{max-width:65%;font-size:14px;line-height:1.6;color:#b8cce4}

/* Narrow windows with classic scrollbars: use the available content width. */
@media(max-width:360px){html body,html body.za-about{min-width:0}html body .zs-header__inner{gap:8px}}

