.hero-platform-network{position:absolute;inset:0;overflow:hidden;pointer-events:none;contain:paint;z-index:1}
.hero-platform-network canvas,.platform-particles{position:absolute;inset:0;width:100%;height:100%}
.platform-particle{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);transform:translate(-50%,-50%);opacity:.45;will-change:transform;filter:blur(var(--blur,0px)) brightness(var(--brightness,1))}
.platform-particle--decorative{opacity:.58;will-change:transform}
.platform-particle--decorative img{filter:drop-shadow(0 2px 7px rgba(0,0,0,.32));}
.platform-particle img{display:block;width:100%;height:100%;object-fit:contain}
.platform-particle img[data-platform="GitHub"]{background:#e5e7e6;border-radius:50%;padding:1px}
.network-static .platform-particle{will-change:auto}
.network-cluster-label{position:absolute;font-size:10px;letter-spacing:.12em;color:#b9c2d3;display:flex;align-items:center;gap:8px;opacity:.6;transition:opacity .3s}
.network-cluster-label i{width:3px;height:3px;border-radius:50%;background:#9fb4e9}
.label-geo{left:12%;top:58%}.label-video{right:10%;top:58%;color:#cfb6a9}.label-video i{background:#eab692}
.hero-platform-network[data-active-group="geo"] .label-geo,.hero-platform-network[data-active-group="video"] .label-video{opacity:1}
.home-v38 .home-statement{min-height:clamp(680px,calc(100svh - 150px),770px);padding:18px 0 104px;display:flex;align-items:center}
.home-v38 .home-statement>.container{width:100%}
.home-v38 .home-statement .hero-v2-stage{height:190px;margin-bottom:25px}
.home-statement .hero-content h1.hero-weight-v43{max-width:1030px;margin:22px auto 28px;font-size:clamp(36px,4.4vw,64px);line-height:1.28;letter-spacing:-.035em}
.hero-weight-v43 span,.home-statement .hero-description span{display:inline-block}
.home-v38 .home-statement .hero-description{margin-bottom:0}
.hero-scroll-cue{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);display:grid;place-items:center;width:40px;height:40px;color:#c5c5bf;z-index:3;border-radius:50%;transition:color .2s,background .2s}
.hero-scroll-cue svg{width:21px;height:26px;fill:none;stroke:currentColor;stroke-width:1.2}
.hero-scroll-cue:hover{color:#e7efb0;background:#ffffff08}
.hero-scroll-cue:focus-visible{outline:2px solid #e7efb0;outline-offset:4px}
.home-method-stance{display:flex;justify-content:space-between;align-items:center;gap:24px;border-top:1px solid #ffffff32;border-bottom:1px solid #ffffff22;padding:30px 0;margin-bottom:64px}
.home-method-stance p{font-size:clamp(20px,2.3vw,30px);font-weight:600;line-height:1.6;color:#efefeb;margin:0}
.home-method-stance .text-link{flex-shrink:0;font-size:13px}
.proof-intro .proof-context-v43{font-size:13px;line-height:1.8;color:#b9b4c0;margin:14px auto 0;max-width:680px}
.proof-context-v43 a{text-decoration:underline;text-underline-offset:4px}
.home-v38 .proof-bottom{display:flex;justify-content:center;flex-wrap:wrap;gap:14px 34px}
html:has(.home-v38){scroll-padding-top:0}
.home-v38 .proof-wall{scroll-margin-top:84px}
.home-contact-quick{display:none}
@media(max-width:1080px){.purpose-header .home-contact-quick{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;min-width:44px;min-height:42px;font-size:13px;color:#e0e0da}.purpose-header .home-contact-quick:focus-visible{outline:2px solid #e7efb0;outline-offset:3px}.purpose-header .home-contact-quick:hover{color:#e7efb0}}
@media(min-width:701px) and (max-width:1050px){
 .home-v38 .home-statement{min-height:700px;padding-top:12px;padding-bottom:100px}
 .home-v38 .home-statement .hero-v2-stage{height:180px;margin-bottom:36px}
 .home-statement .hero-content h1.hero-weight-v43{font-size:clamp(36px,4.55vw,46px)}
 .network-cluster-label{display:none}
}
@media(max-width:700px){
 .platform-particle{left:var(--mx);top:var(--my)}.network-cluster-label{display:none}
 .home-v38 .home-statement{min-height:640px;min-height:min(700px,calc(100svh - 72px));padding:20px 0 92px}
 .home-v38 .home-statement .hero-v2-stage{height:145px;margin-bottom:38px}
 .home-statement .hero-content h1.hero-weight-v43{font-size:clamp(29px,7.8vw,39px);max-width:340px;margin:22px auto 26px}
 .home-v38 .home-statement .hero-description{font-size:14px;line-height:1.95}
 .hero-scroll-cue{bottom:24px}
 .home-method-stance{display:block;padding:26px 0;margin-bottom:38px}
 .home-method-stance .text-link{margin-top:16px}
 .proof-intro .proof-context-v43{font-size:12px;padding:0 12px}
}
@media(prefers-reduced-motion:reduce){.hero-scroll-cue,.network-cluster-label{transition:none}}
/* Paint the complete vector network immediately; the first canvas replaces it
   without any opacity ramp, rather than waiting for a drawn-in animation. */
.network-first-frame{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.86}
.network-first-frame-tablet,.network-first-frame-mobile{display:none}
.hero-platform-network:not(.network-ready) .platform-network-canvas{visibility:hidden}
.hero-platform-network.network-ready .network-first-frame{display:none}
.platform-particle{opacity:.76;transform:translate(-50%,-50%) scale(var(--initial-scale,1))}
.home-v38 .hero-v2-canvas{transition:opacity .15s ease}
.label-geo{left:13%;top:39%;font-size:9px;opacity:.72}
.label-video{right:10%;top:39%;font-size:9px;opacity:.72}
@media(min-width:701px) and (max-width:1080px){
 .network-first-frame-desktop{display:none}.network-first-frame-tablet{display:block}
 .platform-particle{left:var(--tx);top:var(--ty)}.network-cluster-label{display:none}
}
@media(max-width:700px){
 .network-first-frame-desktop,.network-first-frame-tablet{display:none}.network-first-frame-mobile{display:block}
 .platform-particle{left:var(--mx);top:var(--my);transform:translate(-50%,-50%) scale(calc(var(--initial-scale,1)*.83))}
}
