/* v70 premium motion: subtle, square, accessible, layout-stable */
/* Material feedback, without changing layout or color system */
body.v70-premium :is(.v42-btn,.btn,.v65-button,.v39-head-cta,.v40-consult-btn,.mount-sector-btn,.v66-solid-link,.v65-form-teaser button,.v65-mobile-lead){
  transition:background-color .3s ease,color .3s ease,border-color .3s ease,box-shadow .32s ease,opacity .3s ease,filter .3s ease!important;
}
body.v70-premium :is(.v42-btn,.btn,.v65-button,.v39-head-cta,.v40-consult-btn,.mount-sector-btn,.v66-solid-link,.v65-form-teaser button):not(:disabled):hover{
  filter:brightness(1.035);box-shadow:0 9px 24px rgba(14,32,32,.11)!important;
}
body.v70-premium :is(.v42-btn,.btn,.v65-button,.v39-head-cta,.v40-consult-btn,.mount-sector-btn,.v66-solid-link):active{
  filter:brightness(.98);box-shadow:0 3px 10px rgba(14,32,32,.12)!important;
}
body.v70-premium :is(a,button,summary,input,textarea,select):focus-visible{outline:2px solid #2b9b80!important;outline-offset:4px}
/* editorial picture reveal on hover: only content images, never layout or hero text */
body.v70-premium :is(.v66-work,.v67-industry-equipment .equipment-card,.v67-industry-cases .use-case,.v67-solution .v67-image-feature,.v42-install-main,.v42-install-side,.v39-zone-photo,.v67-editorial-grid .v67-image-feature) img{
  transition:transform .9s cubic-bezier(.22,1,.36,1),filter .65s ease!important;
  transform-origin:center center;
}
@media(hover:hover) and (pointer:fine){
 body.v70-premium :is(.v66-work,.v67-industry-equipment .equipment-card,.v67-industry-cases .use-case,.v67-solution .v67-image-feature,.v42-install-main,.v42-install-side,.v39-zone-photo,.v67-editorial-grid .v67-image-feature):hover img{transform:scale(1.035)!important}
}
/* soft interaction on editorial rules, keeps exact square architecture */
body.v70-premium .v66-tabs :is(button,[role=tab]){transition:color .25s ease,background-color .25s ease,border-color .25s ease,padding-left .3s ease!important}
body.v70-premium :is(.v40-menu-link,.v67-industries-section a,.v66-work-footer a){transition:background-color .3s ease,color .3s ease,border-color .3s ease!important}
body.v70-premium .v39-header{transition:box-shadow .35s ease,backdrop-filter .35s ease!important}
body.v70-premium .v39-header.v70-scrolled{box-shadow:0 8px 30px rgba(12,30,30,.10)!important}
/* A modal must render immediately and focus correctly; the motion only decorates its entry. */
body.v70-premium .v65-modal.is-open{animation:v70-modal-backdrop .28s ease both}
body.v70-premium .v65-modal.is-open .v65-modal__dialog{animation:v70-modal-sheet .45s cubic-bezier(.22,1,.36,1) both}
body.v70-premium .v64-modal.is-open{animation:v70-modal-backdrop .28s ease both}
body.v70-premium .v64-modal.is-open .v64-modal__dialog{animation:v70-modal-sheet .45s cubic-bezier(.22,1,.36,1) both}
body.v70-premium .modal.active{animation:v70-modal-backdrop .28s ease both}
body.v70-premium .modal.active .dialog{animation:v70-modal-sheet .45s cubic-bezier(.22,1,.36,1) both}
@keyframes v70-modal-backdrop{from{opacity:0}to{opacity:1}}
@keyframes v70-modal-sheet{from{opacity:0;transform:translateY(16px) scale(.987)}to{opacity:1;transform:translateY(0) scale(1)}}
/* Stagger on the hero; JS chooses actual copy elements and controls startup. */
@keyframes v70-hero-enter{from{opacity:0;transform:translate3d(0,20px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes v70-photo-enter{from{opacity:.72;transform:scale(1.055)}to{opacity:1;transform:scale(1)}}
body.v70-premium.v70-hero-started .v70-hero-copy-item{animation:v70-hero-enter .9s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--v70-delay,0ms)}
body.v70-premium.v70-hero-started .v70-hero-photo{animation:v70-photo-enter 1.65s cubic-bezier(.22,1,.36,1) both}
/* Light, no fixed-cost scroll progress or invasive parallax */
body.v70-premium .v65-backtop{transition:opacity .28s ease,transform .28s ease,background-color .28s ease!important}
@media(max-width:760px){
 body.v70-premium.v70-hero-started .v70-hero-copy-item{animation-duration:.62s}
 body.v70-premium.v70-hero-started .v70-hero-photo{animation-duration:1s}
 body.v70-premium .v65-modal.is-open .v65-modal__dialog{animation-duration:.26s}
}
@media(prefers-reduced-motion:reduce){
 body.v70-premium .v70-hero-copy-item,body.v70-premium .v70-hero-photo,
 body.v70-premium .v65-modal.is-open,body.v70-premium .v65-modal.is-open .v65-modal__dialog,
 body.v70-premium .v64-modal.is-open,body.v70-premium .v64-modal.is-open .v64-modal__dialog,
 body.v70-premium .modal.active,body.v70-premium .modal.active .dialog{animation:none!important}
 body.v70-premium :is(.v42-btn,.btn,.v65-button,.v39-head-cta,.v40-consult-btn,.mount-sector-btn,.v66-solid-link,.v65-form-teaser button,.v40-menu-link,.v66-tabs button,.v39-header,.v65-backtop){transition:none!important}
 body.v70-premium :is(.v66-work,.v67-industry-equipment .equipment-card,.v67-industry-cases .use-case,.v42-install-main,.v42-install-side,.v39-zone-photo) img{transition:none!important;transform:none!important}
}
/* Long specification labels must not widen the mobile layout. */
@media (max-width:620px){
 body.v70-premium .section-metrics .metric b{display:block;max-width:100%;overflow-wrap:anywhere;hyphens:auto}
 body.v70-premium .section-metrics .metric{min-width:0}
}
