/* Zhongji motion: feedback and evidence continuity; incumbent layout and colours stay authoritative. */
:root {
  --motion-fast: 180ms;
  --motion-normal: 280ms;
  --motion-slow: 480ms;
  --motion-ease: cubic-bezier(.16, 1, .3, 1);
}
/* Replace legacy hidden 880ms arrivals and long card delays; never stack two entrance systems. */
.motion-ready .buyer-hero .hero-content > *,
.motion-ready .buyer-hero .hero-proof > div {
  animation: none;
  opacity: 1;
  transform: none;
}
.motion-ready .reveal { opacity: 1; transform: none; transition: none; }
.motion-ready .solution-cards-section .process-card,
.motion-ready .selection-section .selection-steps li,
.motion-ready .equipment .equipment-card,
.motion-ready .cases .case-grid > a,
.motion-ready .factory .factory-gallery figure,
.motion-ready .cooperation-section .support-list > div {
  opacity: 1;
  translate: none;
  transition-delay: 0s !important;
}
/* Existing content is visible before, during and without JavaScript. No hidden reveal state. */
[data-motion-reveal] { opacity: 1; }
.zm-motion :is(.button,.btn,.header-cta,.nav-cta,.floating-wa,.slider-button,.solution-filter button,[data-motion-play]) {
  transition-property: background-color,border-color,color,box-shadow,opacity,translate;
  transition-duration: var(--motion-fast);
  transition-timing-function: var(--motion-ease);
}
.zm-motion :is(.button,.btn,.header-cta,.nav-cta,.floating-wa):hover { transform: none; }
.zm-motion :is(.button,.btn,.header-cta,.nav-cta,.slider-button,[data-motion-play]):active { translate: 0 1px; }
.zm-motion :is(.button,.btn,.header-cta,.nav-cta,.slider-button,[data-motion-play]):focus-visible {
  outline: 3px solid var(--hc-blue, #0072a3);
  outline-offset: 3px;
  box-shadow: 0 0 0 2px #fff;
}
.zm-motion :is(.equipment-card,.equipment-directory-card,.simple-product-card,.product-card,.catalog-card,.small-product-card,.core-equipment-card,.solution-card,.hc-solution-card,[data-motion-card]) {
  transition-property: border-color,box-shadow;
  transition-duration: var(--motion-normal);
  transition-timing-function: var(--motion-ease);
}
/* Keep heavy machinery on its floor. The photograph can breathe; the card never floats. */
.zm-motion :is(.equipment-card,.equipment-directory-card,.simple-product-card,.product-card,.catalog-card,.small-product-card,.core-equipment-card,.solution-card,.hc-solution-card,[data-motion-card]):hover { transform: none; }
.zm-motion .equipment .equipment-card:hover { box-shadow: 0 8px 20px rgb(22 43 53 / .065); }
.zm-motion :is( .equipment-image img,.equipment-directory-card img,.hc-solution-media img,[data-motion-media] img,.solution-card img,.flagship-video-card img,.factory-photo-grid img) {
  transition: transform var(--motion-normal) var(--motion-ease);
}
.zm-motion :is(.equipment-card strong,.hc-process-link span,.hc-solution-card strong span,.hf-design-references a span,.design-reference-link span,.hero-inline-link span,.hero-proof-link small span) {
  display: inline-block;
  transition: transform var(--motion-fast) var(--motion-ease);
}
/* The existing map geometry and its local graphite/red states are deliberately untouched. */
.zm-motion.home-consistency #solutions .hc-map-point::before,
.zm-motion.home-consistency #solutions .hc-stage-control {
  transition-duration: var(--motion-fast);
  transition-timing-function: var(--motion-ease);
}
.zm-motion .nav a::after,
.zm-motion :is(.hc-stage-number,.hc-stage-label strong,.solution-filter button) {
  transition-duration: var(--motion-fast);
  transition-timing-function: var(--motion-ease);
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  /* Higher specificity than the approved no-scale equipment styles; scale is only 2%. */
  .zm-motion.home-consistency.home-final #equipment .equipment-card:hover .equipment-image img,
  .zm-motion.home-consistency.home-final #equipment .equipment-card:focus-visible .equipment-image img { transform: scale(1.02); }
  .zm-motion .equipment-directory-card:hover img { transform: scale(1.02); }
  .zm-motion [data-motion-card]:hover { box-shadow: 0 8px 20px rgb(22 43 53 / .065); }
  .zm-motion .hc-solution-card:hover .hc-solution-media img,
  .zm-motion .solution-card:hover img,
  .zm-motion .flagship-video-card > a:first-child:hover img,
  .zm-motion [data-motion-media]:hover img,
  .zm-motion .factory-photo-grid figure:hover img { transform: scale(1.015); }
  .zm-motion .factory-photo-grid figure:hover { transform: none; }
  .zm-motion .equipment-card:hover strong,
  .zm-motion .equipment-card:focus-visible strong,
  .zm-motion .hc-process-link:hover span,
  .zm-motion .hc-solution-card:hover strong span,
  .zm-motion .hf-design-references a:hover span,
  .zm-motion .design-reference-link:hover span,
  .zm-motion .hero-inline-link:hover span,
  .zm-motion .hero-proof-link:hover small span { transform: translateX(4px); }
}
/* Save-data / low-power devices keep actionable feedback, without image movement. */
html[data-zm-motion='simple'] .zm-motion :is( .equipment-image img,.equipment-directory-card img,.hc-solution-media img,[data-motion-media] img,.solution-card img,.flagship-video-card img,.factory-photo-grid img) { transform: none !important; }
@media (prefers-reduced-motion:reduce) {
  :root { --motion-fast: 0ms; --motion-normal: 0ms; --motion-slow: 0ms; }
  html, .zm-motion, .zm-motion * { scroll-behavior: auto !important; }
  .zm-motion *, .zm-motion *::before, .zm-motion *::after {
    animation-duration: 0s !important;
    animation-delay: 0s !important;
    transition-duration: 0s !important;
    transition-delay: 0s !important;
  }
  .zm-motion :is( .equipment-image img,.equipment-directory-card img,.hc-solution-media img,[data-motion-media] img,.solution-card img,.flagship-video-card img,.factory-photo-grid img,.equipment-card strong,.hc-process-link span,.hc-solution-card strong span,.hf-design-references a span,.design-reference-link span,.hero-inline-link span,.hero-proof-link small span) { transform: none !important; }
  .zm-motion :is(.button,.btn,.header-cta,.nav-cta,.slider-button,[data-motion-play]):active { translate: none; }
}

/* Refined routes only. The frozen Products overview never receives this class/attribute. */
html[data-zm-motion-refined='true'] { scroll-behavior: smooth; }
.zm-motion-refined :is(.fe-photo,.fe-video-card,.fe-assembly-note,[data-media-role],[data-product-presentation]) { scroll-margin-block-start: 100px; }
.zm-motion-refined .fe-record-nav a { transition: color var(--motion-fast) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease), background-color var(--motion-fast) var(--motion-ease); }
.zm-motion-refined .fe-record-nav a:focus-visible { outline: 3px solid #0072a3; outline-offset: 3px; }
.zm-motion-refined.product-detail-normalized :is(.match-row,tbody tr,[role='tab']) { transition: background-color var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease); }
.zm-motion-refined.product-detail-normalized :is(.match-row,tbody tr):hover { background-color: rgb(0 114 163 / .035); }
.zm-motion-refined.product-detail-normalized [role='tab'][aria-selected='true'] { background-color: rgb(0 114 163 / .06); }
.zm-motion-refined.product-detail-normalized main summary { transition: color var(--motion-fast) var(--motion-ease), background-color var(--motion-fast) var(--motion-ease); }
.zm-motion-refined.product-detail-normalized main summary:focus-visible { outline: 3px solid #0072a3; outline-offset: 3px; }
/* Native details stays accessible without JS. Browsers lacking intrinsic-size interpolation
   keep instant native disclosure; supported browsers perform one bounded 180ms transition. */
@supports (interpolate-size: allow-keywords) {
  .zm-motion-refined.product-detail-normalized main details[data-motion-accordion] { interpolate-size: allow-keywords; }
  .zm-motion-refined.product-detail-normalized main details[data-motion-accordion]::details-content {
    block-size: 0;
    opacity: .8;
    overflow: clip;
    transition: block-size var(--motion-fast) var(--motion-ease), opacity var(--motion-fast) var(--motion-ease), content-visibility var(--motion-fast) allow-discrete;
  }
  .zm-motion-refined.product-detail-normalized main details[data-motion-accordion][open]::details-content { block-size: auto; opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  html[data-zm-motion-refined='true'] { scroll-behavior: auto; }
}

/* Real product-media posters receive feedback while paused, never a drifting live video. */
.zm-motion-refined.product-detail-normalized .product-v3-media-card :is(img,video[poster]) { transition: transform var(--motion-normal) var(--motion-ease); }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  html:not([data-zm-motion='simple']) .zm-motion-refined.product-detail-normalized .product-v3-media-card:hover img,
  html:not([data-zm-motion='simple']) .zm-motion-refined.product-detail-normalized .product-v3-media-card:not([data-motion-video-state='playing']):hover video[poster] { transform: scale(1.015); }
}
@media (prefers-reduced-motion: reduce) {
  .zm-motion-refined.product-detail-normalized .product-v3-media-card :is(img,video[poster]) { transform: none !important; }
}

/* R1 enhances frozen surfaces. No hidden-default state or layout-driving entrance. */
body[data-motion-r1] {
  --motion-fast: 200ms;
  --motion-normal: 240ms;
  --motion-slow: 680ms;
}
body[data-motion-r1] [data-reveal] { opacity: 1; }
/* Image focus follows real viewport progress, forwards and backwards. The
   original safe canvas is retained; Product Hero figures are excluded. */
body[data-motion-r1] [data-motion-image-frame] { overflow:clip; }
body[data-motion-r1] [data-motion-image] { transform-origin:center; }
body[data-motion-r1] :is(.pdp-document-card,.flagship-download-card,.related-card,.fe-video-card,.fe-photo,.case-card,.numbered-equipment-grid>article) {
  transition: border-color 220ms var(--motion-ease),box-shadow 220ms var(--motion-ease);
}
body[data-motion-r1] :is(.equipment-image,.equipment-directory-card,.fe-photo,.factory-photo-grid figure,.case-grid>a) { overflow: clip; }
body[data-motion-r1] :is(.pdp-document-card a,.related-card a,.equipment-card strong,.equipment-directory-card strong) { transition: translate 200ms var(--motion-ease),color 200ms var(--motion-ease); }
body[data-motion-r1] :is(.fe-photo,.case-grid>a,.fe-video-card) :is(img,video[poster]) { transition: transform 240ms var(--motion-ease); }
body[data-motion-r1] .quote-form :is(input,textarea,select) {
  transition: border-color 180ms var(--motion-ease),box-shadow 180ms var(--motion-ease),background-color 180ms var(--motion-ease);
}
body[data-motion-r1] .quote-form :is(input,textarea,select):focus-visible { box-shadow:0 0 0 3px rgb(0 114 163 / .12); }
body[data-motion-r1] .quote-form [data-motion-invalid] { border-color:#91423b; }
body[data-motion-r1] .quote-form button:disabled { cursor:not-allowed; }
body[data-motion-r1] .contact-hero[data-motion-contact-background] {
  position:relative;isolation:isolate;overflow:hidden;background:none;
}
body[data-motion-r1] .contact-hero[data-motion-contact-background]::before {
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:var(--motion-contact-background);transform-origin:center;
}
body[data-motion-r1] :is(.btn,.button,.zj-inquiry):active { translate:0 1px; }
body[data-motion-r1] .motion-reading-progress {
  position:fixed;inset:0 0 auto;height:2px;z-index:80;
  background:#08739a;transform-origin:left;pointer-events:none;
}
body[data-motion-r1] .motion-process-progress { height:3px;overflow:hidden;background:#dce4e7; }
body[data-motion-r1] .motion-process-progress span {
  display:block;width:100%;height:100%;background:#08739a;
  transform:scaleX(.2);transform-origin:left;transition:transform 220ms var(--motion-ease);
}
body[data-motion-r1] .solution-stage-linked .process-marker { transition:background-color 200ms ease,border-color 200ms ease; }
body[data-motion-r1] .solution-stage-linked .process-marker.is-active { box-shadow:0 2px 9px rgb(24 49 59 / .14); }
body[data-motion-r1] .solution-stage-linked .line-work-copy p { transition:background-color 200ms ease,color 200ms ease; }
body[data-motion-r1] .solution-stage-linked .line-work-copy p.is-active { color:#18313b; }
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  html:not([data-zm-motion='simple']) body[data-motion-r1] :is(.pdp-document-card,.related-card,.equipment-directory-card,.case-card):hover {
    box-shadow:0 8px 20px rgb(22 43 53 / .075);
  }
  html:not([data-zm-motion='simple']) body[data-motion-r1] :is(.fe-photo,.case-grid>a):hover img,
  html:not([data-zm-motion='simple']) body[data-motion-r1] .fe-video-card:not([data-motion-video-state='playing']):hover video[poster] { transform:scale(1.02); }
  body[data-motion-r1] :is(.pdp-document-card,.related-card):hover a { translate:3px 0; }
}
@media (min-width:768px) and (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  html:not([data-zm-motion='simple']) body[data-motion-r1] .buyer-hero .hero-scene {
    animation:motion-workshop-ambient 20s ease-in-out infinite alternate;
    animation-play-state:paused;transform-origin:center;
  }
  html:not([data-zm-motion='simple']) body[data-motion-r1] .buyer-hero[data-motion-ambient='running'] .hero-scene { animation-play-state:running; }
  body[data-motion-r1] .buyer-hero .hero-scene>img {
    translate:var(--motion-pointer-x,0px) var(--motion-pointer-y,0px);
    transition:translate 180ms ease-out;
  }
  html:not([data-zm-motion='simple']) body[data-motion-r1] .contact-hero[data-motion-contact-background]::before {
    animation:motion-contact-ambient 22s ease-in-out infinite alternate;animation-play-state:paused;
  }
  html:not([data-zm-motion='simple']) body[data-motion-r1] .contact-hero[data-motion-ambient='running']::before { animation-play-state:running; }
}
@keyframes motion-contact-ambient {
  from { transform:scale(1.005); }
  to { transform:scale(1.025); }
}
@keyframes motion-workshop-ambient {
  from { transform:scale(1.025) translate(-.2%,0); }
  to { transform:scale(1.055) translate(.2%,-.3%); }
}
/* Only the requested process-reading interaction has a shared sticky boundary.
   Existing sections/text/anchors keep their DOM order; small/reduced views stay stacked. */
@media (min-width:1025px) and (min-height:700px) and (prefers-reduced-motion:no-preference) {
  html:not([data-zm-motion='simple']) .motion-process-story {
    width:min(1240px,92vw);margin:0 auto;padding:64px 0;
    display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:48px;align-items:start;
  }
  html:not([data-zm-motion='simple']) .motion-process-story :is(#process-flow,#how-it-works) {
    width:100%;max-width:none;margin:0;padding:0;min-width:0;
  }
  html:not([data-zm-motion='simple']) .motion-process-story #process-flow { position:sticky;top:28px;align-self:start; }
  html:not([data-zm-motion='simple']) .motion-process-story .line-work-copy { grid-template-columns:1fr; }
  html:not([data-zm-motion='simple']) .motion-process-story .line-work-copy>p {
    border-right:0;border-bottom:1px solid #d5dadd;min-block-size:164px;padding:24px 20px;margin:0;
  }
  html:not([data-zm-motion='simple']) .motion-process-story .line-work-copy>p:last-child { border-bottom:0; }
}
@media (prefers-reduced-motion:reduce) {
  body[data-motion-r1] *,body[data-motion-r1] *::before,body[data-motion-r1] *::after {
    animation:none!important;transition:none!important;scroll-behavior:auto!important;
  }
  body[data-motion-r1] .buyer-hero .hero-scene,
  body[data-motion-r1] .buyer-hero .hero-scene>img { transform:none!important;translate:none!important; }
  body[data-motion-r1] [data-motion-image] { scale:none!important;translate:none!important; }
  body[data-motion-r1] .motion-reading-progress { display:none; }
  body[data-motion-r1] :is(.btn,.button,.zj-inquiry):active { translate:none; }
}
