/* FIELD / Train control schematic and continuous institution ticker. */
:root{--flow-duration:8s;--reveal-duration:650ms;--flow-ease:cubic-bezier(.16,1,.3,1)}

/* A compact, complete institution list replaces the spacious introduction. */
.partners-section{padding-block:44px 64px}
.partner-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:23px}
.partner-heading h2{font-size:24px;letter-spacing:-.04em;line-height:1.4}
.partner-pause{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 0 8px 16px;background:none;color:var(--muted);font-size:11px;white-space:nowrap}
.partner-pause-icon{font-family:var(--mono);font-size:15px;line-height:1;width:15px;text-align:center}
.partner-marquee{max-width:100%;overflow-x:auto;overflow-y:hidden;border-block:1px solid var(--line);scroll-behavior:auto;scrollbar-width:none;mask-image:linear-gradient(90deg,transparent,#000 26px,#000 calc(100% - 26px),transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 26px,#000 calc(100% - 26px),transparent)}
.partner-marquee::-webkit-scrollbar{display:none}
.partner-marquee:focus-visible{outline:2px solid var(--brand);outline-offset:5px}
.partner-track{display:flex;width:max-content}
.partner-list{display:flex;flex-wrap:nowrap;flex:0 0 auto;width:max-content}
.partner-list li{flex:0 0 auto;display:flex;align-items:center;min-height:88px;position:relative;padding:15px 34px;color:var(--brand);font-size:22px;font-weight:580;letter-spacing:-.04em;white-space:nowrap}
.partner-list li::before{content:'';position:absolute;width:4px;height:4px;border-radius:50%;left:-2px;top:calc(50% - 2px);background:var(--brand);opacity:.28}

@media(hover:hover){.partner-list li:hover{color:var(--forest-700)}}

/* A quiet railway drawing uses the negative space around the content. */
.flow-host{position:relative;isolation:isolate}
.hero-copy{min-width:0}
.flow-host>.dispatch-ambient{--d-paper:var(--canvas);--d-rail:#8ba897;--d-route:#759982;--d-train:#365f4e;--d-stop:#ac5e54;position:absolute;z-index:-1;left:24%;right:0;top:0;bottom:0;pointer-events:none;user-select:none;overflow:hidden;opacity:0;mask-image:linear-gradient(90deg,transparent,#000 18%,#000 84%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 18%,#000 84%,transparent)}
.dispatch-ambient.is-ready{opacity:.65}
.dispatch-ambient svg{display:block;width:100%;height:100%;overflow:hidden}
.hero-heading>.dispatch-ambient{left:28%;bottom:2px}
.page-intro>.dispatch-ambient{left:30%;right:var(--gutter);top:65px;height:295px}
.community-intro>.dispatch-ambient{top:0;bottom:0;height:100%}
.system-section .section-heading>.dispatch-ambient{--d-paper:var(--brand);--d-rail:#87b39a;--d-route:#9ec393;--d-train:#d1e5ad;--d-stop:#dba18c;left:24%;right:3%;top:-26px;bottom:-20px;opacity:.4}
.dispatch-track-base{stroke:var(--d-rail);stroke-width:5;fill:none;opacity:.07}
.dispatch-track{stroke:var(--d-rail);stroke-width:1.8;fill:none;stroke-linecap:butt;opacity:.26}
.dispatch-track.is-reserved{stroke:var(--d-route);stroke-width:2;opacity:.36}
.dispatch-track.is-occupied{stroke:var(--d-stop);stroke-width:3;opacity:.52}
.dispatch-track.is-fault{stroke:#c19b48;stroke-width:3;stroke-dasharray:3 3;opacity:.65}
.dispatch-track.is-setting{stroke:#c19b48;stroke-dasharray:5 4;opacity:.25}
.dispatch-track.is-locked{stroke:var(--d-rail);opacity:.18}
.dispatch-block-label{fill:var(--d-rail);font-family:var(--mono);font-size:9px;letter-spacing:1px;opacity:.36}
.dispatch-platform{fill:var(--d-rail);opacity:.4}
.dispatch-station{font-family:var(--mono);font-size:12px;font-weight:400;letter-spacing:2px;fill:var(--d-rail);opacity:.65}
.dispatch-point-center{fill:var(--d-paper);stroke:var(--d-rail);stroke-width:1.5;opacity:.6}
.dispatch-point-tongue{fill:none;stroke:var(--d-route);stroke-width:2;opacity:.5}
.dispatch-point.is-setting .dispatch-point-tongue{stroke:var(--d-stop);stroke-dasharray:3 3}
.dispatch-point.is-locked .dispatch-point-center{stroke:var(--d-route);stroke-width:2}
.dispatch-point.is-fault .dispatch-point-tongue{stroke:#c19b48;stroke-dasharray:2 2}
.dispatch-signal-mast{fill:none;stroke:var(--d-rail);stroke-width:1.5;opacity:.5}
.dispatch-signal-housing{fill:var(--d-paper);stroke:var(--d-rail);stroke-width:1;opacity:.25}
.dispatch-lamp-red,.dispatch-lamp-green{fill:var(--d-rail);opacity:.08}
.dispatch-signal.is-stop .dispatch-lamp-red{fill:var(--d-stop);opacity:.9}
.dispatch-signal.is-caution .dispatch-lamp-green{fill:var(--d-train);opacity:.9}
.dispatch-signal.is-proceed .dispatch-lamp-green{fill:var(--d-train);opacity:.9}
.dispatch-signal-label{fill:var(--d-rail);font-size:10px;font-family:var(--mono);opacity:.4}
.dispatch-speed-pole{fill:none;stroke:var(--d-rail);stroke-width:1.5;opacity:.5}
.dispatch-speed-circle{fill:var(--d-paper);stroke:var(--d-rail);stroke-width:1.2;opacity:.85}
.dispatch-speed-text{fill:var(--d-train);font-family:var(--mono);font-size:11px;opacity:.85}
.dispatch-direction{fill:var(--d-rail);font-size:18px;opacity:.5}
.dispatch-car{fill:var(--d-train);stroke:var(--d-paper);stroke-width:1;opacity:.86}
.dispatch-car-window{fill:none;stroke:var(--d-paper);stroke-width:1;opacity:.8}
.dispatch-train-head{fill:var(--d-train);stroke:var(--d-paper);stroke-width:.8;opacity:.92}
.dispatch-train-label rect{fill:var(--d-paper);opacity:.5}
.dispatch-train-label text{fill:var(--d-train);font-family:var(--mono);font-weight:400;font-size:11px;opacity:.7}
@media(max-width:1000px){.hero-heading>.dispatch-ambient{left:18%;right:0;top:8%;bottom:0}.page-intro>.dispatch-ambient{left:25%;top:50px;height:auto;bottom:16px}.system-section .section-heading>.dispatch-ambient{left:20%;right:0}}
@media(max-width:600px){.hero-heading>.dispatch-ambient{left:18%;right:0;top:20%;bottom:10px}.dispatch-ambient svg{width:540px;max-width:none;position:absolute;right:-130px}.dispatch-ambient.is-ready{opacity:.43}.page-intro>.dispatch-ambient{left:12%;top:18%;bottom:0;height:auto}.system-section .section-heading>.dispatch-ambient{left:12%;top:10px;bottom:-10px;opacity:.27}}

/* Page progress uses actual scroll position. */
.scroll-progress{position:absolute;bottom:-1px;left:0;width:100%;height:2px;pointer-events:none;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,var(--brand),#6c9562 75%,var(--accent));z-index:2}
.header{transition:box-shadow 300ms,background 300ms}
.header.is-scrolled{background:rgb(245 245 239 / .95);box-shadow:0 6px 28px rgb(16 46 37 / .055);backdrop-filter:blur(12px)}
.motion-toggle{display:none!important}

/* Responses follow the same direction and easing throughout the site. */
.motion-on .solution-detail[data-active]{animation:none}
.motion-on .solution-detail[data-active] .detail-top,.motion-on .solution-detail[data-active] .product-image,.motion-on .solution-detail[data-active] .detail-bottom{animation:panel-flow 600ms var(--flow-ease) both}
.motion-on .solution-detail[data-active] .product-image{animation-delay:45ms}
.motion-on .solution-detail[data-active] .detail-bottom{animation-delay:80ms}
@keyframes panel-flow{from{opacity:0;transform:translate3d(18px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.motion-on .system-item.is-active p{animation:panel-flow 500ms var(--flow-ease) both}
.system-item{position:relative}
.system-item::after{content:'';height:1px;position:absolute;bottom:0;left:0;right:0;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform 600ms var(--flow-ease)}
.system-item.is-active::after{transform:scaleX(1)}
.hotspot{transition:background 240ms,color 240ms,box-shadow 350ms,transform 350ms}
.motion-on .hotspot[aria-pressed=true]{box-shadow:0 0 0 8px rgb(219 244 118 / .2),0 0 0 16px rgb(219 244 118 / .08)}
.training-step{position:relative}
.training-step::before{content:'';height:2px;position:absolute;left:0;right:0;top:-1px;transform:scaleX(0);transform-origin:left;background:var(--brand);transition:transform 950ms var(--flow-ease)}
.training-step.is-entered::before{transform:scaleX(1)}
.text-link{position:relative}
.text-link::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform 430ms var(--flow-ease)}
.text-link:hover::after,.text-link:focus-visible::after{transform:scaleX(1);transform-origin:left}
.button{position:relative;overflow:hidden}
.button::before{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgb(255 255 255 / .18) 50%,transparent 65%);transform:translateX(-130%);pointer-events:none}
.motion-on .button:hover::before,.motion-on .button:focus-visible::before{animation:button-current 750ms var(--flow-ease)}
@keyframes button-current{to{transform:translateX(130%)}}
.catalog-picture,.product-visual,.related-product{transition:background 300ms,border-color 300ms,box-shadow 300ms}
.related-product:hover{border-color:var(--brand);background:var(--surface-soft)}
.form-field input,.form-field textarea,.form-field select{transition:border-color 220ms,box-shadow 220ms}
.form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:var(--brand);box-shadow:inset 3px 0 0 var(--brand)}
.motion-on .mobile-menu:not([hidden]) nav{animation:panel-flow 420ms var(--flow-ease) both}

@media(max-width:800px){.header-inner{gap:20px}.desktop-nav{gap:18px}.header-contact{gap:10px;padding-left:16px}.partners-section{padding-block:34px 50px}.partner-heading h2{font-size:22px}}
@media(max-width:600px){.partners-section{padding-block:26px 38px}.partner-heading{margin-bottom:12px;gap:12px}.partner-heading h2{font-size:19px}.partner-list li{font-size:19px;min-height:74px;padding:14px 24px}.partner-pause{font-size:10px;gap:5px;padding-left:8px}.menu-button{margin-left:0}.header-inner{gap:12px}.header.is-scrolled{backdrop-filter:none}}
@media(max-width:600px){.header.is-scrolled{background:var(--canvas)}}

body.motion-off *,body.motion-off *::before,body.motion-off *::after{animation:none!important;transition:none!important}
html.motion-stopped{scroll-behavior:auto}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{.dispatch-ambient,.motion-toggle,.scroll-progress,.partner-copy,.partner-pause{display:none!important}.partners-section{padding-block:20px}.partner-marquee{overflow:visible;mask-image:none;-webkit-mask-image:none}.partner-track,.partner-list{width:100%;flex-wrap:wrap}.partner-list li{min-height:40px;font-size:14px;padding:10px 16px}}
