/* Interior pages: five neutral tones with clear content hierarchy.
   Keep page-specific grids, interactive states, and technical illustrations. */

:is(.catalog-page, .info-page, .technical-offering-page, .pressure-vessel-page, .static-page, .industry-page) {
  --interior-card: #FFFFFF;
  --interior-raised: #FFFFFF;
  --interior-shadow: none;
  background: var(--surface);
  color: var(--ink);
}

.catalog-page {
  --catalog-ink: var(--ink);
  --catalog-muted: var(--graphite);
  --catalog-blue: var(--blue);
  --catalog-cyan: var(--blue);
  --catalog-teal: var(--blue);
  --catalog-line: var(--rule);
  --catalog-line-strong: var(--rule-strong);
  --catalog-surface: var(--paper);
  --catalog-surface-blue: var(--paper-blue);
  --catalog-white: var(--surface);
  --catalog-shadow: var(--interior-shadow);
}

.technical-offering-page {
  --blue: #0F1B2D;
  --blue-dark: #0F1B2D;
  --offering-teal: var(--blue);
  --offering-navy: var(--ink);
  --offering-rule: var(--rule);
}

.pressure-vessel-page {
  --blue: #0F1B2D;
  --blue-dark: #0F1B2D;
  --teal: var(--blue);
  --pv-steel: var(--graphite);
  --pv-steel-light: var(--rule);
  --pv-teal: var(--blue);
  --pv-teal-dark: var(--blue-dark);
  --pv-blue: var(--blue);
  --pv-blue-dark: var(--blue-dark);
  --pv-paper: var(--paper);
  --pv-rule: var(--rule);
  --pv-rule-strong: var(--rule-strong);
}

.industry-page,
.industry-page[data-industry] {
  --industry-ink: var(--ink);
  --industry-muted: var(--graphite);
  --industry-line: var(--rule);
  --industry-surface: var(--paper);
  --industry-surface-strong: var(--paper-blue);
  --industry-accent: var(--blue);
  --industry-accent-deep: var(--blue-dark);
  --industry-accent-soft: var(--paper-blue);

}

/* Content typography is deliberately separate from the shared navigation. */
:is(.catalog-page, .info-page, .technical-offering-page, .pressure-vessel-page, .static-page, .industry-page) main :is(h1, h2, h3) {
  color: var(--ink);
  font-family: var(--font-sans);
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.08;
}

:is(.catalog-page, .info-page, .technical-offering-page, .pressure-vessel-page, .static-page, .industry-page) main :is(p, li, dt, small, label) {
  color: var(--graphite);
}

:is(.catalog-page, .info-page, .technical-offering-page, .pressure-vessel-page, .static-page, .industry-page) main :is(dd, strong) {
  color: var(--ink);
}

:is(.catalog-page, .info-page, .technical-offering-page, .pressure-vessel-page, .static-page, .industry-page) main .text-link {
  color: var(--blue);
  font-size: 0.94rem;
  font-weight: 500;
}

:is(.catalog-page, .info-page, .technical-offering-page, .pressure-vessel-page, .static-page, .industry-page) main .button {
  min-height: 3.2rem;
  border-radius: 6px;
  font-size: 0.94rem;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  box-shadow: none;
}

:is(.catalog-breadcrumb, .info-breadcrumb, .static-breadcrumb, .industry-breadcrumb) ol {
  flex-wrap: wrap;
  font-family: var(--font-sans);
  font-size: 0.76rem;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
}

.catalog-hero,
.info-hero,
.offering-hero,
.pv-hero,
.static-hero,
.legal-page .legal-hero,
.error-stage,
.industry-hero {
  background: transparent;
  border-color: var(--rule);
}

.catalog-grid-plane,
.catalog-crosshair,
.catalog-hero-register,
.pv-grid-plane,
.pv-final-grid,
.static-grid-plane,
.industry-hero-grid,
.industry-hero-axis,
.industry-local-grid,
.industry-coordinate-readout,
.industry-cta-geometry,
.catalog-cta-geometry {
  display: none;
}

.catalog-hero::before,
.catalog-hero::after,
.info-hero::before,
.info-hero::after,
.offering-hero::before,
.static-hero::after,
.catalog-index-panel::before,
.catalog-index-panel::after,
.info-register::before,
.info-register::after,
.account-preview-card::before,
.route-panel::before,
.pv-workbench::before,
.pv-workbench::after {
  content: none;
}

:is(.catalog-hero-copy, .catalog-heading-row, .info-copy, .info-heading, .info-editorial-copy, .info-final, .offering-section-heading, .offering-split-intro, .pv-section-heading, .pv-requirements-copy, .pv-faq-intro, .pv-audience-intro, .industry-section-heading, .industry-local-copy, .industry-cta-inner) > p:not(.eyebrow):not(.offering-code):not(.pv-section-code),
.offering-hero-lede,
.pv-hero-lede,
.industry-hero-lead,
.static-lede {
  font-size: clamp(1.05rem, 1.35vw, 1.2rem);
  line-height: 1.75;
}

.catalog-section,
.info-section,
.info-final,
.offering-section,
.pv-workflow-section,
.pv-audience-section,
.pv-pricing-section,
.pv-faq-section,
.industry-workflows,
.industry-local-section,
.static-content-section {
  background: var(--surface);
}

.catalog-pricing,
.catalog-assurance,
.catalog-final-cta,
.info-editorial,
.offering-section-tinted,
.pv-requirements-section,
.pv-walkthrough-section,
.pv-capabilities-section,
.pv-comparison-section,
.pv-final-section,
.industry-priority-section,
.industry-software,
.industry-related-section,
.industry-final-cta,
.support-strip {
  border-color: var(--rule);
  background: var(--paper);
}

.offering-final,
.pv-value-section,
.pv-teardown-section {
  background: var(--paper-blue);
}

.pv-value-grid,
.offering-final::after {
  opacity: 1;
}

/* Cards have room to breathe while retaining their original responsive grids. */
.info-card-grid,
.industry-workflow-grid,
.industry-related-grid,
.pv-capability-grid,
.pv-audience-grid,
.path-grid,
.licence-summary {
  gap: 1rem;
  border: 0;
}

.catalog-index-panel,
.catalog-product-card,
.catalog-pricing-card,
.info-register,
.info-card,
.offering-card,
.offering-price-panel,
.pv-preview-list,
.pv-pilot-card,
.pv-plan-card,
.pv-capability-grid article,
.pv-audience-grid article,
.industry-workflow-card,
.industry-product-card,
.industry-related-card,
.industry-catalogue-callout,
.account-preview-card,
.route-panel,
.path-grid li,
.licence-summary div,
.legal-contact {
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  background: var(--interior-card);
  box-shadow: none;
}

.catalog-index-panel,
.info-register,
.offering-price-panel,
.pv-pilot-card {
  padding: clamp(1.5rem, 3vw, 2.5rem);
}

.catalog-index-number,
.info-register-number {
  color: var(--blue);
  font-family: var(--font-sans);
  font-weight: 500;
  letter-spacing: -0.075em;
  -webkit-text-stroke: 0;
}

.catalog-product-card:hover,
.catalog-product-card:focus-within,
a.info-card:hover,
.industry-workflow-card:hover,
.industry-product-card:hover,
.industry-related-card:hover,
.pv-capability-grid article:hover {
  border-color: var(--rule-strong);
  background: var(--interior-raised);
  box-shadow: none;
}

.info-card p,
.info-register p,
.catalog-product-description,
.offering-card p,
.offering-checklist p,
.offering-steps p,
.industry-workflow-card > p,
.industry-product-description,
.path-grid p {
  font-size: 0.96rem;
  line-height: 1.75;
}

.info-card h3 {
  margin-top: 2.5rem;
}

.info-card-code,
.info-card-footer,
.info-register-top,
.offering-code,
.offering-card-number,
.pv-section-code,
.pv-product-code,
.catalog-index-top,
.industry-eyebrow,
.industry-workflow-card-head > span,
.support-strip-index,
.policy-section-heading > span {
  color: var(--blue);
  font-family: var(--font-sans);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.06em;
}

.technical-offering-page main .offering-code,
.pressure-vessel-page main :is(.pv-section-code, .pv-product-code) {
  color: var(--blue);
}

/* Catalogue controls keep their filter, sort, and mobile drawer behavior. */
.catalog-toolbar {
  border-color: var(--rule);
  border-radius: 10px;
  background: var(--interior-card);
  box-shadow: none;
}

.catalog-search-control,
.catalog-sort-label select,
.catalog-select-wrap select,
.catalog-filter-toggle,
.catalog-reset-button,
.catalog-filter-header > button,
.catalog-view-toggle,
.catalog-view-toggle button,
.catalog-active-chip {
  border-color: var(--rule-strong);
  border-radius: 6px;
  background: var(--paper);
  color: var(--ink);
}

.catalog-search-control:focus-within,
.catalog-sort-label select:focus,
.catalog-select-wrap select:focus {
  border-color: var(--blue);
  background: var(--interior-card);
  box-shadow: none;
}

.catalog-page :is(input, select) {
  color-scheme: light;
}

.catalog-page select option {
  background: var(--paper);
  color: var(--ink);
}

.catalog-search-control input::placeholder {
  color: var(--muted-light);
  opacity: 1;
}

.catalog-select-wrap svg {
  stroke: var(--graphite);
}

.catalog-view-toggle {
  overflow: hidden;
}

.catalog-view-toggle button {
  border-radius: 0;
}

.catalog-view-toggle button[aria-pressed="true"],
.catalog-option-button[aria-pressed="true"],
.catalog-option-button:hover {
  color: var(--ink);
  background: var(--interior-raised);
}

.catalog-option-button {
  border-radius: 6px;
  color: var(--graphite);
  font-size: 0.86rem;
}

.catalog-option-button i {
  background: var(--paper);
  box-shadow: none;
}

.catalog-search > label,
.catalog-sort-label > span,
.catalog-filter-group legend,
.catalog-filter-group > label,
.catalog-filter-header span,
.catalog-check-option,
.catalog-card-taxonomy,
.catalog-card-taxonomy span:last-child,
.catalog-card-price strong span,
.catalog-card-code,
.catalog-card-coordinate,
.catalog-search-clear,
.catalog-result-count {
  color: var(--graphite);
}

.catalog-search > label,
.catalog-sort-label > span,
.catalog-filter-group legend,
.catalog-filter-group > label {
  font-size: 0.71rem;
  font-weight: 500;
  letter-spacing: 0.06em;
}

.catalog-search-control kbd {
  border-color: var(--rule-strong);
  background: var(--interior-raised);
  color: var(--graphite);
}

.catalog-filter-toggle span {
  color: #0F1B2D;
}

.catalog-active-chip span {
  color: var(--graphite);
}

.catalog-card-visual {
  border-color: var(--rule);
  background: var(--paper-blue);
}

.catalog-card-code span:last-child {
  color: var(--blue);
}

.catalog-assurance article > span {
  color: var(--graphite);
}

.catalog-card-visual::before,
.catalog-card-visual::after,
.industry-workflow-card::before,
.industry-product-card::after,
.pv-capability-grid article::after {
  content: none;
}

.catalog-card-buy,
.catalog-card-cta {
  border-radius: 6px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}

.catalog-empty-state {
  border-color: var(--rule);
  border-radius: 10px;
  background: var(--paper);
}

.catalog-card-price strong {
  font-size: 1.3rem;
  font-weight: 500;
}

/* Purchasing and enquiry details remain prominent on the neutral palette. */
.offering-price-details dt,
.offering-price-details dd,
.offering-facts dt,
.offering-hero-note,
.offering-breadcrumb ol,
.offering-breadcrumb li[aria-current],
.pv-pilot-price small,
.pv-pilot-price span,
.pv-plan-price span,
.pv-plan-card > a,
.pv-plan-top,
.pv-implementation-note span,
.pv-implementation-note strong,
.industry-local-copy li small,
.industry-product-specs dt,
.industry-product-action > span,
.industry-related-card > span {
  color: var(--graphite);
}

.info-enquiry dd,
.info-enquiry dd a,
.info-email-template summary,
.offering-faq summary,
.pv-faq-list summary,
.pv-pilot-price strong,
.pv-plan-price strong {
  color: var(--ink);
}

.offering-price-panel,
.pv-pilot-card,
.pv-plan-featured {
  border-color: var(--rule-strong);
  background: #EDF0F4;
}

.pv-plan-top small,
.pv-plan-featured .pv-plan-top small {
  border-color: var(--rule-strong);
  border-radius: 4px;
  background: var(--surface);
  color: var(--blue);
}

.info-email-template pre,
.launch-note,
.policy-preview-note,
.pv-evidence-status,
.pv-purchase-note,
.pv-implementation-note,
.pv-boundary-note {
  border-color: var(--rule-strong);
  border-radius: 10px;
  background: var(--paper-blue);
}

.pv-boundary-mark {
  color: #0F1B2D;
  border-color: #5B6678;
}

.pv-step-number,
.pv-step-icon {
  border-color: var(--rule-strong);
  background: var(--paper);
  color: var(--blue);
}

.pv-comparison-table-wrap {
  border-color: var(--rule-strong);
  border-radius: 10px;
  background: var(--interior-card);
}

.pv-comparison-table :is(th, td),
.pressure-vessel-page .pv-comparison-table tbody :is(th, td),
.pv-comparison-table thead th:first-child,
.pv-comparison-table tbody th,
.pv-comparison-table tbody td:nth-child(2) {
  border-color: var(--rule);
  background: var(--interior-card);
  color: var(--graphite);
}

.pv-comparison-table thead th,
.pv-comparison-table thead th:nth-child(2) {
  border-color: var(--rule);
  background: var(--interior-raised);
  color: var(--ink);
}

.pressure-vessel-page main .pv-button-outline {
  border-color: var(--rule-strong);
  background: transparent;
  color: var(--ink);
}

.pressure-vessel-page main .pv-button-outline:hover {
  border-color: var(--blue);
  background: var(--interior-raised);
  color: var(--blue);
}

.pv-faq-list details[open] summary i {
  background: var(--interior-raised);
}

.offering-faq summary::after,
.offering-checklist span,
.offering-breadcrumb a:hover {
  color: var(--blue);
}

.offering-card svg {
  stroke: var(--blue);
}

.industry-signal-section {
  border-color: var(--rule);
  background: var(--surface);
}

.industry-workflow-card li {
  border-color: var(--rule);
  border-radius: 4px;
  background: var(--paper);
}

.industry-product-action a {
  border-color: var(--rule-strong);
  border-radius: 6px;
  color: var(--ink);
}

.industry-product-action a:hover {
  border-color: var(--blue);
  background: var(--blue);
  color: #FFFFFF;
}

.industry-product-topline span:first-child {
  color: var(--blue);
}

/* Product previews are light UI illustrations, with their own local tokens. */
.pv-workbench,
.industry-visual-frame,
.industry-device-screen,
.industry-local-badge {
  --ink: #0F1B2D;
  --graphite: #0F1B2D;
  --muted: #0F1B2D;
  --blue: #0F1B2D;
  --blue-dark: #0F1B2D;
  --rule: #FFFFFF;
  --rule-strong: #EDF0F4;
  --pv-steel: #0F1B2D;
  --pv-steel-light: #FFFFFF;
  --pv-teal: #0F1B2D;
  --pv-teal-dark: #0F1B2D;
  --pv-rule: #FFFFFF;
  --pv-rule-strong: #EDF0F4;
  --industry-accent: #0F1B2D;
  --industry-accent-deep: #0F1B2D;
  --industry-accent-soft: #FFFFFF;

  --industry-ink: #0F1B2D;
  color: var(--ink);
  color-scheme: light;
  border-radius: 10px;
  box-shadow: none;
}

.offering-visual {
  border-color: var(--rule-strong);
  border-radius: 10px;
  background: var(--paper);
  box-shadow: none;
}

.offering-visual-top,
.offering-visual figcaption {
  border-color: var(--rule);
  color: var(--graphite);
}

.offering-visual-top span:last-child {
  color: var(--blue);
}

.pv-walkthrough-poster {
  border-radius: 10px;
}

.offering-split-intro > p:not(.offering-code),
.pv-preview-list article > p:not(.pv-section-code),
.pv-subscription-intro > p:not(.pv-section-code),
.pv-requirements-copy > p:not(.pv-section-code),
.pv-walkthrough-copy > p:not(.pv-section-code),
.pv-audience-intro > p:last-child,
.pv-boundary-note p:last-child,
.pv-pilot-copy > p:last-child,
.industry-local-copy .industry-local-note,
.industry-product-topline,
.industry-product-action strong span,
.pv-pilot-index span,
.pv-trust-line {
  color: var(--graphite);
}

.pv-evidence-status {
  color: var(--graphite);
}

.account-glyph,
.policy-preview-note > span {
  background: var(--blue);
  color: #0F1B2D;
}

@media (min-width: 74.01rem) {
  .pv-hero h1 {
    max-width: 16ch;
    font-size: clamp(3rem, 4.2vw, 4.4rem);
  }
}

@media (min-width: 1021px) {
  .industry-hero h1 {
    max-width: 16ch;
    font-size: clamp(3rem, 4.2vw, 4.4rem);
  }
}

@media (max-width: 960px) {
  .catalog-filters,
  .catalog-filter-header,
  .catalog-filter-footer {
    background: var(--interior-card);
  }
}

@media (max-width: 900px) {
  .catalog-filters {
    z-index: 1100;
  }

  .catalog-filter-overlay {
    z-index: 1090;
    background: #EDF0F4;
  }
}

@media (max-width: 640px) {
  .catalog-index-panel,
  .info-register,
  .offering-price-panel,
  .pv-pilot-card {
    padding: 1.35rem;
  }

  .catalog-card-buy {
    padding-inline: 0.65rem;
  }

  .pv-comparison-table tbody tr {
    border-color: var(--rule-strong);
    background: var(--interior-card);
  }
}

@media print {
  .legal-page {
    --surface: #FFFFFF;
    --paper: #FFFFFF;
    --paper-blue: #FFFFFF;
    --ink: #0F1B2D;
    --graphite: #0F1B2D;
    --muted: #0F1B2D;
    --blue: #0F1B2D;
    --rule: #EDF0F4;
    --rule-strong: #EDF0F4;
    --interior-card: #FFFFFF;
    background: #FFFFFF;
  }
}

/* Keep industry-specific headlines readable within narrow phone layouts. */
@media (max-width: 540px) {
  .industry-page .industry-hero h1 {
    max-width: none;
    font-size: clamp(2.15rem, 8.4vw, 2.65rem);
    line-height: 1.12;
  }
}

/* Shared light surfaces and high-contrast actions. */
:is(.catalog-page, .info-page, .technical-offering-page, .pressure-vessel-page, .static-page, .industry-page) {
  --interior-card: #FFFFFF;
  --interior-raised: #FFFFFF;
  --interior-shadow: none;
}
.catalog-card-cta,
.catalog-card-cta:hover { background: #0F1B2D; color: #FFFFFF; border-color: #0F1B2D; }
.catalog-view-toggle button[aria-pressed="true"],
.catalog-option-button[aria-pressed="true"] { background: #0F1B2D; color: #FFFFFF; }
.catalog-option-button[aria-pressed="true"] i { background: #FFFFFF; }
.pv-value-section, .pv-teardown-section, .offering-final { background: #EDF0F4; }
.pv-value-section :is(p, h2, h3, span, strong),
.pv-teardown-section :is(p, h2, h3, span, strong),
.offering-final :is(p, h2, h3, span, strong) { color: #0F1B2D; }
.pv-value-grid, .offering-final::after { display: none; }
/* Small labels keep full contrast alongside the larger display typography. */
.technical-offering-page main .offering-final p:not(.offering-code),
.pressure-vessel-page main .pv-value-copy > p:not(.pv-section-code),
.pressure-vessel-page main .pv-teardown-copy > p:not(.pv-section-code),
.pressure-vessel-page main .pv-teardown-arrow,
.pressure-vessel-page main .pv-comparison-table th > span,
.pressure-vessel-page main .pv-flow-arrow b { color: #0F1B2D; }
.static-page main .policy-preview-note > span,
.catalog-page main .catalog-option-button[aria-pressed="true"] small,
.pressure-vessel-page main .pv-quote-stack :is(span, b) { color: #FFFFFF; }
.industry-page .industry-visual-title > span { background: #EDF0F4; }
.industry-page .industry-chart-panel > div:first-child small,
.industry-page .industry-hero-index span { color: #0F1B2D; }
.industry-page .industry-chart-base span,
.pressure-vessel-page main .pv-workbench figcaption { color: #0F1B2D; }
.industry-page .industry-readout-panel > span { color: #0F1B2D; }

/* Supporting details and form controls remain readable at every viewport. */
.info-register dt,
.info-register dd,
.info-points li,
.info-card-footer,
.offering-facts dt,
.offering-price-details dt,
.catalog-card-taxonomy,
.catalog-result-count {
  font-size: 0.8rem;
  line-height: 1.6;
}

.info-enquiry dd,
.info-email-template summary,
.info-copy-status {
  font-size: 0.94rem;
}

.catalog-search-control:focus-within {
  outline: 2px solid #0F1B2D;
  outline-offset: 2px;
}

@media (max-width: 640px) {
  .catalog-page :is(input, select),
  .info-page :is(input, select, textarea) {
    font-size: 1rem;
  }
}

/* ==========================================================================
   Enterprise refresh: shared hero treatment, components, and motion.
   Motion uses opacity and the individual `translate` property so it never
   overrides a component's own transforms. Reduced motion shows final states.
   ========================================================================== */
@keyframes el-rise { from { opacity: 0; translate: 0 20px; } }
@keyframes el-fade { from { opacity: 0; } }
@keyframes el-rule { from { scale: 0 1; } }
@keyframes el-draw { from { stroke-dashoffset: 100; } }
@keyframes el-pulse-flow { from { stroke-dashoffset: 8; } to { stroke-dashoffset: -100; } }
@keyframes el-spin { to { rotate: 360deg; } }
@keyframes el-ping { from { opacity: .7; scale: 1; } to { opacity: 0; scale: 1.6; } }
@keyframes el-blink { 50% { opacity: .25; } }

/* Page heroes share a plain surface and a confident, balanced headline. */
:is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero),
.legal-page .legal-hero {
  background: var(--surface);
  border-bottom: 1px solid var(--rule);
}
:is(.catalog-page, .info-page, .technical-offering-page, .pressure-vessel-page, .static-page, .industry-page) main :is(h1, h2, h3) {
  letter-spacing: -0.032em;
  text-wrap: balance;
}
body :is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero, .legal-hero) h1 {
  font-size: clamp(2.5rem, 4.3vw, 4.25rem);
  line-height: 1.04;
}
body :is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero, .legal-hero) h1 span { color: #5B6678; }

/* Hero entrance: breadcrumb, label, headline, copy, actions, then the visual. */
:is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero, .legal-hero) :is(nav[aria-label="Breadcrumb"], .eyebrow, .offering-code, .industry-eyebrow) {
  animation: el-fade .8s .05s ease both;
}
:is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero, .legal-hero) h1 {
  animation: el-rise 1s .12s cubic-bezier(.2, .7, .1, 1) both;
}
:is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero, .legal-hero) :is(.info-lede, .offering-hero-lede, .industry-hero-lead, .static-lede, .pv-hero-lede, .catalog-lede) {
  animation: el-rise 1s .24s cubic-bezier(.2, .7, .1, 1) both;
}
:is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero, .legal-hero) :is(.info-actions, .offering-actions, .industry-hero-actions, .pv-hero-actions, .offering-hero-note, .offering-facts) {
  animation: el-rise 1s .36s cubic-bezier(.2, .7, .1, 1) both;
}
:is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero) :is(.info-register, .offering-visual, .el-flow, .offering-price-panel, .pv-workbench, .catalog-index-panel, .industry-visual, .industry-canvas) {
  animation: el-rise 1.1s .3s cubic-bezier(.2, .7, .1, 1) both;
}

/* Scroll reveal, applied by navigation.js to content below the hero. */
.el-motion [data-el-reveal] {
  transition: opacity .8s ease, translate 1s cubic-bezier(.2, .7, .1, 1);
  transition-delay: calc(var(--el-i, 0) * 80ms);
}
.el-motion [data-el-reveal]:not(.is-revealed) { opacity: 0; translate: 0 26px; }

/* Illustrative flow console used on service pages. */
.el-flow {
  position: relative;
  margin: 0;
  overflow: hidden;
  border: 1px solid #0F1B2D;
  border-radius: 10px;
  background: #0F1B2D;
  color: #FFFFFF;
  transform: perspective(1600px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
  transition: transform .7s cubic-bezier(.2, .7, .1, 1);
}
.el-flow-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  border-bottom: 1px solid #5B6678;
  padding: .85rem 1.25rem;
  font-size: .66rem;
  letter-spacing: .1em;
}
.el-flow-bar > span:first-child { display: inline-flex; align-items: center; gap: .6rem; }
.el-flow-bar i { width: .45rem; height: .45rem; background: #FFFFFF; animation: el-blink 2.4s 2s ease-in-out infinite; }
.el-flow-dots { display: inline-flex; gap: .4rem; }
.el-flow-dots i { border: 1px solid #C9D0D9; border-radius: 50%; background: transparent; animation: none; }
.el-flow-diagram { display: block; width: 100%; height: auto; font-family: inherit; }
.el-flow-grid { opacity: .5; }
.el-flow-headings text, .el-flow-caption-text { fill: #FFFFFF; font-size: 9.5px; font-weight: 500; letter-spacing: .16em; }
.el-flow-lines path { stroke: #5B6678; stroke-width: 1.25; stroke-dasharray: 100; animation: el-draw 1.3s calc(.6s + var(--i) * .09s) cubic-bezier(.65, 0, .35, 1) both; }
.el-flow-pulses path {
  stroke: #FFFFFF;
  stroke-width: 2.25;
  stroke-linecap: round;
  stroke-dasharray: 8 192;
  stroke-dashoffset: 8;
  animation: el-pulse-flow 2.6s calc(1.8s + var(--i) * .3s) cubic-bezier(.45, 0, .55, 1) infinite;
}
.el-flow-nodes > g { animation: el-fade .7s calc(.45s + var(--i) * .07s) ease both; }
.el-flow-nodes rect { fill: #0F1B2D; stroke: #C9D0D9; stroke-width: 1; }
.el-flow-nodes .el-flow-mark { fill: #FFFFFF; stroke: none; }
.el-flow-nodes text { fill: #FFFFFF; font-size: 12px; font-weight: 500; }
.el-flow-hub circle { fill: none; transform-origin: 280px 170px; }
.el-flow-orbit { stroke: #5B6678; stroke-dasharray: 2 6; animation: el-spin 48s linear infinite; }
.el-flow-ring { stroke: #5B6678; }
.el-flow-arc { stroke: #FFFFFF; stroke-width: 2; stroke-linecap: round; stroke-dasharray: 16 84; animation: el-spin 7s linear infinite reverse; }
.el-flow-ping { stroke: #FFFFFF; opacity: 0; animation: el-ping 3.2s 1.6s ease-out infinite; }
.el-flow-hub .el-flow-core { fill: #FFFFFF; }
.el-flow-code { fill: #0F1B2D; font-size: 17px; font-weight: 600; letter-spacing: .06em; }
.el-flow figcaption { border-top: 1px solid #5B6678; padding: .8rem 1.25rem; color: #FFFFFF; font-size: .7rem; line-height: 1.5; }
.info-hero-inner > .el-flow { align-self: center; }

/* Assurance list and related-service cards. */
.el-assurance-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.el-assurance-list > li { position: relative; border: 1px solid var(--rule); border-radius: 10px; padding: 1.6rem 1.5rem 1.5rem; background: var(--interior-card); }
.el-assurance-list > li::before { display: block; width: 1.75rem; height: 2px; margin-bottom: 1.25rem; background: #0F1B2D; content: ""; }
.el-assurance-list h3 { margin: 0 0 .5rem; font-size: 1.1rem; }
.el-assurance-list p { margin: 0; font-size: .9rem; line-height: 1.6; }
.el-related-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.el-related-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: .75rem;
  min-height: 15rem;
  border: 1px solid var(--rule);
  border-radius: 10px;
  padding: 1.6rem;
  background: var(--interior-card);
  color: #0F1B2D;
  text-decoration: none;
  transition: translate 240ms ease;
}
.el-related-card:hover { translate: 0 -3px; }
.el-related-card > span { font-size: .64rem; letter-spacing: .12em; }
.el-related-card h3 { margin: 0; font-size: 1.35rem; }
.el-related-card p { margin: 0; font-size: .9rem; line-height: 1.6; }
.el-related-card b { margin-top: auto; font-size: .85rem; font-weight: 600; }
.info-section-tinted { border-block: 1px solid var(--rule); background: var(--interior-raised); }

/* Info-page quick links replace the decorative page index. */
.info-quick-links .info-quick-links-title { margin: 1.4rem 0 1rem; color: #0F1B2D; font-size: 1.6rem; font-weight: 500; letter-spacing: -.03em; line-height: 1.15; }
.info-quick-links ul { margin: 0 0 1.25rem; padding: 0; list-style: none; border-top: 1px solid var(--rule); }
.info-quick-links li { border-bottom: 1px solid var(--rule); }
.info-quick-links li a { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem .1rem; color: #0F1B2D; font-size: .92rem; font-weight: 500; text-decoration: none; transition: padding 240ms ease; }
.info-quick-links li a:hover { padding-inline: .5rem .1rem; }
.info-quick-links-contact { color: #0F1B2D; font-size: .85rem; font-weight: 600; }

@media (max-width: 900px) {
  .el-related-grid { grid-template-columns: 1fr; }
  .el-related-card { min-height: 0; }
}
@media (max-width: 640px) {
  .el-assurance-list { grid-template-columns: 1fr; }
  .el-flow figcaption { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .el-flow { transform: none; }
  :is(.catalog-hero, .info-hero, .offering-hero, .pv-hero, .static-hero, .industry-hero, .legal-hero) *,
  .el-flow *, .el-flow { animation: none !important; }
  .el-flow-pulses { display: none; }
  .el-motion [data-el-reveal] { opacity: 1 !important; translate: none !important; transition: none !important; }
}
@media (forced-colors: active) {
  .el-flow-pulses, .el-flow-ping { display: none; }
}
/* Info heroes that carry a flow console give it room to read. */
.info-hero-inner:has(> .el-flow) { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); align-items: center; }
body .info-hero h1 { font-size: clamp(2.5rem, 3.9vw, 3.9rem); }
.offering-hero-note .text-link { font-size: inherit; }
@media (max-width: 900px) { .info-hero-inner:has(> .el-flow) { grid-template-columns: 1fr; } }

/* ---------- Enterprise alignment: dark page heroes and closing bands ---------- */
.eyebrow .status-dot { display: none; }

body :is(.info-hero, .industries-overview-hero, .legal-page .legal-hero, .info-final) {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border-color: transparent;
  background: var(--navy-900);
  color: #FFFFFF;
}

body :is(.info-hero, .industries-overview-hero, .legal-page .legal-hero, .info-final)::before {
  position: absolute;
  z-index: -1;
  inset: 0 0 0 40%;
  display: block;
  background: url("../images/contours.svg") right center / cover no-repeat;
  content: "";
  pointer-events: none;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 50%);
  mask-image: linear-gradient(90deg, transparent, #000 50%);
}

body main :is(.info-hero, .industries-overview-hero, .legal-hero, .info-final) :is(h1, h2) { color: #FFFFFF; }
body main :is(.info-hero, .industries-overview-hero, .legal-hero, .info-final) :is(h1, h2) :is(span, em) { color: var(--slate-300); font-weight: 400; }
body main :is(.info-hero .info-copy, .industries-overview-hero, .legal-hero .legal-title-row > div:first-child, .info-final) :is(p, li, small) { color: var(--slate-300); }
body main :is(.info-hero, .industries-overview-hero, .legal-hero, .info-final) :is(.eyebrow, .industries-overview-eyebrow) { color: var(--accent-on-dark); }
body main :is(.info-hero, .industries-overview-hero, .legal-hero) :is(.info-breadcrumb, .static-breadcrumb) :is(li, a) { color: var(--slate-300); }
body main :is(.info-hero, .industries-overview-hero, .legal-hero) :is(.info-breadcrumb, .static-breadcrumb) a { color: #FFFFFF; }
body main :is(.info-hero, .industries-overview-hero, .info-final) :is(.text-link, .industries-overview-text-link) { color: #FFFFFF; text-decoration-color: var(--accent-on-dark); }
body main :is(.info-hero, .industries-overview-hero, .info-final) :is(.text-link, .industries-overview-text-link) span { color: var(--accent-on-dark); }
body main .industries-overview-scope span { border-color: var(--navy-700); color: var(--slate-300); }
body main .info-enquiry-product { color: #FFFFFF; }

/* Light panels inside dark heroes keep their dark text. */
body main .info-hero .info-register,
body main .legal-hero .legal-meta {
  border: 1px solid var(--line);
  border-top: 3px solid var(--accent);
  background: #FFFFFF;
  box-shadow: var(--shadow-lg);
}
body main .info-hero .info-register :is(p, li, dt, small, span, summary) { color: var(--slate-700); }
body main .info-hero .info-register :is(h2, h3, dd, strong, a:not(.button)) { color: var(--ink); }
body main .legal-hero .legal-meta { padding: 1.25rem 1.5rem; border-radius: var(--radius); }
body main .legal-hero .legal-meta :is(dt) { color: var(--slate-500); }
body main .legal-hero .legal-meta :is(dd) { color: var(--ink); }

/* Cards: quiet labels, clear hierarchy. */
body main .info-card-code { color: var(--accent); font-size: .8125rem; font-weight: 600; letter-spacing: 0; text-transform: none; }
body main .info-register-top { color: var(--slate-500); font-size: .8125rem; font-weight: 600; letter-spacing: 0; text-transform: none; }
body main a.info-card:hover { border-color: var(--line-strong); box-shadow: var(--shadow-lg); }

/* Retired decorative geometry. */
.error-orbit,
.error-code,
.calibration-mark,
.static-grid-plane { display: none; }
body main .technical-card-top { color: var(--slate-500); font-family: var(--font-sans); font-size: .8125rem; font-weight: 600; letter-spacing: 0; text-transform: none; }
