/* Shared motion language */
.button,
.button span,
.solution-card,
.solution-card a,
.solution-card a span,
.platform-node,
.platform-core,
.platform-core__symbol,
.platform-connectors line,
.concept-system,
.concept-center,
.concept-center__symbol,
.concept-connectors line,
.ecosystem-node,
.ecosystem-core,
.ecosystem-map__lines line {
    transition-duration: 200ms;
    transition-timing-function: ease;
    transition-property: transform,translate,border-color,background-color,box-shadow,color,stroke,filter,opacity;
}
/* Hero platform interactions;
connector geometry remains unchanged. */
.platform-node:hover{
    translate: 0 -3px;
    border-color: #b7c7f8;
    box-shadow: 0 15px 34px rgba(16,24,40,.11);
}
.platform-visual:has(.platform-node:hover) .platform-core__symbol{
    transform: scale(1.015);
    filter: brightness(1.04);
}
.platform-visual:has(.platform-node--wms:hover) .platform-connectors line:nth-child(1),
.platform-visual:has(.platform-node--mes:hover) .platform-connectors line:nth-child(2),
.platform-visual:has(.platform-node--print:hover) .platform-connectors line:nth-child(3),
.platform-visual:has(.platform-node--erp:hover) .platform-connectors line:nth-child(4) {
    stroke: #3f82cc;
    stroke-width: 1.5;
}
.platform-core:hover .platform-core__symbol{
    transform: scale(1.02);
    filter: brightness(1.05);
}
.platform-visual:has(.platform-core:hover) .platform-connectors line{
    stroke: #3f82cc;
    stroke-width: 1.5;
}
.platform-visual:has(.platform-core:hover) .platform-node{
    border-color: #c9d5fa;
    background: #fff;
}
/* Solution cards */
.solution-card:hover{
    transform: translateY(-3px);
    border-color: #c2cff6;
    box-shadow: 0 18px 44px rgba(16,24,40,.09);
}
.solution-card a span,.button span{
    display: inline-block;
}
.solution-card:hover a{
    color: #255eae;
}
.solution-card:hover a span,.button:hover span{
    transform: translateX(3px);
}
/* Connected platform interactions;
connector coordinates remain unchanged. */
.concept-system:hover{
    translate: 0 -2px;
    border-color: #3b4f76;
    background: #151f34;
}
.concept-map:has(.concept-system:hover) .concept-center__symbol{
    transform: scale(1.015);
    filter: brightness(1.06);
}
.concept-map:has(.concept-system--logistics:hover) .concept-connectors line:nth-child(1),
.concept-map:has(.concept-system--production:hover) .concept-connectors line:nth-child(2),
.concept-map:has(.concept-system--quality:hover) .concept-connectors line:nth-child(3),
.concept-map:has(.concept-system--management:hover) .concept-connectors line:nth-child(4),
.concept-map:has(.concept-system--automation:hover) .concept-connectors line:nth-child(5) {
    stroke: #6f91ef;
    stroke-width: 1.5;
}
.concept-center:hover .concept-center__symbol{
    transform: scale(1.02);
    filter: brightness(1.06);
}
.concept-map:has(.concept-center:hover) .concept-connectors line{
    stroke: #6f91ef;
    stroke-width: 1.5;
}
.concept-map:has(.concept-center:hover) .concept-system{
    border-color: #34486e;
    background: #141e32;
}
/* Buttons and keyboard focus */
.button:focus-visible{
    outline: 3px solid rgba(63,130,204,.38);
    outline-offset: 3px;
}
.button--primary:hover{
    background: var(--color-primary-dark);
}
.button--secondary:hover{
    border-color: #b3c2ed;
    background: var(--color-primary-soft);
}
.button--light:hover{
    background: #f4f7ff;
}
/* Shared entrance motion. Content remains visible when JavaScript is unavailable. */
:root{
    --motion-duration: 600ms;
    --motion-duration-fast: 520ms;
    --motion-ease: cubic-bezier(.22,1,.36,1);
    --motion-rise: 18px;
    --motion-stagger: 80ms;
}
@keyframes motion-enter{
    from{opacity:0;transform:translateY(var(--motion-rise))}
    to{opacity:1;transform:translateY(0)}
}
@keyframes motion-fade{
    from{opacity:0}
    to{opacity:1}
}
@keyframes motion-core-enter{
    from{opacity:0;transform:translate(-50%,-50%) scale(.97)}
    to{opacity:1;transform:translate(-50%,-50%) scale(1)}
}
@keyframes motion-node-enter{
    from{opacity:0;transform:translate(-50%,-50%) translateY(8px)}
    to{opacity:1;transform:translate(-50%,-50%) translateY(0)}
}
@keyframes motion-line-draw{
    from{stroke-dasharray:1 1;stroke-dashoffset:1}
    to{stroke-dasharray:none;stroke-dashoffset:0}
}
@keyframes motion-data-pulse{
    0%{opacity:0;stroke-dashoffset:0}
    8%,92%{opacity:.28}
    100%{opacity:0;stroke-dashoffset:-1}
}
.motion-ready .reveal-section{
    opacity: 0;
    transform: translateY(var(--motion-rise));
}
.motion-ready .reveal-section.is-visible{
    opacity: 1;
    transform: translateY(0);
    transition: opacity var(--motion-duration) var(--motion-ease),transform var(--motion-duration) var(--motion-ease);
}
/* Hero enters immediately in reading order. */
.motion-ready .hero__content.reveal-section{
    opacity: 1;
    transform: none;
}
.motion-ready .hero__content>.eyebrow,
.motion-ready .hero__content>h1,
.motion-ready .hero__description,
.motion-ready .hero__content>.button-group,
.motion-ready .hero__proof,
.motion-ready .hero .platform-visual{
    animation: motion-enter var(--motion-duration) var(--motion-ease) both;
}
.motion-ready .hero .platform-visual{
    animation-name: motion-fade;
}
.motion-ready .hero__content>.eyebrow{animation-delay:40ms}
.motion-ready .hero__content>h1{animation-delay:100ms}
.motion-ready .hero__description{animation-delay:170ms}
.motion-ready .hero__content>.button-group{animation-delay:240ms}
.motion-ready .hero__proof{animation-delay:310ms}
.motion-ready .hero .platform-visual{animation-delay:380ms}
/* Section-specific children carry the reveal so their hierarchy can be staggered. */
.motion-ready .solutions .reveal-section,
.motion-ready .ecosystem .reveal-section,
.motion-ready .operations .reveal-section,
.motion-ready .why .reveal-section,
.motion-ready .concept .reveal-section,
.motion-ready .cta .reveal-section{
    opacity: 1;
    transform: none;
}
.motion-ready .solutions .section-heading>*,
.motion-ready .solutions .solution-card,
.motion-ready .operations__intro,
.motion-ready .operations-value,
.motion-ready .why__intro,
.motion-ready .feature-list article,
.motion-ready .concept__heading,
.motion-ready .concept-center,
.motion-ready .concept-system,
.motion-ready .concept__caption,
.motion-ready .cta__inner>div>*{
    opacity: 0;
}
.motion-ready .solutions .is-visible .section-heading>*,
.motion-ready .solutions .is-visible .solution-card,
.motion-ready .operations .is-visible .operations__intro,
.motion-ready .operations .is-visible .operations-value,
.motion-ready .why .is-visible .why__intro,
.motion-ready .why .is-visible .feature-list article,
.motion-ready .concept .is-visible .concept__heading,
.motion-ready .concept .is-visible .concept-center,
.motion-ready .concept .is-visible .concept-system,
.motion-ready .concept .is-visible .concept__caption,
.motion-ready .cta .cta__inner.is-visible>div>*{
    animation: motion-enter var(--motion-duration) var(--motion-ease) both;
}
.motion-ready .solutions .is-visible .solution-card,
.motion-ready .concept .is-visible .concept-center,
.motion-ready .concept .is-visible .concept-system{
    animation-name: motion-fade;
}
.solutions .is-visible .section-heading>div{animation-delay:20ms}
.solutions .is-visible .section-heading>p{animation-delay:100ms}
.solutions .is-visible .solution-card:nth-child(1){animation-delay:180ms}
.solutions .is-visible .solution-card:nth-child(2){animation-delay:250ms}
.solutions .is-visible .solution-card:nth-child(3){animation-delay:320ms}
.solutions .is-visible .solution-card:nth-child(4){animation-delay:390ms}
.solutions .is-visible .solution-card:nth-child(5){animation-delay:460ms}
.operations .is-visible .operations__intro{animation-delay:20ms}
.operations .is-visible .operations-value:nth-child(1){animation-delay:120ms}
.operations .is-visible .operations-value:nth-child(2){animation-delay:190ms}
.operations .is-visible .operations-value:nth-child(3){animation-delay:260ms}
.operations .is-visible .operations-value:nth-child(4){animation-delay:330ms}
.why .is-visible .why__intro{animation-delay:20ms}
.why .is-visible .feature-list article:nth-child(1){animation-delay:120ms}
.why .is-visible .feature-list article:nth-child(2){animation-delay:190ms}
.why .is-visible .feature-list article:nth-child(3){animation-delay:260ms}
.why .is-visible .feature-list article:nth-child(4){animation-delay:330ms}
.why .is-visible .feature-list article:nth-child(5){animation-delay:400ms}
/* The ecosystem assembles from platform core to lines and product nodes. */
.motion-ready .ecosystem__content>*{
    opacity: 0;
}
.motion-ready .ecosystem .is-visible .ecosystem__content>*{
    animation: motion-enter var(--motion-duration) var(--motion-ease) both;
}
.ecosystem .is-visible .ecosystem__content>.eyebrow{animation-delay:20ms}
.ecosystem .is-visible .ecosystem__content>h2{animation-delay:90ms}
.ecosystem .is-visible .ecosystem__content>p:last-child{animation-delay:170ms}
.motion-ready .ecosystem-core{
    opacity: 0;
}
.motion-ready .ecosystem .is-visible .ecosystem-core{
    animation: motion-core-enter var(--motion-duration-fast) var(--motion-ease) 280ms both;
}
.motion-ready .ecosystem-map__lines>line{
    stroke-dasharray: 1 1;
    stroke-dashoffset: 1;
}
.motion-ready .ecosystem .is-visible .ecosystem-map__lines>line{
    animation: motion-line-draw 620ms var(--motion-ease) both;
}
.ecosystem .is-visible .ecosystem-map__lines>line:nth-child(1){animation-delay:400ms}
.ecosystem .is-visible .ecosystem-map__lines>line:nth-child(2){animation-delay:430ms}
.ecosystem .is-visible .ecosystem-map__lines>line:nth-child(3){animation-delay:460ms}
.ecosystem .is-visible .ecosystem-map__lines>line:nth-child(4){animation-delay:490ms}
.ecosystem .is-visible .ecosystem-map__lines>line:nth-child(5){animation-delay:520ms}
.ecosystem .is-visible .ecosystem-map__lines>line:nth-child(6){animation-delay:550ms}
.motion-ready .ecosystem-map__lines>circle{
    opacity: 0;
}
.motion-ready .ecosystem .is-visible .ecosystem-map__lines>circle{
    opacity: 1;
    transition: opacity 300ms ease 760ms;
}
.motion-ready .ecosystem-node{
    opacity: 0;
}
.motion-ready .ecosystem .is-visible .ecosystem-node{
    animation: motion-node-enter var(--motion-duration-fast) var(--motion-ease) both;
}
.ecosystem .is-visible .ecosystem-node--wms{animation-delay:650ms}
.ecosystem .is-visible .ecosystem-node--mes{animation-delay:710ms}
.ecosystem .is-visible .ecosystem-node--qms{animation-delay:770ms}
.ecosystem .is-visible .ecosystem-node--cmms{animation-delay:830ms}
.ecosystem .is-visible .ecosystem-node--ems{animation-delay:890ms}
.ecosystem .is-visible .ecosystem-node--erp{animation-delay:950ms}
.ecosystem-map__pulses line{
    opacity: 0;
    stroke: var(--color-primary);
    stroke-width: 1.25;
    stroke-dasharray: .025 .975;
}
.motion-ready .ecosystem .is-visible .ecosystem-map__pulses line:nth-child(2),
.motion-ready .ecosystem .is-visible .ecosystem-map__pulses line:nth-child(5){
    animation: motion-data-pulse 6.4s linear 1.6s infinite;
}
.motion-ready .ecosystem .is-visible .ecosystem-map__pulses line:nth-child(5){
    animation-delay: 4.2s;
}
/* The dark platform diagram converges more slowly and calmly. */
.concept .is-visible .concept__heading{animation-delay:20ms}
.motion-ready .concept-connectors line{
    stroke-dasharray: 1 1;
    stroke-dashoffset: 1;
}
.motion-ready .concept .is-visible .concept-connectors line{
    animation: motion-line-draw 720ms var(--motion-ease) both;
}
.concept .is-visible .concept-center{animation-delay:170ms}
.concept .is-visible .concept-system--logistics{animation-delay:320ms}
.concept .is-visible .concept-system--production{animation-delay:390ms}
.concept .is-visible .concept-system--quality{animation-delay:460ms}
.concept .is-visible .concept-system--management{animation-delay:530ms}
.concept .is-visible .concept-system--automation{animation-delay:600ms}
.concept .is-visible .concept-connectors line:nth-child(1){animation-delay:420ms}
.concept .is-visible .concept-connectors line:nth-child(2){animation-delay:490ms}
.concept .is-visible .concept-connectors line:nth-child(3){animation-delay:560ms}
.concept .is-visible .concept-connectors line:nth-child(4){animation-delay:630ms}
.concept .is-visible .concept-connectors line:nth-child(5){animation-delay:700ms}
.concept .is-visible .concept__caption{animation-delay:760ms}
.cta .cta__inner.is-visible>div:first-child>.eyebrow{animation-delay:20ms}
.cta .cta__inner.is-visible>div:first-child>h2{animation-delay:90ms}
.cta .cta__inner.is-visible>div:last-child>p{animation-delay:170ms}
.cta .cta__inner.is-visible>div:last-child>.button{animation-delay:240ms}
@media(hover:hover) and (pointer:fine){
    .operations-value{
        transition: transform 200ms ease,border-color 200ms ease,background-color 200ms ease;
    }
    .operations-value__meta svg{
        transition: stroke 200ms ease,background-color 200ms ease;
    }
    .operations-value:hover{
        transform: translateY(-3px);
        border-color: #bdc9eb;
        background: rgba(255,255,255,.9);
    }
    .operations-value:hover .operations-value__meta svg{
        stroke: #244fd1;
        background: rgba(51,94,234,.1);
    }
    .ecosystem-node:hover{
        color: #253b73;
        border-color: #aebfee;
        background: #fbfcff;
        box-shadow: 0 9px 25px rgba(16,24,40,.08);
    }
    .ecosystem-map:has(.ecosystem-node:hover) .ecosystem-core{
        border-color: #b5c4ef;
    }
    .ecosystem-map:has(.ecosystem-node--wms:hover) .ecosystem-map__lines>line:nth-child(1),
    .ecosystem-map:has(.ecosystem-node--mes:hover) .ecosystem-map__lines>line:nth-child(2),
    .ecosystem-map:has(.ecosystem-node--qms:hover) .ecosystem-map__lines>line:nth-child(3),
    .ecosystem-map:has(.ecosystem-node--cmms:hover) .ecosystem-map__lines>line:nth-child(4),
    .ecosystem-map:has(.ecosystem-node--ems:hover) .ecosystem-map__lines>line:nth-child(5),
    .ecosystem-map:has(.ecosystem-node--erp:hover) .ecosystem-map__lines>line:nth-child(6){
        stroke: #7890cb;
        stroke-width: 1.25;
    }
    .ecosystem-core:hover{
        border-color: #9fb2ee;
    }
    .ecosystem-map:has(.ecosystem-core:hover) .ecosystem-map__lines>line{
        stroke: #879bd0;
        stroke-width: 1.2;
    }
}
@media(max-width:720px){
    :root{
        --motion-duration: 520ms;
        --motion-duration-fast: 460ms;
        --motion-rise: 14px;
    }
    .ecosystem .is-visible .ecosystem-node--wms{animation-delay:580ms}
    .ecosystem .is-visible .ecosystem-node--mes{animation-delay:620ms}
    .ecosystem .is-visible .ecosystem-node--qms{animation-delay:660ms}
    .ecosystem .is-visible .ecosystem-node--cmms{animation-delay:700ms}
    .ecosystem .is-visible .ecosystem-node--ems{animation-delay:740ms}
    .ecosystem .is-visible .ecosystem-node--erp{animation-delay:780ms}
    .motion-ready .ecosystem .is-visible .ecosystem-map__pulses line:nth-child(5){
        opacity: 0;
        animation: none;
    }
}
@media(prefers-reduced-motion:reduce){
    html{
        scroll-behavior: auto;
    }
    .button,
    .button span,
    .solution-card,
    .operations-value,
    .solution-card a,
    .solution-card a span,
    .platform-node,
    .platform-core,
    .platform-core__symbol,
    .platform-connectors line,
    .concept-system,
    .concept-center,
    .concept-center__symbol,
    .concept-connectors line,
    .ecosystem-node,
    .ecosystem-core,
    .ecosystem-map__lines line,
    .ecosystem-map__lines circle,
    .motion-ready .reveal-section,
    .motion-ready .reveal-section.is-visible {
        animation: none!important;
        transition-duration: 1ms!important;
    }
    .motion-ready .hero__content>*,
    .motion-ready .hero .platform-visual,
    .motion-ready .solutions .section-heading>*,
    .motion-ready .solutions .solution-card,
    .motion-ready .operations__intro,
    .motion-ready .operations-value,
    .motion-ready .ecosystem__content>*,
    .motion-ready .why__intro,
    .motion-ready .feature-list article,
    .motion-ready .concept__heading,
    .motion-ready .concept-center,
    .motion-ready .concept-system,
    .motion-ready .concept__caption,
    .motion-ready .cta__inner>div>*{
        animation: none!important;
        transition-duration: 1ms!important;
    }
    .motion-ready .reveal-section,
    .motion-ready .reveal-section.is-visible,
    .motion-ready .hero__content>*,
    .motion-ready .solutions .section-heading>*,
    .motion-ready .solutions .solution-card,
    .motion-ready .operations__intro,
    .motion-ready .operations-value,
    .motion-ready .ecosystem__content>*,
    .motion-ready .why__intro,
    .motion-ready .feature-list article,
    .motion-ready .concept__heading,
    .motion-ready .concept__caption,
    .motion-ready .cta__inner>div>*,
    .button:hover,
    .solution-card:hover,
    .operations-value:hover,
    .platform-core__symbol,
    .concept-center__symbol {
        opacity: 1!important;
        transform: none;
    }
    .motion-ready .ecosystem-node,
    .motion-ready .ecosystem-core{
        opacity: 1!important;
        transform: translate(-50%,-50%);
    }
    .motion-ready .hero .platform-visual,
    .motion-ready .concept-center,
    .motion-ready .concept-system{
        opacity: 1!important;
    }
    .motion-ready .ecosystem-map__lines>line,
    .motion-ready .concept-connectors line{
        stroke-dasharray: none;
        stroke-dashoffset: 0;
    }
    .motion-ready .ecosystem-map__lines>circle{
        opacity: 1;
    }
    .ecosystem-map__pulses{
        display: none;
    }
    .platform-node:hover,.concept-system:hover{
        translate: 0 0;
    }
}

