.qv-ecosystem{--qv-eco-bg:#08110e;--qv-eco-accent:#28b783;--qv-eco-heading:#f3faf7;--qv-eco-muted:#a7bbb2;--qv-eco-card-bg:rgba(255,255,255,.055);--qv-eco-card-text:#f3faf7;--qv-eco-panel-bg:rgba(255,255,255,.07);--qv-eco-panel-text:#f3faf7;position:relative;isolation:isolate;overflow:hidden;padding:clamp(74px,9vw,130px) 0;background:var(--qv-eco-bg);color:var(--qv-eco-heading);font-family:Cairo,"Segoe UI",sans-serif}.qv-ecosystem--light{--qv-eco-bg:#f5f8f6;--qv-eco-heading:#14221e;--qv-eco-muted:#60716a;--qv-eco-card-bg:rgba(255,255,255,.9);--qv-eco-card-text:#14221e;--qv-eco-panel-bg:rgba(255,255,255,.94);--qv-eco-panel-text:#14221e}.qv-ecosystem:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 78% 20%,color-mix(in srgb,var(--qv-eco-accent) 15%,transparent),transparent 36%),linear-gradient(90deg,color-mix(in srgb,var(--qv-eco-accent) 4%,transparent) 1px,transparent 1px),linear-gradient(color-mix(in srgb,var(--qv-eco-accent) 4%,transparent) 1px,transparent 1px);background-size:auto,48px 48px,48px 48px;mask-image:linear-gradient(180deg,black,transparent 94%)}.qv-ecosystem-shell{position:relative;z-index:1;width:calc(100% - 32px);max-width:var(--qv-eco-content-width,1380px);margin:0 auto}.qv-ecosystem-intro{max-width:850px;margin:0 0 46px;text-align:right}.qv-ecosystem-eyebrow{display:inline-flex;align-items:center;gap:9px;color:var(--qv-eco-accent);font:700 11px/1.2 "JetBrains Mono",monospace;letter-spacing:.12em}.qv-ecosystem-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--qv-eco-accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--qv-eco-accent) 12%,transparent),0 0 18px color-mix(in srgb,var(--qv-eco-accent) 64%,transparent);animation:qvEcoPulse 2.2s ease-in-out infinite}.qv-ecosystem-title{max-width:820px;margin:18px 0 15px;color:var(--qv-eco-heading);font-size:clamp(38px,5.7vw,82px);font-weight:900;line-height:1.08;letter-spacing:-.04em}.qv-ecosystem-intro p{max-width:650px;margin:0;color:var(--qv-eco-muted);font-size:16px;line-height:1.95}.qv-ecosystem-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,.7fr);gap:38px;align-items:center;direction:ltr}.qv-ecosystem-map{position:relative;min-height:620px;overflow:visible}.qv-ecosystem-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;opacity:.58;pointer-events:none}.qv-ecosystem-lines path{fill:none;stroke:var(--qv-eco-line,var(--qv-eco-accent));stroke-width:var(--qv-eco-line-width,1.8px);stroke-dasharray:7 10;filter:drop-shadow(0 0 var(--qv-eco-line-glow,8px) color-mix(in srgb,var(--qv-eco-line,var(--qv-eco-accent)) 76%,transparent));animation:qvEcoDash 8s linear infinite;transition:stroke-width .45s var(--qv-ease,cubic-bezier(.16,1,.3,1)),opacity .45s var(--qv-ease,cubic-bezier(.16,1,.3,1))}.qv-ecosystem-lines path.is-active{stroke-width:calc(var(--qv-eco-line-width,1.8px) + 1px);opacity:1;stroke-dasharray:3 7;filter:drop-shadow(0 0 calc(var(--qv-eco-line-glow,8px) + 4px) color-mix(in srgb,var(--qv-eco-line,var(--qv-eco-accent)) 92%,transparent))}.qv-ecosystem-hub{position:absolute;z-index:3;left:50%;top:50%;display:grid;place-items:center;width:190px;height:190px;aspect-ratio:1;transform:translate(-50%,-50%);border:1px solid color-mix(in srgb,var(--qv-eco-accent) 65%,transparent);border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--qv-eco-accent) 25%,transparent),color-mix(in srgb,var(--qv-eco-bg) 88%,transparent) 64%);box-shadow:0 0 0 16px color-mix(in srgb,var(--qv-eco-accent) 6%,transparent),0 0 48px color-mix(in srgb,var(--qv-eco-accent) 26%,transparent),inset 0 0 32px color-mix(in srgb,var(--qv-eco-accent) 18%,transparent);text-align:center}.qv-ecosystem-hub:before,.qv-ecosystem-hub:after{content:"";position:absolute;inset:-28px;border:1px solid color-mix(in srgb,var(--qv-eco-accent) 24%,transparent);border-radius:50%;pointer-events:none;animation:qvEcoRing 7s linear infinite}.qv-ecosystem-hub:after{inset:-54px;border-color:color-mix(in srgb,var(--qv-eco-accent) 12%,transparent);animation-duration:11s;animation-direction:reverse}.qv-ecosystem-hub img{position:relative;z-index:2;width:62px;height:62px;object-fit:contain;filter:drop-shadow(0 0 15px color-mix(in srgb,var(--qv-eco-accent) 72%,transparent));animation:qvEcoLogo 3s ease-in-out infinite}.qv-ecosystem-hub small{position:relative;z-index:2;margin-top:8px;color:var(--qv-eco-accent);font:700 9px/1.45 "JetBrains Mono",monospace;letter-spacing:.12em}.qv-ecosystem-node{position:absolute;z-index:4;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto auto;column-gap:12px;align-items:center;width:190px;min-height:112px;padding:13px 14px;border:1px solid color-mix(in srgb,var(--qv-eco-accent) 24%,transparent);border-radius:18px;background:var(--qv-eco-card-bg);color:var(--qv-eco-card-text);box-shadow:0 18px 40px rgba(0,0,0,.18);font:inherit;text-align:right;cursor:pointer;transition:transform .42s var(--qv-ease,cubic-bezier(.16,1,.3,1)),border-color .42s var(--qv-ease,cubic-bezier(.16,1,.3,1)),box-shadow .42s var(--qv-ease,cubic-bezier(.16,1,.3,1))}.qv-ecosystem-node:hover,.qv-ecosystem-node.is-active{transform:translateY(-5px);border-color:var(--qv-eco-accent);box-shadow:0 20px 42px rgba(0,0,0,.22),0 0 24px color-mix(in srgb,var(--qv-eco-accent) 16%,transparent)}.qv-ecosystem-node--top-left{left:5%;top:5%}.qv-ecosystem-node--mid-left{left:0;top:41%}.qv-ecosystem-node--bottom-left{left:19%;bottom:3%}.qv-ecosystem-node--top-right{right:5%;top:5%}.qv-ecosystem-node--mid-right{right:0;top:67%}.qv-ecosystem-node-art{grid-row:1/4;display:grid;place-items:center;width:54px;height:54px;aspect-ratio:1;border:1px solid color-mix(in srgb,var(--qv-eco-accent) 32%,transparent);border-radius:50%;background:color-mix(in srgb,var(--qv-eco-accent) 10%,transparent);color:var(--qv-eco-accent);overflow:hidden}.qv-ecosystem-node-art img{display:block;width:100%;height:100%;object-fit:contain;padding:7px}.qv-ecosystem-node-art svg{width:27px;height:27px}.qv-ecosystem-node-code{color:var(--qv-eco-accent);font:700 9px/1.2 "JetBrains Mono",monospace;letter-spacing:.06em}.qv-ecosystem-node strong{display:block;margin-top:4px;font-size:15px;line-height:1.35}.qv-ecosystem-node small{display:block;margin-top:3px;color:var(--qv-eco-muted);font-size:10px;line-height:1.4}.qv-ecosystem-node i{position:absolute;top:12px;right:12px;width:6px;height:6px;border-radius:50%;background:var(--qv-eco-muted);opacity:.55}.qv-ecosystem-node.is-active i{background:var(--qv-eco-accent);opacity:1;box-shadow:0 0 12px var(--qv-eco-accent)}.qv-ecosystem-panel{direction:rtl;min-height:330px;padding:31px;border:1px solid color-mix(in srgb,var(--qv-eco-accent) 30%,transparent);border-radius:24px;background:var(--qv-eco-panel-bg);color:var(--qv-eco-panel-text);box-shadow:0 28px 65px rgba(0,0,0,.18);backdrop-filter:blur(16px);transition:transform .42s var(--qv-ease,cubic-bezier(.16,1,.3,1)),border-color .42s var(--qv-ease,cubic-bezier(.16,1,.3,1))}.qv-ecosystem-panel-index{display:flex;align-items:center;justify-content:space-between;padding-bottom:20px;border-bottom:1px solid color-mix(in srgb,var(--qv-eco-accent) 22%,transparent);color:var(--qv-eco-muted);font:700 10px "JetBrains Mono",monospace}.qv-ecosystem-panel-index span{color:var(--qv-eco-accent);font-size:22px}.qv-ecosystem-panel-code{display:block;margin-top:27px;color:var(--qv-eco-accent);font:700 11px "JetBrains Mono",monospace;letter-spacing:.08em}.qv-ecosystem-panel h3{margin:11px 0 8px;color:var(--qv-eco-panel-text);font-size:clamp(24px,3vw,38px);line-height:1.25}.qv-ecosystem-panel>strong{display:block;color:var(--qv-eco-accent);font-size:13px}.qv-ecosystem-panel p{min-height:78px;margin:18px 0;color:var(--qv-eco-muted);font-size:14px;line-height:1.9}.qv-ecosystem-panel-button{display:inline-flex;align-items:center;gap:12px;padding:11px 16px;border:1px solid var(--qv-eco-accent);border-radius:10px;color:var(--qv-eco-accent);font-size:13px;font-weight:800;text-decoration:none;transition:all .38s var(--qv-ease-soft,cubic-bezier(.25,.8,.25,1))}.qv-ecosystem-panel-button:hover{background:var(--qv-eco-accent);color:var(--qv-eco-bg);transform:translateY(-2px)}.qv-ecosystem-panel-button span{font:800 17px/1 "JetBrains Mono",monospace}@keyframes qvEcoPulse{50%{opacity:.4;transform:scale(.75)}}@keyframes qvEcoRing{to{transform:rotate(360deg)}}@keyframes qvEcoDash{to{stroke-dashoffset:-68}}@keyframes qvEcoLogo{50%{transform:scale(1.07);filter:drop-shadow(0 0 25px color-mix(in srgb,var(--qv-eco-accent) 90%,transparent))}}@media(max-width:1000px){.qv-ecosystem-layout{grid-template-columns:1fr}.qv-ecosystem-panel{max-width:680px;margin:0 auto;width:100%}.qv-ecosystem-map{min-height:600px}}@media(max-width:680px){.qv-ecosystem{padding:62px 0}.qv-ecosystem-intro{margin-bottom:32px}.qv-ecosystem-title{font-size:clamp(34px,10vw,52px)}.qv-ecosystem-intro p{font-size:14px}.qv-ecosystem-map{display:grid;grid-template-columns:1fr 1fr;gap:12px;min-height:0}.qv-ecosystem-lines{display:none}.qv-ecosystem-hub{position:relative;left:auto;top:auto;grid-column:1/-1;grid-row:1;width:150px;height:150px;transform:none;margin:35px auto 54px}.qv-ecosystem-hub:before{inset:-18px}.qv-ecosystem-hub:after{inset:-34px}.qv-ecosystem-node,.qv-ecosystem-node--top-left,.qv-ecosystem-node--mid-left,.qv-ecosystem-node--bottom-left,.qv-ecosystem-node--top-right,.qv-ecosystem-node--mid-right{position:relative;inset:auto;left:auto;right:auto;top:auto;bottom:auto;width:100%;min-height:112px;transform:none}.qv-ecosystem-node:hover,.qv-ecosystem-node.is-active{transform:translateY(-3px)}.qv-ecosystem-node-art{width:44px;height:44px}.qv-ecosystem-node strong{font-size:13px}.qv-ecosystem-node small{font-size:9px}.qv-ecosystem-panel{min-height:0;padding:24px}.qv-ecosystem-panel p{min-height:0;font-size:13px}}@media(max-width:430px){.qv-ecosystem-map{grid-template-columns:1fr}.qv-ecosystem-hub{grid-column:1}.qv-ecosystem-node{grid-column:1}.qv-ecosystem-panel{padding:20px}.qv-ecosystem-panel h3{font-size:25px}}@media(prefers-reduced-motion:reduce){.qv-ecosystem-eyebrow i,.qv-ecosystem-hub:before,.qv-ecosystem-hub:after,.qv-ecosystem-hub img{animation:none!important}.qv-ecosystem-lines path,.qv-ecosystem-node,.qv-ecosystem-panel,.qv-ecosystem-panel-button{transition:none!important;animation:none!important}}

/* Elementor-controlled section width: this escape is scoped to Ecosystem only. */
.qv-ecosystem--full{width:100vw;max-width:100vw;margin-inline:calc(50% - 50vw)}
.qv-ecosystem--full .qv-ecosystem-shell{width:calc(100% - clamp(32px,8vw,140px));max-width:var(--qv-eco-content-width,1500px)}
@media(max-width:680px){.qv-ecosystem--full .qv-ecosystem-shell{width:calc(100% - 32px)}}

/* High-compatibility glow fallback for SVG connection paths. */
.qv-ecosystem .qv-ecosystem-lines path{stroke:var(--qv-eco-line,#28B783);stroke-width:var(--qv-eco-line-width,1.8px);opacity:1;filter:drop-shadow(0 0 var(--qv-eco-line-glow,8px) rgba(40,183,131,.9));}
.qv-ecosystem .qv-ecosystem-lines path.is-active{stroke-width:calc(var(--qv-eco-line-width,1.8px) + 1px);filter:drop-shadow(0 0 calc(var(--qv-eco-line-glow,8px) + 5px) rgba(40,183,131,1));}

/* Card spacing and exact center alignment refinements. */
.qv-ecosystem .qv-ecosystem-hub{grid-template-rows:auto auto;align-content:center;justify-items:center}
.qv-ecosystem .qv-ecosystem-hub-rings{position:absolute;inset:0;display:block;pointer-events:none}
.qv-ecosystem .qv-ecosystem-hub img{grid-row:1;display:block;margin:0 auto;width:64px;height:64px;object-fit:contain}
.qv-ecosystem .qv-ecosystem-hub small{grid-row:2;display:block;width:100%;margin:10px 0 0;text-align:center}
.qv-ecosystem .qv-ecosystem-node{width:clamp(220px,22vw,260px);min-height:126px;padding:17px 19px;grid-template-columns:62px minmax(0,1fr);column-gap:15px;row-gap:4px}
.qv-ecosystem .qv-ecosystem-node-art{width:58px;height:58px;min-width:58px;min-height:58px;align-self:center;justify-self:center}
.qv-ecosystem .qv-ecosystem-node-art img{width:100%;height:100%;padding:8px;object-fit:contain}
.qv-ecosystem .qv-ecosystem-node-art svg{display:block;width:29px;height:29px;margin:auto}
.qv-ecosystem .qv-ecosystem-node-code,.qv-ecosystem .qv-ecosystem-node strong,.qv-ecosystem .qv-ecosystem-node small{min-width:0;overflow-wrap:anywhere}
.qv-ecosystem .qv-ecosystem-node strong{margin-top:0;font-size:16px;line-height:1.4}
.qv-ecosystem .qv-ecosystem-node small{margin-top:0;font-size:11px;line-height:1.55}
@media(max-width:680px){.qv-ecosystem .qv-ecosystem-node{width:100%;min-height:118px;padding:15px 16px;grid-template-columns:54px minmax(0,1fr);column-gap:13px}.qv-ecosystem .qv-ecosystem-node-art{width:50px;height:50px;min-width:50px;min-height:50px}.qv-ecosystem .qv-ecosystem-node strong{font-size:14px}.qv-ecosystem .qv-ecosystem-node small{font-size:10px}}

/* One clean connection stroke: no offset ghost line and smooth joins. */
.qv-ecosystem .qv-ecosystem-lines{overflow:visible}
.qv-ecosystem .qv-ecosystem-lines path{fill:none!important;stroke-linecap:round!important;stroke-linejoin:round!important;vector-effect:non-scaling-stroke!important;paint-order:stroke!important}
.qv-ecosystem .qv-ecosystem-lines path:not(.is-active){stroke-dasharray:7 10!important}
.qv-ecosystem .qv-ecosystem-lines path.is-active{stroke-dasharray:3 7!important}

/* Keep every device card at the same compact height, including the three lower cards. */
.qv-ecosystem .qv-ecosystem-node{height:126px;min-height:126px;max-height:126px;box-sizing:border-box;align-content:center}
@media(max-width:680px){.qv-ecosystem .qv-ecosystem-node{height:118px;min-height:118px;max-height:118px}}
