{
  "common": {
    "site_name": "InstaParty",
    "search": "Search",
    "menu": "Menu",
    "close": "Close",
    "loading": "Loading…",
    "retry": "Retry",
    "skip_to_content": "Skip to main content",
    "pagination": "Pagination",
    "previous": "Previous",
    "next": "Next",
    "back_to_top": "Back to top",
    "cancel": "Cancel",
    "confirm": "Confirm"
  },
  "nav": {
    "menu": "Menu",
    "home": "Home",
    "search": "Browse",
    "wizard": "Plan event",
    "cart": "Cart",
    "your_event": "Your Event",
    "my_bookings": "My bookings",
    "wishlist": "Wishlist",
    "profile": "Profile",
    "login": "Sign in",
    "register": "Sign up",
    "logout": "Sign out",
    "language": "العربية"
  },
  "home": {
    "search_placeholder": "Search for services...",
    "hero_label": "Promotional banner",
    "hero_default_headline": "Plan your party in minutes",
    "hero_default_sub": "Discover the best rental, sale and digital party services in one place.",
    "browse_services": "Browse services",
    "plan_event": "Plan an event",
    "hero": {
      "eyebrow": "The trusted celebration planner",
      "headline": "Find vendors for your next celebration, all in one place.",
      "sub": "Verified vendors across Egypt for cakes, decoration, catering, photography, venues, and more. Compare, chat, and book securely.",
      "primary_cta": "Start planning",
      "secondary_cta": "Browse vendors",
      "search_placeholder": "What are you celebrating? Birthday, baby shower, graduation…",
      "search_cta": "Search",
      "trust_verified": "Verified vendors",
      "trust_secure": "Secure booking",
      "trust_local": "Local Egyptian support"
    },
    "occasions": {
      "eyebrow": "By occasion",
      "heading": "Find what fits the moment",
      "sub": "Curated by the kind of celebration you have in mind.",
      "birthday": "Birthday",
      "baby_shower": "Baby shower",
      "graduation": "Graduation",
      "family_gathering": "Family gathering",
      "corporate": "Corporate & family events",
      "custom": "Something else",
      "explore": "Explore"
    },
    "categories": {
      "eyebrow": "Popular categories",
      "heading": "Everything a celebration needs",
      "sub": "From the cake to the photographer, find every piece of your event with people who do it for a living.",
      "cakes": "Cakes & desserts",
      "cakes_sub": "Tiered, themed, or simple. Bakers who deliver fresh.",
      "balloons": "Balloons & decoration",
      "balloons_sub": "Arches, table setups, themed installations.",
      "catering": "Catering",
      "catering_sub": "Buffets and platters for any guest count.",
      "photography": "Photography & video",
      "photography_sub": "Professionals who capture the day quietly.",
      "venues": "Venues & halls",
      "venues_sub": "Indoor and outdoor spaces across Egypt.",
      "entertainment": "Entertainment",
      "entertainment_sub": "DJs, magicians, hosts, and live music.",
      "gifts": "Gifts & digital vouchers",
      "gifts_sub": "Instant e-vouchers and curated gift bundles.",
      "rentals": "Party rentals",
      "rentals_sub": "Inflatables, photo booths, lounge setups."
    },
    "how_it_works": {
      "eyebrow": "How it works",
      "heading": "From idea to celebration in four steps",
      "step1_title": "Tell us your event",
      "step1_sub": "Share the occasion, date, and location. Two minutes.",
      "step2_title": "Compare trusted vendors",
      "step2_sub": "Verified vendors, real reviews, and clear pricing.",
      "step3_title": "Book securely",
      "step3_sub": "Pay through Paymob. Your booking holds for 24 hours while vendors confirm.",
      "step4_title": "Manage in one place",
      "step4_sub": "Chat, modifications, and updates live on a single booking page."
    },
    "featured": {
      "eyebrow": "Featured services",
      "heading": "Trusted picks for your next event",
      "sub": "Hand-picked from vendors with strong reviews and fast response times.",
      "view_all": "Browse all services"
    },
    "vendors_strip": {
      "eyebrow": "Verified vendors",
      "heading": "People who do this for a living",
      "sub": "Every vendor on InstaParty is checked, reviewed, and rated. We list response time so you know what to expect.",
      "verified_badge": "Verified",
      "view_all": "Browse all vendors",
      "rating": "rating",
      "response_within": "Responds within {hours}h",
      "serves": "Serves {city}"
    },
    "recently_viewed": {
      "title": "Recently viewed"
    },
    "trust": {
      "eyebrow": "Booking confidence",
      "heading": "We handle the parts that usually go wrong",
      "secure_title": "Secure payments",
      "secure_sub": "Paymob handles every transaction. Your card details never touch our servers.",
      "confirmation_title": "Vendor confirmation",
      "confirmation_sub": "Vendors respond within 24 hours. If anything changes, you review and accept first.",
      "pricing_title": "Clear pricing",
      "pricing_sub": "Service price, delivery, and any deposit shown before you pay. No surprises.",
      "support_title": "Support when you need it",
      "support_sub": "Local team that knows Egyptian event logistics. Reach us by chat or phone.",
      "learn_more": "Learn about our badges →"
    },
    "final_cta": {
      "eyebrow": "Ready when you are",
      "heading": "Start planning the next one",
      "sub": "Two minutes to tell us about your event. We'll show you who's available.",
      "primary_cta": "Start planning",
      "secondary_cta": "Browse services"
    },
    "fallback": {
      "admin_banner": "Homepage CMS is empty or unreachable. See logs."
    }
  },
  "clock": {
    "timezone_disclosure": "Times shown in {timezone}"
  },
  "footer": {
    "contact": "Contact"
  },
  "promo": {
    "have_code": "Have a promo code?",
    "placeholder": "Enter code",
    "apply": "Apply",
    "applied": "Applied",
    "remove": "Remove",
    "invalid": "Invalid or expired promo code"
  },
  "trust_badge": {
    "verified": "Verified",
    "verified_desc": "Identity and documents verified by InstaParty",
    "top_rated": "Top Rated",
    "top_rated_desc": "Consistently rated 4.5+ by customers",
    "escrow_protected": "Payment Protected",
    "escrow_protected_desc": "Your payment is held safely until your event is complete"
  },
  "service": {
    "from": "From",
    "new": "New",
    "rate_stars": "Rate {n} stars",
    "per_day": "per day",
    "per_unit": "per unit",
    "book_now": "Book now",
    "add_to_cart": "Add to cart",
    "delivery_required": "Delivery address required",
    "security_deposit": "Security deposit",
    "setup_time": "Setup time",
    "lead_time": "Lead time",
    "delivery_method": "Delivery method",
    "expiry_note": "Expires after delivery",
    "quantity": "Quantity",
    "date": "Event date",
    "add_error": "Could not add this item. Please try again.",
    "browse_services": "Browse services",
    "reviews_count": "{count} reviews",
    "no_reviews": "No reviews yet",
    "rating_aria": "Rated {avg} out of 5, {count, plural, one {# review} other {# reviews}}",
    "about_heading": "About this service",
    "gallery_heading": "Gallery",
    "verified_vendor": "Verified vendor",
    "view_profile": "View profile",
    "perishable": "Perishable",
    "made_to_order": "Made to order",
    "stock": "Stock",
    "out_of_stock": "Out of stock"
  },
  "errors": {
    "generic": "Something went wrong. Please try again.",
    "heading": "Something went wrong"
  },
  "auth": {
    "register": {
      "title": "Create your account",
      "subtitle": "Plan your next event in minutes.",
      "submit": "Create account",
      "submitting": "Creating account…",
      "have_account": "Already have an account?",
      "tc_agree": "I agree to the",
      "tc_link": "Terms & Conditions",
      "tc_required": "You must accept the terms",
      "password_strength": {
        "label": "Password strength",
        "weak": "Weak",
        "medium": "Medium",
        "strong": "Strong",
        "req_length": "At least 12 characters",
        "req_upper": "One uppercase letter",
        "req_number": "One number",
        "req_special": "One special character"
      }
    },
    "login": {
      "title": "Welcome back",
      "subtitle": "Sign in to continue.",
      "checkout_context_banner": "Sign in to continue your booking",
      "session_expired_banner": "Your session expired. Please sign in again.",
      "submit": "Sign in",
      "submitting": "Signing in…",
      "password_tab": "Password",
      "otp_tab": "OTP",
      "send_otp": "Send code",
      "sending_otp": "Sending…",
      "no_account": "New to InstaParty?",
      "forgot": "Forgot your password?"
    },
    "verify": {
      "title": "Verify your phone",
      "subtitle": "Enter the 6-digit code we sent to {phone}.",
      "submit": "Verify",
      "submitting": "Verifying…",
      "resend": "Resend code",
      "resending": "Sending…",
      "resent": "Code resent.",
      "resend_countdown": "Resend in {seconds}s",
      "missing_phone": "Phone number is missing. Please start over."
    },
    "forgot": {
      "title": "Reset your password",
      "description": "Enter the email or phone number on your account. We will send you a link or a code so you can set a new password.",
      "identifier_label": "Email or phone number",
      "identifier_placeholder": "you@example.com or +20 1XX XXXXXXX",
      "identifier_invalid": "Enter a valid email or phone number (e.g. +201012345678).",
      "submit": "Send reset instructions",
      "submitting": "Sending…",
      "success_neutral": "If we found an account, we have sent a link or a code. Check your email or SMS messages.",
      "resend_in": "Resend in {seconds}s",
      "resend": "Send again",
      "back_to_login": "Back to sign in",
      "too_many_requests": "Too many requests. Please try again in a few minutes."
    },
    "reset": {
      "title": "Set new password",
      "subtitle": "Enter a new password for your account.",
      "identifier_label": "Account identifier",
      "password_label": "New password",
      "confirm_label": "Confirm password",
      "submit": "Reset password",
      "submitting": "Updating…",
      "success": "Password updated. You can now sign in.",
      "invalid_token": "This link or code is invalid or has expired.",
      "retry_link": "Request a new link"
    },
    "fields": {
      "name": "Full name",
      "phone": "Phone number",
      "phone_hint": "Include country code, e.g. +201234567890",
      "phone_placeholder": "+201XXXXXXXXX",
      "email_optional": "Email (optional)",
      "password": "Password",
      "password_confirmation": "Confirm password",
      "login_identifier": "Phone or email",
      "otp_code": "Verification code"
    },
    "errors": {
      "register_failed": "Could not create your account. Please check your details.",
      "login_failed": "Sign in failed. Check your credentials.",
      "otp_send_failed": "Could not send the code. Try again in a moment.",
      "verify_failed": "Code is incorrect or expired.",
      "phone_format": "Phone must be in international format, e.g. +201234567890",
      "passwords_mismatch": "Passwords do not match",
      "login_min_length": "Please enter at least 3 characters",
      "password_required": "Password is required"
    }
  },
  "product_types": {
    "rental": "Rental",
    "sale": "Sale",
    "digital": "Digital"
  },
  "cart": {
    "title": "Your Event",
    "loading": "Loading your event…",
    "empty": "Nothing in your event yet. Let's plan it together.",
    "no_items": "You haven't added any items yet.",
    "expired_notice": "Your 15-minute cart hold expired. Please start again.",
    "start_planning": "Plan an event",
    "add_items": "Browse services",
    "add_more": "Add more items",
    "continue": "Continue to summary",
    "remove": "Remove",
    "subtotal": "Subtotal",
    "delivery": "Delivery",
    "discount": "Discount",
    "total": "Total",
    "min_order_warning": "{vendor}: minimum order {min} ”” add {shortfall} more",
    "min_order": {
      "banner_title": "Some vendors need a larger order",
      "row": "Add {amount} to reach the minimum for {vendor}",
      "sticky": "Add {amount} more from {vendor} to continue"
    },
    "continue_disabled_tooltip": "Add more items to continue",
    "hold_expired_banner": "Your cart hold expired. Start a new booking to continue.",
    "start_new_booking": "Start new booking",
    "remove_item": "Remove {name}",
    "removed_undo": "Removed. Undo?",
    "item_removed": "Item removed from cart",
    "min_order_hint": "Add more items to meet the vendor's minimum order requirement"
  },
  "checkout": {
    "steps": {
      "event": "Event",
      "items": "Items",
      "summary": "Summary",
      "negotiation": "Negotiation",
      "pay": "Payment"
    },
    "hold_countdown": {
      "label": "Cart hold expires in",
      "expires_at": "Expires at {time}"
    },
    "event": {
      "title": "Event details",
      "subtitle": "Tell us about your event so vendors can prepare.",
      "section_event": "When & what",
      "section_address": "Delivery address",
      "occasion": "Occasion",
      "select_occasion": "Select an occasion",
      "starts_at": "Starts at",
      "ends_at": "Ends at",
      "guest_count": "Guest count",
      "governorate": "Governorate",
      "select_governorate": "Select governorate",
      "city": "City",
      "select_city": "Select city",
      "address_line": "Address line",
      "building": "Building",
      "floor": "Floor",
      "apartment": "Apartment",
      "landmark": "Landmark",
      "recipient_name": "Recipient name",
      "recipient_phone": "Recipient phone",
      "submit": "Save & continue",
      "submitting": "Saving…",
      "error_generic": "Could not save your event details.",
      "error_end_after_start": "End time must be after start time",
      "use_saved_address": "Use a saved address",
      "select_address": "Select address…",
      "enter_new_address": "Enter a new address",
      "selected_address_summary": "Selected address",
      "change_address": "Edit / Use different address",
      "guest_count_helper": "Helps vendors give you the right quote",
      "guest_count_optional": "(optional)",
      "no_saved_addresses": "No saved addresses",
      "add_first_address": "Add your first address",
      "date_format_hint": "Format: DD/MM/YYYY HH:MM",
      "review_title": "One last review",
      "review_subtitle": "Confirm event basics and your delivery address. Tap pay to be sent to the payment provider.",
      "review_event_heading": "Event",
      "review_address_heading": "Delivery address",
      "review_amount_due": "Amount due",
      "review_promo_applied": "Promo code applied: {code}",
      "manage_addresses": "Manage addresses",
      "confirm_and_pay": "Confirm & pay",
      "confirming": "Confirming…",
      "back_to_summary": "Back to summary",
      "start_over": "Need to change something? Start a new event."
    },
    "items": {
      "title": "Add items to your booking",
      "subtitle": "Search the catalog and configure each item.",
      "search_placeholder": "Search services…",
      "pick_service": "Pick a service to configure it here.",
      "loading_service": "Loading service…",
      "no_results": "No services match your search.",
      "starts_at": "Starts at",
      "ends_at": "Ends at",
      "note_optional": "Note (optional)",
      "recipient_email": "Recipient email",
      "recipient_phone": "Recipient phone",
      "add_to_booking": "Add to booking",
      "adding": "Adding…",
      "back_to_cart": "Back to cart",
      "continue": "Continue",
      "item": "item",
      "items": "items",
      "error_generic": "Could not add this item.",
      "rental": {
        "end_after_start": "End date must be after start date"
      }
    },
    "summary": {
      "title": "Review your booking",
      "loading": "Loading summary…",
      "event_details": "Event details",
      "starts_at": "Starts",
      "ends_at": "Ends",
      "address": "Address",
      "items": "Items",
      "subtotal": "Subtotal",
      "delivery": "Delivery",
      "discount": "Discount",
      "total": "Total",
      "back": "Back",
      "submit": "Submit booking",
      "submitting": "Submitting…",
      "submit_error_generic": "We couldn't submit your booking. Please try again.",
      "submit_error_422": "Your booking couldn't be submitted ”” please check the details and try again.",
      "submit_error_5xx": "Something went wrong on our end. Please try again shortly.",
      "hold_expired_message": "Your cart hold has expired ”” please restart the booking.",
      "escrow_note": "Payment is held in escrow and only released to the vendor after your event.",
      "cancellation_note": "Free cancellation up to 24 hours before your event date.",
      "amount_due": "Amount due",
      "hold_expired_title": "Your hold expired",
      "hold_expired_body": "We held your cart for 15 minutes. Start a new booking to pick up where you left off.",
      "hold_expired_inline_error": "Your hold has expired. Restart your booking.",
      "continue_to_event": "Continue to event"
    },
    "wallet": {
      "available": "Wallet balance",
      "apply": "Apply",
      "applied": "Applied",
      "saves": "Saves",
      "new_due": "New total",
      "undo": "Undo",
      "undo_toast": "Wallet balance removed — undo?"
    },
    "loyalty": {
      "points_available": "{points} pts available",
      "redeem": "Redeem",
      "redeemed": "Redeemed",
      "redeemed_short": "Redeemed"
    },
    "escrow": {
      "title": "Secure escrow payment",
      "body": "InstaParty holds your payment safely in escrow and only releases it to the vendor after your event is successfully completed."
    },
    "policy": {
      "title": "Cancellation & refund policy",
      "rental_label": "Rental items",
      "rental": "Rental items are fully refundable if cancelled at least 24 hours before the event start time. Cancellations made less than 24 hours before the event are non-refundable. Once setup has begun the booking is locked.",
      "sale_label": "Sale items",
      "sale": "Sale items can be cancelled and fully refunded until the vendor begins preparation. Once an item enters preparation it is non-refundable.",
      "digital_label": "Digital items",
      "digital": "Digital items are governed by the vendor's refund policy. Items marked as refundable may be refunded before delivery. Items not marked as refundable are final sale."
    },
    "submit": {
      "submitting_title": "Submitting your booking…",
      "submitting_body": "We're sending your request to the vendors.",
      "failed_title": "Submission failed",
      "retry": "Try again",
      "error_generic": "We couldn't submit your booking.",
      "minimum_not_met": "Minimum order not met",
      "minimum_order_message": "Minimum {min} ”” add {shortfall} more",
      "back_to_cart": "Back to cart"
    },
    "negotiation": {
      "title": "Vendor negotiation",
      "subtitle": "Vendors may propose changes. Review and decide.",
      "waiting": "Waiting for vendor responses…",
      "accept": "Accept",
      "reject": "Reject",
      "proceed_to_pay": "Proceed to payment",
      "error_generic": "Could not load modifications.",
      "last_checked": "Last checked {seconds}s ago",
      "refresh": "Refresh",
      "checking": "Checking for updates…"
    },
    "pay": {
      "title": "Complete payment",
      "amount_due": "Amount due",
      "proceed": "Proceed to Paymob",
      "initiating": "Initiating payment…",
      "loading_payment": "Loading secure payment…",
      "iframe_note": "Payment is processed securely by Paymob.",
      "error_generic": "Could not start the payment."
    },
    "cancel": {
      "button": "Cancel & return to summary",
      "disabled_capturing": "Payment is being verified — please wait"
    },
    "heartbeat": {
      "waiting": "Waiting for payment confirmation…",
      "verifying": "Verifying your payment…",
      "tick": "Re-checked {n, plural, one {# time} other {# times}}"
    },
    "confirmed": {
      "title": "Booking confirmed",
      "subtitle": "We've notified your vendors. You'll get SMS and in-app updates as they prepare.",
      "reference": "Reference",
      "view_booking": "View my booking",
      "share_whatsapp": "Share on WhatsApp",
      "share_text": "I just booked with InstaParty 🎉 (Ref: {reference})\n{url}",
      "back_home": "Back to home",
      "next_steps_title": "What happens next",
      "next_step_1": "Each vendor confirms or proposes a small change within 24 hours.",
      "next_step_2": "If anything changes, you'll review and accept before the booking locks.",
      "next_step_3": "Open the chat thread on the booking page to coordinate the day.",
      "event_date_label": "Event date",
      "total_label": "Total"
    }
  },
  "wizard": {
    "title": "Plan your event",
    "subtitle": "Answer a few questions and we'll show you what's available.",
    "steps": {
      "occasion": "Occasion",
      "location": "Location",
      "details": "Details"
    },
    "step1": {
      "headline": "What are you celebrating?",
      "body": "Choose the occasion so we can find the right vendors.",
      "date_label": "When is the event?",
      "date_placeholder": "Pick a date",
      "skip_date": "I'll decide the date later",
      "no_occasions": "No occasions available."
    },
    "step2": {
      "headline": "Where's the party?",
      "body": "We'll show you vendors that cover your area.",
      "governorate_label": "Governorate",
      "select_governorate": "Select governorate",
      "city_label": "City",
      "select_city": "Select city",
      "loading": "Loading locations…"
    },
    "step3": {
      "headline": "Tell us a bit more",
      "body": "This helps vendors prepare the right offer.",
      "guests_label": "Approximate guest count",
      "guests_placeholder": "e.g. 50",
      "celebrant_label": "Who is celebrating?",
      "celebrant_placeholder": "Name (optional)"
    },
    "nav": {
      "back": "Back",
      "next": "Next",
      "start_exploring": "Start exploring"
    }
  },
  "search": {
    "title": "Browse services",
    "placeholder": "What are you looking for?",
    "type_all": "All types",
    "type_rental": "Rental",
    "type_sale": "For sale",
    "type_digital": "Digital",
    "sort_label": "Sort",
    "sort_relevance": "Relevance",
    "sort_price_asc": "Lowest price",
    "sort_price_desc": "Highest price",
    "sort_rating": "Top rated",
    "results_count": "{count} services found",
    "empty_title": "No services found",
    "empty_body": "Try a different search term or adjust your filters.",
    "empty_action": "Clear filters",
    "error": "Could not load services. Please try again.",
    "loading": "Finding services for you…",
    "page_prev": "Previous",
    "page_next": "Next",
    "vendor_filter_banner": "Showing services from this vendor ”” add to booking",
    "filters": "Filters",
    "apply_filters": "Apply Filters",
    "sort_by": "Sort by",
    "sort_newest": "Newest",
    "filter_city": "City",
    "filter_price": "Price Range",
    "filter_price_min": "Min (EGP)",
    "filter_price_max": "Max (EGP)",
    "filter_price_min_chip": "Min {value} EGP",
    "filter_price_max_chip": "Max {value} EGP",
    "filter_min_rating_chip": "{n}+ stars",
    "filter_rating": "Min Rating",
    "filter_type": "Product Type",
    "no_results": "No services found",
    "clear_filters": "Clear all filters",
    "filters_sidebar_label": "Refine results",
    "filters_sidebar_heading": "Filters",
    "sort": {
      "label": "Sort by",
      "price_asc": "Price: Low to High",
      "price_desc": "Price: High to Low",
      "rating_desc": "Top rated",
      "newest": "Newest"
    },
    "back_to_top": "Back to top"
  },
  "discovery": {
    "view_all": "View all",
    "services_heading": "Services",
    "book_now": "Book now",
    "view_vendor": "View vendor",
    "no_reviews": "New",
    "rating_label": "{avg} · {count} reviews",
    "from_price": "From {price}",
    "verified": "Verified",
    "loading": "Loading…",
    "error": "Something went wrong. Please try again.",
    "empty": "Nothing here yet."
  },
  "occasion": {
    "loading": "Loading…",
    "error": "Could not load this occasion.",
    "not_found": "Occasion not found.",
    "services_for": "Services for {name}",
    "all_services": "Browse all services"
  },
  "category": {
    "loading": "Loading…",
    "error": "Could not load this category.",
    "not_found": "Category not found.",
    "services_in": "Browse {name}",
    "all_services": "Browse all services"
  },
  "vendor": {
    "loading": "Loading vendor profile…",
    "error": "Could not load this vendor.",
    "not_found": "Vendor not found.",
    "verified_badge": "Verified vendor",
    "services_heading": "Services by this vendor",
    "contact_whatsapp": "Chat on WhatsApp",
    "response_time": "Usually responds within 24 hours",
    "reviews_count": "{count} reviews",
    "rating_avg": "{avg} out of 5",
    "member_since": "Member since {date}",
    "no_bio": "This vendor hasn’t added a bio yet.",
    "book_with_vendor": "Book with this vendor",
    "no_services": "No services yet",
    "product_types_label": "Service types",
    "services_count_label": "Services",
    "view_all_services": "View all services",
    "view_all_count": "View all {count} services",
    "browse_all_secondary": "Browse all services from this vendor",
    "cta": {
      "browse_services": "Browse Services"
    },
    "add_to_event": {
      "button": "Add to event",
      "browse_all_secondary": "Browse all services from this vendor",
      "added_to_cart": "Added to your event",
      "added_to_cart_cta": "Add to event",
      "submitting": "Adding…",
      "close": "Close",
      "error_generic": "Could not add this service. Please try again.",
      "need_wizard": "Tell us a little about your event first.",
      "need_address": "Add a delivery address before booking.",
      "panel": {
        "title": {
          "rental": "Pick a date and quantity",
          "sale": "Customize your order",
          "digital": "Recipient and delivery"
        }
      },
      "fields": {
        "event_starts_at": "Event starts at",
        "event_ends_at": "Event ends at",
        "quantity": "Quantity",
        "notes_optional": "Notes (optional)",
        "customizations_optional": "Customizations (optional)",
        "recipient_name_optional": "Recipient name (optional)",
        "recipient_phone_optional": "Recipient phone (optional)",
        "deliver_at_optional": "Deliver at (optional)"
      }
    },
    "actions": {
      "save": "Save vendor",
      "unsave": "Unsaved",
      "share": "Share",
      "share_copied": "Link copied!",
      "report": "Report vendor",
      "report_title": "Report this vendor?",
      "report_reason": "Reason",
      "report_details": "Additional details (optional)",
      "report_submitted": "Report submitted",
      "contact": "Contact vendor"
    },
    "reviews": {
      "title": "Customer Reviews",
      "empty": "No reviews yet",
      "load_more": "Load more reviews",
      "rating_out_of": "out of 5"
    },
    "response_within_hours": "Responds within ~{hours} hours",
    "response_within_day": "Responds within a day",
    "view_all_count": "View all {count} services",
    "services_load_error": "Couldn't load services. Try again.",
    "services_retry": "Try again",
    "gallery_heading": "Gallery"
  },
  "me": {
    "nav": {
      "bookings": "Bookings",
      "wishlist": "Wishlist",
      "addresses": "Addresses",
      "profile": "Profile",
      "loyalty": "Loyalty",
      "notifications": "Notifications",
      "wallet": "Wallet",
      "saved_vendors": "Saved Vendors"
    },
    "bookings": {
      "title": "My bookings",
      "loading": "Loading your bookings…",
      "empty": "You don't have any bookings yet.",
      "error_load": "Could not load your bookings.",
      "total": "Total",
      "load_more": "Load more bookings",
      "status": {
        "all": "All",
        "draft": "Draft",
        "submitted": "Submitted",
        "customer_review": "Awaiting your review",
        "awaiting_payment": "Awaiting payment",
        "confirmed": "Confirmed",
        "in_progress": "In progress",
        "completed": "Completed",
        "cancelled": "Cancelled",
        "rejected": "Rejected"
      },
      "start_planning": "Plan an event"
    },
    "booking_detail": {
      "loading": "Loading…",
      "not_found": "Booking not found.",
      "back_to_bookings": "Back to my bookings",
      "rating_aria": "Rated {avg} out of 5, {count, plural, one {# review} other {# reviews}}",
      "open_chat": "Open chat",
      "pay_now": "Complete Payment",
      "leave_review": "Leave a review",
      "review_modifications": "Review vendor changes",
      "lifecycle": "Lifecycle",
      "payment": "Payment",
      "fulfillment": "Fulfillment",
      "items": "Items",
      "subtotal": "Subtotal",
      "delivery": "Delivery",
      "discount": "Discount",
      "total": "Total",
      "statuses": {
        "lifecycle": {
          "draft": "Draft",
          "submitted": "Submitted",
          "vendor_review": "Vendor reviewing",
          "customer_review": "Awaiting your review",
          "confirmed": "Confirmed",
          "active": "In progress",
          "completed": "Completed",
          "cancelled": "Cancelled"
        },
        "payment": {
          "unpaid": "Unpaid",
          "partial": "Partially paid",
          "paid": "Paid",
          "refund_pending": "Refund pending",
          "partially_refunded": "Partially refunded",
          "refunded": "Refunded",
          "authorized": "Authorized",
          "captured": "Captured",
          "failed": "Payment failed"
        },
        "fulfillment": {
          "not_started": "Not started",
          "pending": "Pending",
          "in_preparation": "In preparation",
          "in_progress": "In progress",
          "ready": "Ready",
          "out_for_delivery": "Out for delivery",
          "delivered": "Delivered",
          "setup": "Setup in progress",
          "in_use": "In use",
          "returned": "Returned",
          "partially_completed": "Partially completed",
          "completed": "Completed",
          "failed": "Fulfillment failed"
        }
      },
      "item_statuses": {
        "rental": {
          "pending_delivery": "Pending delivery",
          "out_for_delivery": "Out for delivery",
          "delivered": "Delivered",
          "setup_complete": "Setup complete",
          "teardown": "Teardown",
          "picked_up": "Picked up"
        },
        "sale": {
          "pending": "Pending",
          "in_preparation": "In preparation",
          "ready": "Ready",
          "out_for_delivery": "Out for delivery",
          "delivered": "Delivered"
        },
        "digital": {
          "pending": "Pending",
          "sent": "Sent",
          "redeemed": "Redeemed"
        }
      }
    },
    "chat": {
      "title": "Booking chat",
      "coming_soon": "The Firestore chat client will load here.",
      "firestore_note": "Chat messages are mirrored to the platform audit log.",
      "load_more": "Load more messages",
      "coming_soon_heading": "In-app chat coming soon",
      "coming_soon_body": "In-app messaging with your vendor is being built. Until then, you can reach them directly via WhatsApp.",
      "whatsapp_cta": "Message on WhatsApp",
      "back_to_booking": "Back to booking"
    },
    "modifications": {
      "title": "Vendor proposed changes",
      "load_error": "Could not load modifications.",
      "decide_error": "Could not process your response.",
      "no_pending": "No pending changes to review.",
      "proposed_at": "Proposed on {date}",
      "booking_total": "Current booking total",
      "accept": "Accept changes",
      "reject": "Reject",
      "processing": "Processing…"
    },
    "review": {
      "title": "Leave a review",
      "loading": "Loading…",
      "vendor_rating": "Vendor rating",
      "vendor_comment_placeholder": "How was working with this vendor?",
      "item_rating": "Service rating",
      "item_comment_placeholder": "Tell us about this service.",
      "submit": "Submit reviews",
      "submitting": "Saving…",
      "error_generic": "Could not save your reviews."
    },
    "wishlist": {
      "title": "Wishlist",
      "loading": "Loading wishlist…",
      "error": "Could not load your wishlist.",
      "retry": "Try again",
      "empty": "Your wishlist is empty.",
      "browse": "Browse services",
      "remove": "Remove",
      "vendors_hint": "Looking for saved vendors?",
      "view_saved_vendors": "View saved vendors"
    },
    "addresses": {
      "title": "Saved addresses",
      "add": "Add address",
      "cancel": "Cancel",
      "save": "Save",
      "saving": "Saving…",
      "remove": "Remove",
      "empty": "You haven't saved any addresses yet.",
      "default": "Default",
      "label": "Label",
      "label_placeholder": "e.g. Home, Office",
      "delete_confirm": "Delete",
      "delete_cancel": "Cancel",
      "address_deleted": "Address deleted",
      "edit": "Edit",
      "update": "Update",
      "updating": "Updating…",
      "address_updated": "Address updated",
      "empty_title": "No saved addresses yet",
      "empty_cta": "Add your first address"
    },
    "profile": {
      "title": "Profile",
      "loading": "Loading profile…",
      "name": "Full name",
      "email": "Email",
      "preferred_locale": "Preferred language",
      "save": "Save changes",
      "saving": "Saving…",
      "saved": "Saved.",
      "save_error": "Could not save. Please try again.",
      "load_error": "Could not load your profile. Please refresh."
    },
    "loyalty": {
      "title": "Loyalty points",
      "loading": "Loading balances…",
      "empty": "No loyalty programs yet. Book with a vendor to start earning.",
      "lifetime": "Lifetime earned",
      "capped_notice": "Showing top 10 vendors only.",
      "error": "Could not load your loyalty balances. Please try again.",
      "retry": "Retry",
      "points": "points",
      "expires_soon": "Expires soon",
      "how_to_earn_title": "How to earn more points",
      "how_to_earn_body": "Complete a booking with a participating vendor to earn loyalty points. Points are awarded automatically after your event is marked as completed. The more you book, the more you earn ”” check each vendor's program for their specific earn rates and redemption rules.",
      "total_card": {
        "title": "Total loyalty balance",
        "points": "{points} points",
        "worth": "Worth {amount}"
      },
      "expires_in_days": "Expires in {days} days · {date}",
      "expires_today": "Expires today"
    },
    "notifications": {
      "title": "Notification preferences",
      "loading": "Loading preferences…",
      "empty": "No preferences yet.",
      "on": "On",
      "off": "Off",
      "system": "Required",
      "channel": {
        "sms": "SMS",
        "email": "Email",
        "push": "Push notifications"
      },
      "categories": {
        "booking": "Booking updates",
        "marketing": "Promotions and offers",
        "system": "Account and security",
        "chat": "Chat messages",
        "payment": "Payments and refunds",
        "review": "Reviews and ratings"
      }
    },
    "wallet": {
      "title": "My wallet",
      "balance": "Available balance",
      "pending_refunds": "Pending refunds",
      "transactions": "Transaction history",
      "empty": "No transactions yet.",
      "loading": "Loading wallet…",
      "error": "Could not load wallet.",
      "load_more": "Load more",
      "credit": "Credit",
      "debit": "Debit",
      "expected_by": "Expected by {date}",
      "pending": "Pending",
      "filter": {
        "label": "Show",
        "all": "All",
        "credits": "Credits",
        "debits": "Debits",
        "refunds": "Refunds"
      }
    },
    "saved_vendors": {
      "title": "Saved Vendors",
      "loading": "Loading saved vendors…",
      "error": "Could not load saved vendors.",
      "retry": "Try again",
      "empty": "No saved vendors yet.",
      "browse": "Browse vendors",
      "remove": "Remove",
      "saved_on": "Saved",
      "view_profile": "View profile"
    }
  },
  "wishlist": {
    "add": "Save to wishlist",
    "remove": "Remove from wishlist",
    "added": "Added to wishlist",
    "removed": "Removed from wishlist",
    "error": "Something went wrong. Please try again."
  },
  "toast": {
    "wishlist_added": "Vendor saved to wishlist",
    "wishlist_removed": "Vendor removed from wishlist",
    "promo_applied": "Promo code applied",
    "promo_rejected": "Promo code invalid",
    "address_saved": "Address saved",
    "cart_item_removed": "Item removed from cart",
    "error_generic": "Something went wrong. Please try again."
  },
  "header": {
    "cart_count": "{count} items in cart",
    "cart_count_overflow": "9+ items in cart"
  },
  "p": {
    "faq": {
      "title": "Frequently Asked Questions",
      "body": "Our FAQ section is being set up. Please contact us for help.",
      "contact_prompt": "Still have questions?"
    },
    "contact": {
      "title": "Contact Us",
      "body": "Reach us at {email} and we'll get back to you within 24 hours.",
      "email_label": "Email us"
    },
    "how_it_works": {
      "title": "How InstaParty Works",
      "body": "Browse vendors, add services to your cart, and book securely through Paymob. Your booking holds for 24 hours while vendors confirm."
    }
  },
  "rating_aria": "Rated {avg} out of 5, {count, plural, one {# review} other {# reviews}}",
  "about": {
    "trust": {
      "title": "Our trust badges, explained",
      "subtitle": "Three signals you'll see next to vendor names. Here is what each one really means.",
      "verified_more": "Our trust team checks every vendor's business documents, ID, and bank account before they can publish a service.",
      "top_rated_more": "Calculated from real customer reviews: rolling 30-day rating must be 4.5 or higher with at least ten reviews.",
      "escrow_protected_more": "We hold the payment in escrow until your event is delivered. If something goes wrong, we mediate before any money moves.",
      "footer": "Have a question about a specific badge? Reach support from the bottom of any page."
    }
  },
  "your_event": {
    "empty_card": {
      "eyebrow": "Party Builder",
      "headline": "Tell us about your event",
      "body": "Two minutes to share the date, city, and occasion. We'll show you the right vendors and you can build the party from there.",
      "cta": "Start planning"
    }
  },
  "account": {
    "menu": {
      "logout": "Log out",
      "language_switch": "العربية",
      "view_profile": "View profile"
    }
  },
  "wallet": {
    "preview": {
      "label": "Wallet",
      "apply_at_checkout_hint": "You can apply your wallet balance at checkout."
    }
  },
  "loyalty": {
    "preview": {
      "label": "Loyalty",
      "earn_on_item": "Earn ~{points} points on this item"
    }
  },
  "offers": {
    "index": {
      "title": "Offers & deals",
      "subtitle": "Live promotions you can use right now.",
      "guest_title": "Sign in to see your offers",
      "guest_body": "Personalized promotions appear here once you're signed in."
    },
    "sign_in": "Sign in",
    "loading": "Loading offers…",
    "error": "We couldn't load the offers. Please try again.",
    "retry": "Retry",
    "empty": "No active offers right now — check back soon.",
    "card": {
      "code_label": "Code",
      "min_order": "Min. order {amount}",
      "scope": {
        "global": "All vendors",
        "category": "Selected category",
        "vendor": "This vendor",
        "service": "Selected service"
      }
    },
    "countdown": {
      "ends_in": "Ends in",
      "days": "{count, plural, one {# day} other {# days}}",
      "hours": "{count, plural, one {# hr} other {# hrs}}",
      "minutes": "{count, plural, one {# min} other {# mins}}",
      "seconds": "{count, plural, one {# sec} other {# secs}}",
      "ended": "Offer ended"
    }
  },
  "fields": {
    "phone_placeholder_e164": "+20 1XXX XXXXXX",
    "phone_country_code_label": "Country code +20"
  }
}
