Files
demo-ayristech/components/templates/RestoranTemplate/index.tsx
T
2026-06-06 00:43:39 +03:00

1045 lines
52 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client";
import { motion, AnimatePresence } from "framer-motion";
import { useState, useEffect } from "react";
import type { DemoData } from "@/data/demos";
const fadeUp = {
hidden: { opacity: 0, y: 35 },
show: { opacity: 1, y: 0, transition: { duration: 0.75, ease: [0.25, 0.46, 0.45, 0.94] as [number, number, number, number] } },
};
const stagger = {
hidden: {},
show: { transition: { staggerChildren: 0.08 } },
};
const translations = {
tr: {
navHeritage: "Mirasımız",
navSpecial: "Şefin Seçimi",
navBakery: "Günlük Ekmekler",
navServices: "Ayrıcalıklar",
navBooking: "Rezervasyon",
badge: "SIGNATURE STEAKHOUSE & GASTRONOMY",
heroTitlePart1: "Lezzet",
heroTitlePart2: "Sanatı & Ateşin",
heroTitlePart3: "Mirasımız",
heroDesc: "Ateş, duman ve Palermo zanaatkarlığıyla şekillenen lezzet dolu bir yolculuk. Karaköy limanında, seçkin gurmeler için özenle tasarlanan imza steakhouse koordinatları.",
learnMore: "Heritage Keşfet",
reserveTable: "Rezervasyon Yap",
heritageTitle: "Zanaat Hikayesi",
heritageHeader: "LEZZETİN ANATOMİSİ",
heritageDesc: "Karaköy limanının en eski taş duvarları arasında, Palermo'nun asırlık pişirme tekniklerini modern gastronomi vizyonuyla harmanlıyoruz. Ağır ateşte dinlendirilmiş Wagyu etlerinden, odun fırınında pişen taze ekşi mayalara uzanan bir tutku.",
specialTitle: "Şefin İmzası",
specialHeader: "HAFTALIK SPESİYALLER",
specialDesc: "Taze mevsim otları, el yapımı soslar ve meşe odununda dinlendirilmiş Wagyu lezzetlerini keşfedin.",
bakeryTitle: "Zanaat Fırınımız",
bakeryHeader: "GÜNLÜK EKŞİ MAYALAR",
bakeryDesc: "Her sabah 05:00'te taş fırınımızda maya kokusuyla başlayan hikaye. İtalyan unları, doğal ekşi maya ve 48 saatlik fermantasyon ile elde açılan eşsiz ekmekler.",
servicesTitle: "Ayrıcalıklarımız",
servicesHeader: "MİSAFİRLERİMİZ İÇİN PREMIUM SEÇENEKLER",
reviewsTitle: "Gurme Değerlendirmeleri",
reviewsHeader: "MİSAFİRLERİMİZİN DİLİNDEN HİKAYELER",
bookingTitle: "Masa Rezervasyonu",
bookingHeader: "REZERVASYON YAPIN",
bookingDesc: "Seçkin caz akustiği ve loş kehribar aydınlatmalı salonumuzda masanızı şimdiden ayırtın.",
fieldsName: "Ad Soyad",
fieldsPhone: "Telefon Numarası",
fieldsDate: "Randevu Tarihi",
fieldsTime: "Rezervasyon Saati",
fieldsGuests: "Kişi Sayısı",
fieldsNotes: "Özel İstek / Not",
fieldsNotesPlaceholder: "Diyet hassasiyetleri, VIP uşak talepleri, yıldönümü vb...",
dispatchForm: "REZERVASYON TALEBİNİ GÖNDER",
guarantee: "Bu formu doldurarak doğrulanmış bir rezervasyon sağlarsınız. Masalar, rezervasyon saatinden itibaren 15 dakika boyunca adınıza tutulur.",
footerDesc: "Geleneksel zanaat, ağır ateşte meşe odununda dinlendirilmiş imza Wagyu bonfileleri ve Palermo fırıncılık mirası.",
privacyRegs: "Gizlilik Sözleşmesi",
termsStay: "Kullanım Şartları",
dismiss: "KAPAT",
contactTitle: "Hızlı Rezervasyon",
contactDesc: "Karaköy salon koordinatörümüzün sizi hemen araması için bilgilerinizi bırakın.",
submit: "Gönder",
alacarteTitle: "À la Carte Deneyimi",
alacarteDesc: "Seçkin malzemelerle hazırlanan meşe odununda dinlendirilmiş Wagyu imza yemeklerimizi keşfedin.",
specialEventTitle: "Özel Kutlamalar",
specialEventDesc: "Doğum günü, evlilik yıldönümü ve kutlamalar için kişiselleştirilmiş şef menüleri.",
cateringTitle: "Kurumsal Akustik",
cateringDesc: "İş yemekleri ve kurumsal lansman organizasyonları için premium gurme catering hizmeti.",
deliveryTitle: "Tavola Evinizde",
deliveryDesc: "Özel korumalı kuryelerimizle en taze gurme lezzetleri kapınıza getiriyoruz.",
categoryTitle1: "Başlangıçlar",
categoryTitle2: "Ana Yemekler",
categoryTitle3: "Tatlılar",
// Menus Localized
menuHummus: "Ev Yapımı Hummus",
menuHummusDesc: "Fırından taze lavaş ve soğuk sıkım İtalyan trüf yağı ile.",
menuBruschetta: "Karidesli Bruschetta",
menuBruschettaDesc: "Taze marine domates, fesleğen ve sarımsak emülsiyonu.",
menuBurrata: "Burrata Salatası",
menuBurrataDesc: "Cherry domates, fesleğen sosu ve taze roka yaprakları.",
menuWagyu: "Wagyu Bonfile",
menuWagyuDesc: "Fırınlanmış kuşkonmaz ve trüf mantarlı patates püresi eşliğinde.",
menuLevrek: "Levrek Fileto",
menuLevrekDesc: "Limonlu tereyağı sosu, kapari ve taze bahçe otları.",
menuRisotto: "Mantar Risotto",
menuRisottoDesc: "Yabani orman mantarları ve Parmigiano Reggiano peyniri ile.",
menuBrule: "Crème Brûlée",
menuBruleDesc: "Gerçek Madagaskar vanilyası ve karamelize şeker kıtırı.",
menuFondant: "Çikolatalı Fondant",
menuFondantDesc: "Belçika çikolatası dolgulu sıcak kek, vanilyalı dondurma.",
menuKunefe: "Karaköy Künefesi",
menuKunefeDesc: "Halis tereyağlı çıtır tel kadayıf ve manda kaymağı.",
},
en: {
navHeritage: "Our Heritage",
navSpecial: "Chef's Specials",
navBakery: "Daily Bakery",
navServices: "Leisures",
navBooking: "Reservation",
badge: "SIGNATURE STEAKHOUSE & GASTRONOMY",
heroTitlePart1: "Crafting",
heroTitlePart2: "Flame & Steak",
heroTitlePart3: "Heritage",
heroDesc: "A journey of raw ingredients transformed by fire, smoke, and Palermo craftsmanship. Exquisite coordinates situated at Karaköy docks designed for refined palates.",
learnMore: "Explore Heritage",
reserveTable: "Reserve Table",
heritageTitle: "Heritage Narrative",
heritageHeader: "ANATOMY OF FLAVOR",
heritageDesc: "Surrounded by Karaköy's historical stone walls, we merge Palermo's ancient wood-fired baking roots with modern culinary vision. A passion spanning oak-aged Wagyu steaks and sourdough crusts.",
specialTitle: "Signature Cuts",
specialHeader: "WEEKLY CULINARY SPECS",
specialDesc: "Discover fresh orchard herbs, house-made sauces, and oak-fired Wagyu steak creations.",
bakeryTitle: "Chalkboard Bakery",
bakeryHeader: "DAILY SOURDOUGH BOULES",
bakeryDesc: "Every morning at 05:00 AM, our stone ovens fill with sourdough fragrance. Hand-stretched using premium Italian flour and 48-hour fermentation.",
servicesTitle: "Boutique Leisures",
servicesHeader: "PREMIUM SERVICES FOR REFINED GUESTS",
reviewsTitle: "Gourmet Diaries",
reviewsHeader: "LOVED BY GLOBAL WRITERS",
bookingTitle: "Table Booking",
bookingHeader: "SECURE RESERVATION",
bookingDesc: "Reserve your private velvet booth or live-cooking counter inside our acoustic jazz lounge.",
fieldsName: "Full Name",
fieldsPhone: "Phone Number",
fieldsDate: "Target Date",
fieldsTime: "Reservation Time",
fieldsGuests: "Guest Count",
fieldsNotes: "Bespoke Requests",
fieldsNotesPlaceholder: "Dietary restrictions, VIP butler dispatch, anniversary settings...",
dispatchForm: "SEND RESERVATION REQUEST",
guarantee: "Submitting this form registers a verified priority slot. Tables are held exactly for 15 minutes beyond the scheduled time.",
footerDesc: "Traditional craft, signature oak-aged Wagyu beef cuts, and Palermo baking heritage.",
privacyRegs: "Privacy Policy",
termsStay: "Terms of Service",
dismiss: "DISMISS",
contactTitle: "Quick Reservation",
contactDesc: "Leave your contact details and our salon representative will call you back immediately.",
submit: "Submit",
alacarteTitle: "À la Carte Gastronomy",
alacarteDesc: "Savor our signature oak-aged Wagyu ribeye cuts built with the finest local ingredients.",
specialEventTitle: "Bespoke Gatherings",
specialEventDesc: "Custom tasting menus and sommelier coordination for birthdays and private lounges.",
cateringTitle: "Corporate Acoustics",
cateringDesc: "Professional gourmet catering configurations for corporate launches and executive dinners.",
deliveryTitle: "Tavola at Home",
deliveryDesc: "Delivering hot gourmet culinary setups directly to your address via priority dispatch.",
categoryTitle1: "Appetizers",
categoryTitle2: "Main Courses",
categoryTitle3: "Desserts",
// Menus Localized
menuHummus: "House-Crafted Hummus",
menuHummusDesc: "Served with hot wood-fired flatbread and cold pressed truffle oil mist.",
menuBruschetta: "Shrimp Bruschetta",
menuBruschettaDesc: "Marinated cherry tomatoes, botanical basil, garlic emulsion.",
menuBurrata: "Creamy Burrata",
menuBurrataDesc: "Heirloom tomatoes, organic basil pesto, taze baby wild rocket.",
menuWagyu: "A5 Wagyu Ribeye",
menuWagyuDesc: "Accompanied by fire-charred asparagus and black truffle potato mash.",
menuLevrek: "Sea Bass Filet",
menuLevrekDesc: "Citrus butter reduction, capillary capers, and taze orchard herbs.",
menuRisotto: "Wild Mushroom Risotto",
menuRisottoDesc: "Foraged forest mushrooms, aged Parmigiano Reggiano, micro greens.",
menuBrule: "Crème Brûlée",
menuBruleDesc: "Infused with organic Madagascar vanilla and caramelized sugar crust.",
menuFondant: "Molten Lava Fondant",
menuFondantDesc: "Rich Belgian chocolate cake shell with house vanilla bean gelato.",
menuKunefe: "Traditional Künefe",
menuKunefeDesc: "Crisp shredded pastry loaded with melted unsalted cheese, thick buffalo cream.",
}
};
export default function RestoranTemplate({ data }: { data: DemoData }) {
const { firma, istatistikler = [], hizmetler = [], menu = [], yorumlar = [] } = data;
const [showBookingModal, setShowBookingModal] = useState(false);
const [aktifKategori, setAktifKategori] = useState(0);
const [lang, setLang] = useState<"tr" | "en">("tr");
const [preloader, setPreloader] = useState(true);
const t = translations[lang];
// Lenis Smooth Scroll Integration
useEffect(() => {
let lenis: any;
import("@studio-freight/lenis").then(({ default: Lenis }) => {
lenis = new Lenis({ duration: 1.2, easing: (x: number) => Math.min(1, 1.001 - Math.pow(2, -10 * x)) });
function raf(time: number) { lenis.raf(time); requestAnimationFrame(raf); }
requestAnimationFrame(raf);
});
return () => lenis?.destroy();
}, []);
// Preloader Curtain Timer
useEffect(() => {
const timer = setTimeout(() => {
setPreloader(false);
}, 1500);
return () => clearTimeout(timer);
}, []);
// Localized stats label mappings
const getLocalizedStatLabel = (deger: string) => {
if (deger.includes("Heritage")) return lang === "tr" ? "Yıllık Köklü Miras" : "Years of Heritage";
if (deger.includes("Dishes")) return lang === "tr" ? "İmza Tabaklar" : "Signature Dishes";
if (deger.includes("Rating")) return lang === "tr" ? "Ortalama Değerlendirme" : "Average Guest Rating";
return lang === "tr" ? "Aylık Gurme Misafir" : "Monthly Diners";
};
// Localized services text mappings
const getLocalizedServiceText = (baslik: string) => {
if (baslik.includes("Carte")) return { title: t.alacarteTitle, desc: t.alacarteDesc };
if (baslik.includes("Günler")) return { title: t.specialEventTitle, desc: t.specialEventDesc };
if (baslik.includes("Kurumsal")) return { title: t.cateringTitle, desc: t.cateringDesc };
return { title: t.deliveryTitle, desc: t.deliveryDesc };
};
// Custom vector icons for services (No generic emojis)
const getServiceIconSvg = (ikon: string) => {
switch (ikon) {
case "alacarte":
return (
<svg className="w-6 h-6 stroke-[#C5A880] fill-none" viewBox="0 0 24 24" strokeWidth="1.5">
<path strokeLinecap="round" strokeLinejoin="round" d="M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25" />
</svg>
);
case "special":
return (
<svg className="w-6 h-6 stroke-[#C5A880] fill-none" viewBox="0 0 24 24" strokeWidth="1.5">
<path strokeLinecap="round" strokeLinejoin="round" d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z" />
</svg>
);
case "catering":
return (
<svg className="w-6 h-6 stroke-[#C5A880] fill-none" viewBox="0 0 24 24" strokeWidth="1.5">
<path strokeLinecap="round" strokeLinejoin="round" d="M15.75 10.5V6a3.75 3.75 0 1 0-7.5 0v4.5m11.356-1.993 1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 0 1-1.12-1.243l1.264-12A1.125 1.125 0 0 1 5.513 7.5h12.974c.576 0 1.059.435 1.119 1.007ZM8.625 10.5a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm7.5 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z" />
</svg>
);
default:
return (
<svg className="w-6 h-6 stroke-[#C5A880] fill-none" viewBox="0 0 24 24" strokeWidth="1.5">
<path strokeLinecap="round" strokeLinejoin="round" d="M8.25 18.75a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0ZM19.5 18.75a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z" />
<path strokeLinecap="round" strokeLinejoin="round" d="M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 0 0-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 0 0-16.536-1.84M7.5 14.25 5.106 5.272M6 20.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm12.75 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z" />
</svg>
);
}
};
// Localized menu items
const getLocalizedMenuItemText = (ad: string) => {
if (ad.includes("Hummus")) return { title: t.menuHummus, desc: t.menuHummusDesc };
if (ad.includes("Bruschetta")) return { title: t.menuBruschetta, desc: t.menuBruschettaDesc };
if (ad.includes("Burrata")) return { title: t.menuBurrata, desc: t.menuBurrataDesc };
if (ad.includes("Wagyu")) return { title: t.menuWagyu, desc: t.menuWagyuDesc };
if (ad.includes("Levrek")) return { title: t.menuLevrek, desc: t.menuLevrekDesc };
if (ad.includes("Risotto")) return { title: t.menuRisotto, desc: t.menuRisottoDesc };
if (ad.includes("Brûlée")) return { title: t.menuBrule, desc: t.menuBruleDesc };
if (ad.includes("Fondant")) return { title: t.menuFondant, desc: t.menuFondantDesc };
return { title: t.menuKunefe, desc: t.menuKunefeDesc };
};
const getLocalizedCategoryTitle = (kategori: string) => {
if (kategori.includes("Başlangıç")) return t.categoryTitle1;
if (kategori.includes("Ana")) return t.categoryTitle2;
return t.categoryTitle3;
};
const css = `
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Inter:wght@300;400;500;600;700;800&display=swap');
:root {
--color-restaurant-gold: #C5A880;
--color-restaurant-charcoal: #090A0C;
--color-restaurant-slate: #13151A;
}
.font-serif-editorial {
font-family: 'Playfair Display', Georgia, serif;
}
.font-sans-clean {
font-family: 'Inter', sans-serif;
}
.shadow-premium {
box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.4);
}
.grain-overlay {
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.025'/%3E%3C/svg%3E");
}
.marquee-text-flow {
white-space: nowrap;
animation: marquee 25s linear infinite;
}
@keyframes marquee {
0% { transform: translateX(0%); }
100% { transform: translateX(-50%); }
}
.hero-title-clamp {
font-size: clamp(38px, 6vw, 90px);
letter-spacing: -0.01em;
line-height: 0.95;
}
`;
return (
<>
<style>{css}</style>
{/* ── IMZA AN: CURTAIN REVEAL PRELOADER ── */}
<AnimatePresence>
{preloader && (
<motion.div
className="fixed inset-0 z-50 bg-[#090A0C] flex flex-col items-center justify-center p-6"
exit={{
clipPath: "polygon(0 0, 100% 0, 100% 0, 0 0)",
transition: { duration: 0.85, ease: [0.16, 1, 0.3, 1] }
}}
>
<div className="max-w-md text-center space-y-6">
<motion.span
className="text-[9px] font-sans-clean font-black tracking-[4px] uppercase text-[#C5A880] block"
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.5 }}
>
LEZZET MUTFAĞI
</motion.span>
<div className="h-[1px] w-48 bg-white/10 mx-auto relative overflow-hidden">
<motion.div
className="absolute inset-y-0 left-0 bg-[#C5A880]"
initial={{ width: "0%" }}
animate={{ width: "100%" }}
transition={{ duration: 1.2, ease: "easeInOut" }}
/>
</div>
<motion.h2
className="font-serif-editorial text-white/50 text-xs italic tracking-wider"
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
transition={{ delay: 0.4, duration: 0.5 }}
>
interactive prototype
</motion.h2>
</div>
</motion.div>
)}
</AnimatePresence>
<div className="bg-[#090A0C] text-white min-h-screen font-sans-clean selection:bg-[#C5A880] selection:text-black overflow-hidden relative pb-20">
{/* Grain texture */}
<div className="absolute inset-0 grain-overlay pointer-events-none z-0" />
{/* Ambient glow blobs */}
<div className="absolute top-[15%] right-[-15%] w-[600px] h-[600px] bg-[#C5A880]/3 blur-[120px] rounded-full pointer-events-none z-0" />
<div className="absolute bottom-[20%] left-[-15%] w-[600px] h-[600px] bg-white/2 blur-[130px] rounded-full pointer-events-none z-0" />
{/* ── FLOATING CONCEPT BANNER ── */}
<div className="fixed bottom-4 left-4 z-40 bg-[#090A0C]/90 backdrop-blur-md border border-white/10 px-4 py-2.5 rounded-xl shadow-2xl flex items-center gap-2.5 max-w-sm pointer-events-none select-none">
<div className="w-1.5 h-1.5 rounded-full bg-[#C5A880] animate-pulse" />
<span className="text-[9px] font-sans-clean font-black uppercase tracking-[1.5px] text-white/90">
{lang === "tr" ? "Bu web sitesi Ayris Tech tarafından hazırlanmış bir konsept çalışmasıdır." : "This website is a premium concept prototype designed by Ayris Tech."}
</span>
</div>
{/* ── FLOATING NAVBAR ── */}
<motion.header
className="fixed top-4 left-4 right-4 z-50 px-4"
initial={{ y: -80, opacity: 0 }}
animate={{ y: 0, opacity: 1 }}
transition={{ duration: 0.85, ease: [0.16, 1, 0.3, 1] }}
>
<div className="mx-auto max-w-7xl h-20 flex items-center justify-between px-8 bg-[#090A0C]/80 backdrop-blur-xl border border-white/5 rounded-2xl shadow-2xl">
{/* Logo */}
<a href="#" className="flex items-center gap-2.5 group">
<span className="text-xl font-bold tracking-[2px] text-white group-hover:text-[#C5A880] transition-colors font-serif-editorial uppercase">
{firma.adi}
</span>
</a>
{/* Links */}
<nav className="hidden lg:flex items-center gap-8">
{[
{ label: t.navHeritage, href: "#heritage" },
{ label: t.navSpecial, href: "#special" },
{ label: t.navBakery, href: "#bakery" },
{ label: t.navServices, href: "#services" }
].map(item => (
<a
key={item.label}
href={item.href}
className="text-[10px] font-black tracking-[2px] uppercase text-white/60 hover:text-[#C5A880] transition-colors relative py-1 cursor-pointer group"
>
{item.label}
<span className="absolute bottom-0 left-0 w-0 h-0.5 bg-[#C5A880] transition-all group-hover:w-full" />
</a>
))}
</nav>
{/* Language Selector + Reserve Button */}
<div className="flex items-center gap-4">
{/* Language Switcher */}
<div className="flex items-center gap-1 bg-white/5 border border-white/10 rounded-xl p-1 shrink-0">
<button
onClick={() => setLang("tr")}
className={`text-[9px] font-sans-clean font-black px-2 py-1.5 rounded-lg transition-all cursor-pointer ${
lang === "tr" ? "bg-white text-slate-900 shadow-sm" : "text-white/60 hover:text-white"
}`}
>
TR
</button>
<button
onClick={() => setLang("en")}
className={`text-[9px] font-sans-clean font-black px-2 py-1.5 rounded-lg transition-all cursor-pointer ${
lang === "en" ? "bg-white text-slate-900 shadow-sm" : "text-white/60 hover:text-white"
}`}
>
EN
</button>
</div>
<motion.button
onClick={() => setShowBookingModal(true)}
className="text-[10px] font-sans-clean font-black tracking-[2.5px] uppercase text-black bg-[#C5A880] hover:bg-[#d5b990] px-6 py-3.5 rounded-xl transition-all cursor-pointer shadow-[0_4px_12px_rgba(197,168,128,0.15)] hidden sm:block"
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
>
{t.reserveTable}
</motion.button>
</div>
</div>
</motion.header>
{/* ── HERO SECTION WITH EDITORIAL BACKGROUND zoom ── */}
<section className="relative min-h-screen flex items-center justify-center px-6">
<div className="absolute inset-0 z-0 overflow-hidden pointer-events-none">
<div className="absolute inset-0 bg-[#090A0C]/75 z-10" />
<motion.img
src="/restaurant_hero_steak.png"
alt="Ribeye Steak cooking"
className="w-full h-full object-cover object-center scale-102"
initial={{ scale: 1.02 }}
animate={{ scale: 1.06 }}
transition={{ duration: 15, repeat: Infinity, repeatType: "reverse", ease: "easeInOut" }}
/>
</div>
<div className="max-w-5xl mx-auto w-full z-10 text-center">
<motion.div
variants={stagger}
initial="hidden"
animate="show"
className="flex flex-col items-center"
>
<motion.div
variants={fadeUp}
className="inline-flex items-center gap-2 text-[10px] font-black uppercase tracking-widest text-[#C5A880] mb-6 bg-[#C5A880]/10 border border-[#C5A880]/15 px-4 py-2 rounded-full"
>
<span className="w-1.5 h-1.5 rounded-full bg-[#C5A880] animate-pulse" />
{t.badge}
</motion.div>
<motion.h1
variants={fadeUp}
className="font-serif-editorial font-bold text-white mb-8 uppercase hero-title-clamp"
>
{t.heroTitlePart1}
<br />
<span className="italic font-light text-[#C5A880] lowercase">{t.heroTitlePart2}</span>
<br />
{t.heroTitlePart3}
</motion.h1>
<motion.p
variants={fadeUp}
className="text-[#8E929A] font-sans-clean font-semibold text-xs lg:text-sm leading-relaxed max-w-lg mb-12"
>
{t.heroDesc}
</motion.p>
<motion.div variants={fadeUp} className="flex gap-4">
<button
onClick={() => setShowBookingModal(true)}
className="px-8 py-4.5 rounded-xl bg-[#C5A880] hover:bg-[#d5b990] text-[#090A0C] font-black text-[10px] tracking-[2px] uppercase transition-all shadow-[0_5px_15px_rgba(197,168,128,0.2)] cursor-pointer"
>
{t.reserveTable}
</button>
<a
href="#heritage"
className="px-8 py-4.5 rounded-xl border border-white/10 bg-white/5 hover:bg-white/10 text-white font-black text-[10px] tracking-[2px] uppercase transition-all cursor-pointer flex items-center justify-center"
>
{t.learnMore}
</a>
</motion.div>
</motion.div>
</div>
</section>
{/* ── IMZA AN: INFINITE MARQUEE BAND ── */}
<div className="w-full bg-[#13151A] border-y border-[#C5A880]/20 py-5 overflow-hidden z-10 relative">
<div className="flex marquee-text-flow uppercase font-serif-editorial text-xs tracking-[4px] text-[#C5A880] font-bold">
<span className="px-4">{lang === "tr" ? "Lezzet Mutfağı Karaköy" : "Karaköy Culinary Heritage"} ·</span>
<span className="px-4">{lang === "tr" ? "İmza Steakhouse ve Gastronomi" : "Signature Wagyu Steak cuts"} ·</span>
<span className="px-4">{lang === "tr" ? "Geleneksel Pişirme Teknikleri" : "Wood-Fired Fermented Sourdough"} ·</span>
<span className="px-4">{lang === "tr" ? "Palermo Zanaat Kültürü" : "Palermo Baking Roots"} ·</span>
<span className="px-4">{lang === "tr" ? "Lezzet Mutfağı Karaköy" : "Karaköy Culinary Heritage"} ·</span>
<span className="px-4">{lang === "tr" ? "İmza Steakhouse ve Gastronomi" : "Signature Wagyu Steak cuts"} ·</span>
<span className="px-4">{lang === "tr" ? "Geleneksel Pişirme Teknikleri" : "Wood-Fired Fermented Sourdough"} ·</span>
<span className="px-4">{lang === "tr" ? "Palermo Zanaat Kültürü" : "Palermo Baking Roots"} ·</span>
</div>
</div>
{/* ── SECTION 2: HERITAGE / ABOUT US (3 COLUMN SPLIT) ── */}
<section id="heritage" className="py-32 bg-[#090A0C] relative z-10 px-6">
<div className="max-w-7xl mx-auto">
<div className="grid lg:grid-cols-12 gap-16 items-center">
{/* Left text column */}
<motion.div
className="lg:col-span-6"
initial="hidden"
whileInView="show"
viewport={{ once: true }}
variants={stagger}
>
<motion.span
variants={fadeUp}
className="inline-block text-[10px] font-black uppercase tracking-widest text-[#C5A880] mb-4"
>
{t.heritageTitle}
</motion.span>
<motion.h2
variants={fadeUp}
className="font-serif-editorial text-4xl lg:text-5xl font-black tracking-widest text-white mb-6 uppercase"
>
{t.heritageHeader}
</motion.h2>
<motion.p
variants={fadeUp}
className="text-white/60 font-sans-clean text-xs lg:text-sm leading-relaxed font-semibold mb-10"
>
{t.heritageDesc}
</motion.p>
{/* Stat pile inside heritage */}
<motion.div
variants={fadeUp}
className="grid grid-cols-2 gap-6 mb-8 font-semibold"
>
{istatistikler.map((stat, sIdx) => (
<div key={sIdx} className="border-l border-[#C5A880]/30 pl-4 py-1">
<h4 className="font-serif-editorial font-bold text-white text-lg leading-none mb-1">{stat.deger}</h4>
<p className="text-white/40 text-[10px] uppercase tracking-wider">{getLocalizedStatLabel(stat.etiket)}</p>
</div>
))}
</motion.div>
</motion.div>
{/* Right layered imagery column */}
<div className="lg:col-span-6 relative flex justify-center lg:justify-end">
<motion.div
className="relative w-full max-w-md lg:max-w-lg h-[460px] lg:h-[530px] rounded-3xl overflow-hidden shadow-2xl border border-white/5 group"
initial={{ opacity: 0, scale: 0.95 }}
whileInView={{ opacity: 1, scale: 1 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
>
<div className="absolute inset-0 bg-black/10 z-10" />
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src="/chef_plating_smoke.png"
alt="Chef Plating Wagyu Ribeye"
className="w-full h-full object-cover scale-102 group-hover:scale-105 transition-transform duration-1000"
/>
</motion.div>
</div>
</div>
</div>
</section>
{/* ── SECTION 3: ŞEFİN SEÇİMİ (DOTTED MENU GRID) ── */}
<section id="special" className="py-32 bg-[#13151A] border-t border-[#C5A880]/15 relative z-10 px-6">
<div className="max-w-7xl mx-auto">
<div className="grid lg:grid-cols-12 gap-16 items-center">
{/* Left Col: Gourmet active sauté shot */}
<div className="lg:col-span-6 relative flex justify-center lg:justify-start">
<motion.div
className="relative w-full max-w-md lg:max-w-lg h-[460px] lg:h-[530px] rounded-3xl overflow-hidden shadow-2xl border border-[#C5A880]/20 group"
initial={{ opacity: 0, x: -30 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
>
<div className="absolute inset-0 bg-gradient-to-t from-black/70 via-transparent to-transparent z-10 pointer-events-none" />
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src="/gourmet_pasta_flame.png"
alt="Flaming Gourmet sauté preparation"
className="w-full h-full object-cover scale-102 group-hover:scale-105 transition-transform duration-1000"
/>
{/* Small tag inside photo */}
<div className="absolute bottom-6 left-6 right-6 z-20 bg-[#090A0C]/90 backdrop-blur-md p-5 rounded-2xl border border-white/5 flex justify-between items-center">
<div>
<h4 className="font-serif-editorial text-[#C5A880] text-xs font-bold uppercase tracking-wider mb-1">Flaming sauté</h4>
<p className="text-white/60 text-[9px] font-sans-clean font-bold tracking-widest uppercase">Live from karaköy kitchen</p>
</div>
<span className="w-9 h-9 rounded-full bg-[#C5A880]/10 border border-[#C5A880]/30 flex items-center justify-center text-white shrink-0 select-none">🔥</span>
</div>
</motion.div>
</div>
{/* Right Col: The Dotted Menu List */}
<motion.div
className="lg:col-span-6"
initial="hidden"
whileInView="show"
viewport={{ once: true }}
variants={stagger}
>
<motion.span
variants={fadeUp}
className="inline-block text-[10px] font-black uppercase tracking-widest text-[#C5A880] mb-4"
>
{t.specialTitle}
</motion.span>
<motion.h2
variants={fadeUp}
className="font-serif-editorial text-4xl lg:text-5xl font-black tracking-widest text-white mb-6 uppercase"
>
{t.specialHeader}
</motion.h2>
<motion.p
variants={fadeUp}
className="text-white/60 font-sans-clean text-xs leading-relaxed font-semibold mb-12 max-w-md"
>
{t.specialDesc}
</motion.p>
{/* Dotted lines menu item lists */}
<div className="space-y-6">
{menu[aktifKategori]?.urunler.map((item) => {
const text = getLocalizedMenuItemText(item.ad);
return (
<motion.div
key={item.ad}
variants={fadeUp}
className="flex flex-col group cursor-default"
>
<div className="flex items-end justify-between gap-4">
<span className="font-serif-editorial text-sm lg:text-base font-bold text-white group-hover:text-[#C5A880] transition-colors uppercase">
{text.title}
</span>
<div className="grow border-b border-dashed border-white/10 group-hover:border-[#C5A880]/30 transition-colors mx-2 mb-1.5" />
<span className="font-serif-editorial text-sm font-black text-[#C5A880] shrink-0 font-bold">
{item.fiyat}
</span>
</div>
<p className="text-white/50 text-[10px] mt-1 font-semibold leading-relaxed max-w-md">
{text.desc}
</p>
</motion.div>
);
})}
</div>
{/* Menu categories tabs */}
<motion.div
variants={fadeUp}
className="flex items-center gap-4 mt-12 flex-wrap"
>
{menu.map((kat, idx) => (
<button
key={idx}
onClick={() => setAktifKategori(idx)}
className="text-[9px] font-sans-clean font-black tracking-[2px] uppercase px-5 py-3 rounded-lg border transition-all cursor-pointer"
style={aktifKategori === idx
? { backgroundColor: "#C5A880", color: "#090A0C", borderColor: "#C5A880" }
: { backgroundColor: "transparent", color: "rgba(255,255,255,0.4)", borderColor: "rgba(255,255,255,0.1)" }
}
>
{getLocalizedCategoryTitle(kat.kategori)}
</button>
))}
</motion.div>
</motion.div>
</div>
</div>
</section>
{/* ── SECTION 4: CHALKBOARD BAKERY ── */}
<section id="bakery" className="py-32 bg-[#090A0C] border-t border-[#C5A880]/15 relative z-10 px-6">
<div className="max-w-7xl mx-auto">
<div className="grid lg:grid-cols-12 gap-16 items-center">
{/* Left Side: Sourdough Details */}
<motion.div
className="lg:col-span-6"
initial="hidden"
whileInView="show"
viewport={{ once: true }}
variants={stagger}
>
<motion.span
variants={fadeUp}
className="inline-block text-[10px] font-black uppercase tracking-widest text-[#C5A880] mb-4"
>
{t.bakeryTitle}
</motion.span>
<motion.h2
variants={fadeUp}
className="font-serif-editorial text-4xl lg:text-5xl font-black tracking-widest text-white mb-6 uppercase"
>
{t.bakeryHeader}
</motion.h2>
<motion.p
variants={fadeUp}
className="text-white/60 font-sans-clean text-xs lg:text-sm leading-relaxed font-semibold mb-10 max-w-md"
>
{t.bakeryDesc}
</motion.p>
{/* Sourdough Boule metrics */}
<div className="space-y-4 font-semibold">
{[
{ title: lang === "tr" ? "Geleneksel İtalyan Ciabatta" : "Traditional Italian Ciabatta", desc: "1250g | 45 min | 230°C", body: lang === "tr" ? "Altın çıtır kabuklu, bol gözenekli Palermo klasiği." : "Gold crispy crust, high hydration classic boules." },
{ title: lang === "tr" ? "Çavdar Sourdough Boule" : "Rye Sourdough Boule", desc: "750g | 38 min | 240°C", body: lang === "tr" ? "Aktif karbon, çavdar ve özel ekşi maya ile pişirilmiş tahıllı ekmek." : "Baked with active charcoal, organic rye, and local sourdough." }
].map((bread, bIdx) => (
<motion.div
key={bIdx}
variants={fadeUp}
className="p-5 bg-white/5 border border-white/5 rounded-2xl hover:border-[#C5A880]/20 transition-all duration-300"
>
<div className="flex justify-between items-start flex-wrap gap-2">
<h4 className="font-serif-editorial text-[#C5A880] text-sm font-bold uppercase tracking-wider">{bread.title}</h4>
<span className="font-sans-clean text-[9px] text-white/40 uppercase tracking-widest font-black">{bread.desc}</span>
</div>
<p className="text-white/50 text-[10px] leading-relaxed mt-2">{bread.body}</p>
</motion.div>
))}
</div>
</motion.div>
{/* Right Side: Flatlay image */}
<div className="lg:col-span-6 relative flex justify-center lg:justify-end">
<motion.div
className="relative w-full max-w-md lg:max-w-lg h-[460px] lg:h-[530px] rounded-3xl overflow-hidden shadow-2xl border border-white/5 group"
initial={{ opacity: 0, scale: 0.95 }}
whileInView={{ opacity: 1, scale: 1 }}
viewport={{ once: true }}
transition={{ duration: 0.8 }}
>
<div className="absolute inset-0 bg-black/10 z-10" />
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src="/bakery_heritage.png"
alt="Sourdough flatlay chalkboard"
className="w-full h-full object-cover scale-102 group-hover:scale-105 transition-transform duration-1000"
/>
</motion.div>
</div>
</div>
</div>
</section>
{/* ── SECTION 5: SERVICES (SVG ICONS - NO EMOJIS) ── */}
<section id="services" className="py-32 bg-[#13151A] border-t border-[#C5A880]/15 relative z-10 px-6">
<div className="max-w-7xl mx-auto">
<div className="text-center mb-20">
<span className="text-[#C5A880] font-serif-editorial italic text-base tracking-wider block mb-3">{t.servicesTitle}</span>
<h2 className="font-serif-editorial text-3xl lg:text-4xl font-black tracking-widest text-white uppercase">
{t.servicesHeader}
</h2>
</div>
<div className="grid md:grid-cols-4 gap-6">
{hizmetler.map((h, i) => {
const s = getLocalizedServiceText(h.baslik);
return (
<motion.div
key={i}
className="bg-[#090A0C] rounded-2xl p-8 border border-white/5 hover:border-[#C5A880]/30 hover:bg-[#090A0C]/80 transition-all duration-300 flex flex-col items-center text-center group cursor-default"
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: i * 0.1 }}
whileHover={{ y: -4 }}
>
<div className="w-14 h-14 rounded-2xl bg-white/5 border border-white/10 flex items-center justify-center mb-6 transition-all group-hover:bg-[#C5A880]/10 group-hover:border-[#C5A880]/30">
{getServiceIconSvg(h.ikon)}
</div>
<h3 className="font-serif-editorial font-bold text-white text-sm mb-3 uppercase tracking-wider leading-snug">
{s.title}
</h3>
<p className="text-[#8E929A] font-sans-clean text-[10px] leading-relaxed font-semibold">
{s.desc}
</p>
</motion.div>
);
})}
</div>
</div>
</section>
{/* ── SECTION 6: TESTIMONIALS (YORUMLAR) ── */}
<section id="yorumlar" className="py-32 bg-[#090A0C] border-t border-[#C5A880]/15 px-6 relative z-10">
<div className="max-w-7xl mx-auto">
<div className="text-center mb-20">
<span className="text-[#C5A880] font-serif-editorial italic text-base tracking-wider block mb-3">{t.reviewsTitle}</span>
<h2 className="font-serif-editorial text-3xl lg:text-4xl font-black tracking-widest text-white uppercase">
{t.reviewsHeader}
</h2>
</div>
<div className="grid md:grid-cols-3 gap-6">
{yorumlar.map((y, i) => (
<motion.div
key={i}
className="bg-[#13151A] border border-[#C5A880]/10 rounded-2xl p-8 flex flex-col justify-between"
initial={{ opacity: 0, y: 30 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: i * 0.1 }}
whileHover={{ y: -4, borderColor: "rgba(197,168,128,0.3)" }}
>
<div className="flex gap-1 mb-6">
{[...Array(y.puan || 5)].map((_, j) => (
<svg key={j} className="w-4 h-4 fill-[#C5A880]" viewBox="0 0 24 24">
<path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" />
</svg>
))}
</div>
<p className="text-white/80 font-sans-clean text-xs leading-relaxed italic mb-8 font-semibold">
&ldquo;{y.yorum}&rdquo;
</p>
<div className="flex items-center gap-3 font-semibold">
<div className="w-10 h-10 rounded-full border border-[#C5A880]/30 flex items-center justify-center text-lg bg-[#090A0C] shrink-0 select-none">
{y.emoji}
</div>
<div>
<h4 className="font-serif-editorial text-[#C5A880] text-xs font-bold uppercase tracking-wider">
{y.yazar.split("—")[0]}
</h4>
<span className="font-sans-clean text-[9px] text-white/40 uppercase tracking-widest font-black">
{y.tarih}
</span>
</div>
</div>
</motion.div>
))}
</div>
</div>
</section>
{/* ── SECTION 7: RANDEVU AL / RESERVATION ── */}
<section id="randevu" className="py-32 bg-[#13151A] border-t border-[#C5A880]/15 relative z-10 px-6">
<div className="max-w-3xl mx-auto">
<div className="bg-[#090A0C] rounded-3xl p-8 md:p-12 shadow-2xl border border-[#C5A880]/20">
<div className="text-center mb-10">
<span className="text-[#C5A880] font-serif-editorial italic text-base tracking-wider block mb-3">{t.bookingTitle}</span>
<h2 className="font-serif-editorial text-3xl md:text-4xl font-black tracking-widest text-white uppercase">
{t.bookingHeader}
</h2>
<p className="text-[#8E929A] font-sans-clean text-xs mt-2 leading-relaxed font-semibold">
{t.bookingDesc}
</p>
</div>
<div className="grid grid-cols-2 gap-4 font-semibold text-[#C5A880]">
{[
{ label: t.fieldsName, placeholder: lang === "tr" ? "Adınız Soyadınız" : "Your Full Name", type: "text", full: false },
{ label: t.fieldsPhone, placeholder: "05xx xxx xx xx", type: "tel", full: false },
{ label: t.fieldsDate, placeholder: "", type: "date", full: false },
{ label: t.fieldsTime, placeholder: "", type: "time", full: false },
{ label: t.fieldsGuests, placeholder: "2", type: "number", full: false },
{ label: t.fieldsNotes, placeholder: t.fieldsNotesPlaceholder, type: "text", full: true },
].map((field, i) => (
<div key={i} className={field.full ? "col-span-2" : "col-span-2 sm:col-span-1"}>
<label className="block text-[9px] font-sans-clean font-black uppercase tracking-widest mb-1.5">{field.label}</label>
<input
type={field.type}
placeholder={field.placeholder}
className="w-full px-4 py-3.5 rounded-xl border border-white/10 bg-[#13151A] text-xs text-white focus:outline-none focus:ring-1 focus:ring-[#C5A880] placeholder-white/20 transition-all font-sans-clean font-semibold cursor-pointer"
/>
</div>
))}
</div>
<div className="mt-8 pt-4 flex flex-col md:flex-row justify-between items-center gap-4 border-t border-white/5">
<p className="text-white/40 text-[10px] leading-relaxed font-semibold max-w-sm text-center md:text-left">
{t.guarantee}
</p>
<motion.button
onClick={() => setShowBookingModal(true)}
className="w-full md:w-auto px-10 py-4.5 rounded-xl text-[#090A0C] font-sans-clean font-black tracking-[2px] uppercase bg-[#C5A880] hover:bg-[#d5b990] transition-colors cursor-pointer text-xs shrink-0 shadow-[0_5px_15px_rgba(197,168,128,0.15)]"
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
>
{t.dispatchForm}
</motion.button>
</div>
</div>
</div>
</section>
{/* ── FOOTER ── */}
<footer className="bg-[#090A0C] border-t border-white/5 px-6 pt-24 pb-8 relative z-10">
<div className="max-w-7xl mx-auto font-semibold">
<div className="grid md:grid-cols-4 gap-12 pb-16 border-b border-white/5">
<div className="md:col-span-2">
<span className="font-serif-editorial text-2xl font-black text-[#C5A880] tracking-widest uppercase mb-4 block">
{firma.adi}
</span>
<p className="text-[#8E929A] font-sans-clean text-xs leading-relaxed max-w-sm mb-8">
{firma.slogan} {t.footerDesc}
</p>
<div className="text-white/60 font-sans-clean text-xs space-y-3">
<p className="flex items-center gap-2">📍 <span className="text-white/80">{firma.adres}</span></p>
<p className="flex items-center gap-2">📞 <span className="text-white/80">{firma.telefon}</span></p>
</div>
</div>
<div>
<h4 className="font-serif-editorial text-white text-xs font-bold uppercase tracking-wider mb-6">
{lang === "tr" ? "Şefin Menüsü" : "Tasting Menu"}
</h4>
{menu.map((kat, idx) => (
<a
key={idx}
href="#special"
className="block text-[#8E929A] hover:text-[#C5A880] text-xs mb-3 transition-colors font-sans-clean uppercase tracking-wider"
>
{getLocalizedCategoryTitle(kat.kategori)}
</a>
))}
</div>
<div>
<h4 className="font-serif-editorial text-white text-xs font-bold uppercase tracking-wider mb-6">
{lang === "tr" ? "Karaköy Restoran" : "Karakoy Steakhouse"}
</h4>
{[t.navHeritage, t.navSpecial, t.navBakery, t.navServices].map(item => (
<a
key={item}
href="#"
className="block text-[#8E929A] hover:text-[#C5A880] text-xs mb-3 transition-colors font-sans-clean uppercase tracking-wider"
>
{item}
</a>
))}
</div>
</div>
<div className="flex flex-col md:flex-row justify-between items-center pt-8 gap-4 font-sans-clean text-white/30 text-xs">
<p>© 2026 {firma.adi}. All rights reserved.</p>
<div className="flex gap-4">
<a href="#" className="hover:text-white transition-colors">{t.privacyRegs}</a>
<span>·</span>
<a href="#" className="hover:text-white transition-colors">{t.termsStay}</a>
</div>
</div>
</div>
</footer>
{/* ── FAST BOOKING OVERLAY MODAL ── */}
<AnimatePresence>
{showBookingModal && (
<motion.div
className="fixed inset-0 z-50 flex items-center justify-center p-6 bg-black/80 backdrop-blur-sm"
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
>
<motion.div
className="bg-[#13151A] rounded-3xl p-8 max-w-md w-full relative shadow-2xl border border-[#C5A880]/30"
initial={{ scale: 0.95, y: 20 }}
animate={{ scale: 1, y: 0 }}
exit={{ scale: 0.95, y: 20 }}
>
<button
className="absolute top-6 right-6 w-8 h-8 rounded-full bg-white/5 flex items-center justify-center text-white/60 hover:text-white transition-colors cursor-pointer"
onClick={() => setShowBookingModal(false)}
>
</button>
<h3 className="font-serif-editorial font-black text-white text-2xl mb-1 uppercase tracking-wider leading-none">
{t.contactTitle}
</h3>
<p className="text-[#8E929A] font-sans-clean text-[10px] mb-6 uppercase tracking-widest font-black">
{lang === "tr" ? "Karaköy Rezervasyon Hattı" : "Karakoy Booking Desk"}
</p>
<div className="space-y-4 font-semibold text-[#C5A880]">
<div>
<label className="block text-[9px] font-sans-clean font-black uppercase tracking-wider mb-1.5">{t.fieldsName}</label>
<input type="text" className="w-full px-4 py-3.5 rounded-xl border border-white/10 bg-[#090A0C] text-xs text-white focus:outline-none focus:ring-1 focus:ring-[#C5A880]" placeholder="John Doe" />
</div>
<div>
<label className="block text-[9px] font-sans-clean font-black uppercase tracking-wider mb-1.5">{t.fieldsPhone}</label>
<input type="tel" className="w-full px-4 py-3.5 rounded-xl border border-white/10 bg-[#090A0C] text-xs text-white focus:outline-none focus:ring-1 focus:ring-[#C5A880]" placeholder="05xx xxx xx xx" />
</div>
<motion.button
className="w-full py-4 rounded-xl bg-[#C5A880] text-[#090A0C] font-sans-clean font-black text-xs uppercase tracking-widest mt-4 cursor-pointer shadow-[0_4px_12px_rgba(197,168,128,0.15)]"
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
onClick={() => setShowBookingModal(false)}
>
{t.submit}
</motion.button>
</div>
</motion.div>
</motion.div>
)}
</AnimatePresence>
</div>
</>
);
}