.elementor-1884 .elementor-element.elementor-element-1601bc7{--display:flex;--min-height:100vh;--flex-direction:column;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:center;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px}.elementor-1884 .elementor-element.elementor-element-1601bc7:not(.elementor-motion-effects-element-type-background),.elementor-1884 .elementor-element.elementor-element-1601bc7>.elementor-motion-effects-container>.elementor-motion-effects-layer{background-color:#20432B}.elementor-1884 .elementor-element.elementor-element-0820c68{--display:flex;--min-height:100vh;--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--overflow:hidden;--margin-top:0%;--margin-bottom:0%;--margin-left:0%;--margin-right:0%;--padding-top:60px;--padding-bottom:60px;--padding-left:30px;--padding-right:30px}.elementor-1884 .elementor-element.elementor-element-0820c68:not(.elementor-motion-effects-element-type-background),.elementor-1884 .elementor-element.elementor-element-0820c68>.elementor-motion-effects-container>.elementor-motion-effects-layer{background-image:url(https://opheliasoul.com/wp-content/uploads/2026/03/cave1.png);background-position:center center;background-size:cover}.elementor-widget-button .elementor-button{background-color:var(--e-global-color-accent);font-family:var(--e-global-typography-accent-font-family),Sans-serif;font-weight:var(--e-global-typography-accent-font-weight)}.elementor-1884 .elementor-element.elementor-element-35cd02b .elementor-button{background-color:#FFF0;font-family:"Playfair Display",Sans-serif;font-weight:500;fill:#CEC8A8CF;color:#CEC8A8CF;border-style:double;border-width:4px 4px 4px 4px;border-color:#CEC8A891;border-radius:33px 33px 33px 33px}.elementor-1884 .elementor-element.elementor-element-35cd02b.elementor-element{--align-self:flex-start}.elementor-1884 .elementor-element.elementor-element-35cd02b .elementor-button-content-wrapper{flex-direction:row}.elementor-1884 .elementor-element.elementor-element-35cd02b .elementor-button:hover,.elementor-1884 .elementor-element.elementor-element-35cd02b .elementor-button:focus{box-shadow:0 0 20px 0 #B8A341}.elementor-1884 .elementor-element.elementor-element-a949757{--display:flex}.elementor-1884 .elementor-element.elementor-element-67c6a6f{--display:flex}.elementor-widget-heading .elementor-heading-title{font-family:var(--e-global-typography-primary-font-family),Sans-serif;letter-spacing:var(--e-global-typography-primary-letter-spacing);color:var(--e-global-color-primary)}.elementor-1884 .elementor-element.elementor-element-2b62741{text-align:center}.elementor-1884 .elementor-element.elementor-element-2b62741 .elementor-heading-title{font-family:"EB Garamond",Sans-serif;color:#1B256F2E}.elementor-1884 .elementor-element.elementor-element-2606412{width:var(--container-widget-width,94%);max-width:94%;--container-widget-width:94%;--container-widget-flex-grow:0;top:-204px}.elementor-1884 .elementor-element.elementor-element-2606412.elementor-element{--align-self:center}body:not(.rtl) .elementor-1884 .elementor-element.elementor-element-2606412{left:103px}body.rtl .elementor-1884 .elementor-element.elementor-element-2606412{right:103px}:root{--page-title-display:none}@media(max-width:1024px){.elementor-widget-heading .elementor-heading-title{letter-spacing:var(--e-global-typography-primary-letter-spacing)}}@media(max-width:600px){.elementor-widget-heading .elementor-heading-title{letter-spacing:var(--e-global-typography-primary-letter-spacing)}}<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Plexus</title><style>*{margin:0;padding:0;box-sizing:border-box}body{background:#fff0;overflow:hidden}canvas{display:block;width:100vw;height:100vh}</style></head><body><canvas id="c"></canvas><script>const canvas=document.getElementById('c');const ctx=canvas.getContext('2d');let W,H;function resize(){W=canvas.width=window.innerWidth;H=canvas.height=window.innerHeight}resize();window.addEventListener('resize',()=>{resize();makeNodes(nodeCount)});let speed=4,nodeCount=70;const col={node:[100,160,255],center:[180,220,255],line:[80,140,255]};let nodes=[];function makeNodes(count){nodes=[];for (let i=0;i < count;i++){const angle=Math.random() * Math.PI * 2;const dist=20+Math.random() * 230;nodes.push({x:W/2+Math.cos(angle) * dist * (0.6+Math.random() * .8),y:H/2+Math.sin(angle) * dist * (0.5+Math.random() * .8),vx:(Math.random() - .5) * .4,vy:(Math.random() - .5) * .4,r:1.5+Math.random() * 2.5,brightness:0.5+Math.random() * .5,pulse:Math.random() * Math.PI * 2,})}}makeNodes(nodeCount);const MAX_DIST=130;function rgb(c,a){return `rgba(${c[0]},${c[1]},${c[2]},${a})`}function draw(){ctx.clearRect(0,0,W,H);const cx=W/2,cy=H/2,t=Date.now() * .001;nodes.forEach(n=>{n.pulse+=0.02 * speed;n.x+=n.vx * speed * .25;n.y+=n.vy * speed * .25;const dx=n.x - cx,dy=n.y - cy;const dist=Math.sqrt(dx*dx+dy*dy);if (dist>260){n.vx -=dx * .0003;n.vy -=dy * .0003}if (dist < 15){n.vx+=(Math.random()-0.5)*0.3;n.vy+=(Math.random()-0.5)*0.3}n.vx*=0.999;n.vy*=0.999});for (let i=0;i < nodes.length;i++){for (let j=i+1;j < nodes.length;j++){const a=nodes[i],b=nodes[j];const dx=a.x-b.x,dy=a.y-b.y;const d=Math.sqrt(dx*dx+dy*dy);if (d < MAX_DIST){const alpha=(1 - d/MAX_DIST) * .55;const dcA=Math.sqrt((a.x-cx)**2+(a.y-cy)**2);const dcB=Math.sqrt((b.x-cx)**2+(b.y-cy)**2);const cf=1 - Math.min((dcA+dcB)/2, 220)/220;ctx.beginPath();ctx.moveTo(a.x,a.y);ctx.lineTo(b.x,b.y);ctx.strokeStyle=rgb(col.line,alpha*(0.5+cf*0.5));ctx.lineWidth=0.5+cf * .8;ctx.stroke()}}}const pr=18+6*Math.sin(t*1.8);const cg=ctx.createRadialGradient(cx,cy,0,cx,cy,pr*4);cg.addColorStop(0,rgb(col.center,.9));cg.addColorStop(.2,rgb(col.node,.6));cg.addColorStop(.5,rgb(col.line,.2));cg.addColorStop(1,rgb(col.line,0));ctx.beginPath();ctx.arc(cx,cy,pr*4,0,Math.PI*2);ctx.fillStyle=cg;ctx.fill();nodes.forEach(n=>{const dcx=Math.sqrt((n.x-cx)**2+(n.y-cy)**2);const cb=1 - Math.min(dcx,220)/220;const r=n.r * (1+0.3*Math.sin(n.pulse));const al=n.brightness * (0.5+cb*0.5);const g=ctx.createRadialGradient(n.x,n.y,0,n.x,n.y,r*5);g.addColorStop(0,rgb(col.node,al*0.6));g.addColorStop(1,rgb(col.node,0));ctx.beginPath();ctx.arc(n.x,n.y,r*5,0,Math.PI*2);ctx.fillStyle=g;ctx.fill();ctx.beginPath();ctx.arc(n.x,n.y,r,0,Math.PI*2);ctx.fillStyle=rgb(col.center,al*0.95);ctx.fill()});requestAnimationFrame(draw)}draw();</script></body></html>