diff --git a/app/components/Header.tsx b/app/components/Header.tsx
index 0d20d3b..a34faea 100644
--- a/app/components/Header.tsx
+++ b/app/components/Header.tsx
@@ -1,11 +1,20 @@
'use client';
-import { useState } from 'react';
+import { useEffect, useState } from 'react';
import Link from 'next/link';
import Image from 'next/image';
export default function Header() {
const [open, setOpen] = useState(false);
+ const [navOpen, setNavOpen] = useState(false);
+
+ useEffect(() => {
+ const lock = open || navOpen;
+ document.body.style.overflow = lock ? 'hidden' : '';
+ return () => { document.body.style.overflow = ''; };
+ }, [open, navOpen]);
+
+ const closeAll = () => { setOpen(false); setNavOpen(false); };
return (
<>
@@ -13,46 +22,72 @@ export default function Header() {
- {/* RIGHT PANEL */}
+
+
@@ -77,4 +112,4 @@ export default function Header() {
>
);
-}
\ No newline at end of file
+}
diff --git a/public/assets/css/responsive.css b/public/assets/css/responsive.css
new file mode 100644
index 0000000..7937c5d
--- /dev/null
+++ b/public/assets/css/responsive.css
@@ -0,0 +1,601 @@
+/* ==========================================================================
+ AAideA — Responsive Stylesheet
+ Mobile-first overrides on top of style.css.
+ Breakpoints (Bootstrap 5 aligned):
+ xs : < 576px (default / mobile)
+ sm : >= 576px
+ md : >= 768px
+ lg : >= 992px
+ xl : >= 1200px
+ xxl: >= 1400px
+ ========================================================================== */
+
+/* ---------------- GLOBAL TOKENS & BASE ---------------- */
+:root {
+ --ux-radius: 14px;
+ --ux-gap: clamp(12px, 2vw, 24px);
+ --ux-section-y: clamp(48px, 8vw, 110px);
+ --ux-container-x: clamp(16px, 4vw, 32px);
+ --ux-tap: 44px;
+}
+
+html { -webkit-text-size-adjust: 100%; }
+body { overflow-x: hidden; }
+img, svg, video { max-width: 100%; height: auto; }
+* { box-sizing: border-box; }
+
+.container, .container-fluid {
+ padding-left: var(--ux-container-x);
+ padding-right: var(--ux-container-x);
+}
+
+/* Touch-friendly defaults: every interactive element gets minimum 44px tap target */
+.ux-btn-primary,
+.ux-btn-secondary,
+.ux-footer-cta-btn,
+.ux-result-btn,
+button,
+a.btn {
+ min-height: var(--ux-tap);
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.ux-input,
+.ux-textarea {
+ width: 100%;
+ font-size: 16px; /* prevent iOS zoom on focus */
+}
+
+/* ============================================================
+ HEADER + MOBILE NAVIGATION
+ ============================================================ */
+.ux-header { padding: 14px 0; }
+
+.ux-navbar {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+ padding: 12px 16px;
+ flex-wrap: nowrap;
+}
+
+.ux-navbar img { width: auto; height: auto; max-width: 110px; }
+
+.ux-brand { display: inline-flex; align-items: center; }
+
+.ux-header-actions {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+/* HAMBURGER (mobile only by default) */
+.ux-hamburger {
+ width: 40px;
+ height: 40px;
+ display: inline-flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: 5px;
+ background: transparent;
+ border: 1px solid rgba(255,255,255,0.18);
+ border-radius: 10px;
+ padding: 0;
+ cursor: pointer;
+}
+.ux-hamburger span {
+ display: block;
+ width: 20px;
+ height: 2px;
+ background: #fff;
+ border-radius: 2px;
+ transition: transform .25s ease, opacity .2s ease;
+}
+.ux-hamburger.is-active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
+.ux-hamburger.is-active span:nth-child(2) { opacity: 0; }
+.ux-hamburger.is-active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
+
+/* CONTACT TOGGLE: hide the close icon by default and reveal when active */
+.ux-menu { width: 40px; height: 40px; background: transparent; border: 0; padding: 0; }
+.ux-menu .icon {/* width: 100%; *//* height: 100%; */}
+.ux-menu .close-icon { opacity: 0; transform: rotate(90deg); }
+.ux-menu.active .open-icon { opacity: 0; transform: rotate(90deg); }
+.ux-menu.active .close-icon { opacity: 1; transform: rotate(0); }
+
+/* OVERLAY (shared by mobile nav + contact panel on small screens) */
+.ux-overlay {
+ position: fixed;
+ inset: 0;
+ background: rgba(0,0,0,0.55);
+ opacity: 0;
+ pointer-events: none;
+ transition: opacity .3s ease;
+ z-index: 0;
+}
+.ux-overlay.active { opacity: 1; pointer-events: auto; }
+
+/* MOBILE NAV DRAWER (default = mobile) */
+.ux-nav {
+ position: fixed;
+ top: 0;
+ right: 0;
+ width: min(82vw, 320px);
+ height: 100dvh;
+ background: #0e1414;
+ flex-direction: column;
+ gap: 6px;
+ padding: 88px 24px 32px;
+ margin: 0;
+ list-style: none;
+ transform: translateX(100%);
+ transition: transform .35s ease;
+ z-index: 95;
+ box-shadow: -10px 0 40px rgba(0,0,0,0.45);
+ overflow-y: auto;
+}
+.ux-nav.is-open { transform: translateX(0); }
+.ux-nav li {/* width: 100%; */}
+.ux-nav li a {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ padding: 14px 8px;
+ font-size: 17px;
+ color: #fff;
+ border-bottom: 1px solid rgba(255,255,255,0.06);
+ text-decoration: none;
+ min-height: var(--ux-tap);
+}
+.ux-nav .ux-nav-cta a {
+ margin-top: 12px;
+ background: var(--primary);
+ color: #000 !important;
+ border-radius: 30px;
+ justify-content: center;
+ border: 0;
+ padding: 12px 22px;
+ font-weight: 600;
+}
+
+/* CONTACT PANEL: full-width sheet on mobile */
+.contact-panel {
+ top: 0;
+ right: -100%;
+ width: min(88vw, 360px);
+ height: 100dvh;
+ border-radius: 0;
+ padding: 80px 22px 24px;
+ overflow-y: auto;
+ z-index: 96;
+}
+.contact-panel.active { right: 0; }
+.contact-panel .images { flex-wrap: wrap; }
+.contact-panel .images img { width: 72px; height: 72px; }
+
+/* ============================================================
+ HERO
+ ============================================================ */
+.ux-hero-section {
+ padding: 120px 0 40px;
+ background-size: cover;
+ background-position: center top;
+}
+.ux-hero-title { font-size: clamp(28px, 7vw, 52px); }
+.ux-hero-subtitle { width: 100%; font-size: 15px; }
+.ux-hero-actions {
+ flex-wrap: wrap;
+ gap: 12px;
+ margin-top: 28px;
+}
+.ux-hero-actions .btn {/* width: 100%; */max-width: 320px;}
+
+.ux-bottom-wrapper { margin-top: 40px; }
+.ux-bottom-wrapper .ux-img-card img { width: 100%; }
+.ux-stat-box { padding: 24px 20px; }
+.ux-counter { font-size: 32px; }
+.ux-dark h2 { font-size: 28px; }
+.ux-dark h5,
+.ux-dark p {font-size: 21px;line-height: 1.45;}
+ .ux-about-img{
+ margin: 0 0 20px;
+}
+/* ============================================================
+ ABOUT SECTION
+ ============================================================ */
+.ux-about-section { padding: var(--ux-section-y) 0; }
+.ux-section-label {/* width: 100%; */}
+.ux-main-heading { font-size: clamp(20px, 4vw, 32px); }
+.ux-sub-heading { font-size: 16px; }
+.ux-big-counter { font-size: clamp(40px, 10vw, 70px); }
+.ux-small-text { width: 100%; }
+.ux-about-img { height: auto; max-height: 280px; }
+.ux-card-text { max-width: 100%; }
+
+/* PARTNERS */
+.partners-wrapper {
+ grid-template-columns: repeat(2, 1fr);
+ gap: 8px;
+}
+.partner-item { height: 80px; }
+.partner-item img { max-width: 90px; }
+
+/* ============================================================
+ WORK / SWIPER
+ ============================================================ */
+.ux-work-section { padding: 30px 0 50px; }
+.ux-work-card img { height: auto; max-height: 240px; }
+.ux-work-card h4 { font-size: 17px; }
+.displayflexhead {
+ width: 100%;
+ flex-direction: column;
+ gap: 10px;
+}
+.ux-swiper-nav { gap: 10px; }
+.ux-swiper-nav .ux-arrow {
+ width: 70px;
+ height: 40px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+}
+
+/* ============================================================
+ WHY SECTION
+ ============================================================ */
+.ux-why-section { padding: var(--ux-section-y) 0; }
+.ux-why-img img { height: auto; max-height: 260px; }
+.ux-why-card { padding: 22px 20px; }
+.main-headingexit { width: 100%; }
+
+/* ============================================================
+ BUILD / SELL SECTION
+ ============================================================ */
+.ux-build-section { padding: var(--ux-section-y) 0; background-size: cover; }
+.ux-build-card { padding: 26px 22px; }
+.ux-build-card h5 {}
+.ux-build-card p {}
+.ux-build-swiper .swiper-slide { width: 86%; }
+
+/* ============================================================
+ PROCESS SECTION
+ ============================================================ */
+.ux-process-section { padding: var(--ux-section-y) 0; }
+.ux-process-card {/* width: 100%; *//* padding: 24px 22px; */}
+.ux-step-arrow { display: none; }
+
+/* ============================================================
+ FOOTER CTA + MAIN FOOTER
+ ============================================================ */
+.ux-footer-hero { padding: 60px 0; background-size: cover; background-position: center; }
+.ux-footer-title { font-size: clamp(22px, 5vw, 30px); }
+.ux-footer-cta-btn {
+ font-size: 16px;
+ padding: 6px 6px 6px 22px;
+}
+.ux-footer-cta-btn .ux-btn-icon { width: 38px; height: 38px; }
+
+.ux-footer-grid {
+ grid-template-columns: 1fr;
+ border-left: 0;
+ border-right: 0;
+}
+.ux-footer-left {
+ padding: 32px 22px;
+ border-right: 0;
+ border-bottom: 1px solid rgba(255,255,255,0.08);
+}
+.ux-footer-desc { max-width: 100%; font-size: 15px; line-height: 1.7; }
+.ux-footer-right { grid-template-columns: repeat(2, 1fr); }
+.ux-footer-links { padding: 26px 22px; }
+.ux-footer-links h6 { font-size: 16px; margin-bottom: 12px; }
+.ux-footer-links a { font-size: 14px; margin-bottom: 10px; }
+
+.ux-footer-bottom {
+ flex-direction: column;
+ align-items: flex-start;
+ padding: 18px 22px;
+ gap: 14px;
+ text-align: left;
+}
+.ux-footer-bottom p { font-size: 13px; }
+.ux-footer-social { gap: 14px; flex-wrap: wrap; }
+
+/* ============================================================
+ START PROJECT / BREADCRUMB HERO
+ ============================================================ */
+.ux-project-hero { padding: 130px 0 60px; background-size: cover; }
+.ux-project-title { font-size: clamp(26px, 6vw, 50px); }
+.ux-project-subtitle { font-size: 15px; }
+.ux-breadcrumb-wrap { margin-bottom: 36px; flex-wrap: wrap; }
+.ux-joined-box {
+ position: static;
+ margin: 30px auto 0;
+ justify-content: center;
+ flex-wrap: wrap;
+}
+.ux-avatar-group img { width: 48px; height: 48px; border-width: 2px; margin-left: -10px; }
+
+/* CONTACT FORM */
+.ux-contact-section { padding: 50px 0; }
+.ux-contact-left,
+.ux-contact-box {}
+.ux-contact-email { font-size: clamp(24px, 6vw, 35px); margin-bottom: 36px; }
+.ux-contact-link { font-size: 18px; }
+.ux-contact-title { font-size: clamp(20px, 4vw, 26px); margin-bottom: 24px; }
+.ux-input {}
+.ux-textarea { font-size: 16px; padding: 16px 18px; }
+
+/* CASE ACCORDION */
+.ux-case-section { padding: 50px 0; }
+.ux-case-btn { padding: 22px 22px !important; flex-wrap: wrap; gap: 10px; }
+.ux-case-head {/* width: 100%; */}
+.ux-case-head h3 { font-size: clamp(20px, 5vw, 29px); }
+.ux-case-head p { font-size: 15px; }
+.ux-case-right { padding-right: 0; margin-left: 0; }
+.ux-case-body { padding: 0 18px 24px !important; }
+.ux-case-inner {
+ grid-template-columns: 1fr;
+ gap: 18px;
+ padding: 18px;
+}
+.ux-case-img { height: auto; max-height: 220px; }
+.ux-case-grid { grid-template-columns: 1fr; gap: 18px; }
+.ux-case-grid strong { font-size: 17px; }
+
+/* RESULT / DELIVER */
+.ux-result-section { padding: 50px 0; }
+.ux-result-box {
+ grid-template-columns: 1fr;
+ margin-bottom: 50px;
+ padding: 26px;
+}
+.ux-result-left { padding-right: 0; border-right: 0; padding-bottom: 22px; border-bottom: 1px solid #e3e3e3; }
+.ux-result-right { padding-left: 0; padding-top: 22px; }
+.ux-build-grid { grid-template-columns: repeat(2, 1fr); }
+.ux-ai-grid { grid-template-columns: 1fr; }
+.ux-mini-card { min-height: auto; }
+.ux-mini-card span { font-size: 32px; top: 8px; right: 12px; }
+.ux-mini-card p { margin-top: 56px; font-size: 14px; }
+
+.ux-deliver-box {
+ grid-template-columns: 1fr;
+ gap: 24px;
+ padding: 26px;
+}
+.ux-deliver-center img { height: auto; max-height: 240px; }
+
+/* ============================================================
+ PROCESS STEP CARD
+ ============================================================ */
+.ux-process-step-section { padding: 50px 0; }
+.ux-process-step-box { padding: 24px 22px; margin: 0 0 28px; }
+.ux-process-title { font-size: clamp(20px, 5vw, 28px); }
+.ux-process-grid { grid-template-columns: 1fr; gap: 24px; }
+.ux-process-image img { height: auto; max-height: 280px; }
+.ux-process-content { padding-right: 0; }
+.ux-process-item { margin-bottom: 22px; }
+
+/* SYSTEMS WRAPPER */
+.systems-wrapper {
+ flex-direction: column;
+ gap: 30px;
+ padding: 40px 0;
+}
+.systems-left,
+.systems-right { width: 100%; }
+.systems-left { position: static; }
+.systems-left .desc { width: 100%; }
+.system-card { padding: 22px; }
+.system-card ul { grid-template-columns: 1fr; }
+
+/* CONNECT SECTION (FLOW) */
+.connect-section { padding: 50px 0 30px; }
+.connect-section h2 { font-size: clamp(22px, 5vw, 30px); }
+.connect-flow { gap: 8px; }
+.flow-item { padding: 8px 18px 8px 8px; font-size: 13px; }
+.arrow { display: none; }
+.bottom-text { font-size: 17px; margin: 30px auto; }
+
+/* APPROACH / DELIVER */
+.ux-approach-section { padding: 60px 0; }
+.ux-section-desc { font-size: 16px; margin-left: 0; max-width: 100%; }
+.ux-card { padding: 22px 20px; }
+.ux-card-top { margin-bottom: 22px; }
+.ux-card h4 { font-size: 19px; }
+
+.ux-deliver-section { padding: 30px 0 60px; }
+.ux-snapshot-box { padding: 28px 24px; }
+.ux-snapshot-box h2 { font-size: clamp(30px, 8vw, 48px); }
+.ux-snapshot-box p { font-size: 17px; }
+
+/* GROWTH SECTION */
+.ux-growth-section { margin: 24px auto; padding: 30px 0; }
+.ux-growth-title { font-size: clamp(22px, 5vw, 30px); }
+.ux-growth-bottom { font-size: 17px; }
+
+/* BREACAMP OFFLINE TEXT BLOCK */
+.breacampoffline {
+ flex-direction: column;
+ gap: 14px;
+ margin: 30px auto 0;
+ align-items: stretch;
+}
+.breacampoffline p { width: 100%; }
+
+/* ==========================================================================
+ >= 576px (sm)
+ ========================================================================== */
+@media (min-width: 576px) {
+
+ .ux-hero-actions .btn { width: auto; }
+ .partners-wrapper { grid-template-columns: repeat(3, 1fr); }
+ .ux-build-grid { grid-template-columns: repeat(2, 1fr); }
+ .ux-ai-grid { grid-template-columns: repeat(2, 1fr); }
+ .ux-footer-right { grid-template-columns: repeat(3, 1fr); }
+ .ux-build-swiper .swiper-slide { width: 60%; }
+}
+
+/* ==========================================================================
+ >= 768px (md / tablet)
+ ========================================================================== */
+@media (min-width: 768px) {
+ .ux-header { padding: 18px 0; }
+ .ux-navbar { padding: 14px 22px; }
+
+ .ux-hero-section { padding: 160px 0 50px; }
+ .ux-hero-subtitle { width: 80%; }
+
+ .partners-wrapper { grid-template-columns: repeat(4, 1fr); }
+ .partner-item { height: 90px; }
+
+ .ux-case-inner { grid-template-columns: 280px 1fr; }
+ .ux-case-grid { grid-template-columns: repeat(2, 1fr); }
+
+ .ux-result-box { grid-template-columns: 1.3fr .9fr; }
+ .ux-result-left {
+ padding-right: 26px;
+ padding-bottom: 0;
+ border-right: 1px solid #e3e3e3;
+ border-bottom: 0;
+ }
+ .ux-result-right { padding-left: 30px; padding-top: 0; }
+
+ .ux-build-grid { grid-template-columns: repeat(3, 1fr); }
+ .ux-ai-grid { grid-template-columns: repeat(3, 1fr); }
+
+ .ux-deliver-box { grid-template-columns: .9fr 1fr .8fr; }
+ .ux-process-grid { grid-template-columns: 1fr 1fr; }
+
+ .ux-footer-grid { grid-template-columns: 1.1fr 1fr; }
+ .ux-footer-left {
+ padding: 38px 32px;
+ border-right: 1px solid rgba(255,255,255,0.08);
+ border-bottom: 0;
+ }
+ .ux-footer-bottom {
+ flex-direction: row;
+ align-items: center;
+ text-align: left;
+ padding: 18px 28px;
+ }
+
+ .systems-wrapper { padding: 60px 0; }
+ .ux-build-swiper .swiper-slide { width: 45%; }
+}
+
+/* ==========================================================================
+ >= 992px (lg / desktop) — restore original desktop nav
+ ========================================================================== */
+@media (min-width: 992px) {
+ .ux-header { padding: 20px 0; }
+ .ux-navbar { padding: 15px 25px; }
+
+ .ux-hamburger { display: none; }
+
+ .ux-nav {
+ position: static;
+ width: auto;
+ height: auto;
+ background: transparent;
+ flex-direction: row;
+ gap: 30px;
+ padding: 0;
+ transform: none;
+ box-shadow: none;
+ overflow: visible;
+ }
+ .ux-nav li a {
+ padding: 0;
+ border-bottom: 0;
+ font-size: 16px;
+ min-height: auto;
+ }
+ .ux-nav .ux-nav-cta a {
+ margin-top: 0;
+ background: transparent;
+ color: var(--primary) !important;
+ padding: 0;
+ font-weight: 400;
+ }
+
+ /* Contact panel returns to floating card */
+ .contact-panel {
+ top: 100px;
+ right: -350px;
+ width: 320px;
+ height: auto;
+ border-radius: 12px;
+ padding: 20px;
+ }
+ .contact-panel.active { right: 40px; }
+
+ .ux-overlay { display: none; }
+
+ .ux-hero-section { padding: 200px 0 60px; }
+ .ux-hero-subtitle { width: 60%; }
+
+ .partners-wrapper { grid-template-columns: repeat(6, 1fr); }
+ .partner-item { height: 100px; }
+ .partner-item img { max-width: 120px; }
+
+ .ux-build-grid { grid-template-columns: repeat(4, 1fr); }
+ .ux-build-swiper .swiper-slide { width: 330px; }
+
+ .ux-joined-box {
+ position: absolute;
+ right: 8%;
+ bottom: 50px;
+ margin: 0;
+ flex-wrap: nowrap;
+ }
+ .ux-avatar-group img { width: 64px; height: 64px; border-width: 3px; margin-left: -14px; }
+
+ .ux-step-arrow { display: block; }
+
+ .systems-wrapper {
+ flex-direction: row;
+ gap: 80px;
+ padding: 80px 20px;
+ }
+ .systems-left { width: 45%; position: sticky; top: 90px; }
+ .systems-right { width: 65%; }
+ .systems-left .desc { width: 70%; }
+
+ .system-card ul { grid-template-columns: 1fr 1fr; }
+
+ .breacampoffline {
+ flex-direction: row;
+ align-items: self-start;
+ gap: 20px;
+ justify-content: center;
+ }
+ .breacampoffline p { width: 33%; }
+
+ .displayflexhead { flex-direction: row; width: 62%; gap: 0; }
+
+ .arrow { display: inline; }
+ .flow-item { padding: 10px 40px 10px 10px; font-size: 14px; }
+}
+
+/* ==========================================================================
+ >= 1200px (xl)
+ ========================================================================== */
+@media (min-width: 1200px) {
+ .ux-hero-section { padding: 200px 0 60px; }
+ .ux-project-hero { padding: 190px 0 100px; }
+}
+
+/* ==========================================================================
+ Reduced motion respect
+ ========================================================================== */
+@media (prefers-reduced-motion: reduce) {
+ .ux-nav,
+ .contact-panel,
+ .ux-overlay,
+ .ux-hamburger span,
+ .ux-menu .icon { transition: none !important; }
+}
\ No newline at end of file
diff --git a/public/assets/css/style.css b/public/assets/css/style.css
index 903992d..c1d84cb 100644
--- a/public/assets/css/style.css
+++ b/public/assets/css/style.css
@@ -428,6 +428,7 @@ h2 {
.ux-process-card img {
border-radius: 12px;
margin-top: 20px;
+ width: 100%;
}
/* STEP TEXT */
@@ -1176,6 +1177,7 @@ h2 {
}
.breacampoffline p {
width: 33%;
+ color: white;
}
.breacampoffline {
display: flex;
@@ -1816,4 +1818,8 @@ h2 {
.ux-footer-left img {
width: auto;
height: auto;
+}
+.ux-footer-social img {
+ width: 19px;
+ height: 19px;
}
\ No newline at end of file