diff --git a/public/images/menu/card-img.png b/public/images/menu/card-img.png
index cd3fa86..92a9bc0 100644
Binary files a/public/images/menu/card-img.png and b/public/images/menu/card-img.png differ
diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx
index 0a9486d..1f4f628 100644
--- a/src/app/contact/page.tsx
+++ b/src/app/contact/page.tsx
@@ -326,13 +326,13 @@ export default function ContactPage() {
{[
- { day: 'Friday', time: '5:00 – 10:00 pm' },
- { day: 'Saturday', time: '12:00 – 10:00 pm' },
- { day: 'Sunday', time: '12:00 – 9:00 pm' },
{ day: 'Monday', time: '4:00 – 10:00 pm' },
{ day: 'Tuesday', time: 'Closed', closed: true },
{ day: 'Wednesday', time: '4:30 – 10:00 pm' },
{ day: 'Thursday', time: '4:00 – 10:00 pm' },
+ { day: 'Friday', time: '5:00 – 10:00 pm' },
+ { day: 'Saturday', time: '12:00 – 10:00 pm' },
+ { day: 'Sunday', time: '12:00 – 9:00 pm' },
].map(({ day, time, closed }) => (
{day}
diff --git a/src/app/globals.css b/src/app/globals.css
index 6edc94d..a2fe413 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -118,3 +118,12 @@ body {
display: none !important;
}
}
+
+/* Scrollbar hiding utility */
+.scrollbar-none::-webkit-scrollbar {
+ display: none;
+}
+.scrollbar-none {
+ -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none; /* Firefox */
+}
diff --git a/src/components/EntranceExperience.tsx b/src/components/EntranceExperience.tsx
index f849678..38599d9 100644
--- a/src/components/EntranceExperience.tsx
+++ b/src/components/EntranceExperience.tsx
@@ -86,11 +86,19 @@ function CinematicFlight({ progress }: { progress: number }) {
const { width, height } = useThree((state) => state.viewport);
+ // Compute baseScale to prevent clipping of "MY DOSA PLACE" sign on portrait/mobile viewports
+ const isPortrait = width < height;
+ const baseScale = 1.0; // Keep full height, no empty spaces at top and bottom
+
// Compute facade dimensions based on dusk photo aspect ratio
- const aspect = 1920 / 864;
+ // Use dynamically compressed aspect ratio on mobile to fit the sign width responsive to screen width
+ const aspect = isPortrait ? Math.max(1.7, Math.min(1.95, (width / height) * 3.8)) : 1920 / 864;
const planeH = height;
const planeW = planeH * aspect;
+ // Compute horizontal offset to shift image to left on mobile so text is perfectly centered/visible
+ const offsetX = isPortrait ? -planeW * 0.025 : 0;
+
// Door dimensions matching facade coordinate percentages
const dw = 0.04 * planeW;
const dh = 0.42 * planeH;
@@ -112,14 +120,18 @@ function CinematicFlight({ progress }: { progress: number }) {
// Smooth frame loop camera zoom and door swing animations
useFrame(() => {
// 1. Storefront zoom and centering translation
- // Scale goes from 1.0 to 5.5
- const targetExtScale = 1.0 + progress * 4.5;
+ // Scale goes from baseScale to 6.5
+ const targetExtScale = baseScale + progress * (6.5 - baseScale);
if (extGroupRef.current) {
extGroupRef.current.scale.setScalar(THREE.MathUtils.lerp(extGroupRef.current.scale.x, targetExtScale, 0.08));
// Pan Y upward to center the doors as we scale
const currentScale = extGroupRef.current.scale.x;
- const targetY = -doorY * (currentScale - 1.0);
+ const targetY = -doorY * (currentScale - baseScale);
extGroupRef.current.position.y = THREE.MathUtils.lerp(extGroupRef.current.position.y, targetY, 0.08);
+
+ // Interpolate horizontal offset from offsetX to 0 as progress goes from 0 to 1
+ const targetX = offsetX * (1.0 - progress);
+ extGroupRef.current.position.x = THREE.MathUtils.lerp(extGroupRef.current.position.x, targetX, 0.08);
}
// 2. Door opening rotation (swing inward Y-axis)
@@ -206,7 +218,7 @@ function CinematicFlight({ progress }: { progress: number }) {
{/* Plane 1: Storefront Facade & 3D Swinging Door Panels (Z = 0.02) */}
-
+
- A royal banquet served on fresh banana leaves—crisp ghee dosas, slow-simmered sambar, and chutneys hand-ground fresh every morning. 100% pure vegetarian.
+ A royal banquet of crisp ghee dosas, slow-simmered sambar, and chutneys hand-ground fresh every morning. 100% pure vegetarian.
)}
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx
index d88aa2e..90d8c0b 100644
--- a/src/components/Footer.tsx
+++ b/src/components/Footer.tsx
@@ -156,21 +156,6 @@ export default function Footer() {
- {/* Friday */}
-
- Friday
- 5–10 pm
-
- {/* Saturday */}
-
- Saturday
- 12–10 pm
-
- {/* Sunday */}
-
- Sunday
- 12–9 pm
-
{/* Monday */}
Monday
@@ -197,6 +182,21 @@ export default function Footer() {
Thursday
4–10 pm
+ {/* Friday */}
+
+ Friday
+ 5–10 pm
+
+ {/* Saturday */}
+
+ Saturday
+ 12–10 pm
+
+ {/* Sunday */}
+
+ Sunday
+ 12–9 pm
+
diff --git a/src/components/MenuPageContent.tsx b/src/components/MenuPageContent.tsx
index a834af3..8323803 100644
--- a/src/components/MenuPageContent.tsx
+++ b/src/components/MenuPageContent.tsx
@@ -1,6 +1,6 @@
"use client";
-import { motion } from "framer-motion";
+import { motion, AnimatePresence } from "framer-motion";
import Image from "next/image";
import { useState } from "react";
import AnimatedSection from "@/components/AnimatedSection";
@@ -135,6 +135,7 @@ const MENU_ITEMS = [
export default function MenuPageContent() {
const [activeTab, setActiveTab] = useState("classics");
+ const [isPopupOpen, setIsPopupOpen] = useState(false);
// Map tab ids → item tag values
const TAB_TAG_MAP: Record