/* Keep every rule scoped to the ecosystem; inherit the site's existing font. */
.gs-ecosystem { width:calc(100% - 32px); max-width:1200px; position:relative; scroll-margin-top:108px; }
.gs-ecosystem--inset { width:100%; }
.gs-ecosystem .gs-eco-media, .gs-ecosystem .ambient-svg, .gs-ecosystem .gs-eco-caption, .gs-ecosystem .gs-eco-motion { display:none; }
.gs-ecosystem.is-ready { background:#0e131a; border-radius:16px; overflow:hidden; isolation:isolate; }
.gs-ecosystem.is-ready .gs-eco-fallback { display:none; }
.gs-ecosystem.is-ready .gs-eco-media, .gs-ecosystem.is-ready .gs-eco-caption { display:block; position:relative; z-index:1; }
.gs-ecosystem.is-ready .ambient-svg { display:block; position:absolute; inset:0; width:100%; height:100%; pointer-events:none; z-index:0; }
.gs-ecosystem .diagram { display:block; width:100%; height:auto; touch-action:pan-y; font-family:inherit; }
.gs-ecosystem .diagram text { pointer-events:none; user-select:none; }
.gs-ecosystem .feedback { filter:none; transform-origin:0 0; transition:transform .32s cubic-bezier(.2,.7,.2,1),filter .32s ease; }
.gs-ecosystem .node:hover > .feedback, .gs-ecosystem .node:focus-visible > .feedback, .gs-ecosystem .node[data-selected="true"] > .feedback { transform:scale(1.035); filter:drop-shadow(0 0 5px rgba(89,175,255,.28)) drop-shadow(0 0 15px rgba(36,139,255,.18)); }
.gs-ecosystem .node { outline:none; cursor:default; }
.gs-ecosystem .planet { cursor:pointer; }
.gs-ecosystem .node:focus-visible .focus-ring { opacity:1; }
.gs-ecosystem .focus-ring { opacity:0; fill:none; stroke:#a4d4ff; stroke-width:2; pointer-events:none; }
.gs-ecosystem .ripple, .gs-ecosystem .flow-dash, .gs-ecosystem .ambient-dot { pointer-events:none; }
.gs-ecosystem .connector { stroke:#d7e1eb; stroke-width:1.05; stroke-dasharray:1.5 2.6; stroke-linecap:round; fill:none; opacity:.85; }
.gs-ecosystem .flow-dash { stroke:#78caff; stroke-width:1.6; stroke-linecap:round; fill:none; filter:drop-shadow(0 0 1.5px rgba(30,145,255,.95)) drop-shadow(0 0 4px rgba(30,145,255,.55)); }
.gs-ecosystem .gs-eco-caption { padding:9px 40px 32px; text-align:left; }
.gs-ecosystem .gs-eco-caption h2 { display:inline-block; color:#fff; font-size:24px; line-height:1.3; letter-spacing:-.45px; font-weight:600; margin:0 0 12px; transform-origin:left center; transition:transform .32s,text-shadow .32s; }
.gs-ecosystem .gs-eco-caption h2:hover { transform:scale(1.02); text-shadow:0 0 12px rgba(89,175,255,.25); }
.gs-ecosystem .gs-eco-caption p { color:#a8adb5; font-size:16px; line-height:1.65; margin:0; transform-origin:left center; transition:color .3s,transform .32s,text-shadow .32s; }
.gs-ecosystem .gs-eco-caption p:hover { color:#bec6d0; transform:scale(1.005); text-shadow:0 0 10px rgba(89,175,255,.18); }
.gs-ecosystem.is-ready .gs-eco-motion { display:flex; align-items:center; justify-content:center; position:absolute; top:12px; right:12px; z-index:2; width:30px; height:30px; padding:0; border:1px solid rgba(177,207,240,.25); border-radius:50%; color:#b8cbe0; background:rgba(14,19,26,.5); cursor:pointer; transition:color .25s,border-color .25s; }
.gs-ecosystem .gs-eco-motion:hover { color:white; border-color:rgba(177,207,240,.5); }
.gs-ecosystem .gs-eco-motion:focus-visible { outline:2px solid #87bfff; outline-offset:3px; }
.gs-ecosystem .gs-eco-motion svg { width:12px; height:12px; fill:currentColor; }
@media (min-width:1280px) { .gs-ecosystem { width:100%; } }
@media (max-width:700px) {
  .gs-ecosystem .gs-eco-caption { padding:0 24px 28px; }
  .gs-ecosystem .gs-eco-caption h2 { font-size:21px; letter-spacing:-.3px; }
  .gs-ecosystem .gs-eco-caption p { font-size:14px; line-height:1.75; }
}
@media (prefers-reduced-motion:reduce) { .gs-ecosystem .feedback, .gs-ecosystem .gs-eco-caption h2, .gs-ecosystem .gs-eco-caption p { transition:none; } }
