/* R3 homepage: intrinsic logo/copy lanes and a bounded visible network field. */
.homepage{position:relative;isolation:isolate;overflow:clip;display:grid;grid-template-rows:auto auto minmax(300px,1fr);gap:clamp(16px,2.5vh,28px);min-height:100svh;padding:clamp(20px,2.6vh,32px) var(--page-inset) clamp(20px,3vh,36px);background:radial-gradient(ellipse at 52% 62%,#442ba22e,transparent 70%),#08051b}
.homepage-controls{position:relative;z-index:3;display:flex;align-items:center;justify-content:flex-start;padding:0;min-width:0}
.homepage .hero-copy{position:relative;z-index:2;min-width:0;pointer-events:none}.homepage h1{max-width:1250px;margin:0;font-size:clamp(34px,3.6vw,66px);font-weight:500;line-height:1.1;letter-spacing:-1.6px;color:#f5f4ff;text-wrap:balance}.headline-break{display:none}
.homepage .hero-description{max-width:980px;margin:14px 0 0;font-size:clamp(15px,1.1vw,18px);line-height:1.5;color:#d2cbe4;letter-spacing:0;font-weight:400;text-wrap:pretty}
.homepage .network{position:relative;z-index:1;min-width:0;min-height:300px;isolation:isolate;transform:translate3d(var(--network-parallax-x,0px),calc(var(--network-float-y,0px) + var(--network-parallax-y,0px)),0);scale:var(--entry-scale,1);transform-origin:var(--entry-x,50%) var(--entry-y,50%);transition:scale .34s ease-in}
/* Affine mapping keeps y253..754 inside 86px..(height-74px). SVG paths and
   generated DOM anchors use the same mapping, reserving real label margins. */
.homepage .network-svg{position:absolute;left:0;top:calc(166.798403px - 50.499002%);width:100%;height:calc(163.672655% - 261.876248px);overflow:visible;fill:none;pointer-events:none}
.homepage::before{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;background:radial-gradient(ellipse 16% 48% at 68% 60%,#65d5ff12,transparent 80%),radial-gradient(ellipse 60% 65% at 45% 62%,#7750d63b,transparent 75%);transform:translate3d(calc(var(--sweep-x,-125%) + var(--background-parallax-x,0px)),var(--background-parallax-y,0px),0);opacity:var(--sweep-opacity,0);clip-path:inset(0);will-change:transform,opacity}
.homepage .network-edge{opacity:.6;transition:opacity .25s}.homepage .connection-shadow{stroke:#050216;stroke-width:3.5;opacity:.5}.homepage .connection-glow{stroke:inherit;stroke-width:7;opacity:.045;filter:url(#network-glow);transition:opacity .25s}.homepage .connection-thread{stroke:inherit;stroke-width:.7;opacity:.3}.homepage .connection-thread[data-strand="0"]{opacity:.5;stroke-width:.9}
.homepage .signal-tail,.homepage .signal-core{stroke:inherit;stroke-linecap:round;stroke-dashoffset:var(--packet-offset,1000);animation:none;opacity:var(--packet-opacity,0)}.homepage .signal-tail{stroke-width:var(--signal-tail-width,3px);stroke-dasharray:16 984;opacity:calc(var(--packet-opacity,0) * .22)}.homepage .signal-core{stroke-width:var(--signal-core-width,3.3px);stroke-dasharray:2 998}
.homepage .signal-outward-tail,.homepage .signal-outward-core{stroke:var(--active-signal,#a7a0d8);stroke-linecap:round;stroke-dashoffset:var(--outward-packet-offset,1000);opacity:var(--outward-packet-opacity,0);animation:none}.homepage .signal-outward-tail{stroke-width:var(--signal-outward-tail-width,3px);stroke-dasharray:14 986;opacity:calc(var(--outward-packet-opacity,0) * .2)}.homepage .signal-outward-core{stroke-width:var(--signal-outward-core-width,3.8px);stroke-dasharray:2 998}
.homepage .network[data-highlight] .network-edge{opacity:.4}.homepage .network .network-edge.is-incident{opacity:1}.homepage .network-edge.is-incident .connection-glow{opacity:.16;stroke-width:9}.homepage .network-edge.is-incident .connection-thread{opacity:.74;stroke-width:1}.homepage .network-edge.is-incident .signal-core{stroke-width:var(--signal-selected-core-width,5.5px)}
.homepage .node{position:absolute;width:44px;height:44px;min-height:44px;transform:translate(-50%,-50%);z-index:2;isolation:isolate;color:#f5f4ff}.homepage .node-core{width:44px;height:44px;display:grid;place-items:center}.homepage .node-orb{position:relative;width:14px;height:14px;border-radius:50%;background:var(--node-color);border:1px solid #f5f4ff80;box-shadow:0 0 13px var(--node-color),0 0 30px color-mix(in srgb,var(--node-color) 30%,transparent);transition:transform .25s,box-shadow .25s}
.homepage .node-orb::before{content:"";position:absolute;inset:-10px;border:1px solid var(--node-color);border-radius:50%;opacity:calc(.6 + var(--halo-breath-opacity,.12) * .5 + var(--nearby-halo-opacity,0) * .25)}.homepage .node-orb::after{content:"";position:absolute;inset:-18px;z-index:-1;border-radius:50%;background:radial-gradient(circle,var(--node-color),transparent 68%);opacity:calc(.1 + var(--arrival-halo-opacity,0) * .2 + var(--nearby-halo-opacity,0) * .13 + var(--halo-breath-opacity,0) * .3)}
.homepage .node-label{position:absolute;left:50%;top:calc(100% + 4px);width:max-content;max-width:clamp(120px,14vw,220px);transform:translateX(-50%);padding:4px 6px;white-space:normal;text-align:center;text-wrap:balance;text-transform:uppercase;font:clamp(11px,.85vw,14px)/1.35 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.2px;color:#e5dff2;text-shadow:0 1px 5px #08051bd9,0 0 9px #08051ba8;background:none;border:0;box-shadow:none}
.homepage .node[data-label-placement="above"] .node-label{top:auto;bottom:calc(100% + 4px)}.homepage .node:focus-visible,.homepage .node.is-active{z-index:4;outline-offset:7px;border-radius:50%}.homepage .node.is-active .node-orb,.homepage .node:focus-visible .node-orb{transform:scale(1.45);box-shadow:0 0 18px var(--node-color),0 0 42px color-mix(in srgb,var(--node-color) 48%,transparent)}.homepage .node.is-active .node-label,.homepage .node:focus-visible .node-label{color:#f5f4ff}.homepage .node.is-neighbor .node-orb::before{opacity:.95}
.homepage.entering .network{--entry-scale:1.04}.homepage.entering .node.is-selected .node-orb{transform:scale(2);box-shadow:0 0 28px var(--node-color),0 0 65px #7750d66c}.homepage .network::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 22% 30% at var(--entry-x,50%) var(--entry-y,50%),#7750d640,transparent 76%);opacity:0;transition:opacity .28s}.homepage.entering .network::before{opacity:1}
@media(hover:hover){.homepage .node:hover{z-index:4}.homepage .node:hover .node-orb{transform:scale(1.45)}}
@media(min-width:761px) and (max-height:700px){.homepage{gap:14px;padding-block:18px;grid-template-rows:auto auto minmax(280px,1fr)}.homepage .brand-art{width:180px}.homepage h1{font-size:clamp(32px,3.4vw,44px)}.homepage .hero-description{font-size:15px;margin-top:10px}.homepage .network{min-height:280px}}
/* Portrait adaptation of the same eight-node graph and fourteen connections.
   Semantic targets sit around the Revenue Attribution hub; labels are never
   scaled down with the SVG. All motion transforms remain on their shared parent. */
@media(max-width:760px){
 .homepage{grid-template-rows:auto auto minmax(430px,1fr);gap:14px;min-height:100svh;padding:16px var(--page-inset) 20px}
 .homepage h1{font-size:clamp(32px,7.4vw,48px);line-height:1.12;letter-spacing:-1px;max-width:24ch}
 .headline-break{display:block}
 .homepage .hero-description{font-size:15px;line-height:1.5;margin-top:10px}
 .homepage .network{min-height:430px;background:radial-gradient(ellipse at 50% 49%,#7750d61a,transparent 66%)}
 .homepage .network-svg{top:0;left:0;width:100%;height:100%;opacity:1}
 .homepage .network-edge path{vector-effect:non-scaling-stroke}
 .homepage .network-edge .connection-glow{opacity:calc(.045 + var(--release-glow-opacity,0) * .38)}
 .homepage .network .node{position:absolute;left:var(--mobile-x);top:var(--mobile-y);width:44px;height:44px;min-height:44px;transform:translate(-50%,-50%)}
 .homepage .node-core{width:44px;height:44px}
 .homepage .node-orb{width:18px;height:18px;background:radial-gradient(circle at 34% 28%,#f5f4ffde,var(--node-color) 38%,color-mix(in srgb,var(--node-color) 70%,#251650))}
 .homepage .node-orb::before{inset:-7px}
 .homepage .topic-node-7 .node-orb{width:22px;height:22px}
 .homepage .network .node-label,.homepage .network .node[data-label-placement="above"] .node-label{top:calc(100% + 4px);bottom:auto;width:var(--mobile-label);max-width:var(--mobile-label);padding:2px 4px;font-size:12px;line-height:1.35}
 .homepage .topic-node-0{--mobile-x:16.811594%;--mobile-y:12.093023%;--mobile-label:116px}
 .homepage .topic-node-1{--mobile-x:75.362319%;--mobile-y:8.837209%;--mobile-label:130px}
 .homepage .topic-node-2{--mobile-x:83.188406%;--mobile-y:33.023256%;--mobile-label:116px}
 .homepage .topic-node-3{--mobile-x:78.260870%;--mobile-y:64.651163%;--mobile-label:140px}
 .homepage .topic-node-4{--mobile-x:47.826087%;--mobile-y:84.883721%;--mobile-label:140px}
 .homepage .topic-node-5{--mobile-x:17.971014%;--mobile-y:66.511628%;--mobile-label:120px}
 .homepage .topic-node-6{--mobile-x:16.811594%;--mobile-y:38.372093%;--mobile-label:116px}
 .homepage .topic-node-7{--mobile-x:49.855072%;--mobile-y:48.837209%;--mobile-label:125px}
 .homepage::before{will-change:auto}
}
/* Extra reading space on narrow phones, retaining physical target/label sizes. */
@media(max-width:360px){
 .homepage{grid-template-rows:auto auto minmax(490px,1fr)}.homepage .network{min-height:490px}
 .homepage .topic-node-0{--mobile-y:9%}.homepage .topic-node-1{--mobile-y:4.5%}
 .homepage .topic-node-2{--mobile-y:26%}.homepage .topic-node-3{--mobile-y:69%}
 .homepage .topic-node-4{--mobile-y:87%}.homepage .topic-node-5{--mobile-y:71%}
 .homepage .topic-node-6{--mobile-y:32%}.homepage .topic-node-7{--mobile-y:46%}
}
@media(prefers-reduced-motion:reduce){.homepage::before{transform:none;opacity:.2;will-change:auto}.homepage .network,.homepage .network .node{transform:none!important;scale:1}.homepage .signal-tail,.homepage .signal-core,.homepage .signal-outward-tail,.homepage .signal-outward-core{opacity:0}.homepage .node-orb,.homepage .network,.homepage .network::before{transition:none}}

/* Centering is structural, not animation: keep anchors aligned in reduced motion. */
@media(max-width:760px) and (prefers-reduced-motion:reduce){.homepage .network .node{transform:translate(-50%,-50%)!important}}

.homepage .topic-node-0{left:11.66667%;top:calc(23.353293% + 48.634731px);--node-color:#65d5ff}
.homepage .topic-node-1{left:30.66667%;top:calc(0.000000% + 86.000000px);--node-color:#b39aee}
.homepage .topic-node-2{left:61.08333%;top:calc(14.970060% + 62.047904px);--node-color:#96d8ff}
.homepage .topic-node-3{left:84.66667%;top:calc(1.397206% + 83.764471px);--node-color:#aa8ce9}
.homepage .topic-node-4{left:77.25000%;top:calc(62.275449% + -13.640719px);--node-color:#aaa2d9}
.homepage .topic-node-5{left:60.33333%;top:calc(100.000000% + -74.000000px);--node-color:#a18ae5}
.homepage .topic-node-6{left:33.25000%;top:calc(94.011976% + -64.419162px);--node-color:#80d6ef}
.homepage .topic-node-7{left:46.41667%;top:calc(54.491018% + -1.185629px);--node-color:#c5b2f1}
