/* GFL — Software Maintenance · hero section
   Two columns on desktop (copy left, graphic right), stacked below 900px. */
*{box-sizing:border-box}
.smh-hero{background:#0D0D0D;color:#fff;padding:clamp(56px,7vw,112px) clamp(20px,5vw,64px);font-family:'Geist',system-ui,-apple-system,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased}
.smh-hero__inner{max-width:1360px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,88px);align-items:center}
.smh-hero__eyebrow{display:flex;align-items:center;gap:10px;font-family:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#8A8F98;margin:0 0 22px}
.smh-hero__eyebrow::before{content:"";width:22px;height:1px;background:#2E5CFF}
.smh-hero__title{margin:0 0 22px;font-size:clamp(34px,4.4vw,60px);line-height:1.06;letter-spacing:-.02em;font-weight:500;text-wrap:balance}
.smh-hero__title em{font-style:normal;color:#2E5CFF}
.smh-hero__text{margin:0;max-width:56ch;font-size:clamp(15px,1.12vw,18px);line-height:1.62;color:#D2D6DC;text-wrap:pretty}
.smh-hero__media{position:relative;width:100%;max-width:680px;justify-self:end}
.smh-hero a{color:#5C82FF;text-decoration:none}
.smh-hero a:hover{color:#fff}
@media (max-width:900px){
  .smh-hero__inner{grid-template-columns:minmax(0,1fr);gap:clamp(28px,6vw,44px)}
  .smh-hero__media{justify-self:stretch;max-width:none}
}
.mg{position:relative;width:100%;aspect-ratio:1/1;max-width:560px;margin:0 auto;display:flex;align-items:center;justify-content:center}
.mg-blob{position:absolute;border-radius:50%;pointer-events:none;will-change:transform,opacity}
.mg-blob--a{width:70%;height:70%;top:2%;left:-4%;background:radial-gradient(circle,rgba(46,92,255,.16) 0%,rgba(46,92,255,.1) 35%,rgba(46,92,255,.05) 55%,rgba(46,92,255,.015) 72%,rgba(46,92,255,0) 100%);filter:blur(46px);animation:mg-drift-a 26s ease-in-out infinite alternate}
.mg-blob--b{width:56%;height:56%;bottom:-2%;right:0%;background:radial-gradient(circle,rgba(46,92,255,.1) 0%,rgba(46,92,255,.06) 38%,rgba(46,92,255,.025) 60%,rgba(46,92,255,0) 100%);filter:blur(46px);animation:mg-drift-b 32s ease-in-out infinite alternate}
.mg-svg{position:relative;width:100%;height:100%;display:block;overflow:visible}
.mg-ring-path{fill:none;stroke:#fff;stroke-opacity:.1}
.mg-ring-path--outer{stroke-dasharray:1 9;stroke-opacity:.14}
.mg-sweep-g{transform-box:view-box;transform-origin:300px 300px;animation:mg-spin 13s linear infinite}
.mg-scan-g{transform-box:view-box;transform-origin:300px 300px;animation:mg-spin 70s linear infinite}
.mg-ring-g{transform-box:view-box;transform-origin:300px 300px}
.mg-node{fill:#fff;transition:fill .35s ease,r .35s ease}
.mg-node.is-active{fill:#2E5CFF}
.mg-ripple{fill:none;stroke:#2E5CFF;opacity:0;transition:r .9s cubic-bezier(.16,.8,.24,1),opacity .9s ease}
.mg-particle{fill:#2E5CFF;filter:url(#mgSoftBlur)}
.mg-core-dot{fill:#fff;transform-box:fill-box;transform-origin:center;animation:mg-breathe 3.6s ease-in-out infinite}
.mg-core-ring{fill:none;stroke:#2E5CFF;stroke-width:1.4;stroke-opacity:.85}
.mg-core-glow{fill:#2E5CFF;transform-box:fill-box;transform-origin:center;animation:mg-glow-breathe 3.6s ease-in-out infinite}
.mg-burst{fill:none;stroke:#2E5CFF;opacity:.7;transition:r 1.05s cubic-bezier(.16,.8,.24,1),opacity 1.05s ease}
@keyframes mg-spin{to{transform:rotate(360deg)}}
@keyframes mg-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}
@keyframes mg-glow-breathe{0%,100%{opacity:.3;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}
@keyframes mg-drift-a{0%{transform:translate(0,0) scale(1)}100%{transform:translate(6%,8%) scale(1.12)}}
@keyframes mg-drift-b{0%{transform:translate(0,0) scale(1)}100%{transform:translate(-7%,-6%) scale(1.08)}}
@media (max-width:520px){.mg{max-width:340px}}
@media (prefers-reduced-motion:reduce){.mg *{animation:none!important;transition:none!important}}
