|
Server IP : 217.21.85.138 / Your IP : 216.73.216.103 Web Server : LiteSpeed System : Linux in-mum-web906.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64 User : u915722082 ( 915722082) PHP Version : 7.4.33 Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail MySQL : OFF | cURL : ON | WGET : ON | Perl : OFF | Python : OFF Directory (0755) : /home/u915722082/.nvm/../public_html/brandessential/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Metas -->
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1"
/>
<meta
name="keywords"
content=""
/>
<meta
name="description"
content=""
/>
<meta name="author" content="" />
<title>BRAND ESSENTIALS</title>
<!-- <link rel="shortcut icon" href="assets/imgs/favicon.ico" /> -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<link
href="https://fonts.googleapis.com/css2?family=Six+Caps&display=swap"
rel="stylesheet"
/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.5/swiper-bundle.min.css">
<link rel="stylesheet" href="./common/css/plugins.css" />
<link rel="stylesheet" href="./common/css/common_style.css" />
<link rel="stylesheet" href="assets/css/home8-style.css" />
<link rel="stylesheet" href="assets/css/responsive.css" />
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
/* background-color: #121212; */
color: #ffffff;
line-height: 1.6;
/* overflow-x: hidden; */
}
</style>
</head>
<body>
<div class="preloader-wrap" id="preloader">
<div class="preloader-content">
<div class="logo-wrap">
BRAND ESSENTIALS
<img src="assets/imgs/r.svg" alt="Logo">
</div>
<div class="preloader-bar-wrap">
<div class="preloader-bar"></div>
</div>
</div>
</div>
<div class="cursor"></div>
<div class="progress-wrap cursor-pointer">
<svg
class="progress-circle svg-content"
width="100%"
height="100%"
viewBox="-1 -1 102 102"
>
<path d="M50,1 a49,49 0 0,1 0,98 a49,49 0 0,1 0,-98" />
</svg>
</div>
<div class="body-container">
<div class="body-lines">
<div class="body-line body-line-l1"></div>
<div class="body-line body-line-l2"></div>
<div class="body-line body-line-r1"></div>
<div class="body-line body-line-r2"></div>
</div>
<nav class="top-nav">
<div>
<a href="index.html" class="logo">BE</a>
</div>
<div class="desktop-only">
<a href="#">Work</a>
</div>
<div class="desktop-only">
<a href="#">Services</a>
</div>
<div class="desktop-only" id="aboutMenu">
<a href="#">About</a>
</div>
<div class="desktop-only">
<a href="#">Testimonials</a>
</div>
<div class="desktop-only">
<a href="#">Connect</a>
</div>
<button class="mobile-toggler" id="mobileToggler">
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
</button>
</nav>
<div class="sidebar" id="sidebar">
<button class="sidebar-close" id="sidebarClose">×</button>
<div class="sidebar-links">
<div>
<a href="#">Work</a>
</div>
<div>
<a href="#">Services</a>
</div>
<div>
<a href="#">About</a>
</div>
<div>
<a href="#">Testimonials</a>
</div>
<div>
<a href="#">Connect</a>
</div>
</div>
</div>
<div class="container-design">
<div class="name-container">
<h1 class="name">Brand Essentials</h1>
</div>
<div class="tagline-container">
<div class="tagline-row">
<h2 class="tagline">
Crafting Digital
<span class="tagline tagline-italic">Designs</span>
that <br/>
Solve Real Time Problems
</h2>
</div>
<div class="tagline-row">
<div class="tagline"></div>
</div>
<div class="footer-info">
<div>©2025</div>
<div>Based in India </div>
<div> Design & Development</div>
</div>
</div>
<!-- <div class="wave-container11">
<img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221729%22%20height%3D%221802%22%20fill%3D%22none%22%3E%3Cmask%20id%3D%22a%22%20width%3D%221729%22%20height%3D%221802%22%20x%3D%220%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aalpha%22%3E%3Cpath%20fill%3D%22%23frfrf%22%20d%3D%22M0%200h1728v1800.83H0z%22%20style%3D%22fill%3A%23d9d9d9%3Bfill%3Acolor(display-p3%20.851%20.851%20.851)%3Bfill-opacity%3A1%22%20transform%3D%22matrix(-1%200%200%201%201728.71%20.863)%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23a)%22%3E%3Cg%20filter%3D%22url(%23b)%22%3E%3Cpath%20fill%3D%22%23FF7300%22%20d%3D%22M243.146%20442.489C56.421%20296.6-247.47%20322.512-376.076%20353.704l179.126%20923.906H851.931l944.119%2033.15%20265.09-728.258c5.7-7.723-39.35-65.812-265.09-236.39-282.19-213.223-705.48-75.755-838.158%2097.211-132.674%20172.966-481.339%20181.526-714.746-.834Z%22%20style%3D%22fill%3A%23ff7300%3Bfill%3A%20color(display-p3%200%200.23%201)%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23c)%22%3E%3Cpath%20stroke%3D%22red%22%20stroke-width%3D%2271%22%20d%3D%22M2061.14%20582.5c5.7-7.723-39.35-65.812-265.1-236.39-282.18-213.223-705.47-75.755-838.149%2097.211-132.674%20172.966-481.339%20181.526-714.745-.834C56.42%20296.599-247.472%20322.51-376.077%20353.701%22%20style%3D%22stroke%3Ared%3Bstroke%3A%20color(display-p3%200%200.36%201)%3Bstroke-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23d)%22%20opacity%3D%22.5%22%3E%3Cpath%20stroke%3D%22red%22%20stroke-width%3D%2271%22%20d%3D%22M2061.13%20531.531c5.7-7.722-39.35-65.812-265.09-236.39-282.18-213.223-705.48-75.755-838.156%2097.211-229.419%20299.09-481.34%20181.526-714.746-.834C56.412%20245.63-247.479%20271.541-376.085%20302.732%22%20style%3D%22stroke%3Ared%3Bstroke%3A%20color(display-p3%200%201%200.94)%3Bstroke-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23e)%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M-478.381%201420.69c0%202117.34%20655.442%201664.27%201382.846%201664.27%20727.405%200%201251.315%20143.55%201251.315-1664.27%200-267.57-589.68-484.482-1317.08-484.482-727.404%200-1317.081%20216.912-1317.081%20484.482Z%22%20style%3D%22fill%3A%23fff%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cdefs%3E%3Cfilter%20id%3D%22b%22%20width%3D%222845.68%22%20height%3D%221481.29%22%20x%3D%22-580.078%22%20y%3D%2233.467%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22c%22%20width%3D%222889.54%22%20height%3D%22817.69%22%20x%3D%22-588.445%22%20y%3D%22-2.023%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22d%22%20width%3D%222889.54%22%20height%3D%22867.63%22%20x%3D%22-588.453%22%20y%3D%22-52.992%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22e%22%20width%3D%223202.16%22%20height%3D%222757.44%22%20x%3D%22-762.383%22%20y%3D%22652.208%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22142%22%2F%3E%3C%2Ffilter%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"
alt="Wave design"
class="wave-base11">
<canvas id="canvas11" resize></canvas>
<div id="gui_container11"></div>
</div> -->
<div class="wave-container">
<img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221729%22%20height%3D%221802%22%20fill%3D%22none%22%3E%3Cmask%20id%3D%22a%22%20width%3D%221729%22%20height%3D%221802%22%20x%3D%220%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aalpha%22%3E%3Cpath%20fill%3D%22%23frfrf%22%20d%3D%22M0%200h1728v1800.83H0z%22%20style%3D%22fill%3A%23d9d9d9%3Bfill%3Acolor(display-p3%20.851%20.851%20.851)%3Bfill-opacity%3A1%22%20transform%3D%22matrix(-1%200%200%201%201728.71%20.863)%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23a)%22%3E%3Cg%20filter%3D%22url(%23b)%22%3E%3Cpath%20fill%3D%22%23FF7300%22%20d%3D%22M243.146%20442.489C56.421%20296.6-247.47%20322.512-376.076%20353.704l179.126%20923.906H851.931l944.119%2033.15%20265.09-728.258c5.7-7.723-39.35-65.812-265.09-236.39-282.19-213.223-705.48-75.755-838.158%2097.211-132.674%20172.966-481.339%20181.526-714.746-.834Z%22%20style%3D%22fill%3A%23ff7300%3Bfill%3A%20color(display-p3%200%200.23%201)%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23c)%22%3E%3Cpath%20stroke%3D%22red%22%20stroke-width%3D%2271%22%20d%3D%22M2061.14%20582.5c5.7-7.723-39.35-65.812-265.1-236.39-282.18-213.223-705.47-75.755-838.149%2097.211-132.674%20172.966-481.339%20181.526-714.745-.834C56.42%20296.599-247.472%20322.51-376.077%20353.701%22%20style%3D%22stroke%3Ared%3Bstroke%3A%20color(display-p3%200%200.36%201)%3Bstroke-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23d)%22%20opacity%3D%22.5%22%3E%3Cpath%20stroke%3D%22red%22%20stroke-width%3D%2271%22%20d%3D%22M2061.13%20531.531c5.7-7.722-39.35-65.812-265.09-236.39-282.18-213.223-705.48-75.755-838.156%2097.211-229.419%20299.09-481.34%20181.526-714.746-.834C56.412%20245.63-247.479%20271.541-376.085%20302.732%22%20style%3D%22stroke%3Ared%3Bstroke%3A%20color(display-p3%200%201%200.94)%3Bstroke-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23e)%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M-478.381%201420.69c0%202117.34%20655.442%201664.27%201382.846%201664.27%20727.405%200%201251.315%20143.55%201251.315-1664.27%200-267.57-589.68-484.482-1317.08-484.482-727.404%200-1317.081%20216.912-1317.081%20484.482Z%22%20style%3D%22fill%3A%23fff%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cdefs%3E%3Cfilter%20id%3D%22b%22%20width%3D%222845.68%22%20height%3D%221481.29%22%20x%3D%22-580.078%22%20y%3D%2233.467%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22c%22%20width%3D%222889.54%22%20height%3D%22817.69%22%20x%3D%22-588.445%22%20y%3D%22-2.023%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22d%22%20width%3D%222889.54%22%20height%3D%22867.63%22%20x%3D%22-588.453%22%20y%3D%22-52.992%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22e%22%20width%3D%223202.16%22%20height%3D%222757.44%22%20x%3D%22-762.383%22%20y%3D%22652.208%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22142%22%2F%3E%3C%2Ffilter%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"
alt="Wave design"
class="wave-base">
<!-- <canvas id="canvas" resize></canvas> -->
<canvas id="waveCanvas"></canvas>
<div id="gui_container"></div>
</div>
</div>
<section class="intro-cst pt-0 sm-pt-70px">
<div class="v-flex-small pb-200px">
<div class="h-flex-xxsmall">
<img src="assets/imgs/BE-04.png" loading="eager" alt="Webflow Enterprise Partner" class="about-header_logo">
<img src="assets/imgs/BE-03.png" loading="eager" alt="Webflow professionnal partner of the year" class="about-header_logo">
</div>
<div class="max-width-xlarge">
<h1>Your Creative Partner for consistent brand growth</h1>
</div>
<div class="w-layout-hflex split-wrapper">
<div class="max-width-large">
<p class="text-size-medium">A design-led studio helping brands build clarity, consistency, and conversion across digital, branding, and marketing - tailored for teams that move fast and think bigger.
</p>
</div>
<div class="split-button-wrapper">
<div class="button-text_wrapper">
<div class="line-divider is-button-text"></div>
<div class="dont-shrink-grow">
<a href="#" class="button-text">
<div>Contact us</div>
<div class="button-text_icon-wrapper">
<div class="button-text_icon">
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 20 19" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
<path d="M1.6564 10.4613L1.65643 8.63361L14.1896 8.63363L8.57575 3.01982L9.88128 1.71429L17.7145 9.5475L9.8813 17.3807L8.57579 16.0752L14.1896 10.4614L1.6564 10.4613Z" fill="currentColor"></path>
</svg>
</div>
<div class="button-text_icon is-second">
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 20 19" fill="none" preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
<path d="M1.6564 10.4613L1.65643 8.63361L14.1896 8.63363L8.57575 3.01982L9.88128 1.71429L17.7145 9.5475L9.8813 17.3807L8.57579 16.0752L14.1896 10.4614L1.6564 10.4613Z" fill="currentColor"></path>
</svg>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="gallery-wrapper">
<div class="gallery-grid" id="gallery1">
<div class="gallery-inner">
<h4 class="client-name">01. VOH</h4>
<a href="#" class="gallery-item fade-in">
<img width="153" height="36" decoding="async" src="assets/imgs/VOH_LOGO_BLACK.png" data-lazy-src="assets/imgs/VOH_LOGO_BLACK.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">02. Zora</h4>
<a href="#" class="gallery-item fade-in">
<img width="180" height="37" decoding="async" src="assets/imgs/ZORA_LOGO_FULLCOLOR_RGB.png" data-lazy-src="assets/imgs/ZORA_LOGO_FULLCOLOR_RGB.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">03. Radio Room</h4>
<a href="#" class="gallery-item fade-in">
<img width="166" height="36" decoding="async" src="assets/imgs/RADIO ROOM LOGO.png" data-lazy-src="assets/imgs/RADIO ROOM LOGO.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">04. Wedding Flavours</h4>
<a href="#" class="gallery-item fade-in">
<img width="202" height="34" decoding="async" src="assets/imgs/COLOR_TRANSPERENT_WEDDING_ FLAVOURS.png" data-lazy-src="assets/imgs/COLOR_TRANSPERENT_WEDDING_ FLAVOURS.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
</div>
<div class="gallery-grid" id="gallery2">
<div class="gallery-inner">
<h4 class="client-name">05. Poomer</h4>
<a href="#" class="gallery-item fade-in">
<img width="202" height="34" decoding="async" src="assets/imgs/POOMER_LOGO.png" data-lazy-src="assets/imgs/POOMER_LOGO.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">06. Seiger</h4>
<a href="#" class="gallery-item fade-in">
<img width="187" height="34" decoding="async" src="assets/imgs/SEIGER_LOGO.png" data-lazy-src="assets/imgs/SEIGER_LOGO.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">07. PSD Jamuna Sweets</h4>
<a href="#" class="gallery-item fade-in">
<img width="72" height="48" decoding="async" src="assets/imgs/PDS_JAMUNA_SWEETS.png" data-lazy-src="assets/imgs/PDS_JAMUNA_SWEETS.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">08. Sacred Rebel</h4>
<a href="#" class="gallery-item fade-in">
<img width="120" height="39" decoding="async" src="assets/imgs/THE_SACRED_REBEL_LOGO.png" data-lazy-src="assets/imgs/THE_SACRED_REBEL_LOGO.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
</div>
<div class="gallery-grid" id="gallery3">
<div class="gallery-inner">
<h4 class="client-name">09. Sunfeast</h4>
<a href="#" class="gallery-item fade-in">
<img width="202" height="34" decoding="async" src="assets/imgs/Sunfeast_Logo.webp" data-lazy-src="assets/imgs/Sunfeast_Logo.webp" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">10. DNC</h4>
<a href="#" class="gallery-item fade-in">
<img width="187" height="34" decoding="async" src="assets/imgs/DNC_LOGO.png" data-lazy-src="assets/imgs/DNC_LOGO.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">11. Ministry Of Textiles
<a href="#" class="gallery-item fade-in">
<img width="72" height="48" decoding="async" src="assets/imgs/Ministry_of_Textiles_India.png" data-lazy-src="assets/imgs/Ministry_of_Textiles_India.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
<div class="gallery-inner">
<h4 class="client-name">12. Neofairs</h4>
<a href="#" class="gallery-item fade-in">
<img width="120" height="39" decoding="async" src="assets/imgs/NEOFAIRS.png" data-lazy-src="assets/imgs/NEOFAIRS.png" data-ll-status="loaded" class="entered lazyloaded">
</a>
</div>
</div>
</div>
</div>
</section>
<div class="wave-container-1">
<img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221729%22%20height%3D%221802%22%20fill%3D%22none%22%3E%3Cmask%20id%3D%22a%22%20width%3D%221729%22%20height%3D%221802%22%20x%3D%220%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aalpha%22%3E%3Cpath%20fill%3D%22%23frfrf%22%20d%3D%22M0%200h1728v1800.83H0z%22%20style%3D%22fill%3A%23d9d9d9%3Bfill%3Acolor(display-p3%20.851%20.851%20.851)%3Bfill-opacity%3A1%22%20transform%3D%22matrix(-1%200%200%201%201728.71%20.863)%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23a)%22%3E%3Cg%20filter%3D%22url(%23b)%22%3E%3Cpath%20fill%3D%22%23FF7300%22%20d%3D%22M243.146%20442.489C56.421%20296.6-247.47%20322.512-376.076%20353.704l179.126%20923.906H851.931l944.119%2033.15%20265.09-728.258c5.7-7.723-39.35-65.812-265.09-236.39-282.19-213.223-705.48-75.755-838.158%2097.211-132.674%20172.966-481.339%20181.526-714.746-.834Z%22%20style%3D%22fill%3A%23ff7300%3Bfill%3A%20color(display-p3%200%200.23%201)%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23c)%22%3E%3Cpath%20stroke%3D%22red%22%20stroke-width%3D%2271%22%20d%3D%22M2061.14%20582.5c5.7-7.723-39.35-65.812-265.1-236.39-282.18-213.223-705.47-75.755-838.149%2097.211-132.674%20172.966-481.339%20181.526-714.745-.834C56.42%20296.599-247.472%20322.51-376.077%20353.701%22%20style%3D%22stroke%3Ared%3Bstroke%3A%20color(display-p3%200%200.36%201)%3Bstroke-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23d)%22%20opacity%3D%22.5%22%3E%3Cpath%20stroke%3D%22red%22%20stroke-width%3D%2271%22%20d%3D%22M2061.13%20531.531c5.7-7.722-39.35-65.812-265.09-236.39-282.18-213.223-705.48-75.755-838.156%2097.211-229.419%20299.09-481.34%20181.526-714.746-.834C56.412%20245.63-247.479%20271.541-376.085%20302.732%22%20style%3D%22stroke%3Ared%3Bstroke%3A%20color(display-p3%200%201%200.94)%3Bstroke-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23e)%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M-478.381%201420.69c0%202117.34%20655.442%201664.27%201382.846%201664.27%20727.405%200%201251.315%20143.55%201251.315-1664.27%200-267.57-589.68-484.482-1317.08-484.482-727.404%200-1317.081%20216.912-1317.081%20484.482Z%22%20style%3D%22fill%3A%23fff%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cdefs%3E%3Cfilter%20id%3D%22b%22%20width%3D%222845.68%22%20height%3D%221481.29%22%20x%3D%22-580.078%22%20y%3D%2233.467%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22c%22%20width%3D%222889.54%22%20height%3D%22817.69%22%20x%3D%22-588.445%22%20y%3D%22-2.023%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22d%22%20width%3D%222889.54%22%20height%3D%22867.63%22%20x%3D%22-588.453%22%20y%3D%22-52.992%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22e%22%20width%3D%223202.16%22%20height%3D%222757.44%22%20x%3D%22-762.383%22%20y%3D%22652.208%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22142%22%2F%3E%3C%2Ffilter%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"
alt="Wave design"
class="wave-base1" height="100">
<!-- <canvas id="canvas" resize></canvas>
<div id="gui_container"></div> -->
<!-- <canvas id="waveCanvas2" resize></canvas> -->
</div>
<section class="accordian-con">
<div class="accordian-container pb-150px" id="accordionContainer">
<div class="">
<div class="main-title">Capabilities</div>
<div class="footer-four">
<a class="footer-light-title">BRANDING</a>
<a class="footer-light-title">UI UX</a>
<a class="footer-light-title">DEVELOPMENT</a>
<a class="footer-light-title">MARKETING</a>
</div>
</div>
<div class="container pt-100px">
<div class="e-n-accordion">
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Strategy</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M8 8v8m0-8h8M8 8H6a2 2 0 1 1 2-2v2Zm0 8h8m-8 0H6a2 2 0 1 0 2 2v-2Zm8 0V8m0 8h2a2 2 0 1 1-2 2v-2Zm0-8h2a2 2 0 1 0-2-2v2Z"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M8 8v8m0-8h8M8 8H6a2 2 0 1 1 2-2v2Zm0 8h8m-8 0H6a2 2 0 1 0 2 2v-2Zm8 0V8m0 8h2a2 2 0 1 1-2 2v-2Zm0-8h2a2 2 0 1 0-2-2v2Z"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Structured plans to align your business direction with measurable goals and future growth
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Market Research</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Positioning</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Growth Goal</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Action Plans</a>
<a class="ServicesPanel_tag__JYwRk" href="#">WordPress</a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Brand Identity
</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m8 8-4 4 4 4m8 0 4-4-4-4m-2-3-4 14"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m8 8-4 4 4 4m8 0 4-4-4-4m-2-3-4 14"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Designs that capture the essence of your brand and connect with your audience
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Naming</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Rebrading</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Logo Design
</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Brand Voice</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Style Guide</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Digital Assets
</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Product Design</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Brand Positioning
</a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Landing Page</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M4 8h4V4m12 4h-4V4M4 16h4v4m12-4h-4v4"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M4 8h4V4m12 4h-4V4M4 16h4v4m12-4h-4v4"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
High Converting One page design to engage and convert visitors
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Clean Layout</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Responsive Design
</a>
<a class="ServicesPanel_tag__JYwRk" href="#">User Friendly</a>
<a class="ServicesPanel_tag__JYwRk" href="#">SEO Basics
</a>
<!-- <a class="ServicesPanel_tag__JYwRk" href="service/lottie-animations">Lottie Animations</a> -->
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Multi Page Website</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Full scaled website with a well structured user experience
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Site Architecture</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Wireframes</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Content</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Responsive Layouts
</a>
<a class="ServicesPanel_tag__JYwRk" href="#">CMS</a>
<a class="ServicesPanel_tag__JYwRk" href="#">SEO </a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Ecommerce Store</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M8 8v8m0-8h8M8 8H6a2 2 0 1 1 2-2v2Zm0 8h8m-8 0H6a2 2 0 1 0 2 2v-2Zm8 0V8m0 8h2a2 2 0 1 1-2 2v-2Zm0-8h2a2 2 0 1 0-2-2v2Z"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M8 8v8m0-8h8M8 8H6a2 2 0 1 1 2-2v2Zm0 8h8m-8 0H6a2 2 0 1 0 2 2v-2Zm8 0V8m0 8h2a2 2 0 1 1-2 2v-2Zm0-8h2a2 2 0 1 0-2-2v2Z"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Online storefronts for seamless product showcasing and Sale
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Shopify</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Wordpress</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Custom Build
</a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Web app Development</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M8 8v8m0-8h8M8 8H6a2 2 0 1 1 2-2v2Zm0 8h8m-8 0H6a2 2 0 1 0 2 2v-2Zm8 0V8m0 8h2a2 2 0 1 1-2 2v-2Zm0-8h2a2 2 0 1 0-2-2v2Z"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M8 8v8m0-8h8M8 8H6a2 2 0 1 1 2-2v2Zm0 8h8m-8 0H6a2 2 0 1 0 2 2v-2Zm8 0V8m0 8h2a2 2 0 1 1-2 2v-2Zm0-8h2a2 2 0 1 0-2-2v2Z"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Build functional and responsive digital tools tailored to your users’ needs
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">CMS </a>
<a class="ServicesPanel_tag__JYwRk" href="#">API Integration </a>
<a class="ServicesPanel_tag__JYwRk" href="#">Responsive Design
</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Front-end Development </a>
<a class="ServicesPanel_tag__JYwRk" href="#">Maintenance and Support </a>
<a class="ServicesPanel_tag__JYwRk" href="#">QA Testing
</a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">UX/UI</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m8 8-4 4 4 4m8 0 4-4-4-4m-2-3-4 14"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m8 8-4 4 4 4m8 0 4-4-4-4m-2-3-4 14"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Interfaces designed to enhance usability, streamlined interactions and elevate experience
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="service/user-research">User Centric Design</a>
<a class="ServicesPanel_tag__JYwRk" href="service/wireframing">Design Thinking Methodology</a>
<a class="ServicesPanel_tag__JYwRk" href="service/prototyping">Information architecture and navigation</a>
<a class="ServicesPanel_tag__JYwRk" href="service/usability-testing">Visual design & Brand Consistency</a>
<a class="ServicesPanel_tag__JYwRk" href="service/interface-design">Interaction Design and Micro Animation</a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Marketing Graphics</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M4 8h4V4m12 4h-4V4M4 16h4v4m12-4h-4v4"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M4 8h4V4m12 4h-4V4M4 16h4v4m12-4h-4v4"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Custom graphics for social media, digital ads and campaign
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Collaterals</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Ad Creatives
</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Social Media Creatives
</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Campaign Visuals</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Content Strategy</a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Pitch decks</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Well-designed professional decks that make an impact
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Story Narration </a>
<a class="ServicesPanel_tag__JYwRk" href="#">Data Visuals</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Investor Decks</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Sales Pitch</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Keynote / PPT</a>
</div>
</div>
<div class="content-image">
<img
src="https://images.unsplash.com/photo-1611224923853-80b023f02d71?w=600&h=400&fit=crop&crop=center"
alt="Product Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Illustrations</div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Artwork to add life and clarity to your brand story
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Brand Mascots</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Custom Icons</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Infographics</a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
<details class="e-n-accordion-item">
<summary class="e-n-accordion-item-title">
<div class="e-n-accordion-item-title-text">Design Consulting </div>
<div class="e-n-accordion-item-title-icon">
<span class="e-opened">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path>
</svg>
</span>
<span class="e-closed">
<svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="m10.051 8.102-3.778.322-1.994 1.994a.94.94 0 0 0 .533 1.6l2.698.316m8.39 1.617-.322 3.78-1.994 1.994a.94.94 0 0 1-1.595-.533l-.4-2.652m8.166-11.174a1.366 1.366 0 0 0-1.12-1.12c-1.616-.279-4.906-.623-6.38.853-1.671 1.672-5.211 8.015-6.31 10.023a.932.932 0 0 0 .162 1.111l.828.835.833.832a.932.932 0 0 0 1.111.163c2.008-1.102 8.35-4.642 10.021-6.312 1.475-1.478 1.133-4.77.855-6.385Zm-2.961 3.722a1.88 1.88 0 1 1-3.76 0 1.88 1.88 0 0 1 3.76 0Z"></path>
</svg>
</span>
</div>
</summary>
<div class="accordion-content">
<div class="content-text">
<div class="content-description">
Review and refine your current digital presence to improve visual aesthetics and user experience
</div>
<div class="ServicesPanel_tags__6NQOl">
<a class="ServicesPanel_tag__JYwRk" href="#">Competitor analysis</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Interface Cleanup</a>
<a class="ServicesPanel_tag__JYwRk" href="#">Conversion Fixes</a>
<a class="ServicesPanel_tag__JYwRk" href="#">UX UI Revamp</a>
</div>
</div>
<div class="content-image">
<img
src="assets/imgs/BE-01.jpg"
alt="Brand Design Portfolio"
/>
</div>
</div>
</details>
</div>
</div>
</div>
</section>
<div class="wave-transition">
<div class="startups-priorities" id="priorities-section">
<div class="wrap">
<div class="bg">
<video
id="priorities-video1"
playsinline
muted
autoplay
loop
src="./assets/VIDEO/Animation_red_2.mp4"
></video>
<video
id="priorities-video2"
playsinline
muted
autoplay
loop
src="./assets/VIDEO/Animation_Yellow_2.mp4"
></video>
<video
id="priorities-video3"
playsinline
muted
autoplay
loop
src="./assets/VIDEO/Animation_blue_2.mp4"
></video>
</div>
<div class="inner">
<h2 class="title">Our priorities</h2>
<ul class="list" id="priorities-list">
<li id="priorities-item1">Clarity</li>
<li id="priorities-item2">Creativity</li>
<li id="priorities-item3">Performance</li>
</ul>
</div>
<div class="text">
<div id="priorities-text1">
Simplifying complex messages through thoughtful and focused visuals
</div>
<div id="priorities-text2">
Creative solutions built with purpose that aesthetically aligns with your brand
</div>
<div id="priorities-text3">
Results-driven work made to grow with your business authentically
</div>
</div>
</div>
</div>
</div>
<section class="works-section">
<div class="work-be-section pt-0px pb-200px">
<div class="">
<div class="main-title-1">Our Works</div>
<div class="footer-four-1">
<a class="footer-light-title-1">BRANDING</a>
<a class="footer-light-title-1">UI UX
</a>
<a class="footer-light-title-1">DEVELOPMENT</a>
<a class="footer-light-title-1">MARKETING</a>
</div>
</div>
<div class="work-be-section">
<div class="container-fluid pt-150px">
<div class="row justify-content-center">
<div class="col-md-9">
<div class="headerDiscover">
<div class="discover-section">
<h2>Brands That Grew Along The Way</h2>
<div class="tagsDis">
<a href="#" class="tag active" data-tag="Voh">VOH</a>
<a href="#" class="tag" data-tag="Zora">Zora</a>
<a href="#" class="tag" data-tag="RadioRoom">Radio Room
</a>
<a href="#" class="tag" data-tag="WeddingFlavours">Wedding Flavours
</a>
<a href="#" class="tag" data-tag="Poomer">Poomer</a>
</div>
</div>
</div>
<div class="tab-content_01 active" data-content="Voh">
<div class="contentDiscover">
<img src="assets/imgs/BE-09.jpg" alt="" class="ImageDesign">
<div class="d-grid gap-3">
<img src="assets/imgs/BE-10.jpg" alt="" class="ImageDesign">
<img src="assets/imgs/BE-11.jpg" alt="" class="ImageDesign">
</div>
<img src="assets/imgs/BE-12.jpg" alt="" class="ImageDesign">
</div>
</div>
<div class="tab-content_01" data-content="Zora">
<div class="contentDiscover">
<img src="assets/imgs/BE-09.jpg" alt="" class="ImageDesign">
<div class="d-grid gap-3">
<img src="assets/imgs/BE-10.jpg" alt="" class="ImageDesign">
<img src="assets/imgs/BE-11.jpg" alt="" class="ImageDesign">
</div>
<img src="assets/imgs/BE-12.jpg" alt="" class="ImageDesign">
</div>
</div>
<div class="tab-content_01" data-content="RadioRoom">
<div class="contentDiscover">
<img src="assets/imgs/BE-09.jpg" alt="" class="ImageDesign">
<div class="d-grid gap-3">
<img src="assets/imgs/BE-10.jpg" alt="" class="ImageDesign">
<img src="assets/imgs/BE-11.jpg" alt="" class="ImageDesign">
</div>
<img src="assets/imgs/BE-12.jpg" alt="" class="ImageDesign">
</div>
</div>
<div class="tab-content_01" data-content="WeddingFlavours">
<div class="contentDiscover">
<img src="assets/imgs/BE-09.jpg" alt="" class="ImageDesign">
<div class="d-grid gap-3">
<img src="assets/imgs/BE-10.jpg" alt="" class="ImageDesign">
<img src="assets/imgs/BE-11.jpg" alt="" class="ImageDesign">
</div>
<img src="assets/imgs/BE-12.jpg" alt="" class="ImageDesign">
</div>
</div>
<div class="tab-content_01" data-content="Poomer">
<div class="contentDiscover">
<img src="assets/imgs/BE-09.jpg" alt="" class="ImageDesign">
<div class="d-grid gap-3">
<img src="assets/imgs/BE-10.jpg" alt="" class="ImageDesign">
<img src="assets/imgs/BE-11.jpg" alt="" class="ImageDesign">
</div>
<img src="assets/imgs/BE-12.jpg" alt="" class="ImageDesign">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="Timeline_timeline pb-150px" id="timeline">
<div class="Timeline_headings">
<h2 class="text-center" style="color: #fff;">Our Results</h2>
<p class="Timeline_subheading text-center">Measurable outcomes through high-impact design solutions</p>
</div>
<div class="container-timeline">
<div class="Timeline_scroller">
<div class="StaggeredItems_grid">
<div class="Timeline_inner" id="timelineInner">
<div class="Timeline_block panel">
<div role="listitem" class="featured-portfolio_item w-dyn-item">
<div class="image-wrapper-16-9 is-featured-portfolio">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Logo 123 investment managers" class="featured-portfolio_image">
<div class="featured-portfolio_image-hover-wrapper">
<!-- <video class="featured-portfolio_video" muted autoplay loop playsinline preload="auto">
<source src="assets/VIDEO/developer-2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video> -->
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Logo 123 investment managers" class="featured-portfolio_image">
</div>
</div>
<div class="featured-portfolio_item-content">
<div class="w-layout-vflex v-flex-xsmall">
<div class="featured-portfolio_image-list">
<img src="assets/imgs/BE-02.jpg" loading="lazy" alt="Header of the 123 IM site" class="featured-portfolio_image-small">
<img src="assets/imgs/BE-03.jpg" loading="lazy" alt="Parallax animation of 6 cards on website" class="featured-portfolio_image-small">
</div>
</div>
<div class="featured-portfolio_kpi-wrapper">
<p class="text-color-secondary text-size-large">Soft Launching Projects in Phases</p>
<div class="line-divider hide-tablet"></div>
</div>
</div>
<div class="background-wrapper border-radius-medium">
<div class="background-overlay is-reverse"></div>
</div>
<div class="clickable_wrap">
<a href="#" class="clickable_link w-inline-block">
<span class="sr-only">123-IM</span>
</a>
</div>
</div>
</div>
<div class="Timeline_block panel">
<div role="listitem" class="featured-portfolio_item w-dyn-item">
<div class="image-wrapper-16-9 is-featured-portfolio">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Logo 123 investment managers" class="featured-portfolio_image">
<div class="featured-portfolio_image-hover-wrapper">
<!-- <video class="featured-portfolio_video" muted autoplay loop playsinline preload="auto">
<source src="assets/VIDEO/developer-2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video> -->
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Logo 123 investment managers" class="featured-portfolio_image">
</div>
</div>
<div class="featured-portfolio_item-content">
<div class="w-layout-vflex v-flex-xsmall">
<div class="featured-portfolio_image-list">
<img src="assets/imgs/BE-02.jpg" loading="lazy" alt="Header of the 123 IM site" class="featured-portfolio_image-small">
<img src="assets/imgs/BE-03.jpg" loading="lazy" alt="Parallax animation of 6 cards on website" class="featured-portfolio_image-small">
</div>
</div>
<div class="featured-portfolio_kpi-wrapper">
<p class="text-color-secondary text-size-large">Soft Launching Projects in Phases</p>
<div class="line-divider hide-tablet"></div>
</div>
</div>
<div class="background-wrapper border-radius-medium">
<div class="background-overlay is-reverse"></div>
</div>
<div class="clickable_wrap">
<a href="#" class="clickable_link w-inline-block">
<span class="sr-only">123-IM</span>
</a>
</div>
</div>
</div>
<div class="Timeline_block panel">
<div role="listitem" class="featured-portfolio_item w-dyn-item">
<div class="image-wrapper-16-9 is-featured-portfolio">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Logo 123 investment managers" class="featured-portfolio_image">
<div class="featured-portfolio_image-hover-wrapper">
<!-- <video class="featured-portfolio_video" muted autoplay loop playsinline preload="auto">
<source src="assets/VIDEO/developer-2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video> -->
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Logo 123 investment managers" class="featured-portfolio_image">
</div>
</div>
<div class="featured-portfolio_item-content">
<div class="w-layout-vflex v-flex-xsmall">
<div class="featured-portfolio_image-list">
<img src="assets/imgs/BE-02.jpg" loading="lazy" alt="Header of the 123 IM site" class="featured-portfolio_image-small">
<img src="assets/imgs/BE-03.jpg" loading="lazy" alt="Parallax animation of 6 cards on website" class="featured-portfolio_image-small">
</div>
</div>
<div class="featured-portfolio_kpi-wrapper">
<p class="text-color-secondary text-size-large">Soft Launching Projects in Phases</p>
<div class="line-divider hide-tablet"></div>
</div>
</div>
<div class="background-wrapper border-radius-medium">
<div class="background-overlay is-reverse"></div>
</div>
<div class="clickable_wrap">
<a href="#" class="clickable_link w-inline-block">
<span class="sr-only">123-IM</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="faq-section sm-pb-70px pt-100px">
<div class="">
<div class="main-title-3">GOT QUESTIONS?</div>
<div class="footer-four-1">
<a class="footer-light-title-1">BRANDING</a>
<a class="footer-light-title-1">UI UX
</a>
<a class="footer-light-title-1">DEVELOPMENT</a>
<a class="footer-light-title-1">MARKETING</a>
</div>
</div>
<div class="offer-features_component pt-150px pb-150px">
<div class="offer-features_image-wrapper">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Design System" class="offer-features_image active" data-index="0">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="SXO UX/Sitemap" class="offer-features_image" data-index="1">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Conversion CRO" class="offer-features_image" data-index="2">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Branding UI/Art Direction" class="offer-features_image" data-index="3">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Responsiveness and Performance" class="offer-features_image" data-index="4">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Branding UI/Art Direction" class="offer-features_image" data-index="5">
<img src="assets/imgs/BE-01.jpg" loading="lazy" alt="Conversion CRO" class="offer-features_image" data-index="6">
</div>
<ul role="list" class="offer-features_list">
<li class="offer-features_item active" data-index="0" style="border-color: rgba(248, 248, 248, 0.1);">
<div class="offer-features_item-head">
<h3 class="text-size-xlarge" style="font-weight: 400;">Why don’t you have more results on display?</h3>
<div class="accordion_icon-wrapper" >
<div class="accordion_icon-line"></div>
<div class="accordion_icon-line is-second" style="transform: rotate(90deg);"></div>
<div class="accordion_icon-background" style="opacity: 1;"></div>
</div>
<div class="offer-features_divider" style="opacity: 0;"></div>
</div>
<div class="offer-features_item-content" style="height: 197px;">
<div class="max-width-medium">
<div class="text-size-regular w-richtext">
<p>Many of our projects are protected by NDAs, but we’re fortunate to share a few that highlight the impact we’ve created together with our clients.</p>
<!-- <p></p>
<p>Many of our projects are protected by NDAs, but we’re fortunate to share a few that highlight the impact we’ve created together with our clients.</p> -->
</div>
</div>
<div class="spacer-semimedium"></div>
<div class="offer-features_image-wrapper is-tablet">
<img src="https://cdn.prod.website-files.com/6705382c85d21c496de94fa5/675c3919286ce1bbb5f403e4_webdesign-design-system-digidop-agency.webp" loading="lazy" alt="Webdesign Design System by Digidop" class="offer-features_image active">
</div>
</div>
<div class="offer-features_item-background" style="opacity: 1;"></div>
</li>
<li class="offer-features_item" data-index="1" style="border-color: rgba(248, 248, 248, 0);">
<div class="offer-features_item-head">
<h3 class="text-size-xlarge" style="font-weight: 400;">Do you ever share results without client permission?</h3>
<div class="accordion_icon-wrapper" style="background-color: rgb(51, 51, 51);">
<div class="accordion_icon-line"></div>
<div class="accordion_icon-line is-second"></div>
<div class="accordion_icon-background" style="opacity: 0;"></div>
</div>
<div class="offer-features_divider" style="opacity: 1;"></div>
</div>
<div class="offer-features_item-content" style="height: 0px;">
<div class="max-width-medium">
<div class="text-size-regular w-richtext">
<p>Never. We always seek explicit permission before showcasing any client work or results</p>
<!-- <p></p>
<p>By ensuring your website is easy to navigate, optimized for <strong>search engines</strong>, and the <strong>content</strong> is tailored for <strong>SEO performance</strong>, you enable search engines to crawl your site effectively. This boosts your <strong>rankings</strong>, drives <strong>organic traffic</strong>, and enhances both <strong>user engagement</strong> and <strong>conversion rates</strong>.</p> -->
</div>
</div>
<div class="spacer-semimedium"></div>
<div class="offer-features_image-wrapper is-tablet">
<img src="https://cdn.prod.website-files.com/6705382c85d21c496de94fa5/6773c98000063cd04b4c6f58_webflow-seo.webp" loading="lazy" alt="Webflow SEO 100% Google Lighthouse" class="offer-features_image active">
</div>
</div>
<div class="offer-features_item-background" style="opacity: 0;"></div>
</li>
<li class="offer-features_item" data-index="2">
<div class="offer-features_item-head">
<h3 class="text-size-xlarge" style="font-weight: 400;">What is UI/UX design and how does it help my business?</h3>
<div class="accordion_icon-wrapper">
<div class="accordion_icon-line"></div>
<div class="accordion_icon-line is-second"></div>
<div class="accordion_icon-background" style="opacity: 0;"></div>
</div>
<div class="offer-features_divider"></div>
</div>
<div class="offer-features_item-content" style="height: 0px;">
<div class="max-width-medium">
<div class="text-size-regular w-richtext">
<p>UI/UX design focuses on creating clean, intuitive interfaces that users love. It improves user satisfaction, increases engagement and drives more conversions</p>
</div>
</div>
<div class="spacer-semimedium"></div>
<div class="offer-features_image-wrapper is-tablet">
<img src="https://cdn.prod.website-files.com/6705382c85d21c496de94fa5/6773c9809a04c1b58ecd1467_webflow-a-b-tests-conversion.webp" loading="lazy" alt="Webflow Optimize with A/B Test for conversion" class="offer-features_image active">
</div>
</div>
<div class="offer-features_item-background" style="opacity: 0;"></div>
</li>
<li class="offer-features_item" data-index="3">
<div class="offer-features_item-head">
<h3 class="text-size-xlarge" style="font-weight: 400;">How long does it take to develop a product?</h3>
<div class="accordion_icon-wrapper">
<div class="accordion_icon-line"></div>
<div class="accordion_icon-line is-second"></div>
<div class="accordion_icon-background" style="opacity: 0;"></div>
</div>
<div class="offer-features_divider"></div>
</div>
<div class="offer-features_item-content" style="height: 0px;">
<div class="max-width-medium">
<div class="text-size-regular w-richtext">
<p>Timelines vary based on scope and complexity. Our goal is always to deliver efficiently without compromising quality.</p>
<!-- <p></p>
<p>They help make your business <strong>more recognizable</strong> and foster <strong>trust</strong> with your audience, creating a memorable and impactful user experience that resonates with your customers.</p> -->
</div>
</div>
<div class="spacer-semimedium"></div>
<div class="offer-features_image-wrapper is-tablet">
<img src="https://cdn.prod.website-files.com/6705382c85d21c496de94fa5/67518f9112af9e4848d41a01_webdesign-branding.jpg" loading="lazy" alt="Webdesign branding by Digidop" class="offer-features_image active">
</div>
</div>
<div class="offer-features_item-background" style="opacity: 0;"></div>
</li>
<li class="offer-features_item" data-index="4">
<div class="offer-features_item-head">
<h3 class="text-size-xlarge" style="font-weight: 400;">What’s your approach to building a brand identity?</h3>
<div class="accordion_icon-wrapper">
<div class="accordion_icon-line"></div>
<div class="accordion_icon-line is-second"></div>
<div class="accordion_icon-background" style="opacity: 0;"></div>
</div>
<div class="offer-features_divider"></div>
</div>
<div class="offer-features_item-content" style="height: 0px;">
<div class="max-width-medium">
<div class="text-size-regular w-richtext">
<p>We begin by understanding your brand’s mission, audience, and market. We begin by crafting the visual identity including logo, colors, typography and brand guidelines that feels cohesive and communicates clearly across all platforms</p>
<!-- <p></p>
<p>In 2025, with mobile devices generating approximately <strong>60% of global web traffic</strong>, having a <strong>responsive website</strong> is crucial for engaging mobile users and <strong>reducing bounce rates</strong>.</p> -->
</div>
</div>
<div class="spacer-semimedium"></div>
<div class="offer-features_image-wrapper is-tablet">
<img src="https://cdn.prod.website-files.com/6705382c85d21c496de94fa5/675c3977d8d98f4151eefb45_webdesign-responsive.webp" loading="lazy" alt="Webflow responsive dashboard for Coudac by Digidop" class="offer-features_image active">
</div>
</div>
<div class="offer-features_item-background" style="opacity: 0;"></div>
</li>
<li class="offer-features_item" data-index="5">
<div class="offer-features_item-head">
<h3 class="text-size-xlarge" style="font-weight: 400;">What’s included in your design consultancy service?</h3>
<div class="accordion_icon-wrapper">
<div class="accordion_icon-line"></div>
<div class="accordion_icon-line is-second"></div>
<div class="accordion_icon-background" style="opacity: 0;"></div>
</div>
<div class="offer-features_divider"></div>
</div>
<div class="offer-features_item-content" style="height: 0px;">
<div class="max-width-medium">
<div class="text-size-regular w-richtext">
<p>Our consultancy offers a full design diagnosis: from audit and competitor analysis to actionable strategies and implementation. We identify visual gaps and offer solutions that enhance both appeal and performance.</p>
<!-- <p></p>
<p>In 2025, with mobile devices generating approximately <strong>60% of global web traffic</strong>, having a <strong>responsive website</strong> is crucial for engaging mobile users and <strong>reducing bounce rates</strong>.</p> -->
</div>
</div>
<div class="spacer-semimedium"></div>
<div class="offer-features_image-wrapper is-tablet">
<img src="https://cdn.prod.website-files.com/6705382c85d21c496de94fa5/675c3977d8d98f4151eefb45_webdesign-responsive.webp" loading="lazy" alt="Webflow responsive dashboard for Coudac by Digidop" class="offer-features_image active">
</div>
</div>
<div class="offer-features_item-background" style="opacity: 0;"></div>
</li>
<li class="offer-features_item" data-index="6">
<div class="offer-features_item-head">
<h3 class="text-size-xlarge" style="font-weight: 400;">How do you tailor services for each business?</h3>
<div class="accordion_icon-wrapper">
<div class="accordion_icon-line"></div>
<div class="accordion_icon-line is-second"></div>
<div class="accordion_icon-background" style="opacity: 0;"></div>
</div>
<div class="offer-features_divider"></div>
</div>
<div class="offer-features_item-content" style="height: 0px;">
<div class="max-width-medium">
<div class="text-size-regular w-richtext">
<p>We start with a deep dive into your goals, challenges, and industry. Then, we customize our services from branding and UI/UX to web, content, and marketing to align directly with your objectives.</p>
<!-- <p></p>
<p>In 2025, with mobile devices generating approximately <strong>60% of global web traffic</strong>, having a <strong>responsive website</strong> is crucial for engaging mobile users and <strong>reducing bounce rates</strong>.</p> -->
</div>
</div>
<div class="spacer-semimedium"></div>
<div class="offer-features_image-wrapper is-tablet">
<img src="https://cdn.prod.website-files.com/6705382c85d21c496de94fa5/675c3977d8d98f4151eefb45_webdesign-responsive.webp" loading="lazy" alt="Webflow responsive dashboard for Coudac by Digidop" class="offer-features_image active">
</div>
</div>
<div class="offer-features_item-background" style="opacity: 0;"></div>
</li>
<li class="offer-features_item" data-index="7">
<div class="offer-features_item-head">
<h3 class="text-size-xlarge" style="font-weight: 400;">How do you handle feedback and revisions?</h3>
<div class="accordion_icon-wrapper">
<div class="accordion_icon-line"></div>
<div class="accordion_icon-line is-second"></div>
<div class="accordion_icon-background" style="opacity: 0;"></div>
</div>
<div class="offer-features_divider"></div>
</div>
<div class="offer-features_item-content" style="height: 0px;">
<div class="max-width-medium">
<div class="text-size-regular w-richtext">
<p>We keep the process collaborative and feedback-friendly. With structured review rounds, we make sure your input shapes the final outcome. We don’t wrap until you’re satisfied with the outcome</p>
<!-- <p></p>
<p>In 2025, with mobile devices generating approximately <strong>60% of global web traffic</strong>, having a <strong>responsive website</strong> is crucial for engaging mobile users and <strong>reducing bounce rates</strong>.</p> -->
</div>
</div>
<div class="spacer-semimedium"></div>
<div class="offer-features_image-wrapper is-tablet">
<img src="https://cdn.prod.website-files.com/6705382c85d21c496de94fa5/675c3977d8d98f4151eefb45_webdesign-responsive.webp" loading="lazy" alt="Webflow responsive dashboard for Coudac by Digidop" class="offer-features_image active">
</div>
</div>
<div class="offer-features_item-background" style="opacity: 0;"></div>
</li>
</ul>
</div>
</section>
<div class="footer" data-border="true">
<div class="top-section">
<div class="logo1">
<a href="index.html">BRAND <br>ESSENTIALS</a>
</div>
<div class="nav-section">
<a href="#">Work</a><br>
<a href="#">Services</a><br>
<a href="#">About</a><br>
<a href="#">Testimonials</a><br>
<a href="#" rel="noopener">Connect</a><br>
</div>
<div class="email-section">
<a href="mailto:info@brandessentials.in" rel="noopener">info@brandessentials.in</a>
</div>
</div>
<div class="bottom-section">
<div class="copyright">
©BE 2025
</div>
<div class="social">
<a href="#" rel="noopener">Instagram</a>
</div>
<div class="empty">
</div>
</div>
<div class="wave-container1">
<img src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%221729%22%20height%3D%221802%22%20fill%3D%22none%22%3E%3Cmask%20id%3D%22a%22%20width%3D%221729%22%20height%3D%221802%22%20x%3D%220%22%20y%3D%220%22%20maskUnits%3D%22userSpaceOnUse%22%20style%3D%22mask-type%3Aalpha%22%3E%3Cpath%20fill%3D%22%23frfrf%22%20d%3D%22M0%200h1728v1800.83H0z%22%20style%3D%22fill%3A%23d9d9d9%3Bfill%3Acolor(display-p3%20.851%20.851%20.851)%3Bfill-opacity%3A1%22%20transform%3D%22matrix(-1%200%200%201%201728.71%20.863)%22%2F%3E%3C%2Fmask%3E%3Cg%20mask%3D%22url(%23a)%22%3E%3Cg%20filter%3D%22url(%23b)%22%3E%3Cpath%20fill%3D%22%23FF7300%22%20d%3D%22M243.146%20442.489C56.421%20296.6-247.47%20322.512-376.076%20353.704l179.126%20923.906H851.931l944.119%2033.15%20265.09-728.258c5.7-7.723-39.35-65.812-265.09-236.39-282.19-213.223-705.48-75.755-838.158%2097.211-132.674%20172.966-481.339%20181.526-714.746-.834Z%22%20style%3D%22fill%3A%23ff7300%3Bfill%3A%20color(display-p3%200%200.23%201)%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23c)%22%3E%3Cpath%20stroke%3D%22red%22%20stroke-width%3D%2271%22%20d%3D%22M2061.14%20582.5c5.7-7.723-39.35-65.812-265.1-236.39-282.18-213.223-705.47-75.755-838.149%2097.211-132.674%20172.966-481.339%20181.526-714.745-.834C56.42%20296.599-247.472%20322.51-376.077%20353.701%22%20style%3D%22stroke%3Ared%3Bstroke%3A%20color(display-p3%200%200.36%201)%3Bstroke-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23d)%22%20opacity%3D%22.5%22%3E%3Cpath%20stroke%3D%22red%22%20stroke-width%3D%2271%22%20d%3D%22M2061.13%20531.531c5.7-7.722-39.35-65.812-265.09-236.39-282.18-213.223-705.48-75.755-838.156%2097.211-229.419%20299.09-481.34%20181.526-714.746-.834C56.412%20245.63-247.479%20271.541-376.085%20302.732%22%20style%3D%22stroke%3Ared%3Bstroke%3A%20color(display-p3%200%201%200.94)%3Bstroke-opacity%3A1%22%2F%3E%3C%2Fg%3E%3Cg%20filter%3D%22url(%23e)%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M-478.381%201420.69c0%202117.34%20655.442%201664.27%201382.846%201664.27%20727.405%200%201251.315%20143.55%201251.315-1664.27%200-267.57-589.68-484.482-1317.08-484.482-727.404%200-1317.081%20216.912-1317.081%20484.482Z%22%20style%3D%22fill%3A%23fff%3Bfill-opacity%3A1%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cdefs%3E%3Cfilter%20id%3D%22b%22%20width%3D%222845.68%22%20height%3D%221481.29%22%20x%3D%22-580.078%22%20y%3D%2233.467%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22c%22%20width%3D%222889.54%22%20height%3D%22817.69%22%20x%3D%22-588.445%22%20y%3D%22-2.023%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22d%22%20width%3D%222889.54%22%20height%3D%22867.63%22%20x%3D%22-588.453%22%20y%3D%22-52.992%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22102%22%2F%3E%3C%2Ffilter%3E%3Cfilter%20id%3D%22e%22%20width%3D%223202.16%22%20height%3D%222757.44%22%20x%3D%22-762.383%22%20y%3D%22652.208%22%20color-interpolation-filters%3D%22sRGB%22%20filterUnits%3D%22userSpaceOnUse%22%3E%3CfeFlood%20flood-opacity%3D%220%22%20result%3D%22BackgroundImageFix%22%2F%3E%3CfeBlend%20in%3D%22SourceGraphic%22%20in2%3D%22BackgroundImageFix%22%20result%3D%22shape%22%2F%3E%3CfeGaussianBlur%20result%3D%22effect1_foregroundBlur_760_56865%22%20stdDeviation%3D%22142%22%2F%3E%3C%2Ffilter%3E%3C%2Fdefs%3E%3C%2Fsvg%3E"
alt="Wave design"
class="wave-base">
<canvas id="waveCanvas1" resize></canvas>
<div id="gui_container1"></div>
</div>
</div>
</div>
</div>
<div class="subscr-cover-link" id="subscrLink" style="--width: 253.156px;">
<div>
<a href="#" class="butn butn-rounded">
<div class="d-flex align-items-center">
<span class="text">
<span>
Let's get on a <strong>call</strong>
</span>
</span>
<span class="icon ml-10">
<img src="https://uithemez.com/i/hubfolio_HTML/common/imgs/icons/arrow-top-right.svg" alt="">
</span>
</div>
</a>
</div>
</div>
<script src="./common/js/lib/jquery-3.6.0.min.js"></script>
<script src="./common/js/lib/jquery-migrate-3.4.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/ScrollTrigger.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/8.4.7/swiper-bundle.min.js"></script>
<style>
.swiper-slide {
transition: transform 1s ease, opacity 1s ease !important;
transform-style: preserve-3d;
backface-visibility: hidden;
}
.swiper-slide:not(.swiper-slide-active) {
filter: brightness(0.9);
}
</style>
<script>
function updateScrollPercentages() {
const benefitsSection = document.querySelector(".startups-benefits");
const rect = benefitsSection.getBoundingClientRect();
const sectionTop = rect.top;
const sectionHeight = rect.height * 3;
const rawPercent = Math.max(0, Math.min(1, -sectionTop / sectionHeight));
const percent = easeOutCubic(rawPercent);
benefitsSection.style.setProperty("--percent", percent);
benefitsSection.style.setProperty(
"--percent1",
Math.max(0, Math.min(1, percent * 5))
);
benefitsSection.style.setProperty(
"--percent2",
Math.max(0, Math.min(1, (percent - 0.2) * 5))
);
benefitsSection.style.setProperty(
"--percent3",
Math.max(0, Math.min(1, (percent - 0.4) * 5))
);
benefitsSection.style.setProperty(
"--percent4",
Math.max(0, Math.min(1, (percent - 0.6) * 5))
);
benefitsSection.style.setProperty(
"--percent5",
Math.max(0, Math.min(1, (percent - 0.8) * 5))
);
benefitsSection.style.setProperty(
"--percent6",
Math.max(0, Math.min(1, (percent - 1.0) * 5))
);
}
function easeOutCubic(x) {
return 1 - Math.pow(1 - x, 3);
}
let lastKnownScrollPosition = 0;
let ticking = false;
window.addEventListener("scroll", function() {
lastKnownScrollPosition = window.scrollY;
if (!ticking) {
window.requestAnimationFrame(function() {
updateScrollPercentages();
ticking = false;
});
ticking = true;
}
});
updateScrollPercentages();
window.addEventListener("resize", function() {
updateScrollPercentages();
});
</script>
<script>
class WaveAnimation {
constructor(canvasId) {
this.canvasId = canvasId;
this.canvas = document.getElementById(canvasId);
if (!this.canvas) {
console.error(`Canvas with id "${canvasId}" not found`);
return;
}
this.ctx = this.canvas.getContext('2d');
this.ratio = window.devicePixelRatio || 1;
this.waveTotal = 6;
this.baseWaveHeight = 120;
this.maxWaveHeight = 300;
this.waveSpeed = 0.20;
this.frequencyNodes = [];
this.frequencySpeed = 0.02;
this.frequencyScale = 1;
this.time = 0;
this.nodes = this.setWaveNodes();
this.initFrequencyNodes();
this.isAnimating = false;
this.animationFrameId = null;
this.resizeTimeout = null;
this.init();
this.setupEventListeners();
this.animate();
}
setupEventListeners() {
const resizeHandler = () => {
clearTimeout(this.resizeTimeout);
this.resizeTimeout = setTimeout(() => {
this.resizeCanvasToDisplaySize();
}, 100);
};
// Store handlers for cleanup
this.resizeHandler = resizeHandler;
this.orientationHandler = () => {
setTimeout(() => {
this.resizeCanvasToDisplaySize();
}, 100);
};
window.addEventListener('resize', this.resizeHandler);
window.addEventListener('orientationchange', this.orientationHandler);
}
setWaveNodes() {
const offSetNodes = this.waveTotal + 2;
const canvasWidth = this.canvas ? this.canvas.getBoundingClientRect().width : window.innerWidth;
return [...Array(offSetNodes)].map((_, index) => [
((index - 1) * canvasWidth) / this.waveTotal,
0,
Math.random() * this.baseWaveHeight,
this.waveSpeed
]);
}
initFrequencyNodes() {
this.frequencyNodes = this.nodes.map((_, index) => ({
amplitude: Math.random() * 0.8 + 0.2,
frequency: Math.random() * 0.03 + 0.01,
phase: Math.random() * Math.PI * 2,
heightMultiplier: Math.random() * 0.7 + 0.3,
speedMultiplier: Math.random() * 0.5 + 0.5
}));
}
init() {
this.sizeCanvas();
}
sizeCanvas() {
const rect = this.canvas.getBoundingClientRect();
let width = rect.width;
let height = rect.height;
// Mobile responsive adjustments
const isMobile = window.innerWidth <= 768;
const isSmallMobile = window.innerWidth <= 480;
if (isSmallMobile) {
// Small mobile: use viewport width for better spreading
width = window.innerWidth;
height = window.innerHeight * 0.5;
} else if (isMobile) {
// Tablet: scale appropriately
width = window.innerWidth;
height = window.innerHeight * 0.6;
}
const pixelRatio = Math.min(this.ratio, isMobile ? 1 : 2);
if (this.canvas.width !== width * pixelRatio || this.canvas.height !== height * pixelRatio) {
this.canvas.width = width * pixelRatio;
this.canvas.height = height * pixelRatio;
this.canvas.style.width = width + 'px';
this.canvas.style.height = height + 'px';
this.ctx.scale(pixelRatio, pixelRatio);
return true;
}
return false;
}
resizeCanvasToDisplaySize() {
const rect = this.canvas.getBoundingClientRect();
let width = rect.width;
let height = rect.height;
// Mobile responsive adjustments
const isMobile = window.innerWidth <= 768;
const isSmallMobile = window.innerWidth <= 480;
if (isSmallMobile) {
width = window.innerWidth;
height = window.innerHeight * 0.5;
} else if (isMobile) {
width = window.innerWidth;
height = window.innerHeight * 0.6;
}
const pixelRatio = Math.min(this.ratio, isMobile ? 1 : 2);
this.canvas.width = width * pixelRatio;
this.canvas.height = height * pixelRatio;
this.canvas.style.width = width + 'px';
this.canvas.style.height = height + 'px';
this.ctx.scale(pixelRatio, pixelRatio);
this.nodes = this.setWaveNodes();
this.initFrequencyNodes();
return true;
}
diff(a, b) {
return (b - a) / 2 + a;
}
getFrequencyHeight(index) {
const freqNode = this.frequencyNodes[index];
if (!freqNode) return 1;
const baseFreq = Math.sin(this.time * freqNode.frequency + freqNode.phase);
const harmonicFreq = Math.sin(this.time * freqNode.frequency * 2.3 + freqNode.phase * 1.7) * 0.3;
const slowFreq = Math.sin(this.time * freqNode.frequency * 0.5 + freqNode.phase * 0.8) * 0.5;
const combined = (baseFreq + harmonicFreq + slowFreq) * freqNode.amplitude;
const heightVariation = Math.abs(combined) * freqNode.heightMultiplier;
const randomVariation = Math.sin(this.time * 0.1 + index) * 0.2;
return Math.max(0.1, heightVariation + randomVariation + 0.3);
}
drawWave() {
const wave = this.nodes;
const ctx = this.ctx;
const canvasWidth = this.canvas.getBoundingClientRect().width;
const avgHeight = wave.reduce((sum, node) => sum + node[1], 0) / wave.length;
const intensity = Math.min(1, avgHeight / this.maxWaveHeight);
const gradient = ctx.createRadialGradient(
canvasWidth * 0.1, 0, canvasWidth * 0.5,
canvasWidth * 0.1, canvasWidth * 0.25, canvasWidth * 1.5
);
gradient.addColorStop(0.15, "#02019d");
gradient.addColorStop(0.5, "#02019d");
gradient.addColorStop(1, "#02019d");
ctx.fillStyle = gradient;
ctx.beginPath();
ctx.moveTo(0, ctx.canvas.height / (this.ratio || 1));
ctx.lineTo(wave[0][0], wave[0][1]);
for (let i = 0; i < wave.length; i++) {
if (wave[i + 1]) {
ctx.quadraticCurveTo(
wave[i][0],
wave[i][1],
this.diff(wave[i][0], wave[i + 1][0]),
this.diff(wave[i][1], wave[i + 1][1])
);
} else {
ctx.lineTo(wave[i][0], wave[i][1]);
ctx.lineTo(canvasWidth, ctx.canvas.height / (this.ratio || 1));
}
}
ctx.closePath();
ctx.fill();
}
draw() {
const ctx = this.ctx;
this.time += this.frequencySpeed;
const canvasWidth = this.canvas.getBoundingClientRect().width;
const canvasHeight = this.canvas.getBoundingClientRect().height;
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
// Mobile responsive wave adjustments
const isMobile = window.innerWidth <= 768;
const waveHeightMultiplier = isMobile ? 1.2 : 1;
const basePositionOffset = isMobile ? 0.3 : 0.45;
this.nodes = this.nodes.map((node, index) => {
const frequencyHeight = this.getFrequencyHeight(index);
const dynamicHeight = this.baseWaveHeight + (this.maxWaveHeight - this.baseWaveHeight) * frequencyHeight;
const waveMotion = (dynamicHeight / 2) * Math.sin(node[2] / 15);
const basePosition = canvasHeight * 0.5 - (canvasHeight * basePositionOffset) + (dynamicHeight * waveHeightMultiplier);
return [
node[0],
waveMotion + basePosition,
node[2] + node[3] * this.frequencyNodes[index].speedMultiplier,
node[3]
];
});
this.drawWave();
}
animate() {
this.draw();
this.animationFrameId = requestAnimationFrame(() => this.animate());
}
pauseAnimation() {
if (this.animationFrameId) {
cancelAnimationFrame(this.animationFrameId);
this.animationFrameId = null;
}
}
resumeAnimation() {
if (!this.animationFrameId) {
this.animate();
}
}
destroy() {
if (this.animationFrameId) {
cancelAnimationFrame(this.animationFrameId);
this.animationFrameId = null;
}
if (this.resizeTimeout) {
clearTimeout(this.resizeTimeout);
this.resizeTimeout = null;
}
if (this.resizeHandler) {
window.removeEventListener('resize', this.resizeHandler);
}
if (this.orientationHandler) {
window.removeEventListener('orientationchange', this.orientationHandler);
}
}
}
// Initialize both wave animations independently
const wave1 = new WaveAnimation('waveCanvas');
const wave2 = new WaveAnimation('waveCanvas1');
// Prevent jitter during scroll by pausing animations
let scrollTimeout;
window.addEventListener('scroll', () => {
wave1.pauseAnimation();
wave2.pauseAnimation();
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(() => {
wave1.resumeAnimation();
wave2.resumeAnimation();
}, 150);
}, { passive: true });
// Cleanup on page unload
window.addEventListener('beforeunload', () => {
if (wave1) wave1.destroy();
if (wave2) wave2.destroy();
});
</script>
<!-- <script>
class WaveAnimation {
constructor(canvasId) {
this.canvas = document.getElementById(canvasId);
this.ctx = this.canvas.getContext('2d');
this.ratio = window.devicePixelRatio || 1;
this.waveTotal = 6;
this.baseWaveHeight = 120;
this.maxWaveHeight = 300;
this.waveSpeed = 0.20;
this.frequencyNodes = [];
this.frequencySpeed = 0.02;
this.frequencyScale = 1;
this.time = 0;
this.nodes = this.setWaveNodes();
this.initFrequencyNodes();
this.init();
this.animate();
this.resizeTimeout = null;
window.addEventListener('resize', () => {
clearTimeout(this.resizeTimeout);
this.resizeTimeout = setTimeout(() => {
this.resizeCanvasToDisplaySize();
}, 100);
});
window.addEventListener('orientationchange', () => {
setTimeout(() => {
this.resizeCanvasToDisplaySize();
}, 100);
});
}
setWaveNodes() {
const offSetNodes = this.waveTotal + 2;
const canvasWidth = this.canvas ? this.canvas.getBoundingClientRect().width : window.innerWidth;
return [...Array(offSetNodes)].map((_, index) => [
((index - 1) * canvasWidth) / this.waveTotal,
0,
Math.random() * this.baseWaveHeight,
this.waveSpeed
]);
}
initFrequencyNodes() {
this.frequencyNodes = this.nodes.map((_, index) => ({
amplitude: Math.random() * 0.8 + 0.2,
frequency: Math.random() * 0.03 + 0.01,
phase: Math.random() * Math.PI * 2,
heightMultiplier: Math.random() * 0.7 + 0.3,
speedMultiplier: Math.random() * 0.5 + 0.5
}));
}
init() {
this.sizeCanvas();
}
sizeCanvas() {
const rect = this.canvas.getBoundingClientRect();
const width = rect.width;
const height = rect.height;
const pixelRatio = Math.min(this.ratio, window.innerWidth <= 768 ? 1.5 : 2);
if (this.canvas.width !== width * pixelRatio || this.canvas.height !== height * pixelRatio) {
this.canvas.width = width * pixelRatio;
this.canvas.height = height * pixelRatio;
this.canvas.style.width = width + 'px';
this.canvas.style.height = height + 'px';
this.ctx.scale(pixelRatio, pixelRatio);
return true;
}
return false;
}
resizeCanvasToDisplaySize() {
const rect = this.canvas.getBoundingClientRect();
const width = rect.width;
const height = rect.height;
const pixelRatio = Math.min(this.ratio, window.innerWidth <= 768 ? 1.5 : 2);
this.canvas.width = width * pixelRatio;
this.canvas.height = height * pixelRatio;
this.canvas.style.width = width + 'px';
this.canvas.style.height = height + 'px';
this.ctx.scale(pixelRatio, pixelRatio);
this.nodes = this.setWaveNodes();
this.initFrequencyNodes();
return true;
}
diff(a, b) {
return (b - a) / 2 + a;
}
getFrequencyHeight(index) {
const freqNode = this.frequencyNodes[index];
if (!freqNode) return 1;
const baseFreq = Math.sin(this.time * freqNode.frequency + freqNode.phase);
const harmonicFreq = Math.sin(this.time * freqNode.frequency * 2.3 + freqNode.phase * 1.7) * 0.3;
const slowFreq = Math.sin(this.time * freqNode.frequency * 0.5 + freqNode.phase * 0.8) * 0.5;
const combined = (baseFreq + harmonicFreq + slowFreq) * freqNode.amplitude;
const heightVariation = Math.abs(combined) * freqNode.heightMultiplier;
const randomVariation = Math.sin(this.time * 0.1 + index) * 0.2;
return Math.max(0.1, heightVariation + randomVariation + 0.3);
}
drawWave() {
const wave = this.nodes;
const ctx = this.ctx;
const canvasWidth = this.canvas.getBoundingClientRect().width;
const avgHeight = wave.reduce((sum, node) => sum + node[1], 0) / wave.length;
const intensity = Math.min(1, avgHeight / this.maxWaveHeight);
const gradient = ctx.createRadialGradient(
canvasWidth * 0.1, 0, canvasWidth * 0.5,
canvasWidth * 0.1, canvasWidth * 0.25, canvasWidth * 1.5
);
gradient.addColorStop(0.15, "#02019d");
gradient.addColorStop(0.5, "#02019d");
gradient.addColorStop(1, "#02019d");
ctx.fillStyle = gradient;
ctx.beginPath();
ctx.moveTo(0, ctx.canvas.height / (this.ratio || 1));
ctx.lineTo(wave[0][0], wave[0][1]);
for (let i = 0; i < wave.length; i++) {
if (wave[i + 1]) {
ctx.quadraticCurveTo(
wave[i][0],
wave[i][1],
this.diff(wave[i][0], wave[i + 1][0]),
this.diff(wave[i][1], wave[i + 1][1])
);
} else {
ctx.lineTo(wave[i][0], wave[i][1]);
ctx.lineTo(canvasWidth, ctx.canvas.height / (this.ratio || 1));
}
}
ctx.closePath();
ctx.fill();
}
draw() {
const ctx = this.ctx;
this.time += this.frequencySpeed;
const canvasWidth = this.canvas.getBoundingClientRect().width;
const canvasHeight = this.canvas.getBoundingClientRect().height;
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
this.nodes = this.nodes.map((node, index) => {
const frequencyHeight = this.getFrequencyHeight(index);
const dynamicHeight = this.baseWaveHeight + (this.maxWaveHeight - this.baseWaveHeight) * frequencyHeight;
const waveMotion = (dynamicHeight / 2) * Math.sin(node[2] / 15);
const basePosition = canvasHeight * 0.5 - (canvasHeight * 0.45) + dynamicHeight;
return [
node[0],
waveMotion + basePosition,
node[2] + node[3] * this.frequencyNodes[index].speedMultiplier,
node[3]
];
});
this.drawWave();
}
animate() {
this.draw();
this.animationFrameId = requestAnimationFrame(() => this.animate());
}
destroy() {
if (this.animationFrameId) {
cancelAnimationFrame(this.animationFrameId);
}
clearTimeout(this.resizeTimeout);
}
}
// Initialize only the wave animation
// const wave1 = new WaveAnimation('waveCanvas');
const wave2 = new WaveAnimation('waveCanvas1');
</script> -->
<!-- <script src="./common/js/lib/plugins.js"></script> -->
<script src="./common/js/gsap_lib/gsap.min.js"></script>
<script src="./common/js/gsap_lib/ScrollSmoother.min.js"></script>
<script src="./common/js/gsap_lib/ScrollTrigger.min.js"></script>
<script src="./common/js/gsap_lib/SplitText.min.js"></script>
<script src="assets/js/scripts.js"></script>
<script src="./common/js/common_scripts.js"></script>
<!-- <script>
class WaveAnimation {
constructor(canvasId) {
this.canvas = document.getElementById(canvasId);
this.ctx = this.canvas.getContext('2d');
this.ratio = window.devicePixelRatio || 1;
this.waveTotal = 6;
this.baseWaveHeight = 120;
this.maxWaveHeight = 300;
this.waveSpeed = 0.20;
this.frequencyNodes = [];
this.frequencySpeed = 0.02;
this.frequencyScale = 1;
this.time = 0;
this.nodes = this.setWaveNodes();
this.initFrequencyNodes();
this.init();
// Start animation
this.animate();
// Handle resize with debouncing for better performance
this.resizeTimeout = null;
window.addEventListener('resize', () => {
clearTimeout(this.resizeTimeout);
this.resizeTimeout = setTimeout(() => {
this.resizeCanvasToDisplaySize();
}, 100);
});
// Handle orientation change on mobile
window.addEventListener('orientationchange', () => {
setTimeout(() => {
this.resizeCanvasToDisplaySize();
}, 100);
});
}
setWaveNodes() {
const offSetNodes = this.waveTotal + 2;
const canvasWidth = this.canvas ? this.canvas.getBoundingClientRect().width : window.innerWidth;
return [...Array(offSetNodes)].map((_, index) => [
((index - 1) * canvasWidth) / this.waveTotal,
0,
Math.random() * this.baseWaveHeight,
this.waveSpeed
]);
}
initFrequencyNodes() {
// Create frequency modulation nodes for each wave point
this.frequencyNodes = this.nodes.map((_, index) => ({
amplitude: Math.random() * 0.8 + 0.2, // Random amplitude between 0.2 and 1
frequency: Math.random() * 0.03 + 0.01, // Random frequency
phase: Math.random() * Math.PI * 2, // Random phase offset
heightMultiplier: Math.random() * 0.7 + 0.3, // Height variation
speedMultiplier: Math.random() * 0.5 + 0.5 // Speed variation
}));
}
init() {
this.sizeCanvas();
}
sizeCanvas() {
const rect = this.canvas.getBoundingClientRect();
const width = rect.width;
const height = rect.height;
// Use appropriate pixel ratio for better mobile performance
const pixelRatio = Math.min(this.ratio, window.innerWidth <= 768 ? 1.5 : 2);
if (this.canvas.width !== width * pixelRatio || this.canvas.height !== height * pixelRatio) {
this.canvas.width = width * pixelRatio;
this.canvas.height = height * pixelRatio;
this.canvas.style.width = width + 'px';
this.canvas.style.height = height + 'px';
this.ctx.scale(pixelRatio, pixelRatio);
return true;
}
return false;
}
resizeCanvasToDisplaySize() {
const rect = this.canvas.getBoundingClientRect();
const width = rect.width;
const height = rect.height;
const pixelRatio = Math.min(this.ratio, window.innerWidth <= 768 ? 1.5 : 2);
// Always update canvas size to match current container
this.canvas.width = width * pixelRatio;
this.canvas.height = height * pixelRatio;
this.canvas.style.width = width + 'px';
this.canvas.style.height = height + 'px';
this.ctx.scale(pixelRatio, pixelRatio);
// Recalculate nodes based on new width
this.nodes = this.setWaveNodes();
this.initFrequencyNodes();
return true;
}
diff(a, b) {
return (b - a) / 2 + a;
}
getFrequencyHeight(index) {
const freqNode = this.frequencyNodes[index];
if (!freqNode) return 1;
// Create complex frequency pattern
const baseFreq = Math.sin(this.time * freqNode.frequency + freqNode.phase);
const harmonicFreq = Math.sin(this.time * freqNode.frequency * 2.3 + freqNode.phase * 1.7) * 0.3;
const slowFreq = Math.sin(this.time * freqNode.frequency * 0.5 + freqNode.phase * 0.8) * 0.5;
// Combine frequencies for more organic movement
const combined = (baseFreq + harmonicFreq + slowFreq) * freqNode.amplitude;
// Create dramatic height variations (like frequency analyzer)
const heightVariation = Math.abs(combined) * freqNode.heightMultiplier;
// Add some randomness for natural feel
const randomVariation = Math.sin(this.time * 0.1 + index) * 0.2;
return Math.max(0.1, heightVariation + randomVariation + 0.3);
}
drawWave() {
const wave = this.nodes;
const ctx = this.ctx;
const canvasWidth = this.canvas.getBoundingClientRect().width;
// Dynamic gradient based on wave intensity
const avgHeight = wave.reduce((sum, node) => sum + node[1], 0) / wave.length;
const intensity = Math.min(1, avgHeight / this.maxWaveHeight);
// Create responsive gradient that works on all screen sizes
const gradient = ctx.createRadialGradient(
canvasWidth * 0.1, 0, canvasWidth * 0.5,
canvasWidth * 0.1, canvasWidth * 0.25, canvasWidth * 1.5
);
gradient.addColorStop(0.15, "#02019d");
gradient.addColorStop(0.5, "#02019d");
gradient.addColorStop(1, "#02019d");
ctx.fillStyle = gradient;
ctx.beginPath();
ctx.moveTo(0, ctx.canvas.height / (this.ratio || 1));
// First wave node
ctx.lineTo(wave[0][0], wave[0][1]);
for (let i = 0; i < wave.length; i++) {
if (wave[i + 1]) {
ctx.quadraticCurveTo(
wave[i][0],
wave[i][1],
this.diff(wave[i][0], wave[i + 1][0]),
this.diff(wave[i][1], wave[i + 1][1])
);
} else {
// Last wave node
ctx.lineTo(wave[i][0], wave[i][1]);
ctx.lineTo(canvasWidth, ctx.canvas.height / (this.ratio || 1));
}
}
ctx.closePath();
ctx.fill();
}
draw() {
const ctx = this.ctx;
this.time += this.frequencySpeed;
const canvasWidth = this.canvas.getBoundingClientRect().width;
const canvasHeight = this.canvas.getBoundingClientRect().height;
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
// Update nodes with frequency-based heights
this.nodes = this.nodes.map((node, index) => {
const frequencyHeight = this.getFrequencyHeight(index);
const dynamicHeight = this.baseWaveHeight + (this.maxWaveHeight - this.baseWaveHeight) * frequencyHeight;
// Create wave motion with dynamic height
const waveMotion = (dynamicHeight / 2) * Math.sin(node[2] / 15);
// Improved base position calculation that works consistently across devices
const basePosition = canvasHeight * 0.5 - (canvasHeight * 0.45) + dynamicHeight;
return [
node[0],
waveMotion + basePosition,
node[2] + node[3] * this.frequencyNodes[index].speedMultiplier,
node[3]
];
});
this.drawWave();
}
animate() {
this.draw();
this.animationFrameId = requestAnimationFrame(() => this.animate());
}
destroy() {
if (this.animationFrameId) {
cancelAnimationFrame(this.animationFrameId);
}
clearTimeout(this.resizeTimeout);
window.removeEventListener('resize', () => this.resizeCanvasToDisplaySize());
window.removeEventListener('orientationchange', () => this.resizeCanvasToDisplaySize());
}
}
// Initialize the wave animation with the original canvas ID
const wave1 = new WaveAnimation('waveCanvas');
// Initialize the wave animation with the new canvas ID
const wave2 = new WaveAnimation('waveCanvas1');
const wave3 = new WaveAnimation('waveCanvas2');
</script> -->
<script>
(function () {
"use strict";
// Utility function - define first
const debounce = (func, wait) => {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
};
// Global coordination system
window.coordinatedSystem = {
isAccordionAnimating: false,
isTimelineAnimating: false,
pendingRefresh: false,
refreshTimeout: null,
};
// Coordinated refresh function
function coordinatedRefresh(delay = 300) {
if (window.coordinatedSystem.refreshTimeout) {
clearTimeout(window.coordinatedSystem.refreshTimeout);
}
window.coordinatedSystem.refreshTimeout = setTimeout(() => {
if (
!window.coordinatedSystem.isAccordionAnimating &&
!window.coordinatedSystem.isTimelineAnimating
) {
ScrollTrigger.refresh();
window.coordinatedSystem.pendingRefresh = false;
} else {
window.coordinatedSystem.pendingRefresh = true;
}
}, delay);
}
// Initialize accordion first
function initAccordion() {
const accordionItems = document.querySelectorAll(
".e-n-accordion-item"
);
if (accordionItems.length === 0) return;
const ANIMATION_DURATION = 400;
let accordionState = { activeItem: null };
const setContentStyles = (content, styles) => {
if (!content) return;
Object.assign(content.style, styles);
};
const closeItem = (item) => {
if (!item || !item.hasAttribute("open")) return;
window.coordinatedSystem.isAccordionAnimating = true;
item.removeAttribute("open");
const content = item.querySelector(".accordion-content");
setContentStyles(content, {
opacity: "0",
maxHeight: "0",
padding: "0",
transform: "translateY(-10px)",
});
if (accordionState.activeItem === item) {
accordionState.activeItem = null;
}
// Mark animation as complete and trigger coordinated refresh
setTimeout(() => {
window.coordinatedSystem.isAccordionAnimating = false;
coordinatedRefresh(100);
}, ANIMATION_DURATION);
};
const openItem = (item) => {
if (!item || item.hasAttribute("open")) return;
window.coordinatedSystem.isAccordionAnimating = true;
item.setAttribute("open", "");
const content = item.querySelector(".accordion-content");
if (content) {
content.offsetHeight; // Force reflow
setContentStyles(content, {
opacity: "1",
maxHeight: "700px",
padding: "30px 0 40px 0",
transform: "translateY(0)",
});
}
accordionState.activeItem = item;
// Mark animation as complete and trigger coordinated refresh
setTimeout(() => {
window.coordinatedSystem.isAccordionAnimating = false;
coordinatedRefresh(100);
}, ANIMATION_DURATION);
};
const closeAllItems = (excludeItem = null) => {
accordionItems.forEach((item) => {
if (item !== excludeItem) {
closeItem(item);
}
});
};
const handleItemClick = (item) => {
return function (e) {
e.preventDefault();
e.stopPropagation();
if (
window.coordinatedSystem.isAccordionAnimating ||
window.coordinatedSystem.isTimelineAnimating
) {
return;
}
const isCurrentlyOpen = item.hasAttribute("open");
if (isCurrentlyOpen) {
closeItem(item);
} else {
closeAllItems(item);
requestAnimationFrame(() => {
requestAnimationFrame(() => {
openItem(item);
});
});
}
};
};
// Setup accordion items
accordionItems.forEach((item, index) => {
const title = item.querySelector(".e-n-accordion-item-title");
const content = item.querySelector(".accordion-content");
if (!title) return;
title.setAttribute("tabindex", "0");
title.setAttribute("role", "button");
title.setAttribute("aria-expanded", "false");
if (content) {
content.setAttribute("role", "region");
content.style.transition = `opacity ${ANIMATION_DURATION}ms ease, max-height ${ANIMATION_DURATION}ms ease, padding ${ANIMATION_DURATION}ms ease, transform ${ANIMATION_DURATION}ms ease`;
}
title.addEventListener("click", handleItemClick(item), {
passive: false,
});
// Update aria-expanded on state change
const observer = new MutationObserver(() => {
const isOpen = item.hasAttribute("open");
title.setAttribute("aria-expanded", isOpen.toString());
});
observer.observe(item, {
attributes: true,
attributeFilter: ["open"],
});
});
// Initialize with first item open
setTimeout(() => {
if (accordionItems.length > 0) {
openItem(accordionItems[0]);
}
}, 100);
}
// Initialize horizontal scroll after accordion
// function initHorizontalScroll() {
// if (
// typeof gsap === "undefined" ||
// typeof ScrollTrigger === "undefined"
// ) {
// console.warn("GSAP or ScrollTrigger not found");
// return;
// }
// gsap.registerPlugin(ScrollTrigger);
// const timelineContainer =
// document.querySelector(".Timeline_timeline");
// const timelineInner = document.querySelector(".Timeline_inner");
// const sections = gsap.utils.toArray(".panel");
// if (!timelineContainer || !timelineInner || sections.length === 0) {
// console.warn("Timeline elements not found");
// return;
// }
// const isMobile = window.innerWidth <= 768;
// let scrollDistance = 0;
// let mainTimeline = null;
// let sectionAnimations = [];
// const config = {
// scrubSmoothing: isMobile ? 1 : 0.3,
// anticipatePin: 0,
// refreshPriority: -10,
// sectionAnimationDuration: 0.6,
// sectionAnimationEase: "power1.out",
// };
// const calculateScrollDistance = () => {
// const containerWidth = timelineContainer.offsetWidth;
// const totalWidth = timelineInner.scrollWidth;
// return Math.max(0, totalWidth - containerWidth);
// };
// const createSectionAnimations = () => {
// sectionAnimations = sections.map((section, index) => {
// const content =
// section.querySelector(".featured-portfolio_item") || section;
// return gsap.fromTo(
// content,
// {
// opacity: 0.7,
// // y: 20,
// scale: 0.95,
// },
// {
// opacity: 1,
// y: 0,
// scale: 1,
// duration: config.sectionAnimationDuration,
// ease: config.sectionAnimationEase,
// scrollTrigger: {
// trigger: section,
// start: "left 75%",
// end: "right 25%",
// containerAnimation: mainTimeline,
// toggleActions: "play reverse play reverse",
// refreshPriority: config.refreshPriority,
// },
// }
// );
// });
// };
// const createMainTimeline = () => {
// scrollDistance = calculateScrollDistance();
// if (scrollDistance <= 0) {
// console.warn("No horizontal scroll needed, container is wide enough");
// return;
// }
// mainTimeline = gsap.timeline({
// scrollTrigger: {
// trigger: timelineContainer,
// pin: true,
// scrub: config.scrubSmoothing,
// anticipatePin: config.anticipatePin,
// start: "top top",
// end: () => `+=${scrollDistance}`,
// invalidateOnRefresh: true,
// refreshPriority: config.refreshPriority,
// onUpdate: () => {
// window.coordinatedSystem.isTimelineAnimating = true;
// },
// onToggle: (self) => {
// if (!self.isActive) {
// setTimeout(() => {
// window.coordinatedSystem.isTimelineAnimating = false;
// if (window.coordinatedSystem.pendingRefresh) {
// coordinatedRefresh(50);
// }
// }, 100);
// }
// },
// },
// });
// mainTimeline.to(
// timelineInner,
// {
// x: () => -scrollDistance,
// ease: "none",
// },
// 0
// );
// createSectionAnimations();
// };
// // Coordinated resize handler
// const handleResize = debounce(() => {
// if (
// window.coordinatedSystem.isAccordionAnimating ||
// window.coordinatedSystem.isTimelineAnimating
// ) {
// return;
// }
// const newScrollDistance = calculateScrollDistance();
// if (Math.abs(newScrollDistance - scrollDistance) > 100) {
// scrollDistance = newScrollDistance;
// coordinatedRefresh(300);
// }
// }, 500);
// // Initialize
// setTimeout(() => {
// createMainTimeline();
// window.addEventListener("resize", handleResize, { passive: true });
// }, 200);
// }
// Initialize in proper order
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", () => {
initAccordion();
// setTimeout(initHorizontalScroll, 300);
});
} else {
initAccordion();
// setTimeout(initHorizontalScroll, 300);
}
})();
</script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/ScrollTrigger.min.js"></script>
<script>
// Register plugin
gsap.registerPlugin(ScrollTrigger);
// Helper to (re)build the timeline ScrollTrigger
function initHorizontalTimeline() {
// Kill any prior instances (for resize / refresh safety)
ScrollTrigger.getAll().forEach(st => {
if (st.vars && st.vars.id === "results-timeline") st.kill();
});
const section = document.querySelector(".Timeline_timeline"); // pin this
const scroller = section.querySelector(".Timeline_scroller"); // viewport box
const inner = section.querySelector(".Timeline_inner"); // horizontally wide track
const blocks = gsap.utils.toArray(section.querySelectorAll(".Timeline_block"));
if (!section || !scroller || !inner || !blocks.length) return;
// Compute how far we need to translate X so that the last block is fully visible.
// We use clientWidth instead of offsetWidth for consistency across devices.
const totalScrollableX = Math.max(0, inner.scrollWidth - scroller.clientWidth);
// Reset x before measuring/animating (important on refresh)
gsap.set(inner, { x: 0 });
// Build the horizontal scrub animation.
// Vertical scroll progress maps to horizontal translate on the inner track.
const tween = gsap.to(inner, {
x: -totalScrollableX,
ease: "none",
overwrite: true
});
// Create ScrollTrigger that pins the whole section and scrubs that tween.
ScrollTrigger.create({
id: "results-timeline",
trigger: section,
start: "top top",
end: () => "+=" + totalScrollableX, // unpin exactly when the last block is fully in view
pin: true,
scrub: 1,
anticipatePin: 1,
invalidateOnRefresh: true,
animation: tween,
// Optional: snap scroll to each block's position for a crisp "card-by-card" view
snap: blocks.length > 1 ? {
// Convert progress (0..1) to the nearest block stop.
// We base it on proportional positions of each block’s left edge.
snapTo: (rawProgress) => {
// Build an array of target progress values that align each block fully into view
const trackWidth = inner.scrollWidth;
const viewportW = scroller.clientWidth;
// For each block, find the x we need so that block’s right edge doesn’t get cut;
// we’ll snap by the left edge so it appears "fully present".
const stops = blocks.map(b => {
const rect = b.getBoundingClientRect();
const innerRect = inner.getBoundingClientRect();
// Left position of block relative to inner (not the viewport)
const leftInInner = (rect.left - innerRect.left);
// Desired x translate to bring that left edge to the left of the viewport
let desiredX = Math.min(leftInInner, trackWidth - viewportW);
// Clamp desiredX to [0, totalScrollableX]
desiredX = Math.max(0, Math.min(desiredX, totalScrollableX));
// Convert that x into progress (0..1) along ScrollTrigger
return totalScrollableX === 0 ? 0 : (desiredX / totalScrollableX);
});
// Also ensure we include the very end
if (!stops.includes(1)) stops.push(1);
return gsap.utils.snap(stops, rawProgress);
},
duration: 0.25,
ease: "power1.out"
} : false,
// Accessibility nicety: add/remove an attribute while pinned
onEnter: () => section.setAttribute("data-pinned", "true"),
onLeave: () => section.removeAttribute("data-pinned"),
onEnterBack: () => section.setAttribute("data-pinned", "true"),
onLeaveBack: () => section.removeAttribute("data-pinned")
});
}
// Init after fonts/layout settle
window.addEventListener("load", () => {
initHorizontalTimeline();
// Recompute on refresh (GSAP does this on resize/zoom changes)
ScrollTrigger.addEventListener("refreshInit", () => {
// ensure the track is reset before GSAP measures again
const inner = document.querySelector(".Timeline_timeline .Timeline_inner");
if (inner) gsap.set(inner, { x: 0 });
});
ScrollTrigger.refresh();
});
</script>
<script>
// Hide preloader function
function hidePreloader() {
const preloader = document.getElementById('preloader');
preloader.classList.add('fade-out');
setTimeout(() => {
preloader.style.display = 'none';
document.body.style.overflow = 'auto';
}, 500);
}
setTimeout(hidePreloader, 4000);
</script>
<script>
document.addEventListener('DOMContentLoaded', function () {
const tags = document.querySelectorAll('.tagsDis .tag');
const contents = document.querySelectorAll('.tab-content_01');
// Function to switch tabs
function switchTab(targetTag) {
// Remove active class from all tags
tags.forEach(tag => tag.classList.remove('active'));
// Hide all content
contents.forEach(content => {
content.classList.remove('active');
});
// Add active class to clicked tag
const activeTag = document.querySelector(`[data-tag="${targetTag}"]`);
if (activeTag) {
activeTag.classList.add('active');
}
// Show corresponding content with animation
const activeContent = document.querySelector(`[data-content="${targetTag}"]`);
if (activeContent) {
setTimeout(() => {
activeContent.classList.add('active');
}, 100);
}
}
// Add click event listeners to tags
tags.forEach(tag => {
tag.addEventListener('click', function (e) {
e.preventDefault();
const selectedTag = this.getAttribute('data-tag');
switchTab(selectedTag);
});
});
// Optional: Auto-rotate tabs every 5 seconds
let currentIndex = 0;
const tagValues = Array.from(tags).map(tag => tag.getAttribute('data-tag'));
function autoRotate() {
currentIndex = (currentIndex + 1) % tagValues.length;
// Uncomment the line below to enable auto-rotation
// switchTab(tagValues[currentIndex]);
}
// Uncomment to enable auto-rotation
// setInterval(autoRotate, 5000);
});
</script>
</body>
</html>