Meet the team

We are small.
And we are mighty.

Peta Allsopp (MBA)

Chief Marketing Officer

For 25+ years, Peta has elevated brands, launched category-defining innovations, and led organisations through pivotal growth and transformation.

Stephanie King (MBA)

Director, Chief Marketing Officer

An exceptional people leader, Stephanie creates and implements strategy with conviction and compassion.

Alexandra King

Director, Chief Marketing Officer

With equal parts commercial mindedness and empathy, Ali leads with connection, purpose, and impact.

Vivian Oppl

Chief Marketing Officer

Global Marketing Leader with over two decades of experience across service and product marketing, digital marketing transformation and brand strategy.

A company built on values, and led by sisters.

Book a Free Call
Book a Free Call
document.addEventListener('DOMContentLoaded', function() { const videoContainers = document.querySelectorAll('.video-container'); function formatTime(seconds) { const minutes = Math.floor(seconds / 60); seconds = Math.floor(seconds % 60); return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; } function pauseOtherVideos(currentVideo) { videoContainers.forEach(container => { const video = container.querySelector('.inline-video'); if (video !== currentVideo && !video.paused) { video.pause(); } }); } videoContainers.forEach(videoContainer => { const video = videoContainer.querySelector('.inline-video'); const videoControls = videoContainer.querySelector('.videocontrols'); const playPauseBtn = videoContainer.querySelector('.playpausebtn'); const playPauseIcon = videoContainer.querySelector('.playPauseIcon'); const muteBtn = videoContainer.querySelector('.control-button.mutebtn'); const volumeIcon = videoContainer.querySelector('svg.volumeicon'); // const volumeIconSvg = videoContainer.getElementById('volumeIcon'); const progressBar = videoContainer.querySelector('.progressbar'); const progressContainer = videoContainer.querySelector('.progress-container'); const timeDisplay = videoContainer.querySelector('.time-display'); const centerPlay = videoContainer.querySelector('.centerplay'); const fullscreenIcon = videoContainer.querySelector('.fullscreen-icon'); const exitFullscreenIcon = videoContainer.querySelector('.exit-fullscreen-icon'); let isPlaying = !video.paused; function updatePlayPauseIcon() { if (isPlaying) { playPauseIcon.innerHTML = ''; // pause videoContainer.classList.remove('video-paused'); } else { playPauseIcon.innerHTML = ''; // play videoContainer.classList.add('video-paused'); } } function updateVolumeIcon() { if (video.muted) { volumeIcon.innerHTML = ''; } else { volumeIcon.innerHTML = ''; } } function updateProgress() { const percent = (video.currentTime / video.duration) * 100; progressBar.style.width = `${percent}%`; timeDisplay.textContent = `${formatTime(video.currentTime)} / ${formatTime(video.duration)}`; } function togglePlayPause() { if (video.paused) { pauseOtherVideos(video); // <-- pause others video.play(); isPlaying = true; } else { video.pause(); isPlaying = false; } updatePlayPauseIcon(); } function toggleMute() { video.muted = !video.muted; updateVolumeIcon(); } function setProgress(e) { const rect = progressContainer.getBoundingClientRect(); const pos = (e.clientX - rect.left) / rect.width; video.currentTime = pos * video.duration; } playPauseBtn.addEventListener('click', togglePlayPause); centerPlay.addEventListener('click', togglePlayPause); muteBtn && muteBtn.addEventListener('click', toggleMute); progressContainer.addEventListener('click', setProgress); video.addEventListener('timeupdate', updateProgress); video.addEventListener('play', function() { isPlaying = true; updatePlayPauseIcon(); pauseOtherVideos(video); // ensure only one playing }); video.addEventListener('pause', function() { isPlaying = false; updatePlayPauseIcon(); }); video.addEventListener('click', function(e) { e.preventDefault(); togglePlayPause(); }); videoControls.addEventListener('mouseover', function() { videoControls.classList.add('active'); }); videoControls.addEventListener('mouseout', function() { videoControls.classList.remove('active'); }); video.addEventListener('loadedmetadata', function() { timeDisplay.textContent = `0:00 / ${formatTime(video.duration)}`; }); videoContainer.addEventListener('touchstart', function() { if (videoControls.style.opacity !== '1') { videoControls.style.opacity = '1'; setTimeout(() => { videoControls.style.opacity = '0'; }, 3000); } }); // Initialize icons on load updatePlayPauseIcon(); updateVolumeIcon(); if (fullscreenIcon && exitFullscreenIcon) { exitFullscreenIcon.style.visibility = 'hidden'; function updateFullscreenIcons() { if (document.fullscreenElement === videoContainer) { fullscreenIcon.style.visibility = "hidden"; exitFullscreenIcon.style.visibility = "visible"; } else { fullscreenIcon.style.visibility = "visible"; exitFullscreenIcon.style.visibility = "hidden"; } } function enterVideoFullscreen() { if (videoContainer.requestFullscreen) { videoContainer.requestFullscreen(); } else if (videoContainer.webkitRequestFullscreen) { videoContainer.webkitRequestFullscreen(); } else if (videoContainer.msRequestFullscreen) { videoContainer.msRequestFullscreen(); } } function exitVideoFullscreen() { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } } fullscreenIcon.addEventListener('click', function(e) { e.stopPropagation(); enterVideoFullscreen(); }); exitFullscreenIcon.addEventListener('click', function(e) { e.stopPropagation(); exitVideoFullscreen(); }); document.addEventListener('fullscreenchange', updateFullscreenIcons); } // Double tap to seek let lastTap = 0; const doubleTapThreshold = 300; // milliseconds videoContainer.addEventListener('touchend', function(e) { const currentTime = new Date().getTime(); const tapGap = currentTime - lastTap; if (tapGap < doubleTapThreshold) { const touch = e.changedTouches[0]; const rect = videoContainer.getBoundingClientRect(); const x = touch.clientX - rect.left; const containerWidth = rect.width; if (x < containerWidth / 2) { video.currentTime = Math.max(0, video.currentTime - 10); } else { video.currentTime = Math.min(video.duration, video.currentTime + 10); } } lastTap = currentTime; }); }); });