/* ========================================================================== 
   PRIMIONICS — PROFESSIONAL INTERACTION & EDITORIAL POLISH
   Restrained affordance for real navigation cards, simplified section heads,
   and selective numbering. Loaded last so legacy template behavior converges.
   ========================================================================== */

:root{
  --pm-border-interactive:var(--pm-border-strong,rgba(26,53,87,.28));
  --pm-card-hover-shadow:0 6px 20px rgba(15,34,56,.07);
  --pm-card-active-surface:var(--pm-brand-primary-soft,#fef2ec);
  --pm-card-motion:160ms ease;
}

/* Editorial section headings: eyebrow, heading, then optional concise copy. */
html body :is(.pm-section-head,.section-head,.ss-section-head,.svc-head,.aw-section__head,.ax-section-head,.pp-head,.pf-head){
  display:block!important;
  max-width:900px!important;
  margin-right:auto!important;
  text-align:left!important;
}
html body :is(.pm-section-head,.section-head,.ss-section-head,.svc-head,.aw-section__head,.ax-section-head,.pp-head,.pf-head)>:is(div,p),
html body .ss-section-head .ss-copy,
html body .ax-section-head-note,
html body .svc-head-copy{
  max-width:760px!important;
}
html body :is(.pm-section-head,.section-head,.aw-section__head)>p,
html body .ss-section-head .ss-copy,
html body .ax-section-head-note,
html body .svc-head-copy{
  margin:14px 0 0!important;
}
html body .sv-section__head{
  display:block!important;
  max-width:900px!important;
  text-align:left!important;
}
html body .sv-section__head>div{max-width:760px!important;margin-top:14px!important}

/* Only genuine whole-card links and card-like controls receive navigation cues. */
html body :is(
  a.pm-application,a.pm-wing,a.pm-industry,a.pm-resource,
  a.partner-card,a.resource-card,a.resource-questionnaire-card,a.contact-path,
  a.ss-solution-card,a.aw-area-card,a.aw-card,a.ax-lab-card,a.industry-card,
  a.solution-card,a.arch-index-card,a.pw-offer-card,a.pp-product-link,
  a.pp-catalog-card,a.pcard,a.tm20-card,a.dph-card,a.pf-card,a.sim-card,
  a.related-card,a.pe-pcard,button.contact-path
){
  position:relative!important;
  cursor:pointer!important;
  text-decoration:none!important;
  transition:border-color var(--pm-card-motion),box-shadow var(--pm-card-motion),transform var(--pm-card-motion),background-color var(--pm-card-motion)!important;
}
@media(hover:hover) and (pointer:fine){
  html body :is(
    a.pm-application,a.pm-wing,a.pm-industry,a.pm-resource,
    a.partner-card,a.resource-card,a.resource-questionnaire-card,a.contact-path,
    a.ss-solution-card,a.aw-area-card,a.aw-card,a.ax-lab-card,a.industry-card,
    a.solution-card,a.arch-index-card,a.pw-offer-card,a.pp-product-link,
    a.pp-catalog-card,a.pcard,a.tm20-card,a.dph-card,a.pf-card,a.sim-card,
    a.related-card,a.pe-pcard,button.contact-path
  ):hover{
    z-index:1;
    border-color:var(--pm-border-interactive)!important;
    box-shadow:var(--pm-card-hover-shadow)!important;
    transform:translateY(-2px)!important;
  }
}
html body :is(
  a.pm-application,a.pm-wing,a.pm-industry,a.pm-resource,
  a.partner-card,a.resource-card,a.resource-questionnaire-card,a.contact-path,
  a.ss-solution-card,a.aw-area-card,a.aw-card,a.ax-lab-card,a.industry-card,
  a.solution-card,a.arch-index-card,a.pw-offer-card,a.pp-product-link,
  a.pp-catalog-card,a.pcard,a.tm20-card,a.dph-card,a.pf-card,a.sim-card,
  a.related-card,a.pe-pcard,button.contact-path
):focus-visible{
  outline:3px solid var(--pm-action-focus,rgba(229,85,26,.34))!important;
  outline-offset:3px!important;
}
html body :is(
  a.pm-application,a.pm-wing,a.pm-industry,a.pm-resource,
  a.partner-card,a.resource-card,a.resource-questionnaire-card,a.contact-path,
  a.ss-solution-card,a.aw-area-card,a.aw-card,a.ax-lab-card,a.industry-card,
  a.solution-card,a.arch-index-card,a.pw-offer-card,a.pp-product-link,
  a.pp-catalog-card,a.pcard,a.tm20-card,a.dph-card,a.pf-card,a.sim-card,
  a.related-card,a.pe-pcard,button.contact-path
):active{
  transform:translateY(0)!important;
  background-color:var(--pm-card-active-surface)!important;
}

/* Existing and new card actions share one visible, bottom-aligned arrow rhythm. */
html body :is(
  .pm-card-action,.btn-explore,.pcard-explore,.tm20-card-cta,.sim-explore,
  .prod-card-link,.pf-link,.ss-card-link,.resource-card-link,.pp-product-explore,
  .card-explore,.partner-card-footer,.aw-area-card__link,.ax-text-link,
  a.resource-questionnaire-card small
){
  display:inline-flex!important;
  align-items:center!important;
  gap:6px!important;
  margin-top:auto!important;
  padding-top:16px!important;
  color:var(--pm-brand-primary-readable,#c8420f)!important;
  font-weight:800!important;
  transition:color var(--pm-card-motion),transform var(--pm-card-motion)!important;
}
html body :is(
  a.pm-application,a.pm-wing,a.pm-industry,a.pm-resource,
  a.partner-card,a.resource-card,a.resource-questionnaire-card,a.contact-path,
  a.ss-solution-card,a.aw-area-card,a.aw-card,a.ax-lab-card,a.industry-card,
  a.solution-card,a.arch-index-card,a.pw-offer-card,a.pp-product-link,
  a.pp-catalog-card,a.pcard,a.tm20-card,a.dph-card,a.pf-card,a.sim-card,
  a.related-card,a.pe-pcard
):hover :is(.pm-card-action,.cta-arrow,.btn-explore,.pcard-explore,.tm20-card-cta,.sim-explore,.prod-card-link,.pf-link,.ss-card-link,.resource-card-link,.pp-product-explore,.card-explore,.aw-area-card__link,.ax-text-link,a.resource-questionnaire-card small){
  color:var(--pm-ink-950,#0f2238)!important;
  transform:translateX(3px)!important;
}
.pm-section-dark a.pm-wing:hover .pm-card-action{color:#fff!important}

/* Cards without a written action still communicate navigation before hover. */
html body :is(a.contact-path,a.industry-card,a.solution-card,a.aw-card,a.ax-lab-card,a.arch-index-card,a.pw-offer-card,a.related-card):not(:has(.pm-card-action,.btn-explore,.card-explore,.resource-card-link,.aw-area-card__link,.ax-text-link,.cta-arrow))::after{
  content:"Explore →";
  display:block;
  width:max-content;
  /* bottom-right: margin-top pins it down in a flex card, margin-left pushes
     it to the trailing edge in both flex and normal flow */
  margin-top:auto;
  margin-left:auto;
  padding-top:16px;
  color:var(--pm-brand-primary-readable,#c8420f);
  font-size:12px;
  font-weight:800;
  transition:color var(--pm-card-motion),transform var(--pm-card-motion);
}
html body a.related-card::after{content:"View product →"!important}
html body :is(a.contact-path,a.industry-card,a.solution-card,a.aw-card,a.ax-lab-card,a.arch-index-card,a.pw-offer-card,a.related-card):hover::after{
  color:var(--pm-ink-950,#0f2238);
  transform:translateX(3px);
}
html body a.resource-questionnaire-card small::after{content:" →"}

/* Homepage-specific hierarchy. */
html body .pm-hero-proof-item{display:block!important;padding:17px 18px!important}
html body .pm-hero-proof-item strong{font-size:15px!important}
html body .pm-hero-proof-item span{margin-top:5px!important;font-size:12px!important;line-height:1.55!important}
html body .pm-application{display:flex!important;flex-direction:column!important;min-height:230px!important}
html body .pm-application small,
html body .pm-wing-label{
  display:block;
  color:var(--pm-brand-primary-light,#f06830)!important;
  font-size:11px!important;
  font-weight:800!important;
  letter-spacing:.08em!important;
  text-transform:uppercase!important;
}
html body .pm-application strong{margin-top:14px!important}
html body .pm-application .pm-card-summary{margin-top:10px!important;color:var(--pm-text-secondary,#5a7494)!important;font-weight:400!important;line-height:1.55!important}
html body .pm-application .pm-card-action{margin-top:auto!important}
html body a.pm-wing{display:flex!important;flex-direction:column!important;color:#fff!important;text-decoration:none!important;background:var(--pm-ink-950,#0f2238)!important;border-color:rgba(255,255,255,.14)!important}
html body a.pm-wing:nth-child(2),html body a.pm-wing:nth-child(3){background:var(--pm-ink-900,#1a3557)!important}
html body a.pm-wing h3{color:#fff!important}
html body a.pm-wing :is(p,li){color:var(--pm-text-on-dark-secondary,#95b4cf)!important}
html body .pm-wing h3{margin-top:16px!important}
html body .pm-wing .pm-card-action{color:#fff!important}
html body a.pm-wing:active{background:var(--pm-ink-800,#24487a)!important}
html body .pm-industry{display:flex!important;flex-direction:column!important;min-height:210px!important}
html body .pm-industry strong{margin-top:0!important;font-size:16px!important}
html body .pm-industry .pm-card-action{margin-top:auto!important}
html body .pm-resource{display:flex!important;flex-direction:column!important}
html body .pm-resource .pm-card-action{margin-top:auto!important}
html body .pm-resource:first-child .pm-card-action{color:#fff!important}
html body .pm-process-step b{font-size:11px!important;font-weight:650!important;letter-spacing:.08em!important;color:var(--pm-text-on-dark-secondary,#95b4cf)!important}
html body .pm-process-step strong{margin-top:12px!important}

/* Non-sequential content is no longer presented as an ordered list. */
html body :is(
  .abt-not-mark,.abt-model-number,.svc-card-number,.svc-value-icon,.svc-app-label,
  button.contact-path .contact-path__icon,.cr-trait-icon,.pw-readiness-no,.pw-offer-index
){display:none!important}
/* Hiding those markers leaves their grid track behind.

   .pw-readiness-item, .cr-trait and .abt-not-item are two-column grids -
   a fixed marker track and a 1fr content track. With the marker set to
   display:none it generates no box, so the content is auto-placed into the
   30-34px marker track instead: on Partner With Us that rendered the whole
   readiness list one word per line. The grids collapse to a single column. */
html body :is(.pw-readiness-item,.cr-trait,.abt-not-item){
  grid-template-columns:minmax(0,1fr)!important;
  gap:4px!important;
}

/* Static information panels do not mimic navigation cards. */
html body :is(
  article.pm-architecture,article.svc-service-card,article.svc-value-card,
  article.svc-app-card,article.abt-model-card,article.abt-domain-card,
  article.cr-value,div.cr-trait,div.next-step
):hover{
  transform:none!important;
  box-shadow:none!important;
}

@media(max-width:720px){
  html body :is(.pm-section-head,.section-head,.ss-section-head,.svc-head,.aw-section__head,.ax-section-head,.pp-head,.pf-head){margin-bottom:28px!important}
  html body .pm-application{min-height:210px!important}
  html body .pm-industry{min-height:170px!important}
}
@media(prefers-reduced-motion:reduce){
  html body :is(a.pm-application,a.pm-wing,a.pm-industry,a.pm-resource,a.partner-card,a.resource-card,a.resource-questionnaire-card,a.contact-path,a.ss-solution-card,a.aw-area-card,a.aw-card,a.ax-lab-card,a.industry-card,a.solution-card,a.arch-index-card,a.pw-offer-card,a.pp-product-link,a.pp-catalog-card,a.pcard,a.tm20-card,a.dph-card,a.pf-card,a.sim-card,a.related-card,a.pe-pcard,button.contact-path),
  html body :is(.pm-card-action,.cta-arrow,.btn-explore,.pcard-explore,.tm20-card-cta,.sim-explore,.prod-card-link,.pf-link,.ss-card-link,.resource-card-link,.pp-product-explore,.card-explore,.aw-area-card__link,.ax-text-link){
    transition:none!important;
    transform:none!important;
  }
}

/* --------------------------------------------------------------------------
   Two injected components rendered their own text invisible.

   shared.js builds the enquiry modal and conversion.js the resource chip, so
   both appear on pages that never load global.css - the home page among them.
   Stating the fix here means it reaches every page, since shared.js injects
   this sheet everywhere.

   .qm-head-title and .qm-head-eyebrow both inherited ink navy on the modal's
   navy header (1:1). The conversion panel's "PDF" mark was a pale blue-grey
   on its own soft-orange ground (about 2:1).
   -------------------------------------------------------------------------- */
html body .qm-head-title.qm-head-title{color:#fff!important}
html body .qm-head-eyebrow.qm-head-eyebrow{color:#ffb18d!important}
html body .conversion-resource__icon.conversion-resource__icon{color:#a8350b!important;background:#fdece4!important}

/* --------------------------------------------------------------------------
   Base geometry for the components shared.js injects.

   These are defined in global.css, which not every page loads - the home page
   among them. Without them #qmOverlay, #floatBar and the consent banner have
   no position and fall into normal flow, so the entire enquiry modal renders
   as visible page content below the footer. Stating the essentials here means
   they behave wherever shared.js runs; global.css still owns the detail.
   -------------------------------------------------------------------------- */
html body .qm-overlay:not(.open){display:none!important}
html body .qm-overlay.open{display:flex!important;position:fixed!important;inset:0!important;z-index:9000!important;align-items:center!important;justify-content:center!important;padding:16px!important;background:rgba(9,17,28,.78)!important}
html body .pm-search-overlay:not(.open):not(.is-open){display:none!important}
html body .float-bar{position:fixed!important;right:18px!important;bottom:22px!important;z-index:800!important;width:auto!important}
html body .consent-banner{position:fixed!important;left:0!important;right:0!important;bottom:0!important;z-index:1200!important}
html body .mobile-conversion-bar{position:fixed!important;left:0!important;right:0!important;bottom:0!important;z-index:900!important}
@media(min-width:721px){html body .mobile-conversion-bar{display:none!important}}

/* --------------------------------------------------------------------------
   Integrated company pages: preserve the page-level layout and contrast after
   this late-loaded polish sheet. These components have their own structure;
   shared card and typography rules must not overwrite that structure.
   -------------------------------------------------------------------------- */

/* Careers: the decorative number is intentionally hidden above, so remove its
   now-empty grid track and allow the copy to use the full panel width. */
html body .cr-hero-panel .cr-trait{
  grid-template-columns:minmax(0,1fr)!important;
  gap:0!important;
  min-height:0!important;
}
html body .cr-hero-panel .cr-trait>div:last-child{min-width:0!important}
html body .cr-hero-panel .cr-trait :is(strong,span){width:auto!important;max-width:none!important}

/* Careers: keep the role card's three intentional bands instead of adding a
   second outer padding layer. The accent edge improves scanning between jobs. */
html body .cr-role{
  padding:0!important;
  border-radius:18px!important;
  border-color:#dbe4ec!important;
  box-shadow:0 14px 38px rgba(16,38,63,.075)!important;
}
html body .cr-role::before{
  content:"";
  display:block;
  height:4px;
  background:linear-gradient(90deg,#e45b24 0 86px,#10263f 86px 100%);
}
html body .cr-role-top{align-items:start!important}
html body .cr-role :is(.cr-role-top,.cr-role-body,.cr-role-foot){margin:0!important}
html body .cr-role .cr-pill{border:0!important;background:#edf2f7!important;color:#38516a!important;font-size:11.5px!important}

/* Dark sections must keep their on-dark palette even when the shared heading
   and paragraph palette is loaded later. */
html body :is(.cr-section-dark,.abt-section-dark,.svc-section-dark) :is(h1,h2,h3,h4,strong){color:#fff!important}
html body :is(.cr-section-dark,.abt-section-dark,.svc-section-dark) :is(p,li){color:#c4d3df!important}
html body .cr-section-dark :is(.cr-kicker,.cr-expect-label){color:#ff9a68!important}
html body .cr-apply-aside :is(h2,h3,strong){position:relative;z-index:2;color:#fff!important}
html body .cr-apply-aside :is(p,.cr-apply-point){color:#d2dde7!important}

/* Careers FAQ: collapsed means fully collapsed—no answer padding or clipped
   text remains visible. Questions are full-width, keyboard-accessible rows. */
html body .cr-faq-list{display:grid!important;gap:10px!important;border:0!important}
html body .cr-faq-item{
  overflow:hidden!important;
  border:1px solid #d7e0e8!important;
  border-radius:10px!important;
  background:#fff!important;
  box-shadow:0 5px 18px rgba(16,38,63,.035)!important;
}
html body .cr-faq-q{padding:18px 20px!important;color:#10263f!important}
html body .cr-faq-q:focus-visible{outline:3px solid rgba(228,91,36,.28)!important;outline-offset:-3px!important}
html body .cr-faq-q span:first-child{padding-right:12px!important}
html body .cr-faq-q span:last-child{flex:0 0 auto!important;color:#e45b24!important}
html body .cr-faq-item .cr-faq-a{
  max-height:0!important;
  padding:0 20px!important;
  overflow:hidden!important;
  opacity:0!important;
  visibility:hidden!important;
  transition:max-height .28s ease,opacity .2s ease,padding .28s ease!important;
}
html body .cr-faq-item.open .cr-faq-a{
  max-height:360px!important;
  padding:0 20px 20px!important;
  opacity:1!important;
  visibility:visible!important;
}
html body .cr-faq-a p{padding:0!important;color:#526a81!important}

/* About and Contact use native details/summary accordions. Give them the same
   clear question/answer hierarchy while retaining native keyboard behaviour. */
html body .abt-faq details{
  margin:0 0 10px!important;
  padding:0!important;
  overflow:hidden!important;
  border:1px solid #d7e0e8!important;
  border-radius:10px!important;
  background:#fff!important;
}
html body .abt-faq summary,
html body .p3-application-fields>summary{
  position:relative!important;
  padding:18px 48px 18px 20px!important;
  color:#10263f!important;
  font-weight:800!important;
  cursor:pointer!important;
  list-style:none!important;
}
html body .abt-faq summary::-webkit-details-marker,
html body .p3-application-fields>summary::-webkit-details-marker{display:none!important}
html body .abt-faq summary::after,
html body .p3-application-fields>summary::after{
  content:"+";
  position:absolute;
  right:20px;
  top:50%;
  color:#e45b24;
  font-size:21px;
  line-height:1;
  transform:translateY(-50%);
}
html body .abt-faq details[open]>summary::after,
html body .p3-application-fields[open]>summary::after{content:"−"}
html body .abt-faq details>p{margin:0!important;padding:0 20px 20px!important;color:#526a81!important}
html body .pw-faq-item :is(h3,strong){color:#10263f!important}
html body .pw-faq-item p{color:#526a81!important}

/* Shared FAQ shell: native accordions, a trailing plus control and no more
   than two columns on wide layouts. Page-specific typography remains intact. */
html body :is(.abt-faq,.ax-faq,.pw-faq-list){
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:10px!important;
  border:0!important;
}
html body :is(.abt-faq,.ax-faq,.pw-faq-list)>details{
  align-self:start;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  border:1px solid #d7e0e8!important;
  border-radius:10px!important;
  background:#fff!important;
  box-shadow:0 5px 18px rgba(16,38,63,.035)!important;
}
html body :is(.abt-faq,.ax-faq,.pw-faq-list)>details>summary{
  position:relative!important;
  min-height:62px;
  padding:18px 52px 18px 20px!important;
  cursor:pointer!important;
  list-style:none!important;
  color:#10263f!important;
  font-size:14px!important;
  font-weight:800!important;
  line-height:1.45!important;
}
html body :is(.abt-faq,.ax-faq,.pw-faq-list)>details>summary::-webkit-details-marker{display:none!important}
html body :is(.abt-faq,.ax-faq,.pw-faq-list)>details>summary::after{
  content:"+"!important;
  position:absolute!important;
  top:50%!important;
  right:18px!important;
  display:grid!important;
  place-items:center!important;
  width:28px!important;
  height:28px!important;
  border:1px solid #ccd7e1!important;
  border-radius:50%!important;
  background:transparent!important;
  color:#c8420f!important;
  font-size:19px!important;
  line-height:1!important;
  transform:translateY(-50%)!important;
}
html body :is(.abt-faq,.ax-faq,.pw-faq-list)>details[open]>summary::after{
  content:"−"!important;
  border-color:#e45b24!important;
  background:#e45b24!important;
  color:#fff!important;
}
html body :is(.abt-faq,.ax-faq,.pw-faq-list)>details>:is(p,div){
  margin:0!important;
  padding:0 20px 20px!important;
  color:#526a81!important;
  font-size:13px!important;
  line-height:1.72!important;
}

@media(max-width:720px){
  html body .cr-role::before{background:linear-gradient(90deg,#e45b24 0 64px,#10263f 64px 100%)}
  html body .cr-faq-q{padding:16px!important}
  html body .cr-faq-item.open .cr-faq-a{padding:0 16px 17px!important}
  html body :is(.abt-faq,.ax-faq,.pw-faq-list){grid-template-columns:1fr!important}
}

@media(prefers-reduced-motion:reduce){
  html body .cr-faq-item .cr-faq-a{transition:none!important}
}

/* Industries overview contrast is protected from the late global palette. */
html body .ix-overview-hero :is(h1,h2,h3,strong,b){color:#fff!important}
html body .ix-overview-hero p{color:#d2dee8!important}
html body .ix-overview-hero .ix-eyebrow{color:#ffd0bd!important}
html body .ix-heading.ix-heading--stacked{display:block!important;max-width:900px!important}

/* Embedded Computing & Interconnect heroes follow the Precision Environments
   composition: navy surface, high-contrast copy left, visual right. */
html body:is([data-category="embedded-computing"],[data-category="embedded-connected-systems"]) :is(.sx-hero,.ecs-hero,.arch-hero,.eps-hero,.dp-hero){
  color:#fff!important;
  background:linear-gradient(120deg,#0f2238 0%,#1a3557 55%,#24487a 100%)!important;
  border-color:rgba(255,255,255,.14)!important;
}
html body:is([data-category="embedded-computing"],[data-category="embedded-connected-systems"]) :is(.sx-hero,.ecs-hero,.arch-hero,.eps-hero,.dp-hero) :is(h1,h2,h3,strong,b){color:#fff!important}
html body:is([data-category="embedded-computing"],[data-category="embedded-connected-systems"]) :is(.sx-hero,.ecs-hero,.arch-hero,.eps-hero,.dp-hero) :is(p,.sx-lead,.ecs-hero__lead,.arch-lead,.dp-tagline){color:#d2dee8!important}
html body:is([data-category="embedded-computing"],[data-category="embedded-connected-systems"]) :is(.sx-hero,.ecs-hero,.arch-hero,.eps-hero,.dp-hero) :is(.sx-eyebrow,.ecs-eyebrow,.arch-eyebrow,.eps-eyebrow,.dp-series-label){color:#ffd0bd!important}
html body[data-category="embedded-computing"] .dp-hero{grid-template-columns:minmax(0,1.05fr) minmax(380px,.85fr)!important}
html body[data-category="embedded-computing"] .dp-hero .dp-info-col{grid-column:1!important;grid-row:1!important}
html body[data-category="embedded-computing"] .dp-hero .dp-img-col{grid-column:2!important;grid-row:1!important;border-left:1px solid rgba(255,255,255,.2)!important}
@media(max-width:900px){
  html body[data-category="embedded-computing"] .dp-hero{grid-template-columns:1fr!important}
  html body[data-category="embedded-computing"] .dp-hero .dp-info-col{grid-column:1!important;grid-row:1!important}
  html body[data-category="embedded-computing"] .dp-hero .dp-img-col{grid-column:1!important;grid-row:2!important;border-left:0!important;border-top:1px solid rgba(255,255,255,.2)!important}
}

/* ==========================================================================
   Card finish, site-wide.

   The site had accumulated a dozen card systems with radii between 6px and
   18px, borders at 1px and 1.5px in four different greys, and hover states
   ranging from none to a 32px shadow with a 3px lift. This settles them on
   one treatment. It deliberately touches only surface properties - radius,
   border, shadow, motion - because padding and type belong to each card's own
   sheet and vary for good reasons.

   The exhibition cards on the home page are excluded: they carry each show's
   own identity and are left exactly as they are.
   ========================================================================== */

html body :is(
  .card, .pcard, .tm20-card, .dph-card, .prod-card, .pf-card, .sim-card,
  .related-card, .partner-card, .pp-catalog-card, .pp-product-link, .pp-app,
  .pp-intro-card, .pp-tech-card, .pp-related-card, .sv-card, .aw-card,
  .aw-area-card, .resource-card, .resource-questionnaire-card, .contact-side-card,
  .next-step, .careers-card, .service-card, .solution-card, .portfolio-card,
  .feature-card, .contact-path, .industry-card, .area-card, .scope-card,
  .platform-card, .focus-card, .adjacent-card, .product-link-card, .kx-product-card,
  .ss-cap-card, .sx-solution-card, .arch-index-card, .ax-lab-card, .pw-offer-card,
  .pw-party, .abt-domain-card, .abt-model-card, .abt-person-card, .svc-service-card,
  .svc-value-card, .svc-app-card, .cr-value, .cr-role, .pm-application, .pm-wing,
  .pm-industry, .pm-resource, .product-card, .solution, .launch, .system-card
):not(.expo):not(.expo *) {
  border-radius: 14px !important;
  transition: transform .2s cubic-bezier(.2, .7, .3, 1),
              box-shadow .2s cubic-bezier(.2, .7, .3, 1),
              border-color .2s ease !important;
}

/* One hover: a short lift and a soft, low-opacity shadow. The 32px drop
   shadows some cards used read as heavy next to the rest. */
@media (hover: hover) and (pointer: fine) {
  html body a:is(
    .pcard, .tm20-card, .dph-card, .prod-card, .pf-card, .sim-card, .related-card,
    .partner-card, .pp-catalog-card, .pp-product-link, .pp-related-card, .aw-card,
    .aw-area-card, .resource-card, .resource-questionnaire-card, .solution-card,
    .contact-path, .industry-card, .area-card, .platform-card, .adjacent-card,
    .product-link-card, .kx-product-card, .sx-solution-card, .arch-index-card,
    .ax-lab-card, .pw-offer-card, .pm-application, .pm-wing, .pm-industry,
    .pm-resource, .product-card
  ):not(.expo):hover {
    transform: translateY(-3px) !important;
    box-shadow: 0 14px 34px rgba(15, 34, 56, .10) !important;
  }
}

/* Images inside cards are contained, never cropped or stretched. */
html body :is(.pcard, .tm20-card, .dph-card, .prod-card, .pf-card, .sim-card,
              .related-card, .kx-product-card, .product-card, .pp-catalog-card)
  :is(.pcard-img, .tm20-card-img, .product-art, .prod-card-img, .card-img) img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
}

/* Card body copy holds a readable line-height at these sizes. */
html body :is(.pcard, .tm20-card, .dph-card, .prod-card, .pf-card, .sim-card,
              .related-card, .partner-card, .resource-card, .solution-card,
              .industry-card, .area-card, .platform-card, .kx-product-card,
              .svc-service-card, .abt-domain-card, .pw-offer-card):not(.expo) p {
  line-height: 1.65;
}

/* --------------------------------------------------------------------------
   Two sheets still used pale greys and a lighter orange for small text.

   .ix-product-meta measured 4.39:1, the route separators 1.71-2.33:1, and
   .wg-eyebrow used #d84b14 which is 3.95-4.25:1 depending on the section
   ground. All are small text, so the threshold is 4.5:1.
   -------------------------------------------------------------------------- */
html body .ix-product-meta{color:#54687e!important}
html body :is(.industry-route-arrow,.ix-breadcrumbs span,.ix-crumbs span){color:#5f7285!important}
html body .wg-breadcrumb{color:#5a6b7f!important}
html body .wg-breadcrumb a{color:#b83a0b!important}
html body .wg-eyebrow{color:#b83a0b!important}

/* AcademiX used the brand orange for small labels (3.53-3.72:1 on the light
   grounds, 4.32:1 on the navy) and a pale grey for section notes. */
html body :is(.ax-kicker,.ax-level-label,.ax-workflow-tag){color:#b83a0b!important}
html body :is(.ax-hero,.ax-section-dark,.ax-cta) .ax-kicker{color:#ffb18d!important}
html body .ax-section-head-note{color:#54677b!important}
html body .ax-workflow-tag{background:#fdf0eb!important}

/* ==========================================================================
   Remaining pages carrying the same two faults.

   Every item below is one of: ink-navy text left on a dark ground by the
   global palette sheets, or the brand orange #e5551a (and its variants
   #ef4f16, #d34810, #cc410d) used for small text or as a chip face under
   white. The readable values are #b83a0b for text on light, #c8420f for a
   chip face carrying white, and #ffb18d on the navy grounds.
   ========================================================================== */

/* ---- products.html and privacy.html: dark heroes ---- */
html body :is(.pm-home-hero, .privacy-hero, .privacy-summary) :is(h1, h2, h3, strong, b, dt) {
  color: #fff !important;
}
html body :is(.pm-home-hero, .privacy-hero, .privacy-summary) :is(p, li, span, dd, small) {
  color: #c6d5e1 !important;
}
html body :is(.pm-home-hero, .privacy-hero, .privacy-summary) :is(a, .pm-eyebrow, .lbl) {
  color: #ffb18d !important;
}

/* ---- demo-download ---- */
html body .lbl-w { color: #ffb18d !important; }
html body .form-label { color: #4a5c70 !important; }
html body :is(.office-state, .demo-note em, form em) { color: #b83a0b !important; }

/* ---- solutions experience eyebrow sat at 4.47:1 ---- */
html body .sx-eyebrow { color: #b83a0b !important; }
html body :is(.sx-crumbs span, .sx-breadcrumbs span, .sx-sep) { color: #5f7285 !important; }

/* ---- precision environment ---- */
html body :is(.pe-chip, .pe-badge, .pe-tag, .pe-step-num) { color: #54677b !important; }
html body :is(.pe-pill, .pe-marker, .pe-num) { background: #c8420f !important; color: #fff !important; }
html body .pe-page :is(b, strong).is-accent,
html body .pe-accent { color: #b83a0b !important; }
html body .pe-page i { color: #5f7285 !important; }

/* ---- embedded systems: a sub-brand palette that never adopted the
        readable values. #ef4f16 gives white 3.62:1; #28a6a1 gives 2.97:1. ---- */
html body :is(.ecs-btn--primary, .ecs-global-nav__finder, .ecs-hero-tile__label, .ecs-pillar__icon, .ecs-chip--accent) {
  background: #c8420f !important;
  color: #fff !important;
}
html body :is(.ecs-global-nav__home, .ecs-link, .ecs-eyebrow, .ecs-kicker) { color: #b83a0b !important; }
html body .ecs-pillar__icon.ecs-pillar__icon--teal { background: #0e6f6b !important; }

/* ---- corrections to the block above, checked against each element's own
        composited ground rather than its class ---- */

/* products: the hero link rule was reaching the buttons, which carry their
   own faces. */
html body :is(.pm-home-hero, .privacy-hero, .privacy-summary) a:is(.pm-button, .btn) {
  color: inherit !important;
}
html body :is(.pm-button-primary, .pm-button.pm-button-primary) { background: #c8420f !important; color: #fff !important; }
html body a.pm-button.pm-button-light.pm-button-light { background: #fff !important; color: #0f2238 !important; }
html body :is(.pm-home-hero, .pm-section-dark, .pm-wing-band) :is(.pm-eyebrow, .pm-wing-label) { color: #ffb18d !important; }
html body .pm-flow i { color: #b83a0b !important; font-style: normal; }

/* demo-download: consent block sits on #eef2f8, where #c8420f is 4.41:1 */
html body .form-consent span { color: #4a5c70 !important; }
html body .form-consent a { color: #a8350b !important; }

/* solutions experience: the eyebrow appears on both grounds */
html body :is(.sx-hero, .sx-section--navy, .sx-section--dark, .sx-cta) .sx-eyebrow.sx-eyebrow { color: #ffb18d !important; }
html body .sx-shell span:not([class]) { color: #5f7285 !important; }

/* precision environment */
html body :is(.pe-hero-catalogue, .pe-pill, .pe-marker) { background: #c8420f !important; }
html body .pe-master-product-body b { color: #b83a0b !important; }
html body .pe-workflow-map i { color: #5f7285 !important; font-style: normal; }

/* embedded systems: the workflow band and the shared blocks inside it sit on
   #13273e, where the global sheets leave headings ink-navy at 1.06:1 */
