diff --git a/AGENTS.md b/AGENTS.md
index 5079312..4d94105 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -4,9 +4,10 @@ This version has breaking changes — APIs, conventions, and file structure may
# STRICT PROJECT-WIDE EXECUTION RULES (TOKEN SAVER)
Whenever you are assigned ANY task (bug fix, new feature, UI update, backend logic, etc.), you MUST follow these constraints strictly to prevent infinite loops and save compute resources:
-1. DO NOT start the Next.js dev server or any local server.
-2. DO NOT use curl, browser tools, Puppeteer, or any network request to test localhost or any local API endpoints.
-3. DO NOT attempt to take screenshots, scrape pages, or self-verify visual/functional changes locally.
-4. DO NOT write "VERIFICATION REQUIRED" or attempt to run integration tests unless explicitly asked.
-5. Provide the exact code fix, logic, or file modification directly based on your analysis of the provided files.
-6. The human developer will always be responsible for running the server, executing the code, and verifying it locally.
\ No newline at end of file
+1. For frontend UI, layout, responsive, styling, or screenshot-reference tasks, you MAY start the Next.js local development server using `npm run dev`.
+2. For those frontend visual tasks, you MAY open and inspect `http://localhost:3000` locally.
+3. For those frontend visual tasks, you MAY capture local screenshots for before/after comparison.
+4. `npm run build` verifies compilation only. Do not claim a visual issue is fixed based only on build success.
+5. For visual tasks, inspect localhost before reporting completion.
+6. Provide the exact code fix, logic, or file modification directly based on your analysis of the provided files.
+7. For frontend UI, layout, responsive, styling, and screenshot-reference tasks, the agent must inspect localhost before reporting completion. Screenshots are required only for major layout changes, responsive/mobile changes, hero/footer changes, or when explicitly requested by the user. For small isolated CSS spacing fixes, screenshots are optional. The human developer gives final approval only.
\ No newline at end of file
diff --git a/desktop_screenshot.png b/desktop_screenshot.png
new file mode 100644
index 0000000..277f8f8
Binary files /dev/null and b/desktop_screenshot.png differ
diff --git a/mobile_screenshot.png b/mobile_screenshot.png
new file mode 100644
index 0000000..908e01c
Binary files /dev/null and b/mobile_screenshot.png differ
diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx
index df69dff..8510c34 100644
--- a/src/app/about/page.tsx
+++ b/src/app/about/page.tsx
@@ -38,39 +38,38 @@ const COUNTERS = [
export default function AboutPage() {
return (
-
-
- {/* ─── Hero Section ─── */}
-
- {/* Background Image with Overlay */}
-
+
+
+ {/* ─── Hero Section ─── */}
+
+ {/* Background Image with Overlay */}
+
-
-
- We are Nearle
-
-
- We build Neighbourhoods.
-
-
- Nearle is India's first hyper-local managed “Neighbourhood living platform” which brings all the amenities and requirements of residents to their fingertips.
-
-
-
+
+
+ We are Nearle
+
+
+ We build Neighbourhoods.
+
+
+ Nearle is India's first hyper-local managed “Neighbourhood living platform” which brings all the amenities and requirements of residents to their fingertips.
+
+
+
- {/* ─── Intro Description Block ─── */}
-
-
+ {/* ─── Intro Description Block ─── */}
+
Our Platform
@@ -80,34 +79,32 @@ export default function AboutPage() {
We are redefining modern urban living by providing never before convenience. By linking local physical stores to an integrated digital framework, Nearle boosts merchant sales and delivers products instantly, fostering closer, cleaner, and faster local economies.
-
-
+
- {/* ─── Strategy Cards (Mission, Vision, Why) ─── */}
-
-
- {STRATEGY_CARDS.map((card) => (
-
-
-
+ {/* ─── Strategy Cards (Mission, Vision, Why) ─── */}
+
+
+ {STRATEGY_CARDS.map((card) => (
+
+
+
+
+
+ {card.title}
+
+
+ {card.descr}
+
-
- {card.title}
-
-
- {card.descr}
-
-
- ))}
-
-
+ ))}
+
+
- {/* ─── Global Stats counters ─── */}
-
-
+ {/* ─── Global Stats counters ─── */}
+
{COUNTERS.map((c) => (
@@ -121,39 +118,39 @@ export default function AboutPage() {
))}
-
-
+
- {/* ─── Brand Building Banner ─── */}
-
-
-
- Don't miss the opportunity
-
-
- Build Your Brand with Nearle
-
-
- Delight your neighborhood with a personalized online experience. Unlock revenue opportunities and local marketing strategies that will take your business further.
-
-
-
-
-
Register Merchant
-
-
-
-
Download App
-
+ {/* ─── Brand Building Banner ─── */}
+
+
+
+ Don't miss the opportunity
+
+
+ Build Your Brand with Nearle
+
+
+ Delight your neighborhood with a personalized online experience. Unlock revenue opportunities and local marketing strategies that will take your business further.
+
+
+
+
+ Register Merchant
+
+
+
+ Download App
+
+
-
-
-
+
+
+
);
}
diff --git a/src/app/businesses/page.tsx b/src/app/businesses/page.tsx
index 2c71d0b..a266ede 100644
--- a/src/app/businesses/page.tsx
+++ b/src/app/businesses/page.tsx
@@ -88,42 +88,41 @@ export default function BusinessesPage() {
}, []);
return (
-
- {/* ─── Hero Section with Animated Rotator ─── */}
-
- {/* Background Image with Overlay */}
-
+
+
+ {/* ─── Hero Section with Animated Rotator ─── */}
+
+ {/* Background Image with Overlay */}
+
-
-
- Nearle for Business
-
+
+
+ Nearle for Business
+
-
- Power your business.
-
-
- {ROTATOR_WORDS[wordIndex]}
-
-
+
+ Power your business.
+
+
+ {ROTATOR_WORDS[wordIndex]}
+
+
+
+
-
-
-
- {/* ─── Intro Highlight Banner ─── */}
-
-
-
+ {/* ─── Intro Highlight Banner ─── */}
+
+
Together, we grow
@@ -143,53 +142,50 @@ export default function BusinessesPage() {
Talk to an Expert
-
-
+
- {/* ─── Timeline / Core Process Steps ─── */}
-
-
-
- How it works
-
-
- Build Your Neighborhood Brand
-
-
- Three simple milestones to scale your retail reach from offline streets straight into neighborhood homes.
-
-
+ {/* ─── Timeline / Core Process Steps ─── */}
+
+
+
+ How it works
+
+
+ Build Your Neighborhood Brand
+
+
+ Three simple milestones to scale your retail reach from offline streets straight into neighborhood homes.
+
+
-
- {PROCESS_STEPS.map((ps) => (
-
-
- {ps.step}
+
+ {PROCESS_STEPS.map((ps) => (
+
+
+ {ps.step}
+
+
+
+
+
+ {ps.title}
+
+
+ {ps.descr}
+
-
-
-
-
- {ps.title}
-
-
- {ps.descr}
-
-
- ))}
-
-
+ ))}
+
+
- {/* ─── Grid Stats & Value Prop ─── */}
-
-
+ {/* ─── Grid Stats & Value Prop ─── */}
+
-
{/* Left side: features block (7 cols) */}
-
+
Our features
@@ -220,7 +216,7 @@ export default function BusinessesPage() {
{/* Right side: stats quadrant (5 cols) */}
-
+
{STATS.map((stat, i) => (
))}
-
-
-
+
- {/* ─── Join/Download Call to Action ─── */}
-
-
+ {/* ─── Join/Download Call to Action ─── */}
+
@@ -281,8 +274,8 @@ export default function BusinessesPage() {
-
-
-
+
+
+
);
}
diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx
index 33e9581..048e4b2 100644
--- a/src/app/contact/page.tsx
+++ b/src/app/contact/page.tsx
@@ -1,5 +1,4 @@
import React from "react";
-import Image from "next/image";
import { MaterialIcon } from "@/components/ui/MaterialIcon";
import { ContactForm } from "@/components/contact/ContactForm";
import type { Metadata } from "next";
@@ -11,10 +10,9 @@ export const metadata: Metadata = {
export default function ContactPage() {
return (
-
-
- {/* ─── Redesigned Hero/Contact Section ─── */}
-
+
+
+ {/* ─── Redesigned Hero/Contact Section ─── */}
{/* Subtle decorative blurred purple glow behind left content */}
@@ -23,7 +21,7 @@ export default function ContactPage() {
{/* Left Column — MUST BE VISIBLE */}
-
+
LET’S CONNECT
@@ -79,99 +77,97 @@ export default function ContactPage() {
-
- {/* ─── Four Contact Info Cards ─── */}
-
-
-
- {/* Card 1: Location */}
-
-
-
-
-
Our Location
-
- Nearle HQ, 424, Diwan Bahadur Rd,
- Opposite To Sri Krishna Sweets, R.S. Puram,
- Coimbatore, Tamil Nadu 641002
-
-
- Get Directions
-
-
-
-
- {/* Card 2: Phones */}
-
-
-
-
-
Phones
-
- +91 80 4912 3456
- +91 422 491 2345
-
-
+ {/* ─── Four Contact Info Cards ─── */}
+
+
+
+ {/* Card 1: Location */}
+
+
+
+
+
Our Location
+
+ Nearle HQ, 424, Diwan Bahadur Rd,
+ Opposite To Sri Krishna Sweets, R.S. Puram,
+ Coimbatore, Tamil Nadu 641002
+
- Helpdesk
-
+ Get Directions
+
-
- {/* Card 3: Email */}
-
-
- {/* Card 4: Working Hours */}
-
-
-
+ {/* Card 3: Email */}
+
-
Working Hours
-
- Monday - Saturday
- 9:00 AM - 6:00 PM
- 24/7 Phone Helpdesk
-
-
-
-
- Helpdesk Active
-
+
+ {/* Card 4: Working Hours */}
+
+
+
+
+
Working Hours
+
+ Monday - Saturday
+ 9:00 AM - 6:00 PM
+ 24/7 Phone Helpdesk
+
+
+
+
+ Helpdesk Active
+
+
+
+
-
-
-
- {/* ─── Map Section ─── */}
-
-
+ {/* ─── Map Section ─── */}
+
+
);
}
diff --git a/src/app/globals.css b/src/app/globals.css
index 6533f1d..bc598bf 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -1131,6 +1131,41 @@ body {
z-index: 1;
}
+/* ─── Shared Premium Framed Layout Classes ─── */
+.page-canvas {
+ @apply bg-[#E6D7EA] flex flex-col gap-0;
+}
+
+.page-frame {
+ @apply mx-auto w-full;
+ max-width: min(100% - 16px, 1560px);
+}
+
+@media (min-width: 640px) {
+ .page-frame {
+ max-width: min(100% - 24px, 1560px);
+ }
+}
+
+@media (min-width: 1024px) {
+ .page-frame {
+ max-width: min(100% - 40px, 1680px);
+ }
+}
+
+@media (min-width: 1536px) {
+ .page-frame {
+ max-width: min(100% - 56px, 1840px);
+ }
+}
+
+@media (min-width: 2560px) {
+ .page-frame {
+ max-width: min(100% - 96px, 2200px);
+ }
+}
+
+
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 12e63bc..22eb1a9 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -8,29 +8,17 @@ import { StoreQRSection } from "@/components/home/StoreQRSection";
export default function HomePage() {
return (
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
);
}
diff --git a/src/app/people/page.tsx b/src/app/people/page.tsx
index 76465ae..dd41b52 100644
--- a/src/app/people/page.tsx
+++ b/src/app/people/page.tsx
@@ -145,81 +145,80 @@ export default function PeoplePage() {
}, []);
return (
-
-
- {/* ─── Hero Section ─── */}
-
- {/* Background Image with Overlay */}
-
-
-
+
+
+ {/* ─── Hero Section ─── */}
+
+ {/* Background Image with Overlay */}
+
+
+
-
-
- Nearle for People
-
+
+
+ Nearle for People
+
-
- Redefining Local Living.
-
-
- {ROTATOR_SLIDES[slideIndex]}
+
+ Redefining Local Living.
+
+
+ {ROTATOR_SLIDES[slideIndex]}
+
+
+
+
+
+ {/* ─── 9 Core Offerings Bento Grid ─── */}
+
+
+
+ What we offer
-
-
-
+
+ Everything You Need, Just a Click Away
+
+
+ Discover fresh produce, delicious meals, and daily home services from trusted neighborhood businesses.
+
+
- {/* ─── 9 Core Offerings Bento Grid ─── */}
-
-
-
- What we offer
-
-
- Everything You Need, Just a Click Away
-
-
- Discover fresh produce, delicious meals, and daily home services from trusted neighborhood businesses.
-
-
-
-
- {OFFERINGS.map((offering) => (
-
-
-
-
-
-
+
+ {OFFERINGS.map((offering) => (
+
+
+
+
+
+
+
+
{offering.title}
+
{offering.descr}
- {offering.title}
- {offering.descr}
-
-
- ))}
-
-
+
+ ))}
+
+
- {/* ─── Localized Stats Block ─── */}
-
-
-
+ {/* ─── Localized Stats Block ─── */}
+
+
Nearle Network
@@ -247,12 +246,10 @@ export default function PeoplePage() {
))}
-
-
+
- {/* ─── Ready to Download Section ─── */}
-
-
+ {/* ─── Ready to Download Section ─── */}
+
{/* Subtle ambient light gradient overlays */}
@@ -452,8 +449,8 @@ export default function PeoplePage() {
className="text-secondary"
/>
-
-
Order Confirmed
+
+
Order Confirmed
Your local store is preparing your order
@@ -555,8 +552,8 @@ export default function PeoplePage() {
className="text-secondary"
/>
-
-
Order Confirmed
+
+
Order Confirmed
Your local store is preparing your order
@@ -596,8 +593,8 @@ export default function PeoplePage() {
-
-
-
+
+
+
);
}
diff --git a/src/components/home/BusinessSection.tsx b/src/components/home/BusinessSection.tsx
index 0b25564..2132a60 100644
--- a/src/components/home/BusinessSection.tsx
+++ b/src/components/home/BusinessSection.tsx
@@ -31,8 +31,8 @@ const BENEFITS = [
export function BusinessSection() {
return (
-
-
+
+
{/* Merchant Section Grid */}
@@ -100,7 +100,7 @@ export function BusinessSection() {
{/* CURVED PROMO BANNER (Bottom CTA Block) */}
-
+
{/* Decorative background vectors */}
diff --git a/src/components/home/Hero.tsx b/src/components/home/Hero.tsx
index cb61ffb..8e35bae 100644
--- a/src/components/home/Hero.tsx
+++ b/src/components/home/Hero.tsx
@@ -28,8 +28,8 @@ const QUICK_LINKS = [
export function Hero() {
return (
- <>
-
+
+
{/* ─── Base Dark Background Panel (Clipped diagonally) ─── */}
{/* Subtle Background Dot Texture */}
@@ -50,7 +50,7 @@ export function Hero() {
{/* ─── Main Content Wrapper ─── */}
-
+
{/* Left Column: Text & Search Content */}
@@ -141,7 +141,7 @@ export function Hero() {
{/* Overlapping Quick Category Links */}
-
+
{QUICK_LINKS.map((item) => (
- >
+
);
}
diff --git a/src/components/home/HowItWorks.tsx b/src/components/home/HowItWorks.tsx
index b834793..2aca737 100644
--- a/src/components/home/HowItWorks.tsx
+++ b/src/components/home/HowItWorks.tsx
@@ -26,10 +26,10 @@ const STEPS = [
export function HowItWorks() {
return (
-
-
+
+
{/* Header Section */}
-
+
Simple Process
diff --git a/src/components/home/HyperlocalFeatures.tsx b/src/components/home/HyperlocalFeatures.tsx
index 1150507..8262c60 100644
--- a/src/components/home/HyperlocalFeatures.tsx
+++ b/src/components/home/HyperlocalFeatures.tsx
@@ -27,42 +27,42 @@ const FEATURES = [
export function HyperlocalFeatures() {
return (
-
+
{/* Scoped CSS styles for precise layout enforcement */}
{/* Subtle background radial glows */}
diff --git a/src/components/home/ServiceCategories.tsx b/src/components/home/ServiceCategories.tsx
index ea96838..0e7c40e 100644
--- a/src/components/home/ServiceCategories.tsx
+++ b/src/components/home/ServiceCategories.tsx
@@ -55,8 +55,8 @@ const CATEGORIES = [
export function ServiceCategories() {
return (
-
-
+
+
{/* Header Section */}
diff --git a/src/components/home/StoreQRSection.tsx b/src/components/home/StoreQRSection.tsx
index 7f91c4d..e773a9f 100644
--- a/src/components/home/StoreQRSection.tsx
+++ b/src/components/home/StoreQRSection.tsx
@@ -9,12 +9,12 @@ const FLOW_STEPS = [
export function StoreQRSection() {
return (
-
+
{/* Background ambient glowing details */}
-
+
{/* ─── DESKTOP LAYOUT (lg and above) ─── */}
diff --git a/src/components/home/WhyNearle.tsx b/src/components/home/WhyNearle.tsx
index 0823462..b08e1fc 100644
--- a/src/components/home/WhyNearle.tsx
+++ b/src/components/home/WhyNearle.tsx
@@ -29,8 +29,8 @@ const CARDS = [
export function WhyNearle() {
return (
-
-
+
+
{/* Header Section */}
diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx
index d2218d1..57bc11d 100644
--- a/src/components/layout/Footer.tsx
+++ b/src/components/layout/Footer.tsx
@@ -57,7 +57,7 @@ export function Footer() {
const [submitSuccess, setSubmitSuccess] = useState(false);
const handleInputChange = (
- e: React.ChangeEvent
+ e: React.ChangeEvent,
) => {
const { name, value } = e.target;
setFormData((prev) => ({
@@ -123,10 +123,7 @@ export function Footer() {
const brandCol = (
-
+
- India's leading hyperlocal neighborhood network, empowering communities and verified local businesses within 2km.
+ India's leading hyperlocal neighborhood network, empowering
+ communities and verified local businesses within 2km.
{/* Social Links */}
@@ -161,8 +151,8 @@ export function Footer() {
);
return (
-
-
+
+
{/* Top Helpdesk Bar */}
@@ -171,7 +161,9 @@ export function Footer() {
-
24/7 Neighborhood Helpdesk
+
+ 24/7 Neighborhood Helpdesk
+
Need immediate assistance with an order or local service?
@@ -181,18 +173,24 @@ export function Footer() {
href="tel:+918049123456"
className="flex items-center gap-3 bg-brand-accent hover:bg-brand-accent-light text-brand-dark font-black px-6 py-3 rounded-full text-base shadow-lg transition-all duration-300 hover:-translate-y-0.5 shrink-0"
>
-
+
+91 80 4912 3456
{/* Main Footer Content */}
-
+
{isContactPage ? (
<>
{/* Brand Column */}
@@ -237,9 +235,12 @@ export function Footer() {
- 424, Diwan Bahadur Rd,
- Opposite to Sri Krishna Sweets,
- R.S. Puram, Coimbatore,
+ 424, Diwan Bahadur Rd,
+
+ Opposite to Sri Krishna Sweets,
+
+ R.S. Puram, Coimbatore,
+
Tamil Nadu 641002
@@ -280,7 +281,12 @@ export function Footer() {
-
Your Name
+
+ Your Name
+
-
Your Phone
+
+ Your Phone
+
-
Your Email Address
+
+ Your Email Address
+
- Your Message
+
+ Your Message
+