Showing source for: https://www.happycog.com/
Duration: 0.129912s
Server: cloudflare
<!DOCTYPE html>
<html class="h-full" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /><link rel="icon" href="https://www.happycog.com/favicon.ico" sizes="any">
<link rel="icon" href="https://www.happycog.com/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="https://www.happycog.com/apple-touch-icon.png">
<link rel="manifest" href="https://www.happycog.com/manifest.webmanifest"> <link rel="preconnect" href="https://happycog.imgix.net">
<link rel="dns-prefetch" href="https://cdn-assets.happycog.com">
<link rel="dns-prefetch" href="https://player.vimeo.com">
<link rel="dns-prefetch" href="https://app.termly.io"><link rel="preload" as="font" type="font/woff2" crossorigin href="https://www.happycog.com//dist/ABCSocial-Regular-19d11df6.woff2">
<link rel="preload" as="font" type="font/woff2" crossorigin href="https://www.happycog.com//dist/AntiqueNo6-Light-Web-7314b10b.woff2">
<script defer type="text/javascript" src="https://app.termly.io/resource-blocker/cfe60a28-d3cb-4daa-bb2e-49893770e2e4?autoBlock=off"></script>
<script type="module">!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)if("LINK"===e.tagName&&"modulepreload"===e.rel)r(e);else if(e.querySelectorAll)for(const o of e.querySelectorAll("link[rel=modulepreload]"))r(o)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerpolicy&&(r.referrerPolicy=e.referrerpolicy),"use-credentials"===e.crossorigin?r.credentials="include":"anonymous"===e.crossorigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();</script>
<script type="module" id="mainjs" src="https://www.happycog.com//dist/main-3bab2074.js" crossorigin onload="e=new CustomEvent('vite-script-loaded', {detail:{path: 'src/js/main.js'}});document.dispatchEvent(e);"></script>
<link href="https://www.happycog.com//dist/main-dc228acc.css" rel="stylesheet">
<script defer src="https://player.vimeo.com/api/player.js"></script>
<meta name="google-site-verification" content="poeZX3i1aRc-IYlH-IN5eh5WzJHQRNkiu3-d9dxk9B0" />
<meta name="facebook-domain-verification" content="veb0m2ipw8quzdxqiwtyjuwgrykqm6" /><title>Happy Cog® | Full-Service Digital Agency</title>
<script>dataLayer = [];
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-K48WB6Z');
</script>
<script type="text/javascript">var _rollbarConfig = {"accessToken":"d929c55b14664420aa12e8d780b5ba9f","captureUncaught":true,"captureUnhandledRejections":true,"captureIp":false,"payload":{"environment":"production"}};!function(r){var e={};function o(n){if(e[n])return e[n].exports;var t=e[n]={i:n,l:!1,exports:{}};return r[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=r,o.c=e,o.d=function(r,e,n){o.o(r,e)||Object.defineProperty(r,e,{enumerable:!0,get:n})},o.r=function(r){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(r,"__esModule",{value:!0})},o.t=function(r,e){if(1&e&&(r=o(r)),8&e)return r;if(4&e&&"object"==typeof r&&r&&r.__esModule)return r;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:r}),2&e&&"string"!=typeof r)for(var t in r)o.d(n,t,function(e){return r[e]}.bind(null,t));return n},o.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return o.d(e,"a",e),e},o.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},o.p="",o(o.s=0)}([function(r,e,o){"use strict";var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdn.rollbar.com/rollbarjs/refs/tags/v2.17.0/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,e,o){"use strict";var n=o(2);function t(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}var a=0;function l(r,e){this.options=r,this._rollbarOldOnError=null;var o=a++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:e,messages:[]})}var i=o(3),s=function(r,e){return new l(r,e)},d=function(r){return new i(s,r)};function c(r){return t((function(){var e=this,o=Array.prototype.slice.call(arguments,0),n={shim:e,method:r,args:o,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)}))}l.prototype.loadFull=function(r,e,o,n,a){var l=!1,i=e.createElement("script"),s=e.getElementsByTagName("script")[0],d=s.parentNode;i.crossOrigin="",i.src=n.rollbarJsUrl,o||(i.async=!0),i.onload=i.onreadystatechange=t((function(){if(!(l||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){i.onload=i.onreadystatechange=null;try{d.removeChild(i)}catch(r){}l=!0,function(){var e;if(void 0===r._rollbarDidLoad){e=new Error("rollbar.js did not load");for(var o,n,t,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];n=o.shift();)for(t=n.args||[],i=0;i<t.length;++i)if("function"==typeof(l=t[i])){l(e);break}}"function"==typeof a&&a(e)}()}})),d.insertBefore(i,s)},l.prototype.wrap=function(r,e,o){try{var n;if(n="function"==typeof e?e:function(){return e||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var e=o;throw e&&("string"==typeof e&&(e=new String(e)),e._rollbarContext=n()||{},e._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=e),e}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(e){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),p=0;p<u.length;++p)l.prototype[u[p]]=c(u[p]);r.exports={setupShim:function(r,e){if(r){var o=e.globalAlias||"Rollbar";if("object"==typeof r[o])return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var a=new d(e);return t((function(){e.captureUncaught&&(a._rollbarOldOnError=r.onerror,n.captureUncaughtExceptions(r,a,!0),e.wrapGlobalEventHandlers&&n.wrapGlobals(r,a,!0)),e.captureUnhandledRejections&&n.captureUnhandledRejections(r,a,!0);var t=e.autoInstrument;return!1!==e.enabled&&(void 0===t||!0===t||"object"==typeof t&&t.network)&&r.addEventListener&&(r.addEventListener("load",a.captureLoad.bind(a)),r.addEventListener("DOMContentLoaded",a.captureDomContentLoaded.bind(a))),r[o]=a,a}))()}},Rollbar:d}},function(r,e,o){"use strict";function n(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null);var t=e.handleUncaughtException.apply(e,n);o&&o.apply(r,n),"anonymous"===t&&(e.anonymousErrorsPending+=1)}function t(r,e,o){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(e,o,t){n.call(this,e,r.wrap(o),t)};t._rollbarOldAdd=n,t.belongsToShim=o,e.addEventListener=t;for(var a=e.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,e,o){a.call(this,r,e&&e._rollbar_wrapped||e,o)};l._rollbarOldRemove=a,l.belongsToShim=o,e.removeEventListener=l}}r.exports={captureUncaughtExceptions:function(r,e,o){if(r){var t;if("function"==typeof e._rollbarOldOnError)t=e._rollbarOldOnError;else if(r.onerror){for(t=r.onerror;t._rollbarOldOnError;)t=t._rollbarOldOnError;e._rollbarOldOnError=t}e.handleAnonymousErrors();var a=function(){var o=Array.prototype.slice.call(arguments,0);n(r,e,t,o)};o&&(a._rollbarOldOnError=t),r.onerror=a}},captureUnhandledRejections:function(r,e,o){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var o,n,t;try{o=r.reason}catch(r){o=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,n=t.promise)}catch(r){}o||(o="[unhandledrejection] error getting `reason` from event"),e&&e.handleUnhandledRejection&&e.handleUnhandledRejection(o,n)};n.belongsToShim=o,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}},wrapGlobals:function(r,e,o){if(r){var n,a,l="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<l.length;++n)r[a=l[n]]&&r[a].prototype&&t(e,r[a].prototype,o)}}}},function(r,e,o){"use strict";function n(r,e){this.impl=r(e,this),this.options=e,function(r){for(var e=function(r){return function(){var e=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,e)}},o="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}(n.prototype)}n.prototype._swapAndProcessMessages=function(r,e){var o,n,t;for(this.impl=r(this.options);o=e.shift();)n=o.method,t=o.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],o.ts]):this[n].apply(this,t));return this},r.exports=n},function(r,e,o){"use strict";r.exports=function(r){return function(e){if(!e&&!window._rollbarInitialized){for(var o,n,t=(r=r||{}).globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;o=window._rollbarShims[i++];)n||(n=o.handler),o.handler._swapAndProcessMessages(l,o.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);;</script><meta name="generator" content="SEOmatic">
<meta name="description" content="Happy Cog is an award-winning, full-service digital agency. We offer web development, design & branding, and digital marketing services.">
<meta name="referrer" content="no-referrer-when-downgrade">
<meta name="robots" content="all">
<meta content="en_US" property="og:locale">
<meta content="Happy Cog® | People first™" property="og:site_name">
<meta content="website" property="og:type">
<meta content="https://www.happycog.com/" property="og:url">
<meta content="Happy Cog® | Full-Service Digital Agency" property="og:title">
<meta content="Happy Cog is an award-winning, full-service digital agency. We offer web development, design & branding, and digital marketing services." property="og:description">
<meta content="https://www.linkedin.com/company/happy-cog" property="og:see_also">
<meta content="https://www.instagram.com/happycog/" property="og:see_also">
<meta content="https://www.facebook.com/happycog" property="og:see_also">
<meta content="https://twitter.com/happycog" property="og:see_also">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@happycog">
<meta name="twitter:creator" content="@happycog">
<meta name="twitter:title" content="Happy Cog® | Full-Service Digital Agency">
<meta name="twitter:description" content="Happy Cog is an award-winning, full-service digital agency. We offer web development, design & branding, and digital marketing services.">
<link href="https://www.happycog.com/" rel="canonical">
<link href="https://www.happycog.com/" rel="home">
<link type="text/plain" href="https://www.happycog.com/humans.txt" rel="author">
<style> .text-header-theme { color: var(--header-theme, #1B1B1B) }
.text-cog { color: var(--cog-theme, #1B1B1B) }
.text-hero-header { color: var(--hero-header, #1B1B1B) }
.text-accent { color: var(--accent, #1B1B1B) }
.text-theme { color: var(--theme, #1B1B1B) }
.bg-theme { background-color: var(--bg, #F5F4F1) }
.before\:text-accent:before { color: var(--accent, #1B1B1B) }
.\!text-accent { color: var(--accent, #1B1B1B) !important }
.bg-theme-gradient { background-image: linear-gradient(to right, rgba(255, 255, 255, 0), var(--bg, #F5F4F1)) }
.after\:bg-theme-gradient:after { background-image: linear-gradient(to right, rgba(255, 255, 255, 0), var(--bg, #F5F4F1) )}
.group:hover .group-hover\:text-accent { color: #8815E1 }
.hover\:text-accent:hover { color: #8815E1 }
.border-theme { border-color: var(--theme, #1B1B1B) }
</style></head>
<body class="antialiased h-full text-theme bg-theme font-sans transition-all"><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-K48WB6Z"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<a href="#main-content" class="skip-link">Skip to main content</a>
<div
class="kern ligatures flex min-h-screen flex-col overflow-hidden"
id="page-wrapper"
x-data="{
currentTheme: {
backgroundColor: '',
textColor: '',
accentColor: '',
},
themeBlocks: [],
footerTheme:{
backgroundColor: '#F5F4F1',
textColor: '#1B1B1B',
accentColor: '#1B1B1B'
},
pageTheme:{
backgroundColor: '#F5F4F1',
textColor: '#1B1B1B',
accentColor: '#1B1B1B'
},
defaultTheme:{
backgroundColor: '#F5F4F1',
textColor: '#1B1B1B',
accentColor: '#1B1B1B'
},
switchToThemeBlock(index) {
if (this.themeBlocks[index]) {
this.setCurrentTheme(this.themeBlocks[index]);
}
},
switchToSpecialTheme(name){
if(name == 'page'){
this.setCurrentTheme(this.pageTheme);
}else if (name == 'footer'){
this.setCurrentTheme(this.footerTheme);
}else{
this.setCurrentTheme(this.defaultTheme);
}
},
setCurrentTheme(theme){
this.currentTheme['backgroundColor'] = theme.backgroundColor;
this.currentTheme['textColor'] = theme.textColor;
this.currentTheme['accentColor'] = theme.accentColor;
},
styleTheme(theme){
document.body.style.setProperty('--bg', this.currentTheme['backgroundColor'] )
document.body.style.setProperty('--theme', this.currentTheme['textColor'] )
document.body.style.setProperty('--accent', this.currentTheme['accentColor'] )
},
lightOrDark(color){
let r, g, b, hsp;
if (color.match(/^rgb/)) {
color = color.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+(?:\.\d+)?))?\)$/);
r = color[1];
g = color[2];
b = color[3];
} else {
color = +('0x' + color.slice(1).replace(
color.length < 5 && /./g, '$&$&'));
r = color >> 16;
g = color >> 8 & 255;
b = color & 255;
}
hsp = Math.sqrt(
0.299 * (r * r) +
0.587 * (g * g) +
0.114 * (b * b)
);
return hsp > 127.5
},
visibleThemedAreas: 0,
footerInViewport: false,
lightBackground: true,
}"
x-init="
lightBackground = lightOrDark(currentTheme.backgroundColor),
$watch('currentTheme', (value) => {
styleTheme(currentTheme),
lightBackground = lightOrDark(currentTheme.backgroundColor)
})
"
>
<div
x-data="{
menuOpen: false,
menuAnimating: false,
heroScrolled: false,
introScrolled: false,
themeColor: '',
cogColor: '',
isMobileNav: window.matchMedia('(max-width: 1023px)').matches,
toggleMenu() {
if (this.menuOpen) {
return this.closeMenu()
}
this.menuOpen = true
this.menuAnimating = true
// Lock body scroll only at mobile/tablet widths where the menu is a
// full-screen overlay. At lg+ the menu is an inline nav bar.
document.body.classList.add('-lg:overflow-hidden')
},
closeMenu() {
if (!this.menuOpen) return
this.menuOpen = false
document.body.classList.remove('-lg:overflow-hidden')
setTimeout(() => {
this.menuAnimating = false
}, 1000)
},
blocks: [
{
themeColor: '#eeeeee',
cogColor: '#0a0a0a'
},
{
themeColor: '#e4e4e4',
cogColor: '#b89fcc'
},
{
themeColor: '#ffffff',
cogColor: '#ffffff'
},
{
themeColor: '#7f34b9',
cogColor: '#7f34b9'
},
{
themeColor: '#d9e184',
cogColor: '#d9e184'
},
{
themeColor: '#302dd0',
cogColor: '#302dd0'
},
{
themeColor: '#282828',
cogColor: '#282828'
},
{
themeColor: '#282828',
cogColor: '#282828'
},
{
themeColor: '#ffffff',
cogColor: '#0a0a0a'
},
],
activeBgIndex: 0,
activeElemIndex: 0,
activeElemVisibleIndex: 0,
themeColorIndex: 0,
cogColorIndex: 0,
activeTextIndex: 0,
atBottom: false,
textIndex: 0,
charIndex: 0,
desktopInit: false,
mobileInit: false,
controller: {},
typeEffect(element, direction = 'forward') {
if (element) {
let text = element.dataset.typeEffect
let delay = element.dataset.delay ?? 18
if (text && delay) {
// Under reduced motion, render the final text instantly
// rather than animating it. The header label and CTA are
// otherwise empty elements the typewriter fills. (HCOG-405)
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
element.textContent = text
return
}
let type = new Typewriter(element, {
cursor: '',
delay: delay,
});
// console.log(direction)
if (direction == 'forward') {
type.typeString(text).start()
} else {
// is backwards too much?
}
}
}
},
homepageScroll() {
// Respect prefers-reduced-motion: still load Lottie/video so any
// meaningful end-state content is delivered, but skip autoplay.
// Lottie jumps to its final frame instead of animating. (HCOG-405)
let reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches
// Tab navigation: bring slides into view when focus enters them.
// Slide content is position:fixed, so the browser thinks the focused
// element is already in the viewport and skips its default
// scrollIntoView — leaving keyboard users with focus on a link they
// can't see. Scroll to the block's anchor so ScrollMagic activates it.
// (HCOG-404 follow-up)
// Guarded two ways: bind once (homepageScroll() re-runs on every
// 768px breakpoint crossing and would stack document listeners),
// and only for :focus-visible so mouse clicks on slide links do
// not yank the scroll position mid-click — focusin fires for
// pointer focus too, not just keyboard.
if (!window.slideFocusScrollBound) {
window.slideFocusScrollBound = true
document.addEventListener('focusin', (e) => {
if (!e.target.matches(':focus-visible')) return
const block = e.target.closest('[data-block]')
if (!block) return
const blockTop = block.offsetTop
if (Math.abs(window.scrollY - blockTop) > 100) {
window.scrollTo({
top: blockTop,
behavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth',
})
}
})
}
$data.controller = new ScrollMagic.Controller({
refreshInterval: 500
})
let blocks = [...$root.querySelectorAll('[data-block]')]
if (blocks.length) {
blocks.forEach((block, index) => {
let dotlotties = block.querySelectorAll('dotlottie-player')
let lottieelements = block.querySelectorAll('[data-lottie]')
let videos = block.querySelectorAll('video')
let iframes = block.querySelectorAll('iframe')
let inner = block.querySelector('[x-ref=block-inner]')
let isLastBlock = index == blocks.length - 1
// scrolling down
new ScrollMagic.Scene({ triggerElement: block })
// .addIndicators()
.on('enter', (event) => {
if (dotlotties.length) {
dotlotties.forEach(dotlottie => {
let src = dotlottie.dataset.src
// console.log( src )
if (src && dotlottie.getAttribute('played') != 'true') {
dotlottie.load(src)
dotlottie.addEventListener('ready', () => {
if (reducedMotion) {
if (typeof dotlottie.seek === 'function') dotlottie.seek('100%')
if (typeof dotlottie.pause === 'function') dotlottie.pause()
} else {
// console.log('src is ready, going to call play(): ', src)
dotlottie.play()
}
dotlottie.setAttribute('played','true')
})
}
})
}
if (lottieelements.length) {
lottieelements.forEach(lottieelement => {
let src = lottieelement.dataset.src
let loop = lottieelement.dataset.loop
// console.log( src )
if (src && lottieelement.getAttribute('played') != 'true') {
let instance = lottie.loadAnimation({
container: lottieelement,
loop: loop ? true : false,
autoplay: false,
path: src
});
instance.addEventListener('DOMLoaded', () => {
if (reducedMotion) {
if (instance.totalFrames) instance.goToAndStop(instance.totalFrames - 1, true)
} else {
// console.log('play: ', instance)
instance.play()
}
})
lottieelement.setAttribute('played','true')
}
})
}
})
.triggerHook(0.70)
.addTo($data.controller)
new ScrollMagic.Scene({ triggerElement: block })
// .addIndicators()
.on('enter', (event) => {
if (videos.length) {
videos.forEach(video => {
if (video && !video.hasAttribute('loop') && video.getAttribute('played') != 'true') {
// console.log('play video: ', index)
if (!reducedMotion) video.play()
video.setAttribute('played','true')
}
})
}
if (iframes.length) {
iframes.forEach(iframe => {
if (iframe.getAttribute('data-played') != 'true') {
var player = new Vimeo.Player(iframe);
if (!reducedMotion) player.play();
iframe.setAttribute('data-played','true');
}
})
}
})
.triggerHook(0.99)
.addTo($data.controller)
if (inner) {
// scrolling down, handling last block
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('enter', (event) => {
if (index == $data.blocks.length - 1) {
$data.atBottom = true
}
})
.triggerHook(0.003)
.addTo($data.controller)
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('leave', (event) => {
if (index == $data.blocks.length - 1 && event.scrollDirection == 'FORWARD') {
$data.themeColorIndex = 0
$data.cogColorIndex = 0
}
})
.duration('90%')
.triggerHook(0.003)
.addTo($data.controller)
// scrolling down, handling blocks that are not the last block
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('enter', (event) => {
if (index < $data.blocks.length) {
$data.activeElemIndex = index
}
})
.triggerHook(0.003)
.addTo($data.controller)
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('enter', (event) => {
if (index < $data.blocks.length) {
$data.activeTextIndex = index
}
})
.triggerHook(window.innerWidth >= 768 ? 0.85 : 0.15)
.addTo($data.controller)
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('enter', (event) => {
if (index < $data.blocks.length) {
$data.activeBgIndex = index
$data.activeElemVisibleIndex = index
$data.themeColorIndex = index
$data.cogColorIndex = index
$data.activeTextIndex = index
let activeOuter = document.querySelector(`[data-index='${index}']`)
if (activeOuter) {
let headerLabel = activeOuter.querySelector('[data-header-label]')
let blockHeading = activeOuter.querySelector('[data-block-heading]')
let blockCta = activeOuter.querySelector('[data-block-cta]')
if (headerLabel) {
$data.typeEffect(headerLabel)
}
if (blockHeading) {
$data.typeEffect(blockHeading)
}
if (blockCta) {
$data.typeEffect(blockCta)
}
}
}
})
.triggerHook(window.innerWidth >= 768 ? 0.80 : 0.15)
.addTo($data.controller)
// scrolling up, handling last block
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('leave', (event) => {
if (index == $data.blocks.length - 1) {
$data.atBottom = false
}
})
.triggerHook(0.003)
.addTo($data.controller)
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('enter', (event) => {
if (index == $data.blocks.length - 1 && event.scrollDirection == 'REVERSE') {
$data.themeColorIndex = index
$data.cogColorIndex = index
}
})
.duration('90%')
.triggerHook(0.003)
.addTo($data.controller)
// scrolling up, handling blocks that are not the last block
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('leave', (event) => {
if (index - 1 >= 0) {
$data.activeElemIndex = index - 1
}
})
.triggerHook(0.003)
.addTo($data.controller)
new ScrollMagic.Scene({ triggerElement: inner })
// .addIndicators()
.on('leave', (event) => {
if (index - 1 >= 0) {
$data.activeTextIndex = index - 1
$data.activeBgIndex = index - 1
$data.activeElemVisibleIndex = index - 1
$data.themeColorIndex = index - 1
$data.cogColorIndex = index - 1
}
})
.triggerHook(window.innerWidth >= 768 ? 0.85 : 0.15)
.addTo($data.controller)
}
})
}
}
}"
x-id="['menu']"
x-init="
window.innerWidth >= 768 ? $data.desktopInit = true : $data.mobileInit = true,
homepageScroll(),
$data.themeColor = $data.blocks[0].themeColor,
$data.cogColor = $data.blocks[0].cogColor,
$watch('themeColorIndex', (value, oldValue) => {
if (value !== oldValue) {
$data.themeColor = $data.blocks[ value ].themeColor
}
}),
$watch('cogColorIndex', (value, oldValue) => {
if (value !== oldValue) {
$data.cogColor = $data.blocks[ value ].cogColor
}
})
"
@keydown.escape="
if (menuOpen || (typeof listingOpen !== 'undefined' && listingOpen)) {
$event.preventDefault()
closeMenu()
if (typeof closeListing === 'function') closeListing()
}
"
@resize.window.debounce.250ms="isMobileNav = window.matchMedia('(max-width: 1023px)').matches"
x-on:resize.window.debounce="
if (window.innerWidth >= 768) {
$data.mobileInit = false
if (!$data.desktopInit) {
$data.controller.destroy(true)
homepageScroll()
$data.desktopInit = true
}
} else {
$data.desktopInit = false
if (!$data.mobileInit) {
$data.controller.destroy(true)
homepageScroll()
$data.mobileInit = true
}
}
"
class="relative grow"
id="content-wrapper"
>
<header class="w-full z-30 pointer-events-none fixed text-header-theme z-20" :class="menuOpen ? ' -lg:fixed' : ''" :style="`--header-theme: ${themeColor};--cog-theme: ${cogColor}` ">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="relative flex justify-between py-[clamp(40px,2.7vw,53px)]">
<div class="">
<a
href="https://www.happycog.com/"
class="pointer-events-auto relative z-10 block w-[clamp(172px,11.8vw,235px)] transition-colors duration-75"
aria-label="Home — Happy Cog"
:class="menuOpen ?'text-purple-800 lg:text-current' : ''"
>
<svg class="wh-full fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 434 82"><path d="M414.615 40.807c0 10.088-5.163 15.087-11.323 15.087-6.522 0-9.512-4.272-9.512-15.087s2.99-15.541 9.512-15.541 11.323 4.726 11.323 15.541Zm-11.776 39.171c16.577 0 22.556-4.817 22.556-18.358V26.357H434V18.63h-19.385v9.907h-.453c-2.265-7.18-8.062-11.18-14.403-11.18-11.323 0-18.117 8.453-18.117 23.45 0 14.995 6.794 22.357 18.026 22.357 7.972 0 12.048-4.181 14.222-10.088h.453v11.542c0 6.543-2.627 8.634-10.779 8.634-7.428 0-9.059-1.272-9.15-6.635h-10.96c-.816 9.361 4.619 13.36 19.385 13.36Zm-59.748-38.535c0-6.543 1.087-11.27 3.624-14.087 1.812-2 4.257-2.817 7.247-2.817 2.989 0 5.435.818 7.246 2.817 2.537 2.818 3.624 7.544 3.624 14.087 0 6.544-1.087 11.18-3.624 13.997-1.811 1.999-4.257 2.726-7.246 2.726-2.99 0-5.435-.727-7.247-2.726-2.537-2.818-3.624-7.544-3.624-13.997Zm-12.138 0c0 13.815 9.602 23.903 23.009 23.903 13.406 0 23.008-10.088 23.008-23.903 0-13.814-9.692-24.084-23.008-24.084-13.316 0-23.009 9.997-23.009 24.084Zm-90.546-22.812h-24.82v7.726h7.156l14.675 38.625c-2.356 6.908-3.986 8.27-6.523 8.27-2.536 0-3.714-1.544-3.17-5.907h-9.964c-1.087 8.816 2.808 12.633 12.5 12.633 8.787 0 11.686-3.453 15.309-13.45l14.584-40.172h7.609v-7.725h-21.649v7.726h5.978l-8.515 24.81h-.543l-8.515-24.81h5.888V18.63Zm-58.699 22.812c0-11.178 4.71-16.177 11.323-16.177s9.511 4.908 9.511 16.177c0 11.27-2.989 15.632-9.511 15.632-6.16 0-11.323-5.18-11.323-15.632Zm.724 13.815c2.174 5.635 7.066 10.088 14.222 10.088 10.327 0 18.027-8.634 18.027-23.903 0-15.268-6.794-24.084-18.117-24.084-6.341 0-12.139 4.09-14.403 11.451h-.453V18.631h-19.385v7.726h8.605v44.987h-8.605v7.726h29.621v-7.726h-9.964V55.258h.452Zm-54.985-13.815c0-11.178 4.711-16.177 11.323-16.177 6.613 0 9.512 4.908 9.512 16.177 0 11.27-2.989 15.632-9.512 15.632-6.159 0-11.323-5.18-11.323-15.632Zm.725 13.815c2.174 5.635 7.066 10.088 14.222 10.088 10.327 0 18.026-8.634 18.026-23.903 0-15.268-6.794-24.084-18.117-24.084-6.341 0-12.138 4.09-14.403 11.451h-.453V18.631h-19.385v7.726h8.606v44.987h-8.606v7.726h29.621v-7.726h-9.964V55.258h.453ZM75.27 57.62c-3.08 0-4.71-2.363-4.71-6.817 0-4.453 1.721-6.18 5.797-7.816 2.356-.908 6.885-2.272 9.784-3.18v6.089c0 6.452-5.345 11.724-10.87 11.724Zm-4.8 7.725c9.058 0 14.765-7.27 15.67-12.451h.544v2.544c0 3.363.906 6.453 3.08 8.09 1.54 1.272 4.167 1.817 8.334 1.817 5.254 0 7.79-1.273 9.602-3.636 1.812-2.453 2.083-5.725 2.083-9.542v-9.361h-5.978V53.53c0 3-1.178 4.18-3.352 4.18s-3.352-1.09-3.352-4.09V28.63c0-4-2.264-7.998-6.612-9.634-2.808-1.182-6.885-1.636-12.139-1.636-14.221 0-18.75 5.09-18.75 12.088 0 1.181.09 2.453.271 3.726h10.417c-.543-6.907 1.359-9.27 8.062-9.27 5.345 0 7.79 1.454 7.79 6.816 0 3.817-.996 5.09-3.894 5.726-2.9.545-7.972 1.454-12.139 2.635-5.888 1.909-11.414 5.363-11.414 13.36 0 9.816 6.341 12.906 11.776 12.906ZM47.46 29.537c0-8.543-4.981-12.178-11.594-12.178-6.613 0-11.504 4.271-15.309 11.724h-.634V0H0v7.725h8.877v48.623H.362v7.725h25.364v-7.725H19.93V41.443c0-4.817 1.087-8.634 2.627-10.997 1.992-2.908 4.438-4.998 7.79-4.998 4.348 0 5.888 2.09 5.888 6.27v24.63h-5.616v7.725h24.73v-7.725h-7.881v-26.81h-.006Z"/><path d="M35.866 17.359c6.613 0 11.595 3.635 11.595 12.178h.006v26.811h7.88v7.725h-24.73v-7.725h5.617v-24.63c0-4.18-1.54-6.27-5.888-6.27-3.352 0-5.797 2.09-7.79 4.998-1.54 2.363-2.627 6.18-2.627 10.997v14.905h5.797v7.725H.362v-7.725h8.515V7.725H0V0h19.923v29.083h.634c3.805-7.452 8.696-11.724 15.309-11.724ZM324.898 45.219v2.635c0 10.452-6.884 17.723-19.022 17.723-14.222 0-23.19-9.27-23.19-23.994 0-13.723 9.149-23.993 20.834-23.993 5.526 0 9.059 2.726 11.958 7.27h.543v-5.998h8.877V35.95h-6.794c-.634-3.908-5.525-11.361-12.41-11.361-7.518 0-11.051 5.18-11.051 16.087 0 11.815 4.257 18.176 12.591 18.176 7.519 0 10.78-4.816 10.78-11.451v-2.181h6.884Z"/></svg>
</a>
</div>
<div class="pointer-events-none fixed inset-x-0 top-0">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="flex justify-end pt-[clamp(32px,2.2vw,43px)]">
<div class="items-center lg:flex lg:justify-end pointer-events-auto" @click.outside="closeMenu()" x-trap="menuOpen">
<div class="shrink">
<button class="relative z-30 group/cog wh-[clamp(51px,3.5vw,70px)] duration-75 text-cog transition-colors" :class="[
menuOpen ? '-lg:!text-purple-800 lg:text-current ' : '',
!menuOpen && heroScrolled ? '!text-accent' : '',
menuOpen && heroScrolled ? '-lg:!text-purple-800 lg:!text-accent' : ''
]" @scroll.window="if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) { $refs.cog.style.transform = `rotate(${window.pageYOffset/90}deg)` }" @click="toggleMenu()" :aria-expanded="menuOpen" :aria-controls="$id('menu')" :aria-label="menuOpen ? 'Close main menu' : 'Open main menu'">
<div class="wh-[97%] absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2">
<div
class="transition-transform duration-300 group-hover/cog:!rotate-12 group-hover/cog:!ease-in-out-back"
:class="menuOpen ?'lg:counter-clockwise' : 'lg:clockwise'"
>
<svg x-ref="cog" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 58 58" aria-hidden="true" class="fill-current">
<path d="M57.3 27.1h-2.2c-.5 0-.9-.4-.9-.9 0-.4-.1-.8-.1-1.2-.1-.5.2-.9.7-1.1l2.1-.6c.4-.1.6-.5.5-.9l-.6-2.2c-.1-.4-.5-.6-.9-.5l-2.1.6c-.5.1-.9-.1-1.1-.6-.1-.4-.3-.8-.5-1.1-.2-.4 0-1 .4-1.2l1.9-1.1c.3-.2.5-.6.3-1l-1.2-2c-.2-.3-.6-.5-1-.3l-1.9 1.1c-.4.2-.9.1-1.2-.3-.2-.3-.5-.6-.7-1-.3-.4-.3-.9.1-1.3l1.5-1.5c.3-.3.3-.7 0-1l-1.6-1.6c-.3-.3-.7-.3-1 0l-1.5 1.5c-.3.3-.9.4-1.3.1-.3-.2-.6-.5-1-.7-.4-.3-.5-.8-.3-1.2l1.1-1.9c.2-.3.1-.8-.3-1l-2-1.2c-.3-.2-.8-.1-1 .3l-1.1 1.9c-.2.4-.8.6-1.2.4-.4-.2-.7-.3-1.1-.5-.5-.2-.7-.7-.6-1.1l.6-2.1c.1-.4-.1-.8-.5-.9L35.4.4c-.4-.1-.8.1-.9.5L34 3.3c-.2.5-.6.7-1.1.7-.4-.1-.8-.1-1.2-.1-.5 0-.9-.5-.9-.9V.7c0-.4-.3-.7-.7-.7h-2.3c-.4 0-.7.3-.7.7v2.2c0 .5-.4.9-.8.9s-.8.1-1.2.1c-.5.1-.9-.1-1.1-.6l-.6-2.1c-.1-.4-.5-.6-.9-.5l-2.2.6c-.4.1-.6.5-.5.9l.6 2.1c.1.5-.1.9-.6 1.1-.4.1-.8.3-1.1.5-.4.2-1 0-1.2-.4l-1.1-1.9c-.2-.3-.6-.5-1-.3l-2 1.2c-.3.2-.5.6-.3 1l1.1 1.9c.2.4.1.9-.3 1.2-.3.2-.6.5-1 .7-.4.3-.9.3-1.3-.1L10 7.7c-.3-.3-.7-.3-1 0L7.7 9.3c-.3.3-.3.7 0 1l1.5 1.5c.3.3.4.9.1 1.3-.2.3-.5.6-.7 1-.3.4-.8.5-1.2.3l-1.9-1.1c-.3-.2-.8-.1-1 .3l-1.2 2c-.2.3-.1.8.3 1l1.9 1.1c.4.2.6.8.4 1.2-.2.4-.3.7-.5 1.1-.2.5-.7.7-1.1.6L2.2 20c-.4-.1-.8.1-.9.5l-.6 2.2c-.1.4.1.8.5.9l2.1.4c.5.1.8.6.7 1.1-.1.4-.1.8-.1 1.2-.1.5-.5.9-.9.9H.7c-.4 0-.7.3-.7.7v2.3c0 .4.3.7.7.7h2.2c.5 0 .9.4.9.9 0 .4.1.8.1 1.2.1.4-.1.8-.6 1l-2.1.6c-.4.1-.6.5-.5.9l.6 2.2c.1.4.5.6.9.5l2.1-.6c.5-.1.9.1 1.1.6.1.4.3.8.5 1.1.2.4 0 1-.4 1.2l-1.9 1.1c-.3.2-.5.6-.3 1l1.2 2c.2.3.6.5 1 .3l1.9-1.1c.4-.2.9-.1 1.2.3.2.3.5.6.7 1 .3.4.3.9-.1 1.3l-1.5 1.5c-.3.3-.3.7 0 1l1.6 1.6c.3.3.7.3 1 0l1.5-1.6c.3-.3.9-.4 1.3-.1.3.2.6.5 1 .7.4.3.5.8.3 1.2l-1.1 1.9c-.2.3-.1.8.3 1l2 1.2c.3.2.8.1 1-.3l1.1-1.9c.2-.4.8-.6 1.2-.4.4.2.7.3 1.1.5.5.2.7.7.6 1.1l-.6 2.1c-.1.4.1.8.5.9l2.2.6c.4.1.8-.1.9-.5l.6-2.1c.1-.5.6-.8 1.1-.7.4.1.8.1 1.2.1.5 0 .9.5.9.9v2.2c0 .4.3.7.7.7h2.3c.4 0 .7-.3.7-.7v-2.2c0-.5.4-.9.9-.9.4 0 .8-.1 1.2-.1.5-.1.9.2 1.1.7l.6 2.1c.1.4.5.6.9.5l2.2-.6c.4-.1.6-.5.5-.9l-.6-2.1c-.1-.5.1-.9.6-1.1.4-.1.8-.3 1.1-.5.4-.2 1 0 1.2.4l1.1 1.9c.2.3.6.5 1 .3l2-1.2c.3-.2.5-.6.3-1l-1.1-1.9c-.2-.4-.1-.9.3-1.2.3-.2.6-.5 1-.7.4-.3.9-.3 1.3.1l1.6 1.6c.3.3.7.3 1 0l1.6-1.6c.3-.3.3-.7 0-1l-1.6-1.5c-.3-.3-.4-.9-.1-1.3.2-.3.5-.6.7-1 .3-.4.8-.5 1.2-.3l1.9 1.1c.3.2.8.1 1-.3l1.2-2c.2-.3.1-.8-.3-1L53 40.5c-.4-.2-.6-.8-.4-1.2.2-.4.3-.7.5-1.1.2-.5.7-.7 1.1-.6l2.1.6c.4.1.8-.1.9-.5l.6-2.2c.1-.4-.1-.8-.5-.9l-2.6-.6c-.5-.1-.8-.6-.7-1.1.1-.4.1-.8.2-1.2 0-.5.5-.9.9-.9h2.2c.4 0 .7-.3.7-.7v-2.3c0-.3-.3-.7-.7-.7zM29 53C15.7 53 5 42.3 5 29S15.7 5 29 5s24 10.7 24 24-10.7 24-24 24z"/>
</svg>
</div>
</div>
<svg x-show="menuOpen" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" aria-hidden="true" class="wh-full absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 fill-current" style="display: none;">
<path d="M29 5.25C15.88 5.25 5.25 15.88 5.25 29S15.88 52.75 29 52.75 52.75 42.12 52.75 29 42.12 5.25 29 5.25zm7.13 32.51-7.01-7.01-7.26 7.26-1.76-1.76 7.26-7.26-7.24-7.24 1.76-1.76 7.24 7.24 7-7 1.76 1.76-7 7L37.89 36l-1.76 1.76z"/>
</svg>
<svg x-show="!menuOpen" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 58 58" aria-hidden="true" class="wh-full absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 fill-current transition-transform duration-300 group-hover/cog:!rotate-90 group-hover/cog:!ease-in-out-back">
<path d="M29 5.25C15.88 5.25 5.25 15.88 5.25 29S15.88 52.75 29 52.75 52.75 42.12 52.75 29 42.12 5.25 29 5.25zm-4.44 34.57v.01h-2.49V17.17h2.49v22.65zm10.37.01h-2.49V17.17h2.49v22.66z"/>
</svg>
</button>
</div>
<div
:id="$id('menu')"
:role="isMobileNav ? 'dialog' : null"
:aria-modal="isMobileNav ? 'true' : null"
aria-label="Main menu"
class="overflow-auto fixed inset-0 w-full h-screen transition-opacity lg:relative lg:top-auto lg:left-auto lg:z-20 lg:max-w-none lg:bg-transparent bg-stone-300 lg:h-[clamp(51px,3.5vw,70px)] lg:transition-width-opacity lg:overflow-visible"
:class="[ menuOpen ?'-lg:translate-0 opacity-100 lg:w-full' : '-lg:translate-x-full opacity-0 lg:w-0',
menuAnimating ? 'lg:duration-500' : 'lg:!duration-0'
]"
x-cloak
>
<div
class="h-full"
x-data="{
servicesOpen: false,
servicesTimer: null,
openServices() { clearTimeout(this.servicesTimer); this.servicesOpen = true },
closeServices() { this.servicesTimer = setTimeout(() => { this.servicesOpen = false }, 180) },
}"
:class="servicesOpen ? 'lg:overflow-visible' : 'lg:overflow-hidden'"
>
<nav aria-label="Primary" class="flex relative justify-center items-center px-4 h-full text-purple-800 lg:px-10 lg:ml-4 lg:bg-white box-border lg:border-black/10 lg:text-zinc-900 lg:rounded-[3.75rem]">
<ul class="flex flex-col items-center text-center lg:flex-row lg:gap-8">
<li>
<a class="
link-underline leading-5xl tracking-tight font-slab text-[3.625rem]
lg:whitespace-nowrap lg:text-[clamp(19px,1.325vw,23px)] lg:font-sans lg:font-[500] lg:tracking-[-1%] lg:hover:text-[#7D2ABE] lg:hover:!decoration-[#B89FCC] lg:focus:text-[#7D2ABE] lg:focus:!decoration-[#B89FCC]
" href="https://www.happycog.com/work" :tabindex="menuOpen ? false : '-1'" data-click-item='{"event":"click_navigation_link","click_text":"work","click_url":"https:\/\/www.happycog.com\/work"}'>work</a>
</li>
<li
class="lg:static"
x-data="{ mobileOpen: false }"
@mouseenter="openServices()"
@mouseleave="closeServices()"
>
<span class="hidden lg:inline-flex items-center lg:gap-1">
<a class="
link-underline leading-5xl tracking-tight font-slab text-[3.625rem]
lg:whitespace-nowrap lg:text-[clamp(19px,1.325vw,23px)] lg:font-sans lg:font-[500] lg:tracking-[-1%] lg:hover:text-[#7D2ABE] lg:hover:!decoration-[#B89FCC] lg:focus:text-[#7D2ABE] lg:focus:!decoration-[#B89FCC]
" href="https://www.happycog.com/services" :tabindex="menuOpen ? false : '-1'" @focus="openServices()" @blur="closeServices()" aria-haspopup="true" :aria-expanded="servicesOpen" data-click-item='{"event":"click_navigation_link","click_text":"services","click_url":"https:\/\/www.happycog.com\/services"}'>services</a>
<svg viewBox="0 0 20 37" class="hidden lg:block w-[8px] h-[15px] stroke-current transition-transform duration-200" fill="none" :class="servicesOpen ? '-rotate-180' : ''" aria-hidden="true">
<path d="M9.49059 2.74463C6.70268 7.26558 3.57332 11.7459 1.58866 16.7076C1.1426 17.8228 2.90164 14.6961 3.55112 13.6858" stroke-width="2.50083" stroke-linecap="round"/>
<path d="M10.4281 3.6825C10.8739 5.38216 11.6043 6.97997 12.3211 8.57996C13.9046 12.1147 15.5661 15.6086 16.9581 19.2259C17.3657 20.2853 18.0869 23.5739 18.0869 22.4387" stroke-width="2.50083" stroke-linecap="round"/>
<path d="M8.5542 34.7867C8.92301 23.8452 9.64831 12.9136 9.64831 1.96326" stroke-width="2.50083" stroke-linecap="round"/>
</svg>
</span>
<button
type="button"
class="lg:hidden inline-flex items-center gap-3
link-underline leading-5xl tracking-tight font-slab text-[3.625rem]
lg:whitespace-nowrap lg:text-[clamp(19px,1.325vw,23px)] lg:font-sans lg:font-[500] lg:tracking-[-1%] lg:hover:text-[#7D2ABE] lg:hover:!decoration-[#B89FCC] lg:focus:text-[#7D2ABE] lg:focus:!decoration-[#B89FCC]
"
@click="mobileOpen = !mobileOpen"
:aria-expanded="mobileOpen"
aria-controls="services-mobile-panel"
>
services
<svg viewBox="0 0 20 37" class="w-[10px] h-[19px] stroke-current transition-transform duration-200 motion-reduce:transition-none" fill="none" :class="mobileOpen ? '-rotate-180' : ''" aria-hidden="true">
<path d="M9.49059 2.74463C6.70268 7.26558 3.57332 11.7459 1.58866 16.7076C1.1426 17.8228 2.90164 14.6961 3.55112 13.6858" stroke-width="2.50083" stroke-linecap="round"/>
<path d="M10.4281 3.6825C10.8739 5.38216 11.6043 6.97997 12.3211 8.57996C13.9046 12.1147 15.5661 15.6086 16.9581 19.2259C17.3657 20.2853 18.0869 23.5739 18.0869 22.4387" stroke-width="2.50083" stroke-linecap="round"/>
<path d="M8.5542 34.7867C8.92301 23.8452 9.64831 12.9136 9.64831 1.96326" stroke-width="2.50083" stroke-linecap="round"/>
</svg>
</button>
<div
id="services-mobile-panel"
class="lg:hidden grid grid-rows-[0fr] transition-[grid-template-rows] duration-300 ease-in-out motion-reduce:transition-none"
:class="mobileOpen ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'"
:inert="!mobileOpen"
>
<div class="overflow-hidden">
<ul class="flex flex-col items-center gap-3 py-4">
<li><a href="https://www.happycog.com/services" class="link-underline font-slab text-[1.75rem] leading-tight">what we do</a></li>
<li><a href="https://www.happycog.com/services" class="link-underline font-slab text-[1.75rem] leading-tight">platforms & tech</a></li>
<li><a href="/work" class="link-underline font-slab text-[1.75rem] leading-tight">industries</a></li>
</ul>
</div>
</div>
<div
class="hidden lg:block absolute right-0 top-full pt-4 z-30"
x-show="servicesOpen"
x-cloak
@mouseenter="openServices()"
@mouseleave="closeServices()"
>
<div class="w-[min(1040px,calc(100vw-3rem))] bg-white text-zinc-900 rounded-[1.5rem] shadow-2xl ring-1 ring-black/5 p-8 text-left">
<div class="grid grid-cols-3 gap-x-10">
<div>
<p class="font-[600] text-[13px] uppercase tracking-[0.08em] text-zinc-900 pb-3 mb-5 border-b border-black/10">What we do</p>
<ul class="flex flex-col gap-0.5">
<li>
<a href="/services/digital-strategy/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Digital Strategy <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/services/ai-transformation/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">AI Transformation <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/services/design/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Web & App Design <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/services/cms-development/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">CMS Development <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Mobile App Development</span>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Branding & Identity</span>
</li>
<li>
<a href="/services/seo/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Organic SEO & GEO <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/services/analytics/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Digital Analytics <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Conversion Rate Optimization</span>
</li>
<li>
<a href="/services/paid-media/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Paid Media <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Accessibility & WCAG Compliance</span>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Systems & Platform Integration</span>
</li>
<li>
<a href="/services/replatforming/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Replatforming & Migrations <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Intranets & Employee Experience</span>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Staff Augmentation & Embedded Teams</span>
</li>
<li><a href="https://www.happycog.com/services" class="inline-flex items-center gap-1.5 rounded-md -mx-2 mt-1 px-2 py-1 text-[14px] font-[600] text-[#7D2ABE] transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB]">See all <svg viewBox="0 0 28 28" class="w-[14px] h-[14px] stroke-current shrink-0" fill="none" aria-hidden="true">
<path d="M2.09241 3.46565C4.92504 3.50342 7.75785 3.5825 10.5848 3.34408C12.8292 3.1548 15.0438 2.70917 17.2711 2.3889C18.5855 2.19991 19.9271 1.97534 21.2568 1.92868C22.0932 1.89933 21.7198 2.98971 21.6649 3.53512C21.1341 8.80798 20.3744 14.0797 19.5982 19.3216C19.3242 21.1721 18.8167 26.7497 18.8167 24.879" stroke-width="2.50083" stroke-linecap="round"/>
<path d="M13.5024 15.5009C14.9007 18.7815 16.5022 22.0328 18.1568 25.1916C18.2577 25.3844 18.3218 25.8397 18.5388 25.9384C18.9138 26.1088 21.964 20.9601 22.1685 20.6415C23.5623 18.4707 24.8052 16.2893 25.8503 13.9379" stroke-width="2.50083" stroke-linecap="round"/>
</svg>
</a></li>
</ul>
</div>
<div class="border-l border-black/10 pl-10">
<p class="font-[600] text-[13px] uppercase tracking-[0.08em] text-zinc-900 pb-3 mb-5 border-b border-black/10">Platforms & tech</p>
<ul class="flex flex-col gap-0.5">
<li>
<a href="/experience/wordpress-vip-development" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">WordPress <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/experience/craft-cms-development" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Craft CMS <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/stripe/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Stripe <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/experience/sanity-io-cms-development" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Sanity <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/experience/contentful-cms-development" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Contentful <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Klaviyo</span>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Shopify</span>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Salesforce</span>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">HubSpot</span>
</li>
<li>
<a href="/experience/happy-food" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Happy Food <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Webflow</span>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Storyblok</span>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Square</span>
</li>
<li><a href="https://www.happycog.com/services" class="inline-flex items-center gap-1.5 rounded-md -mx-2 mt-1 px-2 py-1 text-[14px] font-[600] text-[#7D2ABE] transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB]">See all <svg viewBox="0 0 28 28" class="w-[14px] h-[14px] stroke-current shrink-0" fill="none" aria-hidden="true">
<path d="M2.09241 3.46565C4.92504 3.50342 7.75785 3.5825 10.5848 3.34408C12.8292 3.1548 15.0438 2.70917 17.2711 2.3889C18.5855 2.19991 19.9271 1.97534 21.2568 1.92868C22.0932 1.89933 21.7198 2.98971 21.6649 3.53512C21.1341 8.80798 20.3744 14.0797 19.5982 19.3216C19.3242 21.1721 18.8167 26.7497 18.8167 24.879" stroke-width="2.50083" stroke-linecap="round"/>
<path d="M13.5024 15.5009C14.9007 18.7815 16.5022 22.0328 18.1568 25.1916C18.2577 25.3844 18.3218 25.8397 18.5388 25.9384C18.9138 26.1088 21.964 20.9601 22.1685 20.6415C23.5623 18.4707 24.8052 16.2893 25.8503 13.9379" stroke-width="2.50083" stroke-linecap="round"/>
</svg>
</a></li>
</ul>
</div>
<div class="border-l border-black/10 pl-10">
<p class="font-[600] text-[13px] uppercase tracking-[0.08em] text-zinc-900 pb-3 mb-5 border-b border-black/10">Industries</p>
<ul class="flex flex-col gap-0.5">
<li>
<a href="/verticals/ecommerce/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">E-Commerce <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/verticals/restaurant/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Restaurant/QSR <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/verticals/non-profit/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Non-Profit <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/verticals/education/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Education <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/verticals/b2b/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">B2B <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<a href="/verticals/publishing/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Publishing <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li>
<span class="block rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 cursor-default">Law</span>
</li>
<li>
<a href="/verticals/financial-services/" class="group/item flex items-center gap-1.5 rounded-md -mx-2 px-2 py-1 text-[14px] leading-snug text-zinc-600 transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB] hover:text-[#7D2ABE] focus:bg-[#F6F1FB] focus:text-[#7D2ABE]">Financial Services <svg viewBox="0 0 28 27" class="w-3 h-3 stroke-[#7D2ABE] shrink-0 opacity-[.45] transition-opacity group-hover/item:opacity-100 group-focus/item:opacity-100" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</li>
<li><a href="/work" class="inline-flex items-center gap-1.5 rounded-md -mx-2 mt-1 px-2 py-1 text-[14px] font-[600] text-[#7D2ABE] transition-colors no-underline hover:no-underline focus:no-underline hover:bg-[#F6F1FB]">See all <svg viewBox="0 0 28 28" class="w-[14px] h-[14px] stroke-current shrink-0" fill="none" aria-hidden="true">
<path d="M2.09241 3.46565C4.92504 3.50342 7.75785 3.5825 10.5848 3.34408C12.8292 3.1548 15.0438 2.70917 17.2711 2.3889C18.5855 2.19991 19.9271 1.97534 21.2568 1.92868C22.0932 1.89933 21.7198 2.98971 21.6649 3.53512C21.1341 8.80798 20.3744 14.0797 19.5982 19.3216C19.3242 21.1721 18.8167 26.7497 18.8167 24.879" stroke-width="2.50083" stroke-linecap="round"/>
<path d="M13.5024 15.5009C14.9007 18.7815 16.5022 22.0328 18.1568 25.1916C18.2577 25.3844 18.3218 25.8397 18.5388 25.9384C18.9138 26.1088 21.964 20.9601 22.1685 20.6415C23.5623 18.4707 24.8052 16.2893 25.8503 13.9379" stroke-width="2.50083" stroke-linecap="round"/>
</svg>
</a></li>
</ul>
</div>
</div>
<div class="mt-8">
<a href="/work" class="inline-flex items-center gap-2.5 font-slab text-[20px] text-[#7D2ABE] no-underline hover:no-underline focus:no-underline hover:text-[#5c1f92]">
See our work
<svg viewBox="0 0 28 27" class="w-[19px] h-[19px] stroke-current shrink-0" fill="none" aria-hidden="true">
<path d="M7.57507 1.42297C10.6307 1.4518 13.6863 1.49086 16.7419 1.52741C17.5387 1.53694 22.9648 1.57652 24.4699 1.66665C25.4897 1.72771 25.5246 1.53295 25.3866 2.17721C24.72 5.288 23.7018 8.35598 22.8686 11.4253C22.1211 14.1787 21.28 16.9449 21.1629 19.8146C21.0938 21.5055 21.4625 19.4644 21.569 18.9676" stroke-width="2.48137" stroke-linecap="round"/>
<path d="M25.9553 1.42297C17.3702 8.76188 9.59175 16.9493 1.72705 25.0246" stroke-width="2.48137" stroke-linecap="round"/>
</svg>
</a>
</div>
</div>
</div>
</li>
<li>
<a class="
link-underline leading-5xl tracking-tight font-slab text-[3.625rem]
lg:whitespace-nowrap lg:text-[clamp(19px,1.325vw,23px)] lg:font-sans lg:font-[500] lg:tracking-[-1%] lg:hover:text-[#7D2ABE] lg:hover:!decoration-[#B89FCC] lg:focus:text-[#7D2ABE] lg:focus:!decoration-[#B89FCC]
" href="https://www.happycog.com/about" :tabindex="menuOpen ? false : '-1'" data-click-item='{"event":"click_navigation_link","click_text":" about us","click_url":"https:\/\/www.happycog.com\/about"}'> about us</a>
</li>
<li>
<a class="
link-underline leading-5xl tracking-tight font-slab text-[3.625rem]
lg:whitespace-nowrap lg:text-[clamp(19px,1.325vw,23px)] lg:font-sans lg:font-[500] lg:tracking-[-1%] lg:hover:text-[#7D2ABE] lg:hover:!decoration-[#B89FCC] lg:focus:text-[#7D2ABE] lg:focus:!decoration-[#B89FCC]
" href="https://www.happycog.com/insights" :tabindex="menuOpen ? false : '-1'" data-click-item='{"event":"click_navigation_link","click_text":"insights","click_url":"https:\/\/www.happycog.com\/insights"}'>insights</a>
</li>
<li>
<a class="
link-underline leading-5xl tracking-tight font-slab text-[3.625rem]
lg:whitespace-nowrap lg:text-[clamp(19px,1.325vw,23px)] lg:font-sans lg:font-[500] lg:tracking-[-1%] lg:hover:text-[#7D2ABE] lg:hover:!decoration-[#B89FCC] lg:focus:text-[#7D2ABE] lg:focus:!decoration-[#B89FCC]
" href="https://www.happycog.com/careers" :tabindex="menuOpen ? false : '-1'" data-click-item='{"event":"click_navigation_link","click_text":"jobs","click_url":"https:\/\/www.happycog.com\/careers"}'>jobs</a>
</li>
<li>
<a class="
link-underline leading-5xl tracking-tight font-slab text-[3.625rem]
lg:whitespace-nowrap lg:text-[clamp(19px,1.325vw,23px)] lg:font-sans lg:font-[500] lg:tracking-[-1%] lg:hover:text-[#7D2ABE] lg:hover:!decoration-[#B89FCC] lg:focus:text-[#7D2ABE] lg:focus:!decoration-[#B89FCC]
" href="https://www.happycog.com/contact" :tabindex="menuOpen ? false : '-1'" data-click-item='{"event":"click_navigation_link","click_text":"contact","click_url":"https:\/\/www.happycog.com\/contact"}'>contact</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<main id="main-content" tabindex="-1" class="
focus:outline-none
">
<div class="md:flex relative min-h-screen z-20" x-ref="block-outer" data-block="centeredContent" data-index="0">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 0 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="background-color: #7d2abe;">
<div class="absolute inset-0 h-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen mx-auto flex flex-col justify-end h-full pt-[176px] relative transition-opacity duration-500 z-[1] pb-[11vh]" x-ref="block-text" style="">
<div class="relative" :class="activeTextIndex == 0 ? '' : 'md:up-and-out md:pointer-events-none'">
<h2 class="type-alpha-slab absolute top-0 left-1/2 -translate-x-1/2 w-full text-center -xs:[&_br]:hidden" style="color: #eeeeee;">There’s nothing we don’t do. <br />
Digitally speaking.</h2>
<p class="type-alpha-slab invisible text-center -xs:[&_br]:hidden" aria-hidden="true">There’s nothing we don’t do. <br />
Digitally speaking.</p>
</div>
</div>
</div>
</div>
</div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500 pointer-events-none absolute md:fixed" :class="[activeElemVisibleIndex == 0 ? 'md:opacity-100' : 'md:opacity-0']" x-cloak>
<div class="absolute inset-x-0 top-[5vw] bottom-[25vw] z-[1] flex lg:inset-0">
<div class="mx-auto w-full h-full self-center md:hidden">
<div class="aspect-[9/16] h-full w-full object-scale-down p-[2%]">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/Homepage_Hero-01-mobile_2024-05-21-174817_tfvd.json"
data-loop=""
class="flex h-full flex-col justify-center"
></div>
</div>
</div>
<div class="flex-1 mx-auto lg:mb-24 self-center max-w-screen-3xl hidden md:block">
<div class="aspect-[2.15/1] object-scale-down p-[2%]">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/Homepage_Home_2024-05-08-172246_sgck.json"
data-loop=""
class="flex h-full flex-col justify-center"
></div>
</div>
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen" x-ref="block-inner"></div>
</div>
</div>
</div>
<div class="md:flex relative min-h-screen md:items-end" x-ref="block-outer" data-block="splitContent" data-index="1">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 1 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="background-color: #191717;"></div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500 relative md:fixed" :class="[activeElemVisibleIndex == 1 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none']" x-cloak>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen flex flex-col items-center gap-6 py-[5vh] md:py-0 md:flex-row md:flex-row-reverse">
<div class="flex w-full grow basis-1/2 items-end">
<div class="mx-auto w-full max-w-[274px] md:max-w-[560px] [&_svg]:mx-auto">
<div class="aspect-[1/1] object-scale-down p-[2%]">
<figure >
<img class="w-full h-full object-contain max-w-[380px]" src="https://happycog.imgix.net/production/content/uploads/NumberOne-Nega0001_2024-06-05-163438_gndi.png?auto=compress%2Cformat&crop=focalpoint&fit=crop&fp-x=0.5&fp-y=0.5&h=1034&q=80&w=712&s=804eebf99fd22e6e5bd7f31b6f8bf7bd" srcset="https://happycog.imgix.net/production/content/uploads/NumberOne-Nega0001_2024-06-05-163438_gndi.png?auto=compress%2Cformat&crop=focalpoint&fit=crop&fp-x=0.5&fp-y=0.5&h=1034&q=80&w=712&s=804eebf99fd22e6e5bd7f31b6f8bf7bd 712w, https://happycog.imgix.net/production/content/uploads/NumberOne-Nega0001_2024-06-05-163438_gndi.png?auto=compress%2Cformat&crop=focalpoint&fit=crop&fp-x=0.5&fp-y=0.5&h=517&q=80&w=356&s=29d46291044b2b35d4f8fd5b73377f3d 356w, https://happycog.imgix.net/production/content/uploads/NumberOne-Nega0001_2024-06-05-163438_gndi.png?auto=compress%2Cformat&crop=focalpoint&fit=crop&fp-x=0.5&fp-y=0.5&h=258.5&q=80&w=178&s=df4348766c99f419cd3ccbb6591785b4 178w" width="712" height="1034" alt="" sizes="100vw" loading="lazy">
</figure>
</div>
</div>
</div>
<div class="grow basis-1/2 w-full" style="color: #e4e4e4;">
<div class="prose-p:type-zeta max-w-[70ch] prose"><p>We develop, market, promote, and design digital-first transformations for nice people with interesting problems.</p>
<p>Interesting can come from anywhere. Fast casual. Micromobility. Social issues. Fashion. Real estate. Biotech. Law. Education. Editorial. The list goes on. </p>
<p>We do it all. </p>
<p>And we do it twice as fast for the extra nice ones.</p></div>
</div>
</div>
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="-md:absolute -md:top-0 -md:left-0 min-h-screen mx-auto flex flex-col justify-end gap-3 h-full pt-[176px] transition-opacity duration-500 z-[1] pointer-events-none pb-[5vh]" :class="[activeTextIndex == 1 ? 'md:opacity-100' : 'md:opacity-0']" x-ref="block-inner" style=""></div>
</div>
</div>
</div>
<div class="md:flex relative min-h-screen md:items-end" x-ref="block-outer" data-block="slide" data-index="2">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 2 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="background-color: #ffffff;">
<div class="fixed z-[1] pointer-events-none left-0 w-full top-0">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="relative flex justify-between pt-[clamp(72px,4.85vw,97px)]">
<p class="text-[clamp(33px,2.3vw,45px)] leading-[1.1] mt-[clamp(3px,.5vw,9px)] font-slab transition-opacity duration-500" :class="[activeTextIndex == 2 ? 'opacity-100' : 'opacity-0']" style="color: #ffffff;" data-header-label data-type-effect="and Morphe" data-delay="18" x-cloak></p>
</div>
</div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full block md:hidden">
<iframe
loading="lazy"
src="https://player.vimeo.com/video/949587759?autopause=0&autoplay=0&byline=0&controls=0&fun=0&loop=1&muted=1&playsinline=1&portrait=0&title=0&transparent=0&quality=1080p&background=1"
frameborder="0"
title="Morphe_Homepage-Section-mobile_Optimized"
style="aspect-ratio: 499 / 1080;"
width="499"
height="1080"
class="absolute top-1/2 left-1/2 min-h-full min-w-full -translate-x-1/2 -translate-y-1/2"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen"
></iframe>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full hidden md:block">
<iframe
loading="lazy"
src="https://player.vimeo.com/video/949585769?autopause=0&autoplay=0&byline=0&controls=0&fun=0&loop=1&muted=1&playsinline=1&portrait=0&title=0&transparent=0&quality=1080p"
frameborder="0"
title="Morphe_Homepage-Section_Optimized"
class="iframe-desktop absolute top-1/2 left-1/2 aspect-[16/9] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen"
></iframe>
</div>
<div class="absolute inset-0 h-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen mx-auto flex flex-col justify-end h-full pt-[176px] relative transition-opacity duration-500 z-[1] pb-[5vh]" x-ref="block-text" style="--accent-text-color: #ffffff;">
<div class="space-y-3" x-data="{ hovered: false }">
<div class="relative" :class="activeTextIndex == 2 ? '' : 'md:up-and-out md:pointer-events-none'">
<a class="type-delta homepage-slides-heading absolute top-0 left-0" href="https://www.happycog.com/work/morphe" style="color: #ffffff;" data-block-heading data-type-effect="A digital glow up with attitude" data-delay="10" @mouseover="hovered = true" @mouseleave="hovered = false">
<h2>A digital glow up with attitude</h2>
</a>
<p class="type-delta invisible" aria-hidden="true">A digital glow up with attitude</p>
</div>
<div class="relative" :class="activeTextIndex == 2 ? '' : 'md:up-and-out-delay md:pointer-events-none'">
<a class="inline-block" href="https://www.happycog.com/work/morphe" style="color: #ffffff;" aria-label="See the work — A digital glow up with attitude" data-click-item='{"event":"click_cta","click_text":"See the work","click_url":"https:\/\/www.happycog.com\/work\/morphe"}'>
<span class="link-underline-alt text-xl leading-10xl tracking-tight absolute top-0 left-0" data-block-cta data-type-effect="See the work" data-delay="18" :class="{ 'link-underline-alt-hovered' : hovered }"></span>
<span class="invisible text-xl leading-10xl tracking-tight" aria-hidden="true">See the work</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500 pointer-events-none" :class="[activeElemIndex == 2 || atBottom ? 'absolute' : 'absolute md:fixed', activeElemVisibleIndex == 2 ? 'md:opacity-100' : 'md:opacity-0']" x-cloak>
<div class="absolute inset-0 z-[1] flex h-full">
<div class="self-center w-full relative px-6 mx-auto md:px-8 max-w-[calc(1800px*0.7)]">
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen" x-ref="block-inner"></div>
</div>
</div>
</div>
<div class="md:flex relative min-h-screen md:items-end" x-ref="block-outer" data-block="slide" data-index="3">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 3 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="background-color: #ffffff;">
<div class="fixed z-[1] pointer-events-none left-0 w-full top-0">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="relative flex justify-between pt-[clamp(72px,4.85vw,97px)]">
<p class="text-[clamp(33px,2.3vw,45px)] leading-[1.1] mt-[clamp(3px,.5vw,9px)] font-slab transition-opacity duration-500" :class="[activeTextIndex == 3 ? 'opacity-100' : 'opacity-0']" style="color: #000000;" data-header-label data-type-effect="and Sartorius" data-delay="18" x-cloak></p>
</div>
</div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full block md:hidden">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/img_Sartorius_00-mobile_2024-05-17-160310_zayj.json"
data-loop="1"
class="absolute top-1/2 left-1/2 flex aspect-[1170/2532] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2 flex-col justify-center"
></div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full hidden md:block">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/img_Sartorius_00_2024-05-17-160301_qoho.json"
data-loop="1"
class="absolute top-1/2 left-1/2 flex aspect-[16/9] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2 flex-col justify-center"
></div>
</div>
<div class="absolute inset-0 h-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen mx-auto flex flex-col justify-end h-full pt-[176px] relative transition-opacity duration-500 z-[1] pb-[5vh]" x-ref="block-text" style="--accent-text-color: #000000;">
<div class="space-y-3" x-data="{ hovered: false }">
<div class="relative" :class="activeTextIndex == 3 ? '' : 'md:up-and-out md:pointer-events-none'">
<a class="type-delta homepage-slides-heading absolute top-0 left-0" href="https://www.happycog.com/work/sartorius" style="color: #000000;" data-block-heading data-type-effect="Biopharma equipment supplier repositioned as a whole lab provider" data-delay="10" @mouseover="hovered = true" @mouseleave="hovered = false">
<h2>Biopharma equipment supplier repositioned as a whole lab provider</h2>
</a>
<p class="type-delta invisible" aria-hidden="true">Biopharma equipment supplier repositioned as a whole lab provider</p>
</div>
<div class="relative" :class="activeTextIndex == 3 ? '' : 'md:up-and-out-delay md:pointer-events-none'">
<a class="inline-block" href="https://www.happycog.com/work/sartorius" style="color: #000000;" aria-label="See the work — Biopharma equipment supplier repositioned as a whole lab provider" data-click-item='{"event":"click_cta","click_text":"See the work","click_url":"https:\/\/www.happycog.com\/work\/sartorius"}'>
<span class="link-underline-alt text-xl leading-10xl tracking-tight absolute top-0 left-0" data-block-cta data-type-effect="See the work" data-delay="18" :class="{ 'link-underline-alt-hovered' : hovered }"></span>
<span class="invisible text-xl leading-10xl tracking-tight" aria-hidden="true">See the work</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500 pointer-events-none" :class="[activeElemIndex == 3 || atBottom ? 'absolute' : 'absolute md:fixed', activeElemVisibleIndex == 3 ? 'md:opacity-100' : 'md:opacity-0']" x-cloak>
<div class="absolute inset-0 z-[1] flex h-full">
<div class="self-center w-full relative px-6 mx-auto md:px-8 max-w-[calc(1800px*0.7)]">
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen" x-ref="block-inner"></div>
</div>
</div>
</div>
<div class="md:flex relative min-h-screen md:items-end" x-ref="block-outer" data-block="slide" data-index="4">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 4 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="background-color: #ffffff;">
<div class="fixed z-[1] pointer-events-none left-0 w-full top-0">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="relative flex justify-between pt-[clamp(72px,4.85vw,97px)]">
<p class="text-[clamp(33px,2.3vw,45px)] leading-[1.1] mt-[clamp(3px,.5vw,9px)] font-slab transition-opacity duration-500" :class="[activeTextIndex == 4 ? 'opacity-100' : 'opacity-0']" style="color: #ffffff;" data-header-label data-type-effect="and West Monroe" data-delay="18" x-cloak></p>
</div>
</div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full block md:hidden">
<iframe
loading="lazy"
src="https://player.vimeo.com/video/949589008?autopause=0&autoplay=0&byline=0&controls=0&fun=0&loop=1&muted=1&playsinline=1&portrait=0&title=0&transparent=0&quality=1080p&background=1"
frameborder="0"
title="West Monroe_Homepage-Section-mobile_Optimized"
style="aspect-ratio: 499 / 1080;"
width="499"
height="1080"
class="absolute top-1/2 left-1/2 min-h-full min-w-full -translate-x-1/2 -translate-y-1/2"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen"
></iframe>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full hidden md:block">
<iframe
loading="lazy"
src="https://player.vimeo.com/video/949588492?autopause=0&autoplay=0&byline=0&controls=0&fun=0&loop=1&muted=1&playsinline=1&portrait=0&title=0&transparent=0&quality=1080p"
frameborder="0"
title="West Monroe_Homepage-Section_Optimized"
class="iframe-desktop absolute top-1/2 left-1/2 aspect-[16/9] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; fullscreen"
></iframe>
</div>
<div class="absolute inset-0 h-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen mx-auto flex flex-col justify-end h-full pt-[176px] relative transition-opacity duration-500 z-[1] pb-[5vh]" x-ref="block-text" style="--accent-text-color: #ffffff;">
<div class="space-y-3" x-data="{ hovered: false }">
<div class="relative" :class="activeTextIndex == 4 ? '' : 'md:up-and-out md:pointer-events-none'">
<a class="type-delta homepage-slides-heading absolute top-0 left-0" href="https://www.happycog.com/work/west-monroe" style="color: #ffffff;" data-block-heading data-type-effect="Brand work that brings the possible into the present" data-delay="10" @mouseover="hovered = true" @mouseleave="hovered = false">
<h2>Brand work that brings the possible into the present</h2>
</a>
<p class="type-delta invisible" aria-hidden="true">Brand work that brings the possible into the present</p>
</div>
<div class="relative" :class="activeTextIndex == 4 ? '' : 'md:up-and-out-delay md:pointer-events-none'">
<a class="inline-block" href="https://www.happycog.com/work/west-monroe" style="color: #ffffff;" aria-label="See the work — Brand work that brings the possible into the present" data-click-item='{"event":"click_cta","click_text":"See the work","click_url":"https:\/\/www.happycog.com\/work\/west-monroe"}'>
<span class="link-underline-alt text-xl leading-10xl tracking-tight absolute top-0 left-0" data-block-cta data-type-effect="See the work" data-delay="18" :class="{ 'link-underline-alt-hovered' : hovered }"></span>
<span class="invisible text-xl leading-10xl tracking-tight" aria-hidden="true">See the work</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500 pointer-events-none" :class="[activeElemIndex == 4 || atBottom ? 'absolute' : 'absolute md:fixed', activeElemVisibleIndex == 4 ? 'md:opacity-100' : 'md:opacity-0']" x-cloak>
<div class="absolute inset-0 z-[1] flex h-full">
<div class="self-center w-full relative px-6 mx-auto md:px-8 max-w-[calc(1800px*0.5)]">
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen" x-ref="block-inner"></div>
</div>
</div>
</div>
<div class="md:flex relative min-h-screen md:items-end" x-ref="block-outer" data-block="slide" data-index="5">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 5 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="">
<div class="fixed z-[1] pointer-events-none left-0 w-full top-0">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="relative flex justify-between pt-[clamp(72px,4.85vw,97px)]">
<p class="text-[clamp(33px,2.3vw,45px)] leading-[1.1] mt-[clamp(3px,.5vw,9px)] font-slab transition-opacity duration-500" :class="[activeTextIndex == 5 ? 'opacity-100' : 'opacity-0']" style="color: #181616;" data-header-label data-type-effect="and Wayside Publishing" data-delay="18" x-cloak></p>
</div>
</div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full block md:hidden">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/Wayside-Publishing_Homepage_Mobile.json"
data-loop=""
class="absolute top-1/2 left-1/2 flex aspect-[1170/2532] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2 flex-col justify-center"
></div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full hidden md:block">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/Wayside-Publishing_D.json"
data-loop=""
class="absolute top-1/2 left-1/2 flex aspect-[16/9] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2 flex-col justify-center"
></div>
</div>
<div class="absolute inset-0 h-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen mx-auto flex flex-col justify-end h-full pt-[176px] relative transition-opacity duration-500 z-[1] pb-[5vh]" x-ref="block-text" style="--accent-text-color: #181616;">
<div class="space-y-3" x-data="{ hovered: false }">
<div class="relative" :class="activeTextIndex == 5 ? '' : 'md:up-and-out md:pointer-events-none'">
<a class="type-delta homepage-slides-heading absolute top-0 left-0" href="https://www.happycog.com/work/wayside-publishing" style="color: #181616;" data-block-heading data-type-effect="Site redesign and replatforming for a research-based language educator" data-delay="10" @mouseover="hovered = true" @mouseleave="hovered = false">
<h2>Site redesign and replatforming for a research-based language educator</h2>
</a>
<p class="type-delta invisible" aria-hidden="true">Site redesign and replatforming for a research-based language educator</p>
</div>
<div class="relative" :class="activeTextIndex == 5 ? '' : 'md:up-and-out-delay md:pointer-events-none'">
<a class="inline-block" href="https://www.happycog.com/work/wayside-publishing" style="color: #181616;" aria-label="See the work — Site redesign and replatforming for a research-based language educator" data-click-item='{"event":"click_cta","click_text":"See the work","click_url":"https:\/\/www.happycog.com\/work\/wayside-publishing"}'>
<span class="link-underline-alt text-xl leading-10xl tracking-tight absolute top-0 left-0" data-block-cta data-type-effect="See the work" data-delay="18" :class="{ 'link-underline-alt-hovered' : hovered }"></span>
<span class="invisible text-xl leading-10xl tracking-tight" aria-hidden="true">See the work</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500 pointer-events-none" :class="[activeElemIndex == 5 || atBottom ? 'absolute' : 'absolute md:fixed', activeElemVisibleIndex == 5 ? 'md:opacity-100' : 'md:opacity-0']" x-cloak>
<div class="absolute inset-0 z-[1] flex h-full">
<div class="self-center w-full relative px-6 mx-auto md:px-8 max-w-[calc(1800px*0.5)]">
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen" x-ref="block-inner"></div>
</div>
</div>
</div>
<div class="md:flex relative min-h-screen md:items-end" x-ref="block-outer" data-block="slide" data-index="6">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 6 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="">
<div class="fixed z-[1] pointer-events-none left-0 w-full top-0">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="relative flex justify-between pt-[clamp(72px,4.85vw,97px)]">
<p class="text-[clamp(33px,2.3vw,45px)] leading-[1.1] mt-[clamp(3px,.5vw,9px)] font-slab transition-opacity duration-500" :class="[activeTextIndex == 6 ? 'opacity-100' : 'opacity-0']" style="color: #282828;" data-header-label data-type-effect="and 39dollarglasses" data-delay="18" x-cloak></p>
</div>
</div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full block md:hidden">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/39dollarsglasses_Home-mobilejson.json"
data-loop=""
class="absolute top-1/2 left-1/2 flex aspect-[1170/2532] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2 flex-col justify-center"
></div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full hidden md:block">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/39dlollarsglasses_Home.json"
data-loop="1"
class="absolute top-1/2 left-1/2 flex aspect-[16/9] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2 flex-col justify-center"
></div>
</div>
<div class="absolute inset-0 h-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen mx-auto flex flex-col justify-end h-full pt-[176px] relative transition-opacity duration-500 z-[1] pb-[5vh]" x-ref="block-text" style="--accent-text-color: #282828;">
<div class="space-y-3" x-data="{ hovered: false }">
<div class="relative" :class="activeTextIndex == 6 ? '' : 'md:up-and-out md:pointer-events-none'">
<a class="type-delta homepage-slides-heading absolute top-0 left-0" href="https://www.happycog.com/work/39dollarglasses" style="color: #282828;" data-block-heading data-type-effect="A.I.-backed paid media campaign is the perfect fit" data-delay="10" @mouseover="hovered = true" @mouseleave="hovered = false">
<h2>A.I.-backed paid media campaign is the perfect fit</h2>
</a>
<p class="type-delta invisible" aria-hidden="true">A.I.-backed paid media campaign is the perfect fit</p>
</div>
<div class="relative" :class="activeTextIndex == 6 ? '' : 'md:up-and-out-delay md:pointer-events-none'">
<a class="inline-block" href="https://www.happycog.com/work/39dollarglasses" style="color: #282828;" aria-label="See the work — A.I.-backed paid media campaign is the perfect fit" data-click-item='{"event":"click_cta","click_text":"See the work","click_url":"https:\/\/www.happycog.com\/work\/39dollarglasses"}'>
<span class="link-underline-alt text-xl leading-10xl tracking-tight absolute top-0 left-0" data-block-cta data-type-effect="See the work" data-delay="18" :class="{ 'link-underline-alt-hovered' : hovered }"></span>
<span class="invisible text-xl leading-10xl tracking-tight" aria-hidden="true">See the work</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500 pointer-events-none" :class="[activeElemIndex == 6 || atBottom ? 'absolute' : 'absolute md:fixed', activeElemVisibleIndex == 6 ? 'md:opacity-100' : 'md:opacity-0']" x-cloak>
<div class="absolute inset-0 z-[1] flex h-full">
<div class="self-center w-full relative px-6 mx-auto md:px-8 max-w-[calc(1800px*0.6)]">
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen" x-ref="block-inner"></div>
</div>
</div>
</div>
<div class="md:flex relative min-h-screen md:items-end" x-ref="block-outer" data-block="slide" data-index="7">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 7 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="background-color: #ffffff;">
<div class="fixed z-[1] pointer-events-none left-0 w-full top-0">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="relative flex justify-between pt-[clamp(72px,4.85vw,97px)]">
<p class="text-[clamp(33px,2.3vw,45px)] leading-[1.1] mt-[clamp(3px,.5vw,9px)] font-slab transition-opacity duration-500" :class="[activeTextIndex == 7 ? 'opacity-100' : 'opacity-0']" style="color: #282828;" data-header-label data-type-effect="and &pizza's Chatbot" data-delay="18" x-cloak></p>
</div>
</div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full block md:hidden">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/pizza_Homepage-section-mobile.json"
data-loop=""
class="absolute top-1/2 left-1/2 flex aspect-[1170/2532] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2 flex-col justify-center"
></div>
</div>
<div class="overflow-hidden absolute inset-0 w-full h-full hidden md:block">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/Pizza_Home.json"
data-loop="1"
class="absolute top-1/2 left-1/2 flex aspect-[16/9] min-h-full min-w-full -translate-x-1/2 -translate-y-1/2 flex-col justify-center"
></div>
</div>
<div class="absolute inset-0 h-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen mx-auto flex flex-col justify-end h-full pt-[176px] relative transition-opacity duration-500 z-[1] pb-[5vh]" x-ref="block-text" style="--accent-text-color: #282828;">
<div class="space-y-3" x-data="{ hovered: false }">
<div class="relative" :class="activeTextIndex == 7 ? '' : 'md:up-and-out md:pointer-events-none'">
<a class="type-delta homepage-slides-heading absolute top-0 left-0" href="https://www.happycog.com/work/pizza-ai-chatbot" style="color: #282828;" data-block-heading data-type-effect="Fully integrated A.I. chatbot streamlines operations" data-delay="10" @mouseover="hovered = true" @mouseleave="hovered = false">
<h2>Fully integrated A.I. chatbot streamlines operations</h2>
</a>
<p class="type-delta invisible" aria-hidden="true">Fully integrated A.I. chatbot streamlines operations</p>
</div>
<div class="relative" :class="activeTextIndex == 7 ? '' : 'md:up-and-out-delay md:pointer-events-none'">
<a class="inline-block" href="https://www.happycog.com/work/pizza-ai-chatbot" style="color: #282828;" aria-label="See the work — Fully integrated A.I. chatbot streamlines operations" data-click-item='{"event":"click_cta","click_text":"See the work","click_url":"https:\/\/www.happycog.com\/work\/pizza-ai-chatbot"}'>
<span class="link-underline-alt text-xl leading-10xl tracking-tight absolute top-0 left-0" data-block-cta data-type-effect="See the work" data-delay="18" :class="{ 'link-underline-alt-hovered' : hovered }"></span>
<span class="invisible text-xl leading-10xl tracking-tight" aria-hidden="true">See the work</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500 pointer-events-none" :class="[activeElemIndex == 7 || atBottom ? 'absolute' : 'absolute md:fixed', activeElemVisibleIndex == 7 ? 'md:opacity-100' : 'md:opacity-0']" x-cloak>
<div class="absolute inset-0 z-[1] flex h-full">
<div class="self-center w-full relative px-6 mx-auto md:px-8 max-w-[calc(1800px*0.5)]">
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen" x-ref="block-inner"></div>
</div>
</div>
</div>
<div class="md:flex relative min-h-screen" x-ref="block-outer" data-block="cta" data-index="8">
<div class="h-full w-full inset-0 transition-opacity duration-500 absolute" :class="[activeBgIndex == 8 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none', atBottom ? 'absolute' : 'absolute md:fixed']" style="background-color: #7f34b9;"></div>
<div class="min-h-screen w-full top-0 md:bottom-0 md:top-auto left-0 transition-opacity duration-500" :class="[activeElemIndex == 8 || atBottom ? 'absolute' : 'absolute md:fixed', activeElemVisibleIndex == 8 ? 'md:opacity-100' : 'md:opacity-0 md:pointer-events-none']" x-cloak>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="text-theme relative z-[1] min-h-screen flex flex-col items-center justify-center h-full pt-[72px] lg:pt-[114px] pb-[72px] lg:pb-[114px]" style="--theme: #ffffff;--bg: #7f34b9;">
<div class="mx-auto w-full max-w-[85rem] [&_svg]:mx-auto">
<div class="-mb-[clamp(0rem,7vw,6rem)] aspect-[1.3/1] object-scale-down p-[2%] md:aspect-[2.15/1]">
<div
data-lottie
data-src="https://cdn-assets.happycog.com/production/content/uploads/svg_Home_CTA_2024-05-21-175346_yppu.json"
data-loop=""
class="flex h-full flex-col justify-center"
></div>
</div>
</div>
<div class="flex flex-col gap-6 lg:gap-12">
<h2 class="type-alpha-slab mx-auto max-w-[32ch] text-center text-balance">It's lovely to meet you.</h2>
<div class="flex justify-center">
<a class="button" href="https://www.happycog.com/contact" data-click-item='{"event":"click_cta","click_text":"GET ACQUAINTED","click_url":"https:\/\/www.happycog.com\/contact"}'>GET ACQUAINTED</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="w-full">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="min-h-screen mx-auto flex flex-col justify-end gap-3 h-full pt-[176px] relative transition-opacity duration-500 z-[1] pointer-events-none pb-[5vh]" :class="[activeTextIndex == 8 ? 'md:opacity-100' : 'md:opacity-0']" x-ref="block-inner" style=""></div>
</div>
</div>
</div>
</main>
</div>
<footer class="relative md:z-[1]" x-data x-cloak>
<div class="py-10">
<div class="max-w-screen-3xl px-6 md:px-[3.725%] box-content mx-auto">
<div class="grid grid-cols-2 gap-5 sm:grid-cols-12">
<div class="flex gap-4 items-end sm:col-span-3 lg:col-span-2">
<a
href="https://www.happycog.com/"
class="mb-1.5 w-20 lg:w-[60px]"
aria-label="home"
>
<svg class="wh-full fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 79 48" fill="none">
<path d="M36.706 41.675H42.8v5.856H23.677v-5.856h4.343V23.008c0-3.17-1.191-4.753-4.554-4.753-2.591 0-4.483 1.584-6.024 3.788-1.19 1.791-2.031 4.684-2.031 8.335v11.297h4.483v5.856H.28v-5.856h6.585V5.855H0V0h15.41v19.494h.421c2.942-4.684 6.725-7.37 11.488-7.37 5.324 0 9.387 2.755 9.387 9.23v20.321ZM64.28 47.981c-11.005 0-17.944-7.05-17.944-18.246 0-10.436 7.08-18.246 16.121-18.246 4.276 0 7.01 2.073 9.253 5.529h.42v-4.562H79V25.45h-5.258c-.49-2.972-4.276-8.64-9.603-8.64-5.817 0-8.55 3.94-8.55 12.234 0 8.985 3.294 13.823 9.742 13.823 5.818 0 8.341-3.663 8.341-8.709V32.5H79v2.005c0 7.948-5.327 13.477-14.72 13.477Z"/>
</svg>
</a>
<p class="opacity-60 type-paragraph">©2026</p>
</div>
<div class="sm:col-span-9 xl:col-span-8">
<div class="flex flex-col-reverse gap-6 justify-end h-full sm:flex-col sm:gap-1 md:flex-row md:gap-6 md:justify-evenly lg:grid lg:grid-cols-2">
<nav aria-label="Footer" class="flex items-end">
<ul class="w-full sm:flex sm:flex-wrap sm:gap-x-2 lg:gap-x-6 lg:justify-center xl:gap-x-14">
<li>
<a class="type-paragraph link-underline" href="https://www.happycog.com/privacy-policy">Privacy Policy</a>
</li>
<li>
<a class="type-paragraph link-underline" href="https://www.happycog.com/cookie-policy">Cookie Policy</a>
</li>
<li>
<a class="type-paragraph link-underline" href="/sitemap">Sitemap</a>
</li>
</ul>
</nav>
<nav aria-label="Social media" class="flex items-end">
<ul class="w-full sm:flex sm:flex-wrap sm:gap-x-2 lg:gap-x-6 lg:justify-center xl:gap-x-14">
<li>
<a class="type-paragraph link-underline" href="https://twitter.com/happycog">
X
</a>
</li>
<li>
<a class="type-paragraph link-underline" href="https://www.facebook.com/happycog">
Facebook
</a>
</li>
<li>
<a class="type-paragraph link-underline" href="https://www.instagram.com/happycog/">
Instagram
</a>
</li>
<li>
<a class="type-paragraph link-underline" href="https://www.linkedin.com/company/happy-cog">
LinkedIn
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
</div>
</footer>
</div>
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","author":{"@id":"https://www.happycog.com#identity"},"copyrightHolder":{"@id":"https://www.happycog.com#identity"},"copyrightYear":"2023","creator":{"@id":"#creator"},"dateCreated":"2023-04-12T09:38:56-04:00","dateModified":"2024-09-26T10:27:30-04:00","datePublished":"2023-04-12T09:38:00-04:00","description":"Happy Cog is an award-winning, full-service digital agency. We offer web development, design & branding, and digital marketing services.","headline":"Happy Cog® | Full-Service Digital Agency","inLanguage":"en-us","mainEntityOfPage":"https://www.happycog.com/","name":"Happy Cog® | People first™","publisher":{"@id":"#creator"},"url":"https://www.happycog.com/"},{"@id":"https://www.happycog.com#identity","@type":"LocalBusiness","address":{"@type":"PostalAddress","addressCountry":"US","addressLocality":"New York","addressRegion":"NY"},"description":"Happy Cog is an award-winning, full-service digital agency. We offer web development, design & branding, and digital marketing services.","email":"[email protected]","foundingDate":"1999","foundingLocation":"Philadelphia, PA, US","name":"Happy Cog","priceRange":"$","sameAs":["https://twitter.com/happycog","https://www.facebook.com/happycog","https://www.instagram.com/happycog/","https://www.linkedin.com/company/happy-cog"],"telephone":"+1-212-380-8227","url":"https://www.happycog.com"},{"@id":"#creator","@type":"LocalBusiness","priceRange":"$"},{"@type":"BreadcrumbList","description":"Breadcrumbs list","itemListElement":[{"@type":"ListItem","item":"https://www.happycog.com/","name":"Homepage","position":1}],"name":"Breadcrumbs"}]}</script><script src="https://www.happycog.com/cpresources/1e5ade30/access.js?v=1792117191" defer></script>
<script>function getCookie(e){for(var r=e+"=",t=document.cookie.split(";"),o=0;o<t.length;o++){for(var n=t[o];" "==n.charAt(0);)n=n.substring(1);if(0==n.indexOf(r))return n.substring(r.length,n.length)}return""}function checkCookie(){""!=getCookie("markerEnabled")&&(function(e,r,t){if(!e.__Marker){e.__Marker={};var o=[],n={__cs:o};["show","hide","isVisible","capture","cancelCapture","unload","reload","isExtensionInstalled","setReporter","setCustomData","on","off"].forEach((function(e){n[e]=function(){var r=Array.prototype.slice.call(arguments);r.unshift(e),o.push(r)}})),e.Marker=n;var i=r.createElement("script");i.async=1,i.src="https://edge.marker.io/latest/shim.js";var a=r.getElementsByTagName("script")[0];a.parentNode.insertBefore(i,a)}}(window,document),window.markerConfig={destination:"646b70ecb024acab3c3a5c09",source:"snippet",silent:!0,...getCookie("markerEmail")&&{reporter:{email:decodeURIComponent(getCookie("markerEmail")),fullName:decodeURIComponent(getCookie("markerUser"))}}})}checkCookie();</script></body>
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'initialize_dataLayer',
});
</script>
</html>
| # |
Url |
Url |
Source |
Date |
| 1 |
https://www.happycog.com/ |
|
2026-10-17 14:53:55 |
| 2 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:55 |
| 3 |
https://www.texarkanatwins.com/%25… |
|
2026-10-17 14:53:55 |
| 4 |
https://www.texarkanatwins.com/%25… |
|
2026-10-17 14:53:54 |
| 5 |
https://www.texarkanatwins.com/%25… |
|
2026-10-17 14:53:54 |
| 6 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:54 |
| 7 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:54 |
| 8 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:53 |
| 9 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:52 |
| 10 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:52 |
| 11 |
https://www.texarkanatwins.com/%25… |
|
2026-10-17 14:53:52 |
| 12 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:51 |
| 13 |
https://www.texarkanatwins.com/%25… |
|
2026-10-17 14:53:51 |
| 14 |
https://www.texarkanatwins.com/%25… |
|
2026-10-17 14:53:50 |
| 15 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:50 |
| 16 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:50 |
| 17 |
https://www.texarkanatwins.com/%25… |
|
2026-10-17 14:53:50 |
| 18 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-17 14:53:49 |
| 19 |
https://www.texarkanatwins.com/%25… |
|
2026-10-17 14:53:49 |
| 20 |
https://ecoposet.com/ |
|
2026-10-17 14:53:48 |