/* MetricPie motion system — confident, deliberate, and quiet enough for the content to lead. */
.site-intro{display:none}.site-intro.is-active{position:fixed;z-index:1000;inset:0;display:grid;grid-template-rows:auto 1fr auto;padding:27px 32px;background:var(--ink);color:var(--paper);animation:intro-in .38s cubic-bezier(.2,.8,.2,1) both}.site-intro.is-leaving{pointer-events:none;animation:intro-out .8s cubic-bezier(.76,0,.24,1) forwards}.intro-meta,.intro-foot{display:flex;justify-content:space-between;align-items:center;font:10px var(--mono);letter-spacing:.08em}.intro-meta span:last-child{color:var(--acid)}.intro-mark{display:grid;place-items:center}.intro-mark span{display:grid;width:min(27vw,300px);height:min(27vw,300px);place-items:center;border-radius:50% 50% 11% 50%;background:var(--acid);color:var(--ink);font-size:min(17vw,180px);font-weight:800;letter-spacing:-.13em;animation:mark-arrive .9s .1s cubic-bezier(.16,1,.3,1) both}.intro-foot{gap:15px}.intro-foot i{display:block;height:1px;flex:1;background:rgba(244,241,233,.25);transform-origin:left;animation:load-line 1.3s .2s cubic-bezier(.16,1,.3,1) both}body.intro-locked{overflow:hidden}@keyframes intro-in{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}@keyframes intro-out{to{clip-path:inset(0 0 0 100%)}}@keyframes mark-arrive{from{opacity:0;transform:scale(.56) rotate(-18deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes load-line{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes orbit-forward{to{transform:rotate(360deg)}}@keyframes orbit-backward{to{transform:rotate(-360deg)}}@keyframes node-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes status-pulse{0%,100%{opacity:1}50%{opacity:.35}}@keyframes signal-glow{0%,100%{box-shadow:0 0 0 0 rgba(216,251,85,0)}50%{box-shadow:0 0 0 10px rgba(216,251,85,.14)}}@keyframes route-pulse{0%,100%{opacity:.3}50%{opacity:1}}@keyframes element-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes circle-turn{to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes radar-turn{to{transform:translate(-50%,-50%) rotate(360deg)}}
@media(prefers-reduced-motion:no-preference){.machine-visual .orbit-a{animation:orbit-forward 32s linear infinite}.machine-visual .orbit-b{animation:orbit-backward 24s linear infinite}.machine-visual .route{animation:route-pulse 3.7s ease-in-out infinite}.machine-visual .route-two{animation-delay:.9s}.machine-visual .route-three{animation-delay:1.8s}.machine-visual .node-one{animation:node-breathe 5.5s ease-in-out infinite}.machine-visual .node-two{animation:node-breathe 5.5s .8s ease-in-out infinite}.machine-visual .node-three{animation:node-breathe 5.5s 1.6s ease-in-out infinite}.machine-tag,.hero-note span{animation:status-pulse 2.4s ease-in-out infinite}.demand-circle{animation:circle-turn 26s linear infinite}.gtm-grid span{animation:element-float 4.2s ease-in-out infinite}.gtm-grid span:nth-child(2),.gtm-grid span:nth-child(5){animation-delay:.5s}.gtm-grid span:nth-child(3),.gtm-grid span:nth-child(6){animation-delay:1s}.call-radar{animation:radar-turn 30s linear infinite}.call-radar i:nth-child(3){animation:signal-glow 2.7s ease-in-out infinite}.lead-ticket.one{animation:element-float 5s ease-in-out infinite}.lead-ticket.two{animation:element-float 5s .8s ease-in-out infinite}.call-card{animation:element-float 5.3s ease-in-out infinite}.solution-card,.button,.navcta{will-change:transform}.auto-reveal{transition-delay:var(--reveal-delay,0ms)}}
@media(hover:hover) and (pointer:fine){.magnetic{will-change:transform}.solution-card.is-tilting{box-shadow:16px 20px 0 rgba(22,34,31,.10)}}
@media(max-width:580px){.site-intro.is-active{padding:20px}.intro-mark span{width:180px;height:180px;font-size:105px}.intro-meta,.intro-foot{font-size:8px}}
@media(prefers-reduced-motion:reduce){.site-intro{display:none!important}.machine-visual .orbit-a,.machine-visual .orbit-b,.machine-visual .route,.machine-visual .node,.machine-tag,.hero-note span,.demand-circle,.gtm-grid span,.call-radar,.call-radar i:nth-child(3),.lead-ticket,.call-card{animation:none!important}}
