<style>
    canvas {
      position: absolute;
      inset: 0;
      display: block;
    	z-index: 2 !important;
    }
  </style>

  
    <canvas id="globe"></canvas>
    
  

  <style>
  canvas {
    position: absolute;
    inset: 0;
    display: block;
    z-index: 3;
    background: transparent;
  }
</style>

<canvas id="globe"></canvas>

<script>
  const canvas = document.getElementById('globe');
  const ctx = canvas.getContext('2d');

  const globes = [
    {
      xPercent: 9,
      yPercent: 0,
      radius: 200,
      color: 'green',
      baseDotCount: 7000,
      dotMinSize: 1,
      dotMaxSize: 1.25,
      dotScaleFactor: 1,
      opacity: 1,
      rotationSpeed: 0.003,
      wobbleSpeed: 0.02,
      wobbleAmount: 0.1,
      orbitOffset: { x: 0.1, y: -0.05 },
      transparencyZone: { x: 0.5, y: 0.5, radius: 0.5 }
    },
    {
      xPercent: 15,
      yPercent: 90,
      radius: 400,
      color: 'orange',
      baseDotCount: 3000,
      dotMinSize: 1.5,
      dotMaxSize: 2,
      dotScaleFactor: 1.5,
      opacity: 1,
      rotationSpeed: 0.002,
      wobbleSpeed: 0.01,
      wobbleAmount: 0.1,
      orbitOffset: { x: 0, y: 0 },
      transparencyZone: { x: 0, y: 0, radius: 2 }
    },
    {
      xPercent: 90,
      yPercent: 70,
      radius: 350,
      color: 'green',
      baseDotCount: 3000,
      dotMinSize: 6,
      dotMaxSize: 6,
      dotScaleFactor: 1,
      opacity: 1,
      rotationSpeed: 0.001,
      wobbleSpeed: 0.005,
      wobbleAmount: 0.2,
      orbitOffset: { x: -0.1, y: 0.05 },
      transparencyZone: { x: 0, y: 0.9, radius: 2 }
    }
  ];

  function resizeCanvas() {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    regenerateGlobeDots();
  }

  function regenerateGlobeDots() {
    const scaleFactor = Math.min(window.innerWidth / 1200, 1);
    globes.forEach(globe => {
      const count = Math.floor(globe.baseDotCount * scaleFactor);
      globe.dots = [];
      for (let i = 0; i < count; i++) {
        const theta = Math.random() * 2 * Math.PI;
        const phi = Math.acos(2 * Math.random() - 1);
        globe.dots.push({ theta, phi });
      }
    });
  }

  window.addEventListener('resize', resizeCanvas);
  resizeCanvas();

  let tick = 0;

  function interpolateGradient(r, palette = 'orange') {
    if (palette === 'green') {
      const t = r;
      return {
        r: Math.round(50 * (1 - t) + 180 * t),
        g: Math.round(255 * (1 - t) + 255 * t),
        b: Math.round(100 * (1 - t) + 50 * t),
      };
    }

    if (r < 0.5) {
      const t = r / 0.5;
      return {
        r: Math.round(255 * (1 - t) + 255 * t),
        g: Math.round(160 * (1 - t) + 100 * t),
        b: Math.round(0 * (1 - t) + 50 * t)
      };
    } else {
      const t = (r - 0.5) / 0.5;
      return {
        r: Math.round(255 * (1 - t) + 100 * t),
        g: Math.round(100 * (1 - t) + 20 * t),
        b: Math.round(50 * (1 - t))
      };
    }
  }

  function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height); // Transparent background

    ctx.save();

    globes.forEach((globe, index) => {
      const x = canvas.width * (globe.xPercent / 100);
      const y = canvas.height * (globe.yPercent / 100);
      const radius = globe.radius * (canvas.width / 1200);
      const {
        dots, color, dotMinSize, dotMaxSize, dotScaleFactor,
        opacity, rotationSpeed, wobbleSpeed, wobbleAmount,
        orbitOffset, transparencyZone
      } = globe;

      const rotation = tick * rotationSpeed;
      const wobble = Math.sin(tick * wobbleSpeed + index) * wobbleAmount;

      ctx.translate(x, y);

      for (const dot of dots) {
        const theta = dot.theta + rotation;
        const phi = dot.phi + wobble;

        const sx = radius * Math.sin(phi) * Math.cos(theta);
        const sy = radius * Math.sin(phi) * Math.sin(theta);
        const sz = radius * Math.cos(phi);

        const scale = 0.6 + sz / (2 * radius);
        let px = (sx + (orbitOffset?.x || 0) * radius) * scale;
        let py = (sy + (orbitOffset?.y || 0) * radius) * scale;

        // Transparency zone adjustment
        let transparencyFactor = 1;
        if (transparencyZone) {
          const zoneX = (transparencyZone.x - 0.5) * 2 * radius;
          const zoneY = (transparencyZone.y - 0.5) * 2 * radius;
          const zoneR = radius * transparencyZone.radius;
          const dx = px / scale - zoneX;
          const dy = py / scale - zoneY;
          const d = Math.sqrt(dx * dx + dy * dy);
          if (d < zoneR) {
            transparencyFactor = d / zoneR; // fades in
          }
        }

        const alpha = (0.4 + 0.6 * ((sz + radius) / (2 * radius))) * opacity * transparencyFactor;
        const dotRadius = dotMinSize + (dotMaxSize - dotMinSize) * scale * dotScaleFactor;
        const dist = Math.sqrt(px * px + py * py) / (radius * 1.2);
        const grad = interpolateGradient(Math.min(dist, 1), color);

        ctx.beginPath();
        ctx.arc(px, py, dotRadius, 0, Math.PI * 2);
        ctx.fillStyle = `rgba(${grad.r}, ${grad.g}, ${grad.b}, ${alpha})`;
        ctx.fill();
      }

      ctx.translate(-x, -y);
    });

    ctx.restore();
    tick++;
    requestAnimationFrame(draw);
  }

  draw();
</script>


canvas {
  pointer-events: none !important;
}
Bringing leaders together to reimagine how we support health, safety and wellbeing
Register now
Sonder Summit is a first-of-its-kind event for people, risk and safety leaders who understand that workforce wellbeing isn’t ‘nice to have’, it’s critical. Join leaders from APAC’s most progressive organisations to spark bold conversations, make new connections, leave with insights that matter and make a difference.

Speakers

Jamila Rizvi

Jamila Rizvi

Deputy Managing Director, Future Women
Jamila Rizvi is a best-selling author, broadcaster and gender equality leader. As Deputy Managing Director at Future Women, she champions women who work and women who want to work, through training, advocacy and storytelling.
Craig Cowdrey

Craig Cowdrey

Co-Founder & CEO, Sonder
Craig’s passion for solving complex problems has taken him through careers in law, diplomacy and the military. As CEO and co-founder, Craig drives Sonder’s strategy and culture, leading a high-performance team to deliver Sonder’s vision to provide everyone with global access to 24/7 safety, medical and mental health support.
Mark Oostergo

Mark Oostergo

Chief Executive & Workplace Psychologist, Australian Psychological Services
Mark is a workplace psychologist and risk specialist who began his career as an Army Psychology Officer, including work with elite special forces. He brings deep expertise in mental health and a deep understanding of how organisations can create systemic change to create healthy and successful workplaces.
Shelley Johnson

Shelley Johnson

Founder & Leadership Coach, Boldside
Shelley is a leadership coach, speaker, and columnist for The Age and SMH. Host of This is Work podcast, she’s helped thousands grow as leaders. With 10+ years in HR and a master’s in HRM, she’s known for smart advice and contagious energy.
Raechel Gavin

Raechel Gavin

Chief People Officer, Sonder
Raechel Gavin is a strategic people and culture leader with expertise in driving inclusive cultures, talent strategy, change, and growth. She brings cross-functional leadership experience and builds high-performing, people-first teams for lasting impact.
Kevin Figueiredo

Kevin Figueiredo

Chief People & Safety Officer, Super Retail Group
Kevin is a senior executive and passionate advocate for disability inclusion, mental health, and suicide prevention. As Chief People and Safety Officer at Super Retail Group, he leads workplace wellbeing, drawing on experience from leadership roles at Woolworths, Westpac and Goodman Fielder.
Cilia Robinson

Cilia Robinson

Partner, King & Wood Mallesons
Cilla is a Partner with King, Wood and Mallesons with over 20 years’ experience specialising in employment and industrial matters from sexual harassment, discrimination to industrial disputes and enterprise bargaining, whistleblowing and running large scale litigation for both her private sector clients and government clients.
Stella Petrou Concha

Stella Petrou Concha

CEO, Reo Group & Co-Founder, HiveQ
Stella is the CEO of Reo Group, Co-Founder of HiveQ, an academic, and acclaimed author. A leading voice in corporate Australia, she helps boards and executives shape talent strategy and elevate human potential through self-mastery education.

More to be announced

The full agenda will be announced soon, but expect industry-leading keynote speakers, panel discussions, and executive-level workshops designed to leave you feeling energised and inspired.
More to be announced

Location

Address

ACO on the Pier

Suite 3, 13A Hickson Road, Dawes Point, NSW 2000

Transport to the ACO On The Pier

Why Sonder Summit?

People and safety leaders have roles that are broadening and complex - and the solutions are not always obvious. Think AI's rapid ascent, ongoing global tensions, and increasing regulation. Sonder Summit isn't just a one-day event; it's a vital reset. Here, leaders gain crucial respite, spark connection, and access essential support. Attendees will leave feeling inspired, reassured, and equipped to conquer the growing demands of employee health, safety, and wellbeing.

About Sonder

Sonder is a leading safety, medical, and mental health support company that helps organisations protect their people and mitigate risk. Available 24/7, Sonder’s proactive and on-demand support connects employees and students to expert guidance, real-time safety monitoring, and immediate assistance when they need it most.

Sonder Summit FAQs

Download the report