images updated

This commit is contained in:
Selvi 2026-07-20 20:00:26 +05:30
parent 39fd538a68
commit 6a029585c5
36 changed files with 785 additions and 754 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
public/images/faq-bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 MiB

File diff suppressed because it is too large Load Diff

View File

@ -20,10 +20,21 @@ export default async function BlogPostPage({ params }: { params: Promise<{ slug:
notFound(); notFound();
} }
// Split content into paragraphs for custom structural rendering // Replace the 2-image grid in content with the actual small images for this post
const paragraphs = post.content.split('\n\n').filter(p => p.trim() !== ''); let processedContent = post.content;
const firstParagraph = paragraphs[0] || ""; if (post.smallImages && post.smallImages.length >= 2) {
const remainingParagraphs = paragraphs.slice(1) || []; // Replace first and second <img src="..." in the grid div
let count = 0;
processedContent = processedContent.replace(
/<img src=\"([^\"]+)\"/g,
(_match: string, _src: string) => {
count++;
if (count === 1) return `<img src="${post.smallImages![0]}"`;
if (count === 2) return `<img src="${post.smallImages![1]}"`;
return _match;
}
);
}
return ( return (
<SubpageLayout> <SubpageLayout>
@ -40,7 +51,7 @@ export default async function BlogPostPage({ params }: { params: Promise<{ slug:
<AnimatedSection variant="scaleUp" delay={0}> <AnimatedSection variant="scaleUp" delay={0}>
<div className="relative w-full h-[500px] rounded-2xl overflow-hidden shadow-lg mb-10 border border-[#e8e0ce]"> <div className="relative w-full h-[500px] rounded-2xl overflow-hidden shadow-lg mb-10 border border-[#e8e0ce]">
<Image <Image
src={post.image} src={post.bigImage || post.image}
alt={post.title} alt={post.title}
fill fill
priority priority
@ -67,7 +78,7 @@ export default async function BlogPostPage({ params }: { params: Promise<{ slug:
<AnimatedSection variant="fadeUp" delay={0.25}> <AnimatedSection variant="fadeUp" delay={0.25}>
<div <div
className="prose prose-stone max-w-none prose-p:font-sans prose-p:text-stone-700 prose-p:leading-[1.8] prose-p:text-[15px] prose-p:mb-6" className="prose prose-stone max-w-none prose-p:font-sans prose-p:text-stone-700 prose-p:leading-[1.8] prose-p:text-[15px] prose-p:mb-6"
dangerouslySetInnerHTML={{ __html: post.content }} dangerouslySetInnerHTML={{ __html: processedContent }}
/> />
<AnimatedSection variant="fadeUp" delay={0.35}> <AnimatedSection variant="fadeUp" delay={0.35}>
@ -98,7 +109,7 @@ export default async function BlogPostPage({ params }: { params: Promise<{ slug:
<Link key={related.id} href={`/blog/${related.slug}`} className="group flex flex-col gap-3"> <Link key={related.id} href={`/blog/${related.slug}`} className="group flex flex-col gap-3">
<div className="relative w-full aspect-video rounded-xl overflow-hidden shadow-sm"> <div className="relative w-full aspect-video rounded-xl overflow-hidden shadow-sm">
<Image <Image
src={related.image} src={related.cardImage || related.image}
alt={related.title} alt={related.title}
fill fill
className="object-cover group-hover:scale-105 transition-transform duration-700" className="object-cover group-hover:scale-105 transition-transform duration-700"

View File

@ -44,7 +44,7 @@ export default function BlogPage() {
{/* Image Container with fade out */} {/* Image Container with fade out */}
<div className="relative w-full aspect-[4/3] overflow-hidden border-b-1 border-[#0a4a2b]"> <div className="relative w-full aspect-[4/3] overflow-hidden border-b-1 border-[#0a4a2b]">
<Image <Image
src={post.image} src={post.cardImage || post.image}
alt={post.title} alt={post.title}
fill fill
sizes="(max-width: 768px) 100vw, 30vw" sizes="(max-width: 768px) 100vw, 30vw"

View File

@ -135,11 +135,19 @@ export default function ContactPage() {
{/* Right Column: Form — Dark green theme card */} {/* Right Column: Form — Dark green theme card */}
<AnimatedSection variant="fadeRight" delay={0.2}> <AnimatedSection variant="fadeRight" delay={0.2}>
<div className="relative bg-[#0a2e1f] p-8 sm:p-12 shadow-[0_20px_50px_rgba(0,0,0,0.5)] rounded-xl border-[4px] border-[#082418]"> <div className="relative p-8 sm:p-12 overflow-hidden">
{/* Background Image */}
<div className="absolute inset-0 z-0 pointer-events-none select-none">
<Image
src="/images/contact/contact.webp"
alt=""
fill
className="object-cover object-center"
/>
</div>
{/* Ornate Gold Border inside */} {/* Ornate Gold Border inside */}
<div className="absolute inset-2 border-[1.5px] border-[#bc9e65] rounded-lg pointer-events-none" /> {/* <div className="absolute inset-2 border-[1.5px] border-[#bc9e65] rounded-lg pointer-events-none" />
{/* Corner Ornaments */}
<div className="absolute top-2 left-2 w-12 h-12 pointer-events-none"> <div className="absolute top-2 left-2 w-12 h-12 pointer-events-none">
<svg className="w-full h-full text-[#bc9e65]" viewBox="0 0 100 100" fill="currentColor"> <svg className="w-full h-full text-[#bc9e65]" viewBox="0 0 100 100" fill="currentColor">
<path d="M0,0 L40,0 Q40,40 0,40 Z" /> <path d="M0,0 L40,0 Q40,40 0,40 Z" />
@ -165,7 +173,6 @@ export default function ContactPage() {
</svg> </svg>
</div> </div>
{/* Faint mandala watermark at bottom */}
<div className="absolute bottom-16 left-1/2 -translate-x-1/2 w-64 h-40 overflow-hidden pointer-events-none opacity-5"> <div className="absolute bottom-16 left-1/2 -translate-x-1/2 w-64 h-40 overflow-hidden pointer-events-none opacity-5">
<svg viewBox="0 0 100 50" fill="currentColor" className="w-full h-full text-[#bc9e65]"> <svg viewBox="0 0 100 50" fill="currentColor" className="w-full h-full text-[#bc9e65]">
<path d="M50 50 C50 20 20 0 0 0 L100 0 C80 0 50 20 50 50 Z" /> <path d="M50 50 C50 20 20 0 0 0 L100 0 C80 0 50 20 50 50 Z" />
@ -173,7 +180,7 @@ export default function ContactPage() {
<circle cx="50" cy="50" r="30" fill="none" stroke="currentColor" strokeWidth="2" /> <circle cx="50" cy="50" r="30" fill="none" stroke="currentColor" strokeWidth="2" />
<circle cx="50" cy="50" r="20" fill="none" stroke="currentColor" strokeWidth="2" /> <circle cx="50" cy="50" r="20" fill="none" stroke="currentColor" strokeWidth="2" />
</svg> </svg>
</div> </div> */}
<div className="relative z-10 flex flex-col items-center"> <div className="relative z-10 flex flex-col items-center">
<svg className="w-10 h-10 text-[#bc9e65] mb-2" viewBox="0 0 24 24" fill="currentColor"> <svg className="w-10 h-10 text-[#bc9e65] mb-2" viewBox="0 0 24 24" fill="currentColor">

View File

@ -34,19 +34,18 @@ export default function ReservationPage() {
<div className="relative w-full bg-[#fdfaf4] overflow-hidden flex flex-col justify-center py-24"> <div className="relative w-full bg-[#fdfaf4] overflow-hidden flex flex-col justify-center py-24">
{/* Full Page Background with Pots and Temple */} {/* Full Page Background with Pots and Temple */}
<div className="absolute inset-0 z-0 pointer-events-none select-none"> {/* <div className="absolute inset-0 z-0 pointer-events-none select-none">
<Image <Image
src="/images/story_bg.png" src="/images/about/bg/reservation-bg.webp"
alt="Royal Background" alt="Royal Background"
fill fill
priority priority
className="object-cover object-bottom opacity-90 mix-blend-multiply" className="object-cover object-bottom opacity-90 mix-blend-multiply"
/> />
</div> </div> */}
{/* Ornate Page Border */} {/* Ornate Page Border */}
<div className="absolute inset-4 sm:inset-8 border-[1.5px] border-[#bc9e65] pointer-events-none z-10 hidden md:block"> {/* <div className="absolute inset-4 sm:inset-8 border-[1.5px] border-[#bc9e65] pointer-events-none z-10 hidden md:block">
{/* Corner Ornaments */}
<div className="absolute top-0 left-0 w-16 h-16 transform"> <div className="absolute top-0 left-0 w-16 h-16 transform">
<svg className="w-full h-full text-[#bc9e65]" viewBox="0 0 100 100" fill="currentColor"> <svg className="w-full h-full text-[#bc9e65]" viewBox="0 0 100 100" fill="currentColor">
<path d="M0,0 L50,0 Q50,50 0,50 Z" /> <path d="M0,0 L50,0 Q50,50 0,50 Z" />
@ -71,18 +70,25 @@ export default function ReservationPage() {
<path d="M10,10 L40,10 Q40,40 10,40 Z" fill="none" stroke="currentColor" strokeWidth="1" /> <path d="M10,10 L40,10 Q40,40 10,40 Z" fill="none" stroke="currentColor" strokeWidth="1" />
</svg> </svg>
</div> </div>
</div> </div> */}
<div className="relative z-20 max-w-2xl mx-auto w-full px-4 sm:px-8"> <div className="relative z-20 max-w-2xl mx-auto w-full px-4 sm:px-8">
{/* Form Card */} {/* Form Card */}
<div className="w-full"> <div className="w-full">
<AnimatedSection variant="fadeUp" delay={0.1}> <AnimatedSection variant="fadeUp" delay={0.1}>
<div className="relative bg-[#0a2e1f] p-8 sm:p-12 shadow-[0_30px_60px_rgba(0,0,0,0.6)] rounded-xl border-[4px] border-[#082418]"> <div className="relative p-8 sm:p-14 overflow-hidden">
{/* Ornate Gold Border inside */} {/* Background Image */}
<div className="absolute inset-2 border-[1.5px] border-[#bc9e65] rounded-lg pointer-events-none" /> <div className="absolute inset-0 z-0 pointer-events-none select-none">
<Image
src="/images/contact/contact.webp"
alt=""
fill
className="object-cover object-center"
/>
</div>
{/* <div className="absolute inset-2 border-[1.5px] border-[#bc9e65] rounded-lg pointer-events-none" />
{/* Corner Ornaments */}
<div className="absolute top-2 left-2 w-12 h-12 pointer-events-none"> <div className="absolute top-2 left-2 w-12 h-12 pointer-events-none">
<svg className="w-full h-full text-[#bc9e65]" viewBox="0 0 100 100" fill="currentColor"> <svg className="w-full h-full text-[#bc9e65]" viewBox="0 0 100 100" fill="currentColor">
<path d="M0,0 L40,0 Q40,40 0,40 Z" /> <path d="M0,0 L40,0 Q40,40 0,40 Z" />
@ -106,7 +112,7 @@ export default function ReservationPage() {
<path d="M0,0 L40,0 Q40,40 0,40 Z" /> <path d="M0,0 L40,0 Q40,40 0,40 Z" />
<path d="M10,10 L30,10 Q30,30 10,30 Z" fill="none" stroke="currentColor" strokeWidth="2" /> <path d="M10,10 L30,10 Q30,30 10,30 Z" fill="none" stroke="currentColor" strokeWidth="2" />
</svg> </svg>
</div> </div> */}
<div className="relative z-10 flex flex-col items-center"> <div className="relative z-10 flex flex-col items-center">
<svg className="w-10 h-10 text-[#bc9e65] mb-2" viewBox="0 0 24 24" fill="currentColor"> <svg className="w-10 h-10 text-[#bc9e65] mb-2" viewBox="0 0 24 24" fill="currentColor">

View File

@ -205,7 +205,7 @@ export default function ChefShowcase() {
> >
{/* 30+ Years Experience Badge Overlay */} {/* 30+ Years Experience Badge Overlay */}
<div className="absolute -top-6 -right-6 w-24 h-24 sm:w-28 sm:h-28 rounded-full border border-[#bc9e65]/80 bg-black/45 backdrop-blur-md z-30 shadow-2xl flex flex-col items-center justify-center text-center p-3 select-none pointer-events-none"> <div className="hidden lg:flex absolute -top-6 -right-6 w-24 h-24 sm:w-28 sm:h-28 rounded-full border border-[#bc9e65]/80 bg-black/45 backdrop-blur-md z-30 shadow-2xl flex-col items-center justify-center text-center p-3 select-none pointer-events-none">
<div className="absolute inset-1.5 border border-[#bc9e65]/35 rounded-full pointer-events-none" /> <div className="absolute inset-1.5 border border-[#bc9e65]/35 rounded-full pointer-events-none" />
{/* Gold Flower Icon */} {/* Gold Flower Icon */}
<svg className="w-4 h-4 text-[#bc9e65] opacity-85 mb-0.5" viewBox="0 0 20 20" fill="currentColor"> <svg className="w-4 h-4 text-[#bc9e65] opacity-85 mb-0.5" viewBox="0 0 20 20" fill="currentColor">
@ -217,17 +217,17 @@ export default function ChefShowcase() {
</div> </div>
{/* Seamless Image Wrapper */} {/* Seamless Image Wrapper */}
<div className="relative w-full max-w-[380px] sm:max-w-[420px] aspect-[4/5] overflow-hidden group"> <div className="hidden lg:block relative w-full max-w-[380px] sm:max-w-[420px] aspect-[4/5] overflow-hidden group">
{/* Portrait Image */} {/* Portrait Image */}
<Image {/* <Image
src="/images/home/chef/chef-right-img.webp" src="/images/home/chef/chef-right-img.webp"
alt="Chef Mendia Juxef Cooking with Fire" alt="Chef Mendia Juxef Cooking with Fire"
fill fill
priority priority
sizes="(max-width: 768px) 100vw, 35vw" sizes="(max-width: 768px) 100vw, 35vw"
className="object-cover group-hover:scale-103 transition-transform duration-[2s] brightness-[0.9] contrast-[1.03]" className="object-cover group-hover:scale-103 transition-transform duration-[2s] brightness-[0.9] contrast-[1.03]"
/> /> */}
{/* Sparks/Embers Canvas Overlay */} {/* Sparks/Embers Canvas Overlay */}
<canvas <canvas

View File

@ -68,9 +68,9 @@ function LoaderNotifier({ onLoad }: { onLoad: () => void }) {
// 3D Cinematic flight renderer // 3D Cinematic flight renderer
function CinematicFlight({ progress }: { progress: number }) { function CinematicFlight({ progress }: { progress: number }) {
const exteriorTex = useTexture("/images/my_dosa_place_exterior_webgl.jpg"); const exteriorTex = useTexture("/images/home/hero/banner-1.png");
const interiorTex = useTexture("/images/my_dosa_place_interior_webgl.jpg"); const interiorTex = useTexture("/images/home/hero/banner-2.png");
const foodTex = useTexture("/images/my_dosa_place_food_webgl.jpg"); const foodTex = useTexture("/images/home/hero/banner-3.png");
const leftDoorRef = useRef<THREE.Group>(null); const leftDoorRef = useRef<THREE.Group>(null);
const rightDoorRef = useRef<THREE.Group>(null); const rightDoorRef = useRef<THREE.Group>(null);

View File

@ -182,7 +182,7 @@ export default function EventsAccordion() {
whileInView={{ opacity: 1, y: 0 }} whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }} viewport={{ once: true }}
transition={{ duration: 0.8, delay: 0.1, ease: "easeOut" }} transition={{ duration: 0.8, delay: 0.1, ease: "easeOut" }}
className="flex flex-col lg:flex-row gap-5 h-[680px] lg:h-[460px] w-full items-stretch relative z-20" className="flex flex-col lg:flex-row gap-5 h-[800px] lg:h-[460px] w-full items-stretch relative z-20"
> >
{events.map((event, idx) => { {events.map((event, idx) => {
const isActive = idx === activeIdx; const isActive = idx === activeIdx;
@ -266,10 +266,10 @@ export default function EventsAccordion() {
</div> </div>
{/* Details content section */} {/* Details content section */}
<div className="flex flex-col items-start gap-3 lg:gap-4 h-full justify-center overflow-y-auto custom-scrollbar pr-2"> <div className="flex flex-col items-start justify-between h-full lg:justify-center overflow-hidden pr-2">
{/* Double gold-rim circle icon container */} {/* Double gold-rim circle icon container */}
<div className="w-12 h-12 lg:w-14 lg:h-14 rounded-full border border-[#bc9e65]/45 flex flex-shrink-0 items-center justify-center bg-transparent shadow-sm mb-1 lg:mb-0"> <div className="w-12 h-12 lg:w-14 lg:h-14 rounded-full border border-[#bc9e65]/45 flex flex-shrink-0 items-center justify-center bg-transparent shadow-sm mb-1 lg:mb-0 mt-4 lg:mt-0">
<div className="w-10 h-10 lg:w-12 lg:h-12 rounded-full border border-[#bc9e65]/25 flex items-center justify-center"> <div className="w-10 h-10 lg:w-12 lg:h-12 rounded-full border border-[#bc9e65]/25 flex items-center justify-center">
<CategoryIcon /> <CategoryIcon />
</div> </div>
@ -294,7 +294,7 @@ export default function EventsAccordion() {
</p> </p>
{/* Notched Enquire CTA Button */} {/* Notched Enquire CTA Button */}
<div className="mt-2 lg:mt-4 select-none"> <div className="mt-4 lg:mt-4 mb-4 lg:mb-0 select-none flex-shrink-0">
<button <button
className="inline-flex items-center justify-center bg-[#0a4a2b] border border-[#d8c396]/80 text-[#fcfaf2] rounded-none px-5 py-2 lg:px-6 lg:py-2.5 uppercase font-sans font-bold text-sm lg:text-base tracking-wider relative hover:bg-[#0c5030] transition-colors duration-300 shadow-md" className="inline-flex items-center justify-center bg-[#0a4a2b] border border-[#d8c396]/80 text-[#fcfaf2] rounded-none px-5 py-2 lg:px-6 lg:py-2.5 uppercase font-sans font-bold text-sm lg:text-base tracking-wider relative hover:bg-[#0c5030] transition-colors duration-300 shadow-md"
style={{ style={{
@ -323,4 +323,4 @@ export default function EventsAccordion() {
</div> </div>
</section> </section>
); );
} }

View File

@ -25,7 +25,7 @@ export default function Footer() {
alt="Footer Backdrop" alt="Footer Backdrop"
fill fill
priority priority
className="object-fill" className="object-cover object-center"
/> />
</div> </div>
@ -256,4 +256,4 @@ export default function Footer() {
</div> </div>
</footer> </footer>
); );
} }

View File

@ -93,7 +93,7 @@ export default function SpatialSanctuary() {
> >
{/* ==================== SLIDE 1: THE CULINARY HERITAGE MAIN COVER ==================== */} {/* ==================== SLIDE 1: THE CULINARY HERITAGE MAIN COVER ==================== */}
<div className="w-screen h-screen flex-shrink-0 relative flex flex-col justify-center px-6 sm:px-12 md:px-16 pt-12 pb-20 overflow-hidden bg-[#fdfcf7]"> <div className="w-screen h-screen flex-shrink-0 relative flex flex-col justify-start lg:justify-center px-4 sm:px-12 md:px-16 pt-20 lg:pt-12 pb-24 lg:pb-20 overflow-y-auto lg:overflow-hidden bg-[#fdfcf7] custom-scrollbar">
{/* Parchment background image for Slide 1 */} {/* Parchment background image for Slide 1 */}
<Image <Image
src="/images/home/culinary-heritage/our-culinary-heritage-bg-1.webp" src="/images/home/culinary-heritage/our-culinary-heritage-bg-1.webp"
@ -110,7 +110,7 @@ export default function SpatialSanctuary() {
<div className="max-w-7xl mx-auto w-full flex flex-col lg:flex-row items-center justify-between gap-8 lg:gap-12 relative z-10"> <div className="max-w-7xl mx-auto w-full flex flex-col lg:flex-row items-center justify-between gap-8 lg:gap-12 relative z-10">
{/* Left Side details */} {/* Left Side details */}
<div className="w-full lg:w-[50%] flex flex-col items-center lg:items-start text-center lg:text-left justify-center select-text"> <div className="w-full lg:w-[50%] flex flex-col items-center lg:items-start text-center lg:text-left justify-start lg:justify-center select-text">
{/* Pre-title with Gold star crest */} {/* Pre-title with Gold star crest */}
<div className="flex flex-col items-center lg:items-start mb-2 pointer-events-none select-none"> <div className="flex flex-col items-center lg:items-start mb-2 pointer-events-none select-none">
@ -123,7 +123,7 @@ export default function SpatialSanctuary() {
</div> </div>
{/* Main Headline */} {/* Main Headline */}
<h2 className="font-serif text-3xl sm:text-4xl lg:text-5xl font-bold tracking-wider text-[#0a4a2b] leading-tight uppercase mb-4"> <h2 className="font-serif text-3xl sm:text-4xl lg:text-5xl font-bold tracking-wider text-[#0a4a2b] leading-tight uppercase mb-2 lg:mb-4">
Our Culinary<br /> Our Culinary<br />
<span className="text-[#bc9e65] font-extrabold block mt-1">Heritage</span> <span className="text-[#bc9e65] font-extrabold block mt-1">Heritage</span>
</h2> </h2>
@ -138,12 +138,12 @@ export default function SpatialSanctuary() {
</div> </div>
{/* Description narrative */} {/* Description narrative */}
<p className="font-sans text-sm sm:text-base text-stone-700 leading-relaxed tracking-wider max-w-lg mb-6"> <p className="font-sans text-xs sm:text-base text-stone-700 leading-relaxed tracking-wider max-w-lg mb-4 lg:mb-6">
Swipe or scroll to explore the rich, traditional recipes of My Dosa Place, bringing stone-ground batters, fresh local spices, and traditional techniques to life. Swipe or scroll to explore the rich, traditional recipes of My Dosa Place, bringing stone-ground batters, fresh local spices, and traditional techniques to life.
</p> </p>
{/* Scroll Down Slide Indicator */} {/* Scroll Down Slide Indicator */}
<div className="flex items-center gap-2 mb-6 pointer-events-none select-none text-[#bc9e65]"> <div className="flex items-center gap-2 mb-4 lg:mb-6 pointer-events-none select-none text-[#bc9e65]">
<span className="font-sans text-sm tracking-[0.2em] font-bold uppercase"> <span className="font-sans text-sm tracking-[0.2em] font-bold uppercase">
Scroll down to slide right Scroll down to slide right
</span> </span>
@ -157,45 +157,45 @@ export default function SpatialSanctuary() {
<div className="grid grid-cols-2 gap-4 w-full max-w-lg"> <div className="grid grid-cols-2 gap-4 w-full max-w-lg">
{/* Card 1: Recipes */} {/* Card 1: Recipes */}
<div className="bg-[#fcfaf2]/70 border border-[#d8c396]/45 rounded-xl shadow-sm p-4 flex flex-col items-center text-center group"> <div className="bg-[#fcfaf2]/70 border border-[#d8c396]/45 rounded-xl shadow-sm p-3 lg:p-4 flex flex-col items-center text-center group">
<Image src="/images/home/culinary-heritage/icons/culinary-heritage.webp" alt="Heritage Recipes" width={32} height={32} className="object-contain mb-2" /> <Image src="/images/home/culinary-heritage/icons/culinary-heritage.webp" alt="Heritage Recipes" width={32} height={32} className="object-contain mb-1 lg:mb-2 w-6 h-6 lg:w-8 lg:h-8" />
<h5 className="font-serif text-base sm:text-base font-bold text-[#0a4a2b] tracking-wider uppercase mb-1"> <h5 className="font-serif text-sm lg:text-base font-bold text-[#0a4a2b] tracking-wider uppercase mb-0.5 lg:mb-1">
Heritage Recipes Heritage Recipes
</h5> </h5>
<p className="font-sans text-sm sm:text-sm text-stone-500 leading-relaxed max-w-[180px]"> <p className="font-sans text-xs lg:text-sm text-stone-500 leading-tight lg:leading-relaxed max-w-[180px]">
Timeless recipes rooted in tradition. Timeless recipes rooted in tradition.
</p> </p>
</div> </div>
{/* Card 2: Ghee */} {/* Card 2: Ghee */}
<div className="bg-[#fcfaf2]/70 border border-[#d8c396]/45 rounded-xl shadow-sm p-4 flex flex-col items-center text-center group"> <div className="bg-[#fcfaf2]/70 border border-[#d8c396]/45 rounded-xl shadow-sm p-3 lg:p-4 flex flex-col items-center text-center group">
<Image src="/images/home/culinary-heritage/icons/culinary-pure.webp" alt="Pure A2 Ghee" width={32} height={32} className="object-contain mb-2" /> <Image src="/images/home/culinary-heritage/icons/culinary-pure.webp" alt="Pure A2 Ghee" width={32} height={32} className="object-contain mb-1 lg:mb-2 w-6 h-6 lg:w-8 lg:h-8" />
<h5 className="font-serif text-base sm:text-base font-bold text-[#0a4a2b] tracking-wider uppercase mb-1"> <h5 className="font-serif text-sm lg:text-base font-bold text-[#0a4a2b] tracking-wider uppercase mb-0.5 lg:mb-1">
Pure A2 Ghee Pure A2 Ghee
</h5> </h5>
<p className="font-sans text-sm sm:text-sm text-stone-500 leading-relaxed max-w-[180px]"> <p className="font-sans text-xs lg:text-sm text-stone-500 leading-tight lg:leading-relaxed max-w-[180px]">
Traditional ghee that enriches the flavor. Traditional ghee that enriches the flavor.
</p> </p>
</div> </div>
{/* Card 3: Dosa */} {/* Card 3: Dosa */}
<div className="bg-[#fcfaf2]/70 border border-[#d8c396]/45 rounded-xl shadow-sm p-4 flex flex-col items-center text-center group"> <div className="bg-[#fcfaf2]/70 border border-[#d8c396]/45 rounded-xl shadow-sm p-3 lg:p-4 flex flex-col items-center text-center group">
<Image src="/images/home/culinary-heritage/icons/culinary-dosa.webp" alt="Artisanal Dosa" width={32} height={32} className="object-contain mb-2" /> <Image src="/images/home/culinary-heritage/icons/culinary-dosa.webp" alt="Artisanal Dosa" width={32} height={32} className="object-contain mb-1 lg:mb-2 w-6 h-6 lg:w-8 lg:h-8" />
<h5 className="font-serif text-base sm:text-base font-bold text-[#0a4a2b] tracking-wider uppercase mb-1"> <h5 className="font-serif text-sm lg:text-base font-bold text-[#0a4a2b] tracking-wider uppercase mb-0.5 lg:mb-1">
Artisanal Dosa Artisanal Dosa
</h5> </h5>
<p className="font-sans text-sm sm:text-sm text-stone-500 leading-relaxed max-w-[180px]"> <p className="font-sans text-xs lg:text-sm text-stone-500 leading-tight lg:leading-relaxed max-w-[180px]">
Stone-ground batter fermented to perfection. Stone-ground batter fermented to perfection.
</p> </p>
</div> </div>
{/* Card 4: Feasts */} {/* Card 4: Feasts */}
<div className="bg-[#fcfaf2]/70 border border-[#d8c396]/45 rounded-xl shadow-sm p-4 flex flex-col items-center text-center group"> <div className="bg-[#fcfaf2]/70 border border-[#d8c396]/45 rounded-xl shadow-sm p-3 lg:p-4 flex flex-col items-center text-center group">
<Image src="/images/home/culinary-heritage/icons/culinary-feast.webp" alt="Imperial Feasts" width={32} height={32} className="object-contain mb-2" /> <Image src="/images/home/culinary-heritage/icons/culinary-feast.webp" alt="Imperial Feasts" width={32} height={32} className="object-contain mb-1 lg:mb-2 w-6 h-6 lg:w-8 lg:h-8" />
<h5 className="font-serif text-base sm:text-base font-bold text-[#0a4a2b] tracking-wider uppercase mb-1"> <h5 className="font-serif text-sm lg:text-base font-bold text-[#0a4a2b] tracking-wider uppercase mb-0.5 lg:mb-1">
Imperial Feasts Imperial Feasts
</h5> </h5>
<p className="font-sans text-sm sm:text-sm text-stone-500 leading-relaxed max-w-[180px]"> <p className="font-sans text-xs lg:text-sm text-stone-500 leading-tight lg:leading-relaxed max-w-[180px]">
Grand platters reflecting royal tastes. Grand platters reflecting royal tastes.
</p> </p>
</div> </div>
@ -205,8 +205,8 @@ export default function SpatialSanctuary() {
</div> </div>
{/* Right Side: Thali Archway photo overlap */} {/* Right Side: Thali Archway photo overlap */}
<div className="w-full lg:w-[46%] flex justify-center lg:justify-end relative select-none pointer-events-none"> <div className="hidden lg:flex w-full lg:w-[46%] justify-center lg:justify-end relative select-none pointer-events-none mt-6 lg:mt-0">
<div className="w-[320px] h-[320px] sm:w-[460px] sm:h-[460px] md:w-[480px] md:h-[480px] relative"> <div className="w-[180px] h-[180px] sm:w-[320px] sm:h-[320px] md:w-[400px] md:h-[400px] lg:w-[480px] lg:h-[480px] relative">
<Image <Image
src="/images/home/culinary-heritage/our-culinary-heritage-right.webp" src="/images/home/culinary-heritage/our-culinary-heritage-right.webp"
alt="My Dosa Place Spatial Dining Sanctuary" alt="My Dosa Place Spatial Dining Sanctuary"
@ -494,14 +494,14 @@ export default function SpatialSanctuary() {
</div> </div>
{/* ==================== PINNED BOTTOM BANNER BAR (OUTSIDE TRACK) ==================== */} {/* ==================== PINNED BOTTOM BANNER BAR (OUTSIDE TRACK) ==================== */}
<div className="absolute bottom-0 left-0 w-full bg-[#0a4a2b] border-t border-b border-[#d8c396]/60 py-2.5 z-30 flex items-center justify-center gap-4 pointer-events-none select-none"> <div className="absolute bottom-0 left-0 w-full bg-[#0a4a2b] border-t border-b border-[#d8c396]/60 py-2.5 z-30 flex items-center justify-center gap-2 sm:gap-4 pointer-events-none select-none">
<span className="font-serif text-sm text-[#bc9e65] font-semibold italic">My Dosa Place</span> <span className="font-serif text-sm text-[#bc9e65] font-semibold italic hidden sm:block">My Dosa Place</span>
<span className="h-4 w-[1px] bg-[#bc9e65]/40" /> <span className="h-4 w-[1px] bg-[#bc9e65]/40 hidden sm:block" />
<span className="font-sans text-sm sm:text-sm tracking-[0.25em] text-[#bc9e65] font-bold uppercase"> <span className="font-sans text-[9px] sm:text-sm tracking-[0.1em] sm:tracking-[0.25em] text-[#bc9e65] font-bold uppercase text-center px-2">
ROOTED IN TRADITION DRIVEN BY PASSION SERVED WITH LOVE ROOTED IN TRADITION DRIVEN BY PASSION SERVED WITH LOVE
</span> </span>
</div> </div>
</div> </div>
); );
} }

File diff suppressed because one or more lines are too long