Unzip it, open index.html in your browser. Everything you change is in config.js.
B. Let your AI tool build it, exactly the same
This prompt describes every section, every word, every colour and every behaviour of this template. Paste it into an AI coding tool and it builds the same website.
About 3603 words
You are a senior front-end engineer. Recreate the website "Aurelle Events" EXACTLY, so that it looks and behaves the same as the original. Use only what is written below. Do not invent sections, colours, words or features, and do not leave anything out.
## Rules
1. Plain HTML, CSS and vanilla JavaScript. No framework, no build step, no CDN, no web fonts, no analytics, no outside requests of any kind. The site must work by opening index.html from the folder.
2. Create exactly these files: index.html, styles.css, app.js, config.js.
3. Every visible word comes from config.js (window.SITE_CONFIG). Nothing is hard-coded in the page except structure. Each text has an English and an Arabic version: { en, ar }.
4. English and Arabic with real right-to-left layout. One button switches the language without reloading: set the lang and dir attributes on <html>, re-draw all texts, and remember the choice in localStorage (inside try/catch). Use logical CSS properties (margin-inline-start, padding-inline-end, inset-inline-start, text-align:start) so Arabic mirrors correctly. No letter-spacing and no uppercase on Arabic. Arabic line height about 1.9.
5. Phone first at 390 px wide, then wide screens up to 1440 px. No sideways scrolling at any width. Every button and field is at least 44 px high. Visible keyboard focus. Text contrast at least 4.5:1. Respect prefers-reduced-motion (no animation when set). Images have alt text; decorative pictures are hidden from screen readers.
6. Pictures: every picture is a framed inline-SVG drawing made by code (flat shapes in the palette colours) until the owner sets a real photo path in config.js. A photo, when given, fills its frame like object-fit: cover.
7. Page weight under 150 KB in total.
## Design tokens (put these in styles.css :root exactly; the colours are overwritten from config.js at start-up)
```css
:root{
--ink:#0e0a10; --surface:#18111b; --wine:#3b1626; --gold:#c9a45c; --ivory:#f3ead8;
--muted:color-mix(in srgb,var(--ivory) 76%,var(--ink));
--line:color-mix(in srgb,var(--gold) 32%,transparent);
--line-soft:color-mix(in srgb,var(--ivory) 12%,transparent);
--display:"Didot","Bodoni 72","Bodoni MT","Iowan Old Style","Palatino Linotype",Georgia,serif;
--body:system-ui,-apple-system,"Segoe UI","Helvetica Neue",Arial,sans-serif;
--gutter:clamp(1.25rem,5vw,3rem);
--ease:cubic-bezier(.2,.7,.2,1);
}
```
## Page structure, in this order
1. Dark site (aubergine-black background, ivory text, gold accents and thin gold rules). Sticky header: wordmark, navigation (Services, Portfolio, Packages, Process, Quote, FAQ, Contact), language button, a gold 'Request a quote' button.
2. Hero: display serif headline (Didot style), lead, two buttons, a wine-coloured glow, and a drawn art piece with a gentle parallax on scroll (off with reduced motion).
3. Services (#services): cards with a number and a short text. Work (#work, alternate surface): filter buttons (All plus categories) and a portfolio grid of drawn pictures; a tap opens a lightbox.
4. Packages (#packages): three package cards (name, from-price, list of inclusions, 'Choose this' button that fills the quote form). Process (#process): numbered steps in a line.
5. Quote (#quote): the live quote builder (see behaviour) and a receipt card. Testimonials (#testimonials): quotes. FAQ (#faq): accordion. Contact (#contact): details and the request form. Footer.
## Behaviour
1. Quote builder: event type buttons (Wedding, Corporate, Birthday, Engagement, Launch), a guest slider (10 to 500, step 5, start 100), venue buttons (Ballroom, Garden, Villa, Seaside, Rooftop), extras as toggles (Decor, Catering, Photography, Music, Flowers), and a date field.
2. Estimate = (type.base + type.perGuest x guests) x venue.multiplier + the sum of extras (flat + perGuest x guests). The page shows a range from 0.9x to 1.15x of the estimate, rounded to the nearest 50, in KWD. It updates on every change, and the figures are announced politely.
3. Choosing a package applies a preset (type, guests, extras) and scrolls to the builder. Arabic uses Arabic-Indic digits where config.arabicDigits is true.
4. Request form: name, phone, email (optional), message; validation under each field. Sending creates a reference 'AUR-' plus digits and letters, stores the request in localStorage under config.brand.storageKey, shows a receipt (reference, the choices, the range) and opens a prefilled WhatsApp message.
5. Lightbox: opens on a portfolio tile, shows the picture and caption, previous and next buttons, arrow keys, Escape to close, background made inert and focus returned. FAQ items open one at a time with a smooth height change.
6. Reveal on scroll for every section (instant with reduced motion).
## config.js: create it with EXACTLY this content (all the copy, prices, colours and settings, in both languages)
```js
/* ==========================================================================
AURELLE EVENTS - config.js
Everything a rebrander changes lives in this one file.
Text fields written as { en: "...", ar: "..." } are shown in the chosen language.
In headlines, wrap a word in *stars* to show it in gold italics.
========================================================================== */
window.SITE = {
/* ---------- Brand ---------- */
brand: {
name: { en: "Aurelle Events", ar: "أوريل للفعاليات" },
tagline: { en: "Occasions composed like fine art.", ar: "مناسبات تُصاغ كعمل فني." },
description: {
en: "Wedding, corporate and birthday planners. Tell us your plans, see a live estimate, and send your request on WhatsApp.",
ar: "مخططو حفلات الزفاف والفعاليات للشركات وأعياد الميلاد. شاركنا فكرتك، شاهد التقدير المباشر، وأرسل طلبك عبر واتساب."
},
refPrefix: "AUR", // start of the request reference code
storageKey: "aurelle-requests", // browser storage name (change per brand)
defaultLanguage: "en" // "en" or "ar"
},
/* ---------- Colours (hex) ---------- */
colors: {
ink: "#0e0a10", // page background (aubergine-black)
surface: "#18111b", // raised panels
wine: "#3b1626", // deep glow behind the hero
gold: "#c9a45c", // accents, rules, buttons
ivory: "#f3ead8" // main text
},
/* ---------- Contact ---------- */
contact: {
whatsapp: "96590000000", // digits only, with country code, no plus
phone: { en: "+965 9000 0000", ar: "٠٠٩٦٥ ٩٠٠٠ ٠٠٠٠" },
phoneRaw: "+96590000000",
email: "hello@aurelle.example",
address: { en: "Salhiya, Kuwait City, Kuwait", ar: "الصالحية، مدينة الكويت، الكويت" },
hours: { en: "Sunday to Thursday, 9:00 to 18:00", ar: "من الأحد إلى الخميس، ٩:٠٠ إلى ١٨:٠٠" },
instagram: "" // optional full link, leave empty to hide
},
/* Show Arabic-Indic digits (٠١٢) in Arabic. Set false for 0123. */
arabicDigits: true,
/* ---------- Currency ---------- */
currency: { en: "KWD", ar: "د.ك" },
/* ---------- Images (leave "" to show the built-in artwork) ---------- */
images: {
hero: "", // example: "images/hero.jpg"
about: ""
},
/* ---------- Quote builder rules ----------
estimate = (type.base + type.perGuest x guests) x venue.multiplier
+ for each extra: flat + perGuest x guests
The range shown is estimate x low to estimate x high, rounded to "round". */
quote: {
guests: { min: 10, max: 500, step: 5, start: 100 },
range: { low: 0.9, high: 1.15, round: 50 },
types: [
{ id: "wedding", base: 2500, perGuest: 18, label: { en: "Wedding", ar: "حفل زفاف" } },
{ id: "corporate", base: 1800, perGuest: 14, label: { en: "Corporate event", ar: "فعالية شركات" } },
{ id: "birthday", base: 600, perGuest: 9, label: { en: "Birthday", ar: "عيد ميلاد" } },
{ id: "engagement", base: 1200, perGuest: 12, label: { en: "Engagement", ar: "خطوبة" } },
{ id: "launch", base: 2200, perGuest: 13, label: { en: "Product launch", ar: "إطلاق منتج" } }
],
venues: [
{ id: "ballroom", multiplier: 1.25, label: { en: "Hotel ballroom", ar: "قاعة فندق" } },
{ id: "garden", multiplier: 1.1, label: { en: "Garden", ar: "حديقة" } },
{ id: "villa", multiplier: 1.0, label: { en: "Private villa", ar: "فيلا خاصة" } },
{ id: "seaside", multiplier: 1.15, label: { en: "Seaside", ar: "إطلالة بحرية" } },
{ id: "rooftop", multiplier: 1.2, label: { en: "Rooftop", ar: "سطح مطل" } }
],
extras: [
{ id: "decor", flat: 800, perGuest: 4, label: { en: "Decor and styling", ar: "الديكور والتنسيق" } },
{ id: "catering", flat: 0, perGuest: 22, label: { en: "Catering", ar: "الضيافة والطعام" } },
{ id: "photography", flat: 450, perGuest: 0, label: { en: "Photography", ar: "التصوير" } },
{ id: "music", flat: 600, perGuest: 0, label: { en: "Music and sound", ar: "الموسيقى والصوت" } },
{ id: "flowers", flat: 350, perGuest: 3, label: { en: "Flowers", ar: "الزهور" } }
]
},
/* ---------- Services ---------- */
services: [
{ id: "wedding", title: { en: "Weddings", ar: "حفلات الزفاف" },
text: { en: "From the first look to the last dance, a day shaped around your story.", ar: "من النظرة الأولى إلى آخر رقصة، يوم يُصاغ حول حكايتكما." } },
{ id: "corporate", title: { en: "Corporate events", ar: "فعاليات الشركات" },
text: { en: "Galas, conferences and dinners that make your brand feel effortless.", ar: "حفلات وعشاء ومؤتمرات تمنح علامتكم حضوراً أنيقاً بلا عناء." } },
{ id: "birthday", title: { en: "Birthdays", ar: "أعياد الميلاد" },
text: { en: "Intimate or grand, styled with wit and warmth.", ar: "صغيرة أو كبيرة، بأسلوب مرح ودافئ." } },
{ id: "engagement", title: { en: "Engagements", ar: "الخطوبة" },
text: { en: "A tender first chapter, framed in candlelight and flowers.", ar: "فصل أول رقيق، بإطار من الشموع والزهور." } },
{ id: "launch", title: { en: "Product launches", ar: "إطلاق المنتجات" },
text: { en: "Stage, light and story, built so guests remember the reveal.", ar: "منصة وإضاءة وحكاية، ليبقى الكشف عالقاً في الذاكرة." } }
],
/* ---------- Portfolio ----------
category = a service id above. image = "" uses the artwork named in art.
art: arch | chandelier | drape | rings | tiers | beams
tone: wine | bronze | forest | champagne | plum | rose | ink
shape: tall | wide | square */
portfolio: [
{ category: "wedding", art: "arch", tone: "champagne", shape: "tall", image: "",
title: { en: "The Garden Vows", ar: "عهود الحديقة" },
desc: { en: "A hundred and eighty guests under a ceiling of soft light and ivory blooms.", ar: "مئة وثمانون ضيفاً تحت سقف من الضوء الناعم والزهور العاجية." } },
{ category: "corporate", art: "chandelier", tone: "ink", shape: "wide", image: "",
title: { en: "Annual Gala Dinner", ar: "عشاء الحفل السنوي" },
desc: { en: "A seated dinner for three hundred, staged in one continuous evening.", ar: "عشاء جلوس لثلاثمئة ضيف، بإخراج متصل طوال الأمسية." } },
{ category: "birthday", art: "tiers", tone: "rose", shape: "square", image: "",
title: { en: "Thirtieth in Rose", ar: "الثلاثون بالوردي" },
desc: { en: "A private dinner with a sculpted dessert table and a hundred candles.", ar: "عشاء خاص بطاولة حلوى منحوتة ومئة شمعة." } },
{ category: "engagement", art: "rings", tone: "wine", shape: "tall", image: "",
title: { en: "Candlelit Promise", ar: "وعد على ضوء الشموع" },
desc: { en: "Forty close guests, long tables and a wall of warm flame.", ar: "أربعون ضيفاً مقرباً، طاولات طويلة وجدار من الشموع الدافئة." } },
{ category: "launch", art: "beams", tone: "bronze", shape: "wide", image: "",
title: { en: "The Reveal", ar: "لحظة الكشف" },
desc: { en: "A fragrance launch with a moving light show and a hidden stage.", ar: "إطلاق عطر بعرض ضوئي متحرك ومنصة مخفية." } },
{ category: "wedding", art: "drape", tone: "wine", shape: "square", image: "",
title: { en: "Silk and Ceremony", ar: "حرير ومراسم" },
desc: { en: "Hand-draped fabric, an aisle of petals and a quiet vow.", ar: "أقمشة مسدلة يدوياً، ممر من البتلات وعهد هادئ." } },
{ category: "corporate", art: "beams", tone: "forest", shape: "tall", image: "",
title: { en: "Summit After Dark", ar: "القمة بعد الغروب" },
desc: { en: "A two day leadership summit closed with a rooftop reception.", ar: "قمة قيادية ليومين اختُتمت بحفل استقبال على السطح." } },
{ category: "wedding", art: "chandelier", tone: "plum", shape: "wide", image: "",
title: { en: "Ballroom in Gold", ar: "قاعة بلمسة ذهبية" },
desc: { en: "Crystal, brass and a hundred metres of ivory drapery.", ar: "كريستال ونحاس ومئة متر من الستائر العاجية." } },
{ category: "birthday", art: "arch", tone: "forest", shape: "square", image: "",
title: { en: "Garden at Dusk", ar: "الحديقة عند الغروب" },
desc: { en: "A fortieth celebrated outdoors with lanterns and long tables.", ar: "احتفال بالأربعين في الهواء الطلق بين الفوانيس والطاولات الطويلة." } }
],
/* ---------- Packages (prices are a starting point in the currency above) ---------- */
packages: [
{ id: "essence", price: 1800, featured: false,
name: { en: "Essence", ar: "إسّنس" },
note: { en: "For intimate gatherings up to 60 guests.", ar: "للمناسبات الحميمة حتى ٦٠ ضيفاً." },
features: {
en: ["Planning consultation", "Concept and mood board", "Venue sourcing help", "Day-of coordinator", "One round of changes"],
ar: ["استشارة تخطيط", "فكرة ولوحة إلهام", "مساعدة في اختيار المكان", "منسّق ليوم المناسبة", "جولة تعديل واحدة"] },
preset: { type: "birthday", guests: 50, venue: "villa", extras: ["flowers"] } },
{ id: "signature", price: 4500, featured: true,
badge: { en: "Most loved", ar: "الأكثر طلباً" },
name: { en: "Signature", ar: "سيغنتشر" },
note: { en: "Our full design and planning service.", ar: "خدمتنا الكاملة للتصميم والتخطيط." },
features: {
en: ["Everything in Essence", "Full decor design and styling", "Vendor selection and management", "Run-of-show and rehearsal", "Dedicated team on the day", "Three rounds of changes"],
ar: ["كل ما في إسّنس", "تصميم الديكور وتنسيقه بالكامل", "اختيار الموردين وإدارتهم", "جدول المناسبة والبروفة", "فريق مخصص يوم المناسبة", "ثلاث جولات تعديل"] },
preset: { type: "wedding", guests: 120, venue: "garden", extras: ["decor", "flowers", "photography"] } },
{ id: "grand", price: 9500, featured: false,
name: { en: "Grand", ar: "غراند" },
note: { en: "Large celebrations, produced end to end.", ar: "للاحتفالات الكبرى، من الفكرة إلى الختام." },
features: {
en: ["Everything in Signature", "Bespoke production and staging", "Catering, music and photography", "Guest management and invitations", "Senior planner on call", "Unlimited changes"],
ar: ["كل ما في سيغنتشر", "إنتاج وتجهيز منصات حسب الطلب", "الضيافة والموسيقى والتصوير", "إدارة الضيوف والدعوات", "مخطط أول على أهبة الاستعداد", "تعديلات غير محدودة"] },
preset: { type: "wedding", guests: 300, venue: "ballroom", extras: ["decor", "catering", "photography", "music", "flowers"] } }
],
/* ---------- Process ---------- */
process: [
{ title: { en: "Consult", ar: "الاستشارة" }, text: { en: "A relaxed conversation about your vision, guests, budget and date.", ar: "حديث هادئ حول رؤيتكم وضيوفكم وميزانيتكم وموعدكم." } },
{ title: { en: "Design", ar: "التصميم" }, text: { en: "A concept, palette and layout you can see before you commit.", ar: "فكرة وألوان وتوزيع تشاهدونه قبل أن تلتزموا." } },
{ title: { en: "Plan", ar: "التخطيط" }, text: { en: "Vendors, timings and every small detail, tracked and confirmed.", ar: "الموردون والمواعيد وكل التفاصيل الصغيرة، متابَعة ومؤكَّدة." } },
{ title: { en: "Run the day", ar: "إدارة اليوم" }, text: { en: "We arrive first and leave last, so you only have to enjoy it.", ar: "نصل أولاً ونغادر أخيراً، لتستمتعوا أنتم فقط." } }
],
/* ---------- Testimonials (replace with real client words) ---------- */
testimonials: [
{ name: "Maha A.", role: { en: "Bride", ar: "عروس" },
text: { en: "Every detail felt chosen for us. I cried when I walked in, and I did not worry once all night.", ar: "كل تفصيل بدا مختاراً لأجلنا. بكيت عند دخولي ولم أقلق لحظة طوال الليل." } },
{ name: "Yousef K.", role: { en: "Head of Marketing", ar: "مدير التسويق" },
text: { en: "Three hundred guests, zero stress. The team ran the evening with a calm we could feel.", ar: "ثلاثمئة ضيف دون أي توتر. أدار الفريق الأمسية بهدوء شعرنا به." } },
{ name: "Dana R.", role: { en: "Hosted a 40th birthday", ar: "نظّمت عيد ميلاد الأربعين" },
text: { en: "Elegant, warm and exactly on budget. My guests are still talking about the dessert table.", ar: "أنيق ودافئ وضمن الميزانية تماماً. ضيوفي ما زالوا يتحدثون عن طاولة الحلوى." } }
],
/* ---------- FAQ ---------- */
faq: [
{ q: { en: "How far ahead should we book?", ar: "قبل كم من الوقت يجب الحجز؟" },
a: { en: "Weddings are best booked six to twelve months ahead. Corporate events and birthdays can often be arranged within four to eight weeks.", ar: "يُفضّل حجز حفلات الزفاف قبل ستة إلى اثني عشر شهراً. أما فعاليات الشركات وأعياد الميلاد فيمكن غالباً ترتيبها خلال أربعة إلى ثمانية أسابيع." } },
{ q: { en: "Is the estimate a final price?", ar: "هل التقدير هو السعر النهائي؟" },
a: { en: "No. It is an honest range to help you plan. After a short consultation we send a fixed written quote.", ar: "لا، إنه نطاق واقعي يساعدك على التخطيط. بعد استشارة قصيرة نرسل عرض سعر مكتوباً وثابتاً." } },
{ q: { en: "Can you work with our venue?", ar: "هل يمكنكم العمل في مكاننا؟" },
a: { en: "Yes. We design for any venue and can also suggest places that suit your guest count and style.", ar: "نعم، نصمم لأي مكان ويمكننا أيضاً اقتراح أماكن تناسب عدد ضيوفك وأسلوبك." } },
{ q: { en: "How do deposits work?", ar: "كيف تعمل الدفعة المقدمة؟" },
a: { en: "A deposit holds your date. The balance is split into scheduled stages, all written in your agreement.", ar: "تحجز الدفعة المقدمة موعدك، ويُقسَّم الباقي على مراحل مجدولة مكتوبة في الاتفاق." } },
{ q: { en: "Do you plan events outside the city?", ar: "هل تنظمون فعاليات خارج المدينة؟" },
a: { en: "Yes, across the country and for destination events. Travel is added to the quote.", ar: "نعم، في أنحاء البلاد وللفعاليات في الوجهات الخارجية. وتُضاف كلفة السفر إلى العرض." } },
{ q: { en: "What happens after I send my request?", ar: "ماذا يحدث بعد إرسال طلبي؟" },
a: { en: "Your details arrive in our WhatsApp. We reply within one working day to arrange a consultation.", ar: "تصل تفاصيلك إلى واتساب لدينا، ونرد خلال يوم عمل لترتيب الاستشارة." } }
],
/* ---------- Interface texts ---------- */
text: {
en: {
skip: "Skip to content", menu: "Menu", langSwitch: "العربية", langLabel: "Switch to Arabic",
nav: { services: "Services", work: "Portfolio", packages: "Packages", process: "Process", quote: "Quote", faq: "FAQ", contact: "Contact" },
cta: "Plan my event",
hero: { eyebrow: "Event design and planning", title: "Evenings people *remember* for years.",
sub: "Weddings, corporate galas and celebrations, designed and run by one calm, devoted team.", work: "View our work", scroll: "Scroll" },
stats: [{ n: "320+", l: "Events delivered" }, { n: "12", l: "Years of craft" }, { n: "4.9", l: "Average client rating" }],
services: { eyebrow: "What we do", title: "Every occasion, *composed*.", intro: "Five kinds of celebration, one standard of care." },
work: { eyebrow: "Portfolio", title: "A glimpse of *recent* evenings.", intro: "Sample artwork shown. Replace with your own photographs.", all: "All", filterLabel: "Filter portfolio by category", open: "Open image", close: "Close", prev: "Previous image", next: "Next image", count: "of" },
packages: { eyebrow: "Packages", title: "Choose how much we *carry*.", intro: "Starting prices. Your final quote depends on guests, venue and details.", from: "Starting from", choose: "Start with this package", included: "Included" },
process: { eyebrow: "How it works", title: "Four calm *steps*.", intro: "A clear path from first message to final goodbye." },
quote: { eyebrow: "Quote builder", title: "Shape your event, see the *range*.", intro: "Make your choices and watch the estimate move. Then send it to us in one tap.",
s1: "Event type", s2: "Guests", s3: "Date", s3hint: "Optional. Leave empty if you are still deciding.", s4: "Venue style", s5: "Extras", s6: "Your details",
guestsUnit: "guests", name: "Your name", phone: "Phone number", notes: "Notes (optional)", notesPh: "Anything we should know?",
estimate: "Estimated range", disclaimer: "A planning estimate, not a final price. We confirm a fixed quote after a short consultation.",
send: "Send my request on WhatsApp", perGuest: "per guest", ofLabel: "Selection",
errName: "Please enter your name.", errPhone: "Please enter a valid phone number, digits only (7 to 15).",
none: "None selected", flexible: "Flexible date", perGuestShort: "/ guest" },
summary: { title: "Your request is ready", lead: "Your details are in a WhatsApp message. Press send there to finish.", ref: "Reference", event: "Event", guests: "Guests", date: "Date", venue: "Venue style", extras: "Extras", est: "Estimate", name: "Name", phone: "Phone",
reopen: "Open WhatsApp again", copy: "Copy details", copied: "Copied", fresh: "Start a new request", stored: "Saved on this device only. Keep your reference code." },
wa: { hello: "Hello {brand}, I would like a quote.", ref: "Reference", name: "Name", phone: "Phone", event: "Event", guests: "Guests", date: "Date", venue: "Venue style", extras: "Extras", est: "Estimated range", notes: "Notes", none: "None", flexible: "Flexible" },
testimonials: { eyebrow: "Kind words", title: "Heard after the *last dance*." },
faq: { eyebrow: "Questions", title: "Good to *know*." },
contact: { eyebrow: "Contact", title: "Let us begin with a *conversation*.", intro: "Message us on WhatsApp or visit the studio.", whatsapp: "WhatsApp", phone: "Phone", email: "Email", visit: "Studio", hours: "Hours", wa: "Chat on WhatsApp" },
footer: { rights: "All rights reserved.", top: "Back to top" },
noscript: "This page needs JavaScript to show its content."
},
ar: {
skip: "انتقل إلى المحتوى", menu: "القائمة", langSwitch: "English", langLabel: "التبديل إلى الإنجليزية",
nav: { services: "الخدمات", work: "أعمالنا", packages: "الباقات", process: "آلية العمل", quote: "عرض السعر", faq: "الأسئلة", contact: "تواصل" },
cta: "خطّط لمناسبتي",
hero: { eyebrow: "تصميم الفعاليات وتخطيطها", title: "أمسيات *تبقى* في الذاكرة لسنوات.",
sub: "حفلات زفاف وأمسيات للشركات ومناسبات خاصة، نصممها ونديرها بفريق واحد هادئ ومتفانٍ.", work: "شاهد أعمالنا", scroll: "مرّر" },
stats: [{ n: "+٣٢٠", l: "فعالية منفّذة" }, { n: "١٢", l: "سنة من الإتقان" }, { n: "٤٫٩", l: "متوسط تقييم العملاء" }],
services: { eyebrow: "ما نقدمه", title: "كل مناسبة، *تُصاغ* بعناية.", intro: "خمسة أنواع من الاحتفالات، بمعيار واحد من الاهتمام." },
work: { eyebrow: "أعمالنا", title: "لمحة من أمسيات *حديثة*.", intro: "الصور المعروضة تجريبية. استبدلها بصورك الحقيقية.", all: "الكل", filterLabel: "تصفية الأعمال حسب الفئة", open: "افتح الصورة", close: "إغلاق", prev: "الصورة السابقة", next: "الصورة التالية", count: "من" },
packages: { eyebrow: "الباقات", title: "اختر ما *نتولاه* عنك.", intro: "أسعار البداية. يعتمد العرض النهائي على الضيوف والمكان والتفاصيل.", from: "تبدأ من", choose: "ابدأ بهذه الباقة", included: "تشمل" },
process: { eyebrow: "كيف نعمل", title: "أربع *خطوات* هادئة.", intro: "طريق واضح من أول رسالة إلى آخر وداع." },
quote: { eyebrow: "حاسبة العرض", title: "صمّم مناسبتك وشاهد *النطاق*.", intro: "اختر ما يناسبك وراقب التقدير يتغير. ثم أرسله إلينا بلمسة واحدة.",
s1: "نوع المناسبة", s2: "عدد الضيوف", s3: "التاريخ", s3hint: "اختياري. اتركه فارغاً إن لم تحدد بعد.", s4: "طابع المكان", s5: "إضافات", s6: "بياناتك",
guestsUnit: "ضيف", name: "الاسم", phone: "رقم الهاتف", notes: "ملاحظات (اختياري)", notesPh: "أي شيء تودّ أن نعرفه؟",
estimate: "النطاق التقديري", disclaimer: "تقدير للتخطيط وليس سعراً نهائياً. نؤكد عرضاً ثابتاً بعد استشارة قصيرة.",
send: "أرسل طلبي عبر واتساب", perGuest: "للضيف", ofLabel: "اختياراتك",
errName: "يرجى إدخال اسمك.", errPhone: "يرجى إدخال رقم هاتف صحيح، أرقام فقط (من ٧ إلى ١٥).",
none: "لا شيء", flexible: "تاريخ مرن", perGuestShort: "/ ضيف" },
summary: { title: "طلبك جاهز", lead: "تفاصيلك الآن في رسالة واتساب. اضغط إرسال هناك لإتمام الطلب.", ref: "الرقم المرجعي", event: "المناسبة", guests: "الضيوف", date: "التاريخ", venue: "طابع المكان", extras: "الإضافات", est: "التقدير", name: "الاسم", phone: "الهاتف",
reopen: "افتح واتساب مرة أخرى", copy: "انسخ التفاصيل", copied: "تم النسخ", fresh: "ابدأ طلباً جديداً", stored: "محفوظ على هذا الجهاز فقط. احتفظ بالرقم المرجعي." },
wa: { hello: "مرحباً {brand}، أودّ الحصول على عرض سعر.", ref: "الرقم المرجعي", name: "الاسم", phone: "الهاتف", event: "المناسبة", guests: "عدد الضيوف", date: "التاريخ", venue: "طابع المكان", extras: "الإضافات", est: "النطاق التقديري", notes: "ملاحظات", none: "لا شيء", flexible: "مرن" },
testimonials: { eyebrow: "كلمات طيبة", title: "كلمات سمعناها بعد *آخر رقصة*." },
faq: { eyebrow: "أسئلة", title: "أشياء تهمّك *معرفتها*." },
contact: { eyebrow: "تواصل", title: "لنبدأ بـ*حديث* بسيط.", intro: "راسلنا على واتساب أو زر الاستوديو.", whatsapp: "واتساب", phone: "الهاتف", email: "البريد", visit: "الاستوديو", hours: "ساعات العمل", wa: "تحدث معنا على واتساب" },
footer: { rights: "جميع الحقوق محفوظة.", top: "العودة للأعلى" },
noscript: "تحتاج هذه الصفحة إلى جافاسكربت لعرض محتواها."
}
}
};
```
## When you have finished, check
- Changing any quote option changes the range immediately and matches the formula.
- Lightbox and FAQ work by keyboard; the request produces a reference and a WhatsApp message.
- Both languages and RTL are correct; no sideways scroll at 390 px and 1440 px.
Where to paste it
ClaudePaste it in a new chat. For files, use Claude Code and run it in an empty folder.
ChatGPTPaste it in a new chat and ask for every file in separate code blocks.
GeminiPaste it in a new chat and ask for every file in separate code blocks.
CursorOpen an empty folder, paste it in the agent chat and let it create the files.
What to do after the AI answers
Save every file it gives you in one folder, with the same names.
Open index.html in your browser and compare it with the preview here.
If something is different, tell the AI exactly what, in one short sentence.