— Portfolio
Work We’re
Proud
Of.
Our process
for every project.
Deep Dive
We start with a thorough discovery phase — understanding your brand, goals, audience and competitive landscape.
Blueprint
We craft a clear creative and strategic roadmap before touching any pixels or code.
Build
Our team executes with obsessive attention to detail — design, development, animation, all in-house.
Deliver
We ship, iterate and support post-launch to ensure everything performs as beautifully as it looks.
Your project
belongs here.
(function(){
gsap.registerPlugin(ScrollTrigger);
var tl=gsap.timeline({delay:.2});
tl.to(‘.bms-page-hero .bms-section-label’,{opacity:1,y:0,duration:.7,ease:’power3.out’})
.to(‘.bms-page-hero h1′,{opacity:1,y:0,duration:1,ease:’power3.out’},’-=.3′);
gsap.utils.toArray(‘.bms-reveal’).forEach(function(el){
gsap.to(el,{opacity:1,y:0,duration:.9,ease:’power3.out’,scrollTrigger:{trigger:el,start:’top 88%’,toggleActions:’play none none none’}});
});
// FILTER
document.querySelectorAll(‘.bms-filter-btn’).forEach(function(btn){
btn.addEventListener(‘click’,function(){
document.querySelectorAll(‘.bms-filter-btn’).forEach(function(b){b.classList.remove(‘active’)});
this.classList.add(‘active’);
var filter=this.getAttribute(‘data-filter’);
document.querySelectorAll(‘.bms-project’).forEach(function(p){
var show=filter===’all’||p.getAttribute(‘data-cat’)===filter;
gsap.to(p,{opacity:show?1:0,scale:show?1:.95,duration:.4,ease:’power2.out’,pointerEvents:show?’all’:’none’});
});
});
});
// COUNT-UP
gsap.utils.toArray(‘[data-count]’).forEach(function(el){
var target=+el.getAttribute(‘data-count’);
ScrollTrigger.create({trigger:el,start:’top 85%’,once:true,onEnter:function(){
gsap.to({val:0},{val:target,duration:1.8,ease:’power2.out’,onUpdate:function(){el.textContent=Math.round(this.targets()[0].val)+(targetlastY&&y>100?-100:0,duration:.4,ease:’power2.out’});lastY=y;}});
document.getElementById(‘bmsHam’)&&document.getElementById(‘bmsHam’).addEventListener(‘click’,function(){var links=document.querySelector(‘.bms-nav-links’);if(links){var open=links.style.display===’flex’;links.style.display=open?’none’:’flex’;links.style.flexDirection=’column’;links.style.position=’absolute’;links.style.top=’70px’;links.style.left=’0′;links.style.right=’0′;links.style.background=’rgba(8,8,8,.97)’;links.style.padding=’2rem’;links.style.gap=’1.5rem’;}});
})();
