.elementor-22169 .elementor-element.elementor-element-22dc507{--display:flex;}.elementor-widget-text-editor{color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-22169 .elementor-element.elementor-element-cee096d{--display:flex;--min-height:0px;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--justify-content:center;--align-items:center;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--margin-top:10px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-22169 .elementor-element.elementor-element-3ed5137{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content: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-22169 .elementor-element.elementor-element-3ed5137.e-con{--flex-grow:0;--flex-shrink:0;}.elementor-22169 .elementor-element.elementor-element-3bd6172 > .elementor-widget-container{margin:0px 0px 0px 0px;padding:0px 0px 35px 0px;}.elementor-22169 .elementor-element.elementor-element-3bd6172{font-family:"Yekan Bakh Regular", Sans-serif;font-size:15px;color:#031F3D;}@media(max-width:767px){.elementor-22169 .elementor-element.elementor-element-cee096d{--margin-top:-95px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;}.elementor-22169 .elementor-element.elementor-element-3bd6172 > .elementor-widget-container{margin:0px 10px 0px 10px;}.elementor-22169 .elementor-element.elementor-element-3bd6172{font-size:14px;}}@media(min-width:768px){.elementor-22169 .elementor-element.elementor-element-cee096d{--content-width:976px;}.elementor-22169 .elementor-element.elementor-element-3ed5137{--width:100%;}}/* Start custom CSS */<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">

<canvas id="network-bg"></canvas>

<style>
  html, body {
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
  }
  #network-bg {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    background: #ffffff;
    display: block;
  }
</style>

<script>
const canvas = document.getElementById('network-bg');
const ctx = canvas.getContext('2d');
let W, H, nodes = [], mouse = {x: -9999, y: -9999};
const CONN_DIST = 280, MOUSE_DIST = 200, MAX_CONN = 14;

function isMobile() { return window.innerWidth <= 768; }

function resize() {
  W = canvas.width = window.innerWidth;
  H = canvas.height = window.innerHeight;
  canvas.style.width = window.innerWidth + 'px';
  canvas.style.height = window.innerHeight + 'px';
}

function rnd(a, b) { return a + Math.random() * (b - a); }

function buildNodes() {
  nodes = [];
  const mobile = isMobile();
  const COLS = mobile ? 8 : 10;
  const ROWS = mobile ? 10 : 7;
  const COUNT = mobile ? 65 : 65;

  const all = [];
  const cw = W / COLS, ch = H / ROWS;
  for (let row = 0; row < ROWS; row++)
    for (let col = 0; col < COLS; col++)
      all.push({ col, row });
  for (let i = all.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [all[i], all[j]] = [all[j], all[i]];
  }
  const total = Math.min(COUNT, all.length);
  for (let k = 0; k < total; k++) {
    const { col, row } = all[k];
    const cx = cw * col + cw / 2;
    const cy = ch * row + ch / 2;
    const z = rnd(0.2, 1.0);
    const speed = 0.1 * z * 2;
    nodes.push({
      x: cx + rnd(-cw * 0.25, cw * 0.25),
      y: cy + rnd(-ch * 0.25, ch * 0.25),
      vx: rnd(-speed, speed),
      vy: rnd(-speed, speed),
      r: rnd(0.15, 0.6) * z * 2,
      z,
      connCount: 0
    });
  }
  nodes.sort((a, b) => a.z - b.z);
}

resize();
buildNodes();

window.addEventListener('resize', () => { resize(); buildNodes(); });
window.addEventListener('orientationchange', () => {
  setTimeout(() => { resize(); buildNodes(); }, 300);
});

window.addEventListener('mousemove', e => { mouse.x = e.clientX; mouse.y = e.clientY; });
window.addEventListener('touchmove', e => {
  mouse.x = e.touches[0].clientX;
  mouse.y = e.touches[0].clientY;
}, { passive: true });
window.addEventListener('touchend', () => { mouse.x = -9999; mouse.y = -9999; });

function draw() {
  ctx.clearRect(0, 0, W, H);

  const mobile = isMobile();
  const lineMulti  = mobile ? 0.125 : 0.25;
  const lineCap    = mobile ? 0.065 : 0.13;
  const mouseMulti = mobile ? 0.175 : 0.35;
  const mouseCap   = mobile ? 0.065 : 0.13;

  for (let n of nodes) {
    n.x += n.vx; n.y += n.vy;
    if (n.x < 0 || n.x > W) n.vx *= -1;
    if (n.y < 0 || n.y > H) n.vy *= -1;
    n.connCount = 0;
  }

  for (let i = 0; i < nodes.length; i++) {
    for (let j = i + 1; j < nodes.length; j++) {
      if (nodes[i].connCount >= MAX_CONN || nodes[j].connCount >= MAX_CONN) continue;
      const a = nodes[i], b = nodes[j];
      const d = Math.hypot(a.x - b.x, a.y - b.y);
      const zAvg = (a.z + b.z) / 2;
      const distLimit = CONN_DIST * zAvg * 2;
      if (d < distLimit) {
        const alpha = Math.min((1 - d / distLimit) * lineMulti * zAvg * 2, lineCap);
        ctx.beginPath();
        ctx.moveTo(a.x, a.y);
        ctx.lineTo(b.x, b.y);
        ctx.strokeStyle = `rgba(50,50,55,${alpha})`;
        ctx.lineWidth = 0.8 * zAvg * 2;
        ctx.stroke();
        nodes[i].connCount++;
        nodes[j].connCount++;
      }
    }
  }

  for (let n of nodes) {
    const md = Math.hypot(n.x - mouse.x, n.y - mouse.y);
    if (md < MOUSE_DIST) {
      const alpha = Math.min((1 - md / MOUSE_DIST) * mouseMulti * n.z * 2, mouseCap);
      ctx.beginPath();
      ctx.moveTo(n.x, n.y);
      ctx.lineTo(mouse.x, mouse.y);
      ctx.strokeStyle = `rgba(50,50,55,${alpha})`;
      ctx.lineWidth = 0.5;
      ctx.stroke();
    }
  }

  for (let n of nodes) {
    const md = Math.hypot(n.x - mouse.x, n.y - mouse.y);
    const baseAlpha = 0.2 + n.z * 0.8;
    const alpha = md < MOUSE_DIST ? Math.min(baseAlpha + (1 - md / MOUSE_DIST) * 0.3, 1) : baseAlpha;
    ctx.beginPath();
    ctx.arc(n.x, n.y, n.r, 0, Math.PI * 2);
    ctx.fillStyle = `rgba(45,45,50,${alpha})`;
    ctx.fill();
  }

  requestAnimationFrame(draw);
}
draw();
</script>
html,
body{
    overflow-y: auto !important;
    overflow-x: hidden;
}

body{
    position: static !important;
}
footer.site-footer.dynamic-footer{
    display:none !important;
}
.page-id-22169 .floating-ai-btn {
    display: none !important;
}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Yekan Bakh Regular';
	font-display: auto;
	src: url('https://alaghmand.com/wp-content/uploads/2026/09/YekanBakhFaNum-Regular.ttf') format('truetype');
}
/* End Custom Fonts CSS */