/* Partner resource graphics (scripts/hub_graphics.py). Site tokens only; dark theme as the hub. */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.gx-ico{width:22px;height:22px;flex:none}

/* Header image */
.gx-hero{margin:1.75rem 0 2.25rem;border-radius:var(--radius-card);overflow:hidden;border:1px solid var(--line);aspect-ratio:16/9;background:var(--bg-raised);position:relative}
.gx-hero img{display:block;width:100%;height:100%;object-fit:cover}
.gx-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,#04060b8c);pointer-events:none}

/* Section headings */
.hub .article h2.gx-h2{display:flex;align-items:center;gap:.8rem}
.gx-badge{flex:none;width:2.2rem;height:2.2rem;border-radius:50%;display:grid;place-items:center;font-size:1rem;font-weight:800;color:#fff;background:var(--grad)}
.gx-hicon{flex:none;width:2.4rem;height:2.4rem;border-radius:12px;display:grid;place-items:center;color:var(--cyan);background:var(--bg-raised);border:1px solid var(--line-strong)}
.gx-hicon .gx-ico{width:20px;height:20px}

/* Step path */
.gx-map,.gx-overview{margin:0 0 2.5rem;padding:1.25rem 1.25rem 1.4rem;border:1px solid var(--line);border-radius:var(--radius-card);background:linear-gradient(180deg,#ffffff0a,#ffffff03)}
.gx-map figcaption,.gx-overview figcaption,.gx-cards::before{display:block;font-size:var(--fs-small);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:0 0 1rem}
.hub .article ol.gx-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--n,5),minmax(0,1fr));gap:.5rem;position:relative}
.gx-steps::before{content:"";position:absolute;left:calc(50% / var(--n,5));right:calc(50% / var(--n,5));top:23px;height:2px;background:var(--grad-line);opacity:.55}
.hub .article .gx-steps li{margin:0;position:relative}
.hub .article .gx-steps a{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.45rem;text-decoration:none;color:var(--ink-2);font-size:.82rem;line-height:1.3}
.gx-node{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--bg-raised);border:1px solid var(--line-strong);color:var(--cyan);position:relative;z-index:1;transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}
.gx-node .gx-ico{width:20px;height:20px}
.gx-steps a:hover .gx-node,.gx-steps a:focus-visible .gx-node{border-color:var(--cyan);transform:translateY(-2px)}
.gx-n{font-size:.7rem;font-weight:700;color:var(--ink-3)}
.gx-label{color:var(--ink);font-weight:600}

/* Overview of numbered sections */
.hub .article .gx-overview ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}
.hub .article .gx-overview li{margin:0}
.hub .article .gx-overview a{display:flex;flex-direction:column;gap:.7rem;height:100%;padding:1rem;border-radius:16px;border:1px solid var(--line-strong);background:var(--bg-raised);color:var(--ink);font-weight:600;font-size:.95rem;line-height:1.35;text-decoration:none}
.hub .article .gx-overview a:hover{border-color:var(--cyan)}

/* Numbered lists as steps */
.hub .article ol.gx-ol{list-style:none;padding:0;counter-reset:gx;margin:1.25rem 0 1.5rem;position:relative}
.hub .article ol.gx-ol::before{content:"";position:absolute;left:17px;top:18px;bottom:18px;width:2px;background:linear-gradient(180deg,#4623be,#9717cc 50%,#00efe3);opacity:.5}
.hub .article ol.gx-ol>li{counter-increment:gx;position:relative;padding:.45rem 0 .45rem 3.2rem;margin:.35rem 0}
.hub .article ol.gx-ol>li::before{content:counter(gx);position:absolute;left:0;top:.35rem;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:.9rem;color:#fff;background:var(--grad);z-index:1}

/* Plain lists get check marks */
.hub .article[data-gx] ul:not(.gx-next){list-style:none;padding-left:0}
.hub .article[data-gx] ul:not(.gx-next)>li{position:relative;padding-left:2rem}
.hub .article[data-gx] ul:not(.gx-next)>li::before{content:"";position:absolute;left:0;top:.45rem;width:1.15rem;height:1.15rem;border-radius:50%;background:var(--cyan) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2304060b' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E") center/70% no-repeat}

/* Resources index: guide lists as cards */
.hub .article[data-gx] ul:has(>li>a+p){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;margin:1rem 0 2rem}
.hub .article[data-gx] ul:has(>li>a+p)>li{margin:0;padding:1.1rem 1.15rem;border-radius:18px;border:1px solid var(--line);background:var(--glass-bg);transition:border-color var(--dur) var(--ease)}
.hub .article[data-gx] ul:has(>li>a+p)>li:hover{border-color:var(--line-strong)}
.hub .article[data-gx] ul:has(>li>a+p)>li::before{display:none}
.hub .article[data-gx] ul:has(>li>a+p)>li>a{display:block;font-weight:700;color:var(--ink);text-decoration:none;line-height:1.35;margin-bottom:.45rem}
.hub .article[data-gx] ul:has(>li>a+p)>li>a:hover{color:var(--cyan)}
.hub .article[data-gx] ul:has(>li>a+p)>li>p{margin:0;font-size:.92rem;line-height:1.6}

/* The section about EVA */
.gx-eva{position:relative;margin:2.5rem 0;padding:.4rem 1.4rem 1rem;border-radius:var(--radius-card);border:1px solid #00efe333;background:linear-gradient(135deg,#4623be1f,#9717cc12 45%,#00efe30d);overflow:hidden}
.gx-eva::after{content:"";position:absolute;right:-60px;bottom:-70px;width:220px;height:220px;opacity:.07;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 470 475'%3E%3Cpath fill='%2300efe3' d='M0,237.55c0,131.19,237.55-22.91,237.55,216.34,0,59.39,232.46-6.79,232.46-216.34C470.01,106.35,368.74,0,237.55,0,106.35,0,0,106.35,0,237.55ZM421.06,237.55c0,101.35-82.16,183.51-183.51,183.51S54.04,338.9,54.04,237.55c0-101.35,82.16-183.51,183.51-183.51s183.51,82.16,183.51,183.51Z'/%3E%3C/svg%3E") center/contain no-repeat;pointer-events:none}
.hub .article .gx-eva h2.gx-h2{margin-top:1.1rem}
.gx-eva .gx-hicon{background:var(--grad);border:0;color:#fff}

/* Callouts */
.gx-callout{display:block;margin:1.25rem 0 1.5rem;padding:1rem 1.2rem .3rem;border-radius:18px;border:1px solid var(--line);background:var(--glass-bg)}
.gx-callout-head{display:flex;align-items:center;gap:.5rem;font-size:var(--fs-small);font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:.5rem}
.gx-callout-head .gx-ico{width:18px;height:18px}
.gx-clinical{border-color:#00efe33d;background:linear-gradient(135deg,#00efe30f,#4623be12)}
.gx-clinical .gx-callout-head{color:var(--cyan)}
.gx-caution{border-color:#ddb76a40;background:#ddb76a0d}
.gx-caution .gx-callout-head{color:var(--gold)}
.hub .article .gx-callout p{color:var(--ink)}

/* Small flow */
.hub .article .gx-flow ol{list-style:none;margin:1.25rem 0 1.75rem;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}
.hub .article .gx-flow li{margin:0;position:relative;padding:.85rem .7rem;border-radius:14px;border:1px solid var(--line-strong);background:var(--bg-raised);text-align:center;color:var(--ink);font-weight:600;font-size:.85rem;line-height:1.35}
.gx-flow li:not(:last-child)::after{content:"";position:absolute;right:-.5rem;top:50%;width:.6rem;height:2px;background:var(--cyan);z-index:1}
.gx-flow li:last-child{border-color:var(--cyan)}

/* Roles split */
.gx-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;margin:1rem 0 1.5rem}
.gx-col{padding:1.1rem 1.15rem .25rem;border-radius:18px;border:1px solid var(--line);background:var(--glass-bg)}
.gx-col:last-child{border-color:#00efe333;background:linear-gradient(135deg,#4623be1a,#00efe30d)}
.gx-col-head{display:flex;align-items:center;gap:.55rem;font-weight:700;color:var(--ink);margin-bottom:.6rem}
.gx-col-head .gx-ico{width:20px;height:20px;color:var(--cyan)}
.hub .article .gx-col p{font-size:.95rem}

/* Sub-section cards */
.gx-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;margin:1.25rem 0 1.75rem}
.gx-cards::before{content:attr(aria-label);grid-column:1/-1;margin:0}
.gx-card{position:relative;padding:1.1rem 1.15rem .3rem;border-radius:18px;border:1px solid var(--line);background:var(--glass-bg)}
.gx-card-n{display:inline-grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:50%;font-weight:800;font-size:.85rem;color:#fff;background:var(--grad);margin-bottom:.4rem}
.hub .article .gx-card h3{margin:.2rem 0 .5rem;font-size:1.05rem}
.hub .article .gx-card p{font-size:.95rem}

/* Questions */
.gx-faq{display:flex;gap:.85rem;margin:.9rem 0;padding:1rem 1.15rem .2rem;border-radius:18px;border:1px solid var(--line);background:var(--glass-bg)}
.gx-faq>.gx-ico{color:var(--cyan);margin-top:.15rem}
.hub .article .gx-faq h3{margin:0 0 .45rem}

/* Call to action */
.gx-cta{margin:2.5rem 0;padding:.4rem 1.4rem 1rem;border-radius:var(--radius-card);border:1px solid transparent;background:linear-gradient(var(--bg-raised),var(--bg-raised)) padding-box,var(--grad) border-box}
.hub .article .gx-cta h2{margin-top:1.1rem}

/* Next reads */
.hub .article ul.gx-next{list-style:none;padding:0;margin:1rem 0 0;display:grid;gap:.6rem}
.hub .article ul.gx-next li{margin:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1.1rem;border-radius:16px;border:1px solid var(--line);background:var(--glass-bg)}
.hub .article ul.gx-next li:hover{border-color:var(--cyan)}
.hub .article ul.gx-next a{color:var(--ink);font-weight:600;text-decoration:none;line-height:1.4}
.hub .article ul.gx-next a::after{content:"";position:absolute;inset:0}
.hub .article ul.gx-next li{position:relative}
.gx-next .gx-ico{color:var(--cyan);width:20px;height:20px}

@media (max-width:760px){
  .hub .article ol.gx-steps{grid-template-columns:1fr;gap:.35rem}
  .gx-steps::before{left:23px;right:auto;top:24px;bottom:24px;width:2px;height:auto;background:linear-gradient(180deg,#4623be,#9717cc 50%,#00efe3)}
  .hub .article .gx-steps a{flex-direction:row;text-align:left;gap:.75rem;font-size:.95rem;min-height:52px}
  .gx-n{display:none}
  .hub .article .gx-overview ol,.gx-split,.gx-cards,.hub .article[data-gx] ul:has(>li>a+p){grid-template-columns:1fr}
  .hub .article .gx-flow ol{grid-template-columns:1fr}
  .gx-flow li:not(:last-child)::after{right:auto;left:50%;top:auto;bottom:-.5rem;width:2px;height:.6rem}
  .gx-eva,.gx-cta{padding-left:1rem;padding-right:1rem}
  .gx-faq{padding-left:.95rem;padding-right:.95rem}
}
@media (prefers-reduced-motion:reduce){.gx-node{transition:none}}

/* ---- Motion (public/resources/hub-motion.js, eva-particles.js). Without JS or with reduced
   motion everything above stays static and fully visible. ---- */
.hub-content{position:relative}
.gx-pfield{position:absolute;left:calc(-1 * var(--gutter,24px));right:calc(-1 * var(--gutter,24px));top:-1rem;height:min(620px,85vh);z-index:0;pointer-events:auto;-webkit-mask-image:linear-gradient(180deg,#000 55%,transparent);mask-image:linear-gradient(180deg,#000 55%,transparent)}
.gx-pfield .eva-particles{display:block;width:100%;height:100%}
.hub-content>*:not(.gx-pfield){position:relative;z-index:1}
.gx-motion .gx-rv{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.gx-motion .gx-rv.in{opacity:1;transform:none}
.gx-motion .gx-hero.gx-rv{transform:none}
.gx-motion .gx-hero img{transform:scale(1.08);transition:transform 2.6s var(--ease)}
.gx-motion .gx-hero.in img{transform:scale(1)}
.gx-motion .gx-map .gx-steps::before{transform:scaleX(0);transform-origin:left;transition:transform 1.4s var(--ease) .2s}
.gx-motion .gx-map.in .gx-steps::before{transform:none}
.gx-motion .gx-map .gx-steps li{opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease),transform .5s var(--ease);transition-delay:calc(var(--i,0) * 110ms + 250ms)}
.gx-motion .gx-map.in .gx-steps li{opacity:1;transform:none}
.gx-motion h2.gx-h2.in .gx-badge,.gx-motion h2.gx-h2.in .gx-hicon{animation:gx-pop .6s var(--ease)}
@keyframes gx-pop{0%{transform:scale(.6);opacity:0}100%{transform:none;opacity:1}}
.gx-overview a,.gx-card,.gx-faq,.gx-next li,.hub .article[data-gx] ul:has(>li>a+p)>li{transition:border-color var(--dur) var(--ease),transform .25s var(--ease),opacity .7s var(--ease)}
.gx-overview a:hover,.gx-next li:hover,.hub .article[data-gx] ul:has(>li>a+p)>li:hover{transform:translateY(-2px)}
@media (max-width:760px){
  .gx-pfield{height:min(460px,70vh)}
  .gx-motion .gx-map .gx-steps::before{transform:scaleY(0);transform-origin:top}
}

/* Client decision card (CC01) */
.gx-decision{position:relative;margin:2.5rem 0;padding:1.4rem 1.4rem .6rem;border-radius:var(--radius-card);border:1px dashed #00efe366;background:linear-gradient(135deg,#4623be14,#00efe30a)}
.gx-decision-tag{display:inline-block;font-size:var(--fs-small);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-bottom:.4rem}
.hub .article .gx-decision h2{margin:.2rem 0 .9rem;font-size:clamp(1.25rem,1vw + 1rem,1.55rem)}
.hub .article .gx-decision p{color:var(--ink)}
@media (max-width:760px){.gx-decision{padding-left:1rem;padding-right:1rem}}
