/* Shared CMS/content resilience layer.
 * Load this after page-specific styles. Text nodes own their height; only
 * compact list/card summaries are clamped. Detail content is never clamped. */

html,
html body {
  max-width: 100%;
  overflow-x: clip;
}

html body main,
html body main * {
  box-sizing: border-box;
}

html body main :where(section, article, aside, header, footer, nav, div, ul, ol, dl) > * {
  min-width: 0;
}

html body main :where(h1, h2, h3, h4, h5, h6, p, li, dt, dd) {
  min-width: 0;
  max-width: 100%;
}

/* CMS copy may contain long English tokens, model names, URLs or SKU text. */
html body main :where(h1, h2, h3, h4, h5, h6, p, li, dt, dd, th, td) {
  overflow-wrap: anywhere;
  word-break: normal;
}

html body main :where(h1, h2, h3, h4, h5, h6, p, dt, dd) {
  white-space: normal !important;
}

/* Headings, introductory copy and rich content are complete content, not teasers. */
html body main :where(
  .hub-section-head,
  .section-heading,
  .scenario-stage-head,
  .case-list-head,
  .related-paths > .section-shell > header,
  .context-paths > .section-shell > header,
  .recommended-products-head,
  .article-directory-head,
  .block-head,
  .detail-richtext,
  .webpageTemplate-text
) :is(h1, h2, h3, h4, h5, h6, p) {
  display: block !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  -webkit-box-orient: initial !important;
  -webkit-line-clamp: unset !important;
  line-clamp: unset !important;
}

html body main :where(
  .hub-section-head,
  .section-heading,
  .scenario-stage-head,
  .case-list-head,
  .related-paths > .section-shell > header,
  .context-paths > .section-shell > header,
  .recommended-products-head,
  .article-directory-head,
  .block-head,
  .detail-richtext,
  .webpageTemplate-text
) :is(span, strong, b, small, em),
html body main .detail-richtext :is(h1, h2, h3, h4, h5, h6, p) {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  -webkit-box-orient: initial !important;
  -webkit-line-clamp: unset !important;
  line-clamp: unset !important;
}

html body main :is(.detail-richtext, .webpageTemplate-text .con, .faq-answer) {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
  white-space: normal;
  overflow-wrap: anywhere;
  -webkit-overflow-scrolling: touch;
}

html body main :is(.detail-richtext, .webpageTemplate-text .con, .faq-answer) :is(img, video, iframe, svg) {
  max-width: 100%;
  height: auto;
}

html body main :is(.detail-richtext, .webpageTemplate-text .con, .faq-answer) table {
  max-width: 100%;
}

html body main :is(.detail-richtext, .webpageTemplate-text .con, .faq-answer) :is(th, td) {
  white-space: normal !important;
  overflow-wrap: anywhere;
}

/* Text links may wrap, but button-like controls keep their component-owned
 * dimensions. Control height must not be changed from this shared layer. */
html body main :is(
  .hub-arrow-link,
  .product-main-feature-link, .case-detail-link,
  .entity-more
) {
  white-space: normal !important;
  overflow-wrap: anywhere;
}

html body main :is(
  .product-related-tag, .recommended-product-type,
  .company-tag, .entity-type, .hub-card-meta,
  .keywords > span
) {
  height: auto !important;
  min-height: 0;
  max-height: none !important;
  white-space: normal !important;
  overflow-wrap: anywhere;
}

/* Three-line card titles. */
html body main.page-products :is(
  .grid-products > .hub-card > h3,
  .product-main-feature-copy > h3,
  .product-main-feature-copy > strong,
  .product-related-grid > a > div > h3
),
html body main.page-solutions :is(
  .solution-row-copy > h3,
  .solution-related-list > a h3
),
html body main.page-scenarios :is(
  .scenario-overview-copy > header > h3,
  .scenario-stage-copy > h3,
  .scenario-related-grid > a > div > h3
),
html body main.page-cases :is(
  .case-evidence-main > h3,
  .context-path-grid > a > div > h3
),
html body main :is(.newsItem, .news) > .item .rights > .title,
html body main .news-hot-essay-box .list > .item > .title,
html body main .news-recommend-essay-box .con > .item .right > .title,
html body main.pd-page .recommended-product-body > h3,
html body main.pd-page .article-directory-copy > strong,
html body main.pd-page .decision-card .entity-link > strong {
  display: -webkit-box !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

/* Descriptive teaser copy receives more room than its title. */
html body main.page-products :is(
  .grid-products > .hub-card > p,
  .product-main-feature-copy > p,
  .product-related-grid > a > div > p
),
html body main.page-solutions :is(
  .solution-row-copy > p,
  .solution-row > aside > p,
  .solution-related-list > a p
),
html body main.page-scenarios :is(
  .scenario-overview-copy > header > p,
  .scenario-stage-copy > p,
  .scenario-stage-copy > div > span > em,
  .scenario-stage-list > article > aside > span,
  .scenario-proof > span,
  .scenario-related-grid > a > div > p
),
html body main.page-cases :is(
  .case-evidence-main > p,
  .case-pain > span,
  .case-evidence-main > ul > li,
  .case-evidence-list > article > aside dd,
  .case-proof > span,
  .context-path-grid > a > div > p
),
html body main :is(.newsItem, .news) > .item .rights > .con,
html body main.pd-page .recommended-product-body > p,
html body main.pd-page .decision-card .entity-link > span:last-child {
  display: -webkit-box !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 4 !important;
  line-clamp: 4 !important;
}

/* A few decision fields need one extra line because they carry full phrases. */
html body main.page-scenarios .scenario-stage-list > article > aside > strong,
html body main.page-solutions .solution-feature-copy > :is(p, .solution-outcomes),
html body main.pd-page :is(.purchase-desc, .ad-cover-desc, .case-summary-lead, .price-note) {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  -webkit-box-orient: initial !important;
  -webkit-line-clamp: unset !important;
  line-clamp: unset !important;
}

/* Metadata is small, but must wrap instead of colliding with adjacent fields. */
html body main :is(
  .source, .dateAndRead,
  .article-directory-meta, .consultant-line,
  .match-item, .guide-step
) {
  min-width: 0;
  max-width: 100%;
  height: auto !important;
  max-height: none !important;
  flex-wrap: wrap;
  white-space: normal !important;
}

html body main :is(.source, .dateAndRead, .article-directory-meta) :is(span, a, b, small) {
  white-space: normal !important;
  overflow-wrap: anywhere;
}

html body main .news-hot-essay-box .list > .item > .title,
html body main .news-hot-essay-box .list > .item > .title > a {
  display: -webkit-box !important;
  width: 100% !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 1 !important;
  line-clamp: 1 !important;
}

/* Horizontal category rails keep their component-owned dimensions. */
html body main :is(.case-dynamic-tabs, .solution-dynamic-tabs) > .section-shell > a {
  min-width: 0;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

/* Navigation tabs are controls, not content cards. Preserve the page-owned
 * height and truncate a pathological label instead of stretching the bar. */
html body main .hub-tabs:not(.case-dynamic-tabs):not(.solution-dynamic-tabs) > .section-shell {
  overflow: hidden;
}

html body main .hub-tabs:not(.case-dynamic-tabs):not(.solution-dynamic-tabs) > .section-shell > a {
  min-width: 0;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

/* Attribute/fact grids previously fixed every cell to a Chinese two-line row. */
html body main :is(.match-grid, .case-facts, .ad-quick-facts) {
  grid-auto-rows: minmax(72px, auto) !important;
  align-items: stretch;
}

html body main :is(.match-grid > .match-item, .case-facts > div, .ad-quick-facts > div) {
  box-sizing: border-box;
  height: auto !important;
  min-height: 72px !important;
  max-height: none !important;
  align-self: stretch;
  overflow: hidden;
}

html body main .match-title {
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  flex-wrap: wrap;
  gap: 6px 12px;
  white-space: normal !important;
}

html body main :is(.match-item, .case-facts > div, .ad-quick-facts > div) > small {
  display: -webkit-box !important;
  height: auto !important;
  max-height: none !important;
  overflow: hidden !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main :is(.match-item, .case-facts > div, .ad-quick-facts > div) > strong {
  display: -webkit-box !important;
  height: auto !important;
  max-height: none !important;
  overflow: hidden !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 4 !important;
  line-clamp: 4 !important;
}

/* Hero summaries and metric tiles grow with localized content. */
html body main :is(.about-hero-bright, .partner-hero, .coop-hero) {
  height: auto !important;
  max-height: none !important;
}

html body main :is(
  .hub-hero-inner, .about-hero-layout, .partner-hero-inner, .coop-hero-inner,
  .hero-note
) {
  height: auto !important;
  max-height: none !important;
  min-width: 0;
}

html body main .hero-note {
  min-height: 0 !important;
  overflow: hidden;
}

html body main .hero-note > strong {
  display: -webkit-box !important;
  overflow: hidden !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html body main .hero-note > span {
  display: -webkit-box !important;
  overflow: hidden !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 4 !important;
  line-clamp: 4 !important;
}

html body main :is(
  .hub-hero-actions, .about-hero-actions, .partner-hero-actions,
  .coop-hero-actions, .purchase-actions, .ad-cover-actions,
  .cta-actions
) {
  min-width: 0;
  max-width: 100%;
  flex-wrap: wrap;
}

html body main :is(
  .hub-hero-actions, .about-hero-actions, .partner-hero-actions,
  .coop-hero-actions, .purchase-actions, .ad-cover-actions,
  .cta-actions
) > a {
  min-width: 0 !important;
  max-width: 100% !important;
  overflow-wrap: anywhere;
}

/* Detail decision strips use normal-height rows and bounded teaser copy. */
html body main.pd-page :is(.attention-strip, .attention-inner, .attention-intro, .attention-questions) {
  height: auto !important;
  max-height: none !important;
}

html body main.pd-page .attention-question {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-rows: auto auto;
  align-content: center;
  column-gap: 8px;
  row-gap: 6px;
  height: auto !important;
  min-height: 72px;
  max-height: none !important;
  min-width: 0;
  overflow: hidden;
}

html body main.pd-page .attention-question > b {
  grid-column: 1;
  grid-row: 1;
  align-self: center;
  width: auto !important;
  max-width: 100%;
}

html body main.pd-page .attention-question > strong {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  display: -webkit-box !important;
  overflow: hidden !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html body main.pd-page .attention-question > em {
  grid-column: 1 / -1;
  grid-row: 2;
  display: -webkit-box !important;
  overflow: hidden !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 4 !important;
  line-clamp: 4 !important;
}

/* Compact chips wrap inside the card instead of widening it. */
html body main :is(
  .company-tag, .entity-type, .product-related-tag,
  .recommended-product-type, .scenario-related-grid > a > div > small
) {
  box-sizing: border-box;
  width: auto !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 22px;
  max-height: none !important;
  overflow: hidden !important;
  text-overflow: ellipsis;
  white-space: normal !important;
  overflow-wrap: anywhere;
}

/* Related-path labels are compact metadata, but one line is too fragile for
 * translated or CMS-provided labels. Keep two lines without fixing height. */
html body main.page-scenarios #scenarioPageRelatedPaths
  .scenario-related-grid.scenario-related-grid > a > div > small {
  display: -webkit-box !important;
  min-height: 22px !important;
  height: auto !important;
  max-height: none !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main :is(
  .context-path-grid > a, .product-related-grid > a,
  .scenario-related-grid > a, .institute-research-grid > article,
  .about-strength-grid > article,
  .partner-support-grid > article, .home-trust-item
) {
  min-width: 0 !important;
  max-width: 100%;
  height: auto !important;
  max-height: none !important;
}

html body main :is(
  .context-path-grid > a, .product-related-grid > a,
  .scenario-related-grid > a, .institute-research-grid > article,
  .about-strength-grid > article,
  .partner-support-grid > article, .home-trust-item
) > * {
  min-width: 0;
  max-width: 100%;
}

/* Homepage trust items used fixed grid tracks and nowrap labels. */
html body > main .home-trust-strip.home-trust-strip
  .home-trust-item.home-trust-item {
  height: auto !important;
  min-height: 119px !important;
  max-height: none !important;
}

html body > main .home-trust-strip.home-trust-strip
  .home-trust-copy.home-trust-copy {
  box-sizing: border-box;
  width: auto !important;
  min-width: 0 !important;
  max-width: 100% !important;
  grid-template-rows: auto auto !important;
  overflow: hidden;
}

html body > main .home-trust-strip.home-trust-strip
  .home-trust-copy.home-trust-copy > strong {
  display: -webkit-box !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body > main .home-trust-strip.home-trust-strip
  .home-trust-copy.home-trust-copy > .home-trust-detail {
  display: inline-flex !important;
  width: max-content !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  max-height: 3em !important;
  -webkit-box-orient: initial !important;
  -webkit-line-clamp: unset !important;
  line-clamp: unset !important;
}

/* About-page capability cards keep a 300px baseline but grow with all copy. */
html body main.page-about .about-strength-section
  .about-strength-grid.about-strength-grid > article {
  height: auto !important;
  min-height: 300px !important;
  max-height: none !important;
}

html body main.page-about .about-strength-section
  .about-strength-grid.about-strength-grid > article > :is(h3, p) {
  display: block !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: initial !important;
  -webkit-line-clamp: unset !important;
  line-clamp: unset !important;
}

/* Card metadata is content, not an absolutely positioned decoration. */
html body main .hub-card .hub-card-meta.hub-card-meta {
  position: static !important;
  display: flex !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  flex-wrap: wrap !important;
  align-items: flex-start !important;
  gap: 4px 8px;
  overflow: hidden !important;
}

html body main .hub-card .hub-card-meta.hub-card-meta > :is(span, em) {
  position: static !important;
  inset: auto !important;
  display: -webkit-box !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
}

html body main .hub-card .hub-card-meta.hub-card-meta > span {
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main .hub-card .hub-card-meta.hub-card-meta > em {
  flex: 1 1 140px;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html body main.page-geo-diagnosis #articles
  .hub-card .hub-card-meta.hub-card-meta {
  position: static !important;
  display: flex !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  flex-wrap: wrap !important;
  overflow: hidden !important;
}

html body main.page-geo-diagnosis #articles
  .hub-card .hub-card-meta.hub-card-meta > :is(span, em) {
  position: static !important;
  inset: auto !important;
  display: -webkit-box !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
}

/* The red label and its value are separate tracks. Both tracks can grow when
 * translated copy wraps, so the value never paints over the label artwork. */
html body main.page-geo-diagnosis #articles
  .hub-card .hub-card-meta.hub-card-meta {
  position: relative !important;
  display: grid !important;
  grid-template-columns: 78px minmax(0, 1fr) !important;
  column-gap: 12px !important;
  align-items: stretch !important;
  width: 235px !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 24px !important;
  max-height: none !important;
  overflow: hidden !important;
}

html body main.page-geo-diagnosis #articles
  .hub-card .hub-card-meta.hub-card-meta::before {
  inset: 0 !important;
  height: 100% !important;
}

html body main.page-geo-diagnosis #articles
  .hub-card .hub-card-meta.hub-card-meta::after {
  width: 78px !important;
  height: 100% !important;
  background-size: 78px 100% !important;
}

html body main.page-geo-diagnosis #articles
  .hub-card .hub-card-meta.hub-card-meta > :is(span, em) {
  position: relative !important;
  inset: auto !important;
  z-index: 2 !important;
  display: flex !important;
  align-items: center !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  height: auto !important;
  min-height: 24px !important;
  max-height: none !important;
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  line-height: 18px !important;
  -webkit-line-clamp: unset !important;
  line-clamp: unset !important;
}

html body main.page-geo-diagnosis #articles
  .hub-card .hub-card-meta.hub-card-meta > span {
  grid-column: 1 !important;
  padding: 3px 7px !important;
}

html body main.page-geo-diagnosis #articles
  .hub-card .hub-card-meta.hub-card-meta > em {
  grid-column: 2 !important;
  padding: 3px 4px 3px 0 !important;
}

/* The partnership hero summary is secondary copy and should not make the hero
 * arbitrarily tall when a translated field is unexpectedly verbose. */
html body main.page-partners .partner-hero-inner > aside > :is(strong, span) {
  display: -webkit-box !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  max-height: none !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

/* Article category sliders remain compact and communicate truncation. */
html body main .tab-container .category-name,
html body main .tab-container .category-name > a {
  min-width: 0;
  max-width: 100%;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > h3 {
  display: -webkit-box !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  min-height: 68px !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > dl > .revenue > :is(dt, dd) {
  min-width: 0 !important;
  max-width: 100% !important;
  height: auto !important;
  overflow: hidden !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
}

html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > dl > .revenue > dt {
  position: relative;
  display: -webkit-box !important;
  padding-left: 19px;
  text-overflow: ellipsis !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > dl > .revenue > dd {
  display: -webkit-box !important;
  text-overflow: ellipsis !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 4 !important;
  line-clamp: 4 !important;
}

html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > dl > .revenue > dt::before {
  position: absolute;
  top: 0.2em;
  left: 0;
}

/* The earlier English layer deliberately removed every clamp. Restore clamps
 * only for known teaser fields, with matching component-level specificity. */
html[lang="en"] body main.page-products #productServiceProducts
  .grid-products > .hub-card > h3,
html[lang="en"] body main.page-products #productServiceRelatedPaths
  .product-related-grid > a > div > h3,
html[lang="en"] body main.page-scenarios #scenarioPageGeneralContents
  .scenario-stage-copy > h3,
html[lang="en"] body main.page-scenarios #scenarioPageRelatedPaths
  .scenario-related-grid > a > div > h3,
html[lang="en"] body main.page-cases #casePageGeneralContents
  .case-evidence-main > h3,
html[lang="en"] body main.page-cases #casePageRelatedPaths
  .context-path-grid > a > div > h3,
html[lang="en"] body main .tab-content .tab-pane :is(.news, .newsItem)
  .item .rights > .title,
html[lang="en"] body main .news-hot-essay-box .list .item > .title,
html[lang="en"] body main .news-recommend-essay-box .con .item .right > .title,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .recommended-products-grid .recommended-product-body > h3,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .article-directory-copy > strong,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .decision-module .entity-link > strong {
  display: -webkit-box !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html[lang="en"] body main.page-products #productServiceProducts
  .grid-products > .hub-card > p,
html[lang="en"] body main.page-products #productServiceRelatedPaths
  .product-related-grid > a > div > p,
html[lang="en"] body main.page-scenarios #scenarioPageGeneralContents
  .scenario-stage-copy > p,
html[lang="en"] body main.page-scenarios #scenarioPageGeneralContents
  .scenario-stage-copy > div > span > em,
html[lang="en"] body main.page-scenarios #scenarioPageGeneralContents
  .scenario-stage-list > article > aside > span,
html[lang="en"] body main.page-scenarios #scenarioPageRelatedPaths
  .scenario-related-grid > a > div > p,
html[lang="en"] body main.page-cases #casePageGeneralContents
  .case-evidence-main > p,
html[lang="en"] body main.page-cases #casePageGeneralContents
  .case-pain > span,
html[lang="en"] body main.page-cases #casePageGeneralContents
  .case-evidence-list > article > aside dd,
html[lang="en"] body main.page-cases #casePageRelatedPaths
  .context-path-grid > a > div > p,
html[lang="en"] body main .tab-content .tab-pane :is(.news, .newsItem)
  .item .rights > .con,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .recommended-products-grid .recommended-product-body > p,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .decision-module .entity-link > span:last-child {
  display: -webkit-box !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 4 !important;
  line-clamp: 4 !important;
}

/* The scenario English reset groups many ID selectors in :is(), which gives
 * the whole reset the specificity of its strongest branch. */
html[lang="en"][lang="en"] body main.page-scenarios #scenarioPageGeneralContents
  .scenario-stage-copy.scenario-stage-copy > h3,
html[lang="en"][lang="en"] body main.page-scenarios #scenarioPageRelatedPaths
  .scenario-related-grid.scenario-related-grid > a > div > h3 {
  display: -webkit-box !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html[lang="en"][lang="en"] body main.page-scenarios #scenarioPageGeneralContents
  .scenario-stage-copy.scenario-stage-copy > p,
html[lang="en"][lang="en"] body main.page-scenarios #scenarioPageGeneralContents
  .scenario-stage-copy.scenario-stage-copy > div > span > em,
html[lang="en"][lang="en"] body main.page-scenarios #scenarioPageGeneralContents
  .scenario-stage-list.scenario-stage-list > article > aside > span,
html[lang="en"][lang="en"] body main.page-scenarios #scenarioPageRelatedPaths
  .scenario-related-grid.scenario-related-grid > a > div > p {
  display: -webkit-box !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 4 !important;
  line-clamp: 4 !important;
}

/* Preserve each component's established compact rhythm. These overrides sit
 * after the locale-specific resets so normal copy keeps its original size,
 * while unexpectedly long CMS values still wrap and truncate safely. */
html body main.pd-page .recommended-products-grid
  .recommended-product-body > h3,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .recommended-products-grid .recommended-product-body > h3 {
  min-height: 2.84em !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main.pd-page .recommended-products-grid
  .recommended-product-body > p,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .recommended-products-grid .recommended-product-body > p {
  min-height: 3.5em !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main.pd-page .decision-module .entity-link > strong,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .decision-module .entity-link > strong {
  max-height: 2.9em !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main.pd-page .decision-module .entity-link > span:last-child,
html[lang="en"] body main:is(
  #qie-product-detail-v2, #qie-scenario-detail-v2,
  #qie-case-detail-v2, #qie-solution-detail-v2
) .decision-module .entity-link > span:last-child {
  max-height: 4.95em !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html body main.page-products .product-capabilities-section
  .grid-products > .hub-card > p,
html[lang="en"] body main.page-products #productServiceProducts
  .grid-products > .hub-card > p {
  -webkit-line-clamp: 5 !important;
  line-clamp: 5 !important;
}

html body main.page-products #product-path > .product-tier-card > h3,
html body main.page-products #product-path > .product-tier-card > strong,
html body main.page-products #product-path > .product-tier-card > p {
  display: -webkit-box !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
}

html body main.page-products #product-path > .product-tier-card > h3,
html body main.page-products #product-path > .product-tier-card > strong {
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html body main.page-products #product-path > .product-tier-card > p {
  -webkit-line-clamp: 4 !important;
  line-clamp: 4 !important;
}

html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > dl > div > dt,
html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > dl > div > dd {
  display: -webkit-box !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  -webkit-box-orient: vertical !important;
}

html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > dl > div > dt {
  max-height: 3em !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main.page-partners .partner-modes
  .partner-mode-grid.partner-mode-grid > article > dl > div > dd {
  max-height: 5.1em !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
}

html body main .tab-content .tab-pane :is(.news, .newsItem)
  .item .rights > .title {
  -webkit-line-clamp: 1 !important;
  line-clamp: 1 !important;
}

html body main .tab-content .tab-pane :is(.news, .newsItem)
  .item .rights > .con {
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main .news-recommend-essay-box .con > .item .right > .title {
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
}

html body main.page-cases #articles
  .case-evidence-row > aside > .case-proof > span {
  display: flex !important;
  max-height: 3.2em !important;
  align-items: flex-start;
  overflow: hidden !important;
  white-space: normal !important;
  -webkit-box-orient: initial !important;
  -webkit-line-clamp: unset !important;
  line-clamp: unset !important;
}

/* Breadcrumbs and tabs may stay compact but cannot widen the viewport. */
html body main :is(.hub-breadcrumb, .pd-breadcrumb, .case-breadcrumb, .ad-breadcrumb, .detail-tabs) {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 760px) {
  html body main:is(
    .page-products, .page-solutions, .page-scenarios,
    .page-cases, .page-geo-diagnosis
  ) .photo-hero :is(
    .product-overview-stats, .solution-hero-pillars, .hub-stats
  ) > div {
    box-sizing: border-box;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    justify-content: center !important;
    gap: 6px !important;
    height: auto !important;
    min-height: 76px !important;
    max-height: none !important;
    overflow: hidden !important;
  }

  html body main:is(
    .page-products, .page-solutions, .page-scenarios,
    .page-cases, .page-geo-diagnosis
  ) .photo-hero :is(
    .product-overview-stats, .solution-hero-pillars, .hub-stats
  ) > div > strong {
    display: -webkit-box !important;
    flex: 0 1 auto !important;
    width: 100%;
    min-width: 0 !important;
    max-width: 100% !important;
    overflow: hidden !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 2 !important;
    line-clamp: 2 !important;
  }

  html body main:is(
    .page-products, .page-solutions, .page-scenarios,
    .page-cases, .page-geo-diagnosis
  ) .photo-hero :is(
    .product-overview-stats, .solution-hero-pillars, .hub-stats
  ) > div > :is(span, small) {
    display: -webkit-box !important;
    width: 100%;
    min-width: 0 !important;
    max-width: 100% !important;
    overflow: hidden !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 3 !important;
    line-clamp: 3 !important;
  }

  html body main :is(
    .hero-actions, .hub-hero-actions, .purchase-actions,
    .ad-cover-actions, .scenario-card-actions, .cta-actions
  ) {
    align-items: stretch;
  }

  html body main :is(
    .hero-actions > a, .hub-hero-actions > a,
    .purchase-actions > a, .ad-cover-actions > a,
    .scenario-card-actions > a, .cta-actions > a
  ) {
    width: 100% !important;
  }

  html body main.pd-page .article-directory-item {
    grid-template-columns: minmax(0, 1fr) auto !important;
    grid-template-rows: auto auto;
  }

  html body main.pd-page .article-directory-meta {
    grid-column: 1;
    grid-row: 2;
    padding-left: 0 !important;
    border-left: 0 !important;
  }
}
