/* =========================================================
   Lumina Voyages — i18n + Theme provider
   ========================================================= */

const TRANSLATIONS = {
  en: {
    nav_destinations:"Destinations", nav_journeys:"Journeys", nav_about:"About", nav_sign_in:"Sign in",
    hero_badge:"Handcrafted journeys to 60+ countries",
    hero_h1a:"Travel that feels", hero_h1b:"extraordinary",
    hero_sub:"From private sails through the Cyclades to the dunes of the Sahara — discover beautifully designed tours, then book in minutes.",
    hero_where:"Where to", hero_search_ph:"Search destinations", hero_journey_type:"Journey type",
    hero_when:"When", hero_search:"Search",
    hero_reviews:"12,400+ reviews", hero_countries:"Countries", hero_tailor:"Tailor-made", hero_support:"On-trip support",
    cat_all:"All journeys", cat_luxury:"Luxury & private", cat_adventure:"Adventure",
    cat_group:"Guided group", cat_city:"City breaks", cat_cruise:"Cruises", cat_cultural:"Cultural",
    featured_eyebrow:"Editor's selection", featured_h2a:"Journeys we're", featured_h2b:"dreaming about", featured_browse:"Browse all journeys",
    dest_eyebrow:"Browse by destination", dest_h2:"Where will you wander?", dest_journeys:"journeys",
    why_eyebrow:"The Lumina difference", why_h2a:"Beautifully planned,", why_h2b:"effortlessly yours",
    why_body:"We obsess over the details so you don't have to — from the view at breakfast to the timing of every sunset. The result is travel that feels personal, generous, and genuinely yours.",
    why_i1h:"Designed by specialists", why_i1x:"Every itinerary is built and tested by people who live and breathe their regions.",
    why_i2h:"Protected & flexible", why_i2x:"Financial protection, free changes up to 60 days out, and 24/7 support on the ground.",
    why_i3h:"Travel that gives back", why_i3x:"Carbon-balanced trips and partnerships with the communities you visit.",
    why_i4h:"Loved by 12,000+ travellers", why_i4x:"An average rating of 4.9 across more than a decade of journeys.",
    why_award:"Travellers' Choice", why_award_years:"Awarded 2024 · 2025 · 2026",
    cta_eyebrow:"Let's begin", cta_h2:"Your next great story starts here",
    cta_body:"Tell us how you like to travel and our specialists will craft something just for you — or browse our ready-to-book journeys.",
    cta_explore:"Explore journeys", cta_talk:"Talk to a specialist",
    card_view:"View", card_days:"days", card_private:"Private", card_max:"Max",
    card_from:"from", card_person:"/ person", card_popular:"Popular",
    listing_all:"Explore every journey", listing_search_ph:"Search destinations, regions, experiences…",
    listing_searching:"Searching…", listing_journey:"journey", listing_journeys:"journeys", listing_for:"for",
    listing_sort:"Sort by", listing_sort_popular:"Most popular", listing_sort_rating:"Top rated",
    listing_sort_price_lo:"Price: low to high", listing_sort_price_hi:"Price: high to low", listing_sort_duration:"Shortest first",
    listing_no_h:"No journeys match just yet", listing_no_p:"Try widening your filters or clearing the search.",
    listing_reset:"Reset filters", listing_filters:"Filters", listing_clear:"Clear all",
    listing_max_price:"Max price per person", listing_length:"Trip length", listing_activity:"Activity level",
    listing_short:"Up to 6 days", listing_mid:"7–8 days", listing_long:"9+ days",
    listing_help_h:"Need a hand choosing?", listing_help_p:"Our specialists know every one of these trips first-hand.",
    listing_expert:"Speak to an expert",
    detail_home:"Home", detail_journeys:"Journeys", detail_overview:"Overview", detail_itinerary:"Itinerary",
    detail_included_tab:"What's included", detail_reviews_tab:"Reviews",
    detail_exp_h:"The experience", detail_highlights:"Trip highlights",
    detail_day_h:"Day by day", detail_day_sub:"day itinerary · tap any day to expand",
    detail_inc_h:"What's included", detail_inc_yes:"Included", detail_inc_no:"Not included",
    detail_rev_h:"Traveller reviews", detail_write:"Write a review",
    detail_exp_body:"This is travel designed around the moments that stay with you — the unhurried mornings, the meals you'll still talk about, the views that make you go quiet. Every detail is handled, so all you have to do is be there.",
    detail_from:"from", detail_person:"/ person", detail_depart:"Departure date",
    detail_travellers:"Travellers", detail_traveller:"traveller", detail_taxes:"Taxes & fees",
    detail_total:"Total", detail_reserve:"Reserve your place", detail_cancel_note:"Free cancellation up to 60 days before",
    detail_call:"Questions? Call +1 (800) 555-0142", detail_also_love:"You might also love",
    detail_exp_l:"Experience", detail_val_l:"Value", detail_guides_l:"Guides", detail_acc_l:"Accommodation",
    detail_be_first:"Be the first to review this journey.", detail_photos:"+18 photos",
    detail_private_j:"Private journey", detail_pace:"pace", detail_days_nights:"days / ", detail_nights:" nights", detail_days:"days", detail_year_round:"Year round",
    rev_share:"Share your experience", rev_name:"Your name",
    rev_headline:"Headline (e.g. Trip of a lifetime)", rev_text:"Tell others what made it special…",
    rev_post:"Post review", rev_cancel:"Cancel",
    book_back:"Back to trip", book_back2:"Back",
    book_s1:"Your details", book_s2:"Enhance your trip", book_s3:"Payment", book_s4:"Confirmed",
    book_who:"Who's travelling?", book_who_sub:"We'll send your confirmation and trip documents here.",
    book_depart:"Departure date", book_travellers:"Travellers", book_lead:"Lead traveller",
    book_first:"First name", book_last:"Last name", book_email:"Email", book_phone:"Phone",
    book_country:"Country of residence", book_country_sel:"Select…",
    book_quote:"Email me a free, no-obligation quote and a specialist will be in touch within 24 hours.",
    book_make:"Make it yours", book_make_sub:"Optional touches to round out your journey. Add or skip — entirely up to you.",
    book_pay_h:"Secure payment", book_pay_sub:"Pay a {deposit} deposit today to reserve. Balance due 60 days before departure.",
    book_card:"Card", book_paypal:"PayPal", book_bank:"Bank transfer",
    book_card_num:"Card number", book_card_name:"Name on card", book_expiry:"Expiry", book_cvc:"CVC",
    book_redirect:"You'll be redirected to complete payment securely via {method} after confirming.",
    book_encrypted:"Your payment is encrypted and protected. This is a demo — no real card is charged.",
    book_continue:"Continue", book_confirm:"Confirm & pay",
    book_trip:"Trip", book_total:"Total", book_due:"Due today (20%)", book_taxes:"Taxes & fees",
    book_recommended:"Recommended", book_on_request:"On request", book_of:"of",
    conf_title:"Booking confirmed", conf_going:"You're going to", conf_email_sent:"A confirmation is on its way to",
    conf_ref:"Reference", conf_departs:"Departs", conf_travellers:"Travellers",
    conf_paid:"Paid today", conf_view:"View my trips", conf_browse:"Browse more journeys",
    conf_check:"Check your email", conf_call:"We'll call to plan details", conf_free:"Free changes for 60 days",
    acc_welcome:"Welcome back,", acc_signout:"Sign out",
    acc_trips:"My trips", acc_saved:"Saved", acc_profile:"Profile",
    acc_no_trips_h:"No trips booked yet", acc_no_trips_p:"When you book a journey it'll appear here with all your details and documents.",
    acc_explore:"Explore journeys", acc_no_saved_h:"No saved trips yet",
    acc_no_saved_p:"Tap the heart on any journey to save it here and compare your favourites.",
    acc_find:"Find something to love", acc_saved_label:"saved",
    acc_journey:"journey", acc_journeys:"journeys",
    acc_cancel:"Cancel", acc_view_itin:"View itinerary", acc_balance:"balance due before departure",
    acc_personal:"Personal details", acc_name:"Full name", acc_email:"Email",
    acc_phone:"Phone", acc_country:"Country", acc_save:"Save changes",
    acc_prefs:"Travel preferences", acc_circle:"Lumina Circle member",
    acc_circle_text:"Earn 2% back in travel credit on every booking and unlock early access to new journeys.",
    auth_welcome:"Welcome back", auth_create:"Create your account",
    auth_signin_h:"Sign in", auth_signin_sub:"Sign in to manage your trips and saved journeys.",
    auth_signup_h:"Create account", auth_signup_sub:"Join to book, save and track your adventures.",
    auth_name:"Full name", auth_email:"Email address", auth_password:"Password",
    auth_confirm:"Confirm password", auth_forgot:"Forgot password?",
    auth_signin_btn:"Sign in", auth_signup_btn:"Create account", auth_or:"or",
    auth_signing_in:"Signing in…",
    auth_no_account:"Don't have an account?", auth_have_account:"Already have an account?",
    auth_create_link:"Create an account", auth_signin_link:"Sign in",
    acc_no_trips:"No trips yet", acc_no_trips_sub:"Book a journey and it will appear here.",
    acc_no_saved:"No saved tours", acc_no_saved_sub:"Heart a tour to save it for later.",
    acc_explore:"Explore journeys", acc_guests:"guests",
    footer_tagline:"Curated journeys to the world's most beautiful places — designed by people who've been there.",
    footer_copy:"© 2026 Lumina Voyages. Crafted for the curious.",
    footer_privacy:"Privacy", footer_terms:"Terms", footer_cookies:"Cookies",
    footer_journeys:"Journeys", footer_company:"Company", footer_support:"Support",
    theme_dark:"Dark", theme_light:"Light",
    anytime:"Anytime", summer:"Summer 2026", autumn:"Autumn 2026", winter:"Winter 2026", spring:"Spring 2027",
    save_badge:"SAVE", save_msg:"Saved to your trips", unsave_msg:"Removed from saved",
  },
  ru: {
    nav_destinations:"Направления", nav_journeys:"Путешествия", nav_about:"О нас", nav_sign_in:"Войти",
    hero_badge:"Индивидуальные путешествия в 60+ стран",
    hero_h1a:"Путешествие,", hero_h1b:"незабываемое",
    hero_sub:"От парусной яхты на Кикладах до дюн Сахары — откройте красиво составленные туры и забронируйте за минуты.",
    hero_where:"Куда", hero_search_ph:"Поиск направлений", hero_journey_type:"Тип тура",
    hero_when:"Когда", hero_search:"Поиск",
    hero_reviews:"12 400+ отзывов", hero_countries:"Стран", hero_tailor:"Под вас", hero_support:"Поддержка",
    cat_all:"Все туры", cat_luxury:"Люкс и приватные", cat_adventure:"Приключения",
    cat_group:"Групповые", cat_city:"Городские", cat_cruise:"Круизы", cat_cultural:"Культурные",
    featured_eyebrow:"Выбор редактора", featured_h2a:"Путешествия, о которых", featured_h2b:"мы мечтаем", featured_browse:"Все туры",
    dest_eyebrow:"По направлениям", dest_h2:"Куда вы отправитесь?", dest_journeys:"туров",
    why_eyebrow:"Преимущества Lumina", why_h2a:"Прекрасно спланировано,", why_h2b:"создано для вас",
    why_body:"Мы заботимся о каждой детали — от вида за завтраком до заката. Результат — путешествие, которое ощущается личным и действительно вашим.",
    why_i1h:"Создано специалистами", why_i1x:"Каждый маршрут создан и проверен людьми, которые знают свои регионы.",
    why_i2h:"Защита и гибкость", why_i2x:"Финансовая защита, бесплатные изменения за 60 дней и круглосуточная поддержка.",
    why_i3h:"Ответственный туризм", why_i3x:"Углерод-нейтральные поездки и партнёрство с местными сообществами.",
    why_i4h:"12 000+ путешественников", why_i4x:"Средний рейтинг 4,9 за более чем десятилетие.",
    why_award:"Выбор путешественников", why_award_years:"Награда 2024 · 2025 · 2026",
    cta_eyebrow:"Начнём", cta_h2:"Ваша следующая история начинается здесь",
    cta_body:"Расскажите, как вы любите путешествовать, и наши специалисты создадут что-то именно для вас.",
    cta_explore:"Смотреть туры", cta_talk:"Поговорить со специалистом",
    card_view:"Смотреть", card_days:"дн.", card_private:"Приватный", card_max:"Макс.",
    card_from:"от", card_person:"/ чел.", card_popular:"Популярный",
    listing_all:"Все путешествия", listing_search_ph:"Поиск направлений, регионов, впечатлений…",
    listing_searching:"Поиск…", listing_journey:"тур", listing_journeys:"туров", listing_for:"по запросу",
    listing_sort:"Сортировка", listing_sort_popular:"Самые популярные", listing_sort_rating:"По рейтингу",
    listing_sort_price_lo:"Цена: по возрастанию", listing_sort_price_hi:"Цена: по убыванию", listing_sort_duration:"Сначала короткие",
    listing_no_h:"Туры не найдены", listing_no_p:"Расширьте фильтры или очистите поиск.",
    listing_reset:"Сбросить фильтры", listing_filters:"Фильтры", listing_clear:"Очистить всё",
    listing_max_price:"Макс. цена на человека", listing_length:"Длительность", listing_activity:"Уровень активности",
    listing_short:"До 6 дней", listing_mid:"7–8 дней", listing_long:"9+ дней",
    listing_help_h:"Нужна помощь?", listing_help_p:"Наши специалисты знают каждое путешествие.",
    listing_expert:"Связаться со специалистом",
    detail_home:"Главная", detail_journeys:"Путешествия", detail_overview:"Обзор", detail_itinerary:"Маршрут",
    detail_included_tab:"Что включено", detail_reviews_tab:"Отзывы",
    detail_exp_h:"Впечатления", detail_highlights:"Основные события",
    detail_day_h:"День за днём", detail_day_sub:"дн. маршрут · нажмите для раскрытия",
    detail_inc_h:"Что включено", detail_inc_yes:"Включено", detail_inc_no:"Не включено",
    detail_rev_h:"Отзывы путешественников", detail_write:"Написать отзыв",
    detail_exp_body:"Путешествие, созданное вокруг моментов, которые остаются с вами — неспешные утра, обеды, о которых ещё расскажете, виды, от которых замолкаешь.",
    detail_from:"от", detail_person:"/ чел.", detail_depart:"Дата отъезда",
    detail_travellers:"Путешественники", detail_traveller:"путешественник", detail_taxes:"Налоги",
    detail_total:"Итого", detail_reserve:"Забронировать", detail_cancel_note:"Бесплатная отмена за 60 дней",
    detail_call:"Вопросы? +1 (800) 555-0142", detail_also_love:"Вам также может понравиться",
    detail_exp_l:"Впечатления", detail_val_l:"Ценность", detail_guides_l:"Гиды", detail_acc_l:"Проживание",
    detail_be_first:"Будьте первым, кто оставит отзыв.", detail_photos:"+18 фото",
    detail_private_j:"Приватный тур", detail_pace:"темп", detail_days_nights:"дн. / ", detail_nights:" ночей", detail_days:"дн.", detail_year_round:"Круглый год",
    rev_share:"Поделитесь впечатлениями", rev_name:"Ваше имя",
    rev_headline:"Заголовок (например: Тур всей жизни)", rev_text:"Расскажите, что сделало тур особенным…",
    rev_post:"Опубликовать", rev_cancel:"Отмена",
    book_back:"К туру", book_back2:"Назад",
    book_s1:"Ваши данные", book_s2:"Улучшите тур", book_s3:"Оплата", book_s4:"Подтверждено",
    book_who:"Кто едет?", book_who_sub:"Мы отправим подтверждение и документы сюда.",
    book_depart:"Дата отъезда", book_travellers:"Путешественники", book_lead:"Главный путешественник",
    book_first:"Имя", book_last:"Фамилия", book_email:"Email", book_phone:"Телефон",
    book_country:"Страна проживания", book_country_sel:"Выберите…",
    book_quote:"Пришлите мне бесплатное предложение, специалист свяжется в течение 24 часов.",
    book_make:"Сделайте тур своим", book_make_sub:"Дополнительные опции. Добавьте или пропустите — всё на ваш выбор.",
    book_pay_h:"Безопасная оплата", book_pay_sub:"Внесите {deposit} депозит сегодня. Остаток — за 60 дней до отъезда.",
    book_card:"Карта", book_paypal:"PayPal", book_bank:"Банк. перевод",
    book_card_num:"Номер карты", book_card_name:"Имя на карте", book_expiry:"Срок действия", book_cvc:"CVC",
    book_redirect:"Вы будете перенаправлены для оплаты через {method}.",
    book_encrypted:"Платёж зашифрован. Это демо — реальная карта не списывается.",
    book_continue:"Продолжить", book_confirm:"Подтвердить и оплатить",
    book_trip:"Тур", book_total:"Итого", book_due:"К оплате сейчас (20%)", book_taxes:"Налоги",
    book_recommended:"Рекомендуем", book_on_request:"По запросу",
    conf_title:"Бронирование подтверждено", conf_going:"Вы едете в", conf_email_sent:"Подтверждение отправлено на",
    conf_ref:"Номер", conf_departs:"Отъезд", conf_travellers:"Путешественников",
    conf_paid:"Оплачено", conf_view:"Мои поездки", conf_browse:"Больше туров",
    conf_check:"Проверьте email", conf_call:"Мы позвоним для планирования", conf_free:"Бесплатные изменения 60 дней",
    acc_welcome:"С возвращением,", acc_signout:"Выйти",
    acc_trips:"Мои поездки", acc_saved:"Сохранённые", acc_profile:"Профиль",
    acc_no_trips_h:"Нет забронированных поездок", acc_no_trips_p:"Когда вы забронируете тур, он появится здесь.",
    acc_explore:"Смотреть туры", acc_no_saved_h:"Нет сохранённых туров",
    acc_no_saved_p:"Нажмите сердечко на любом туре, чтобы сохранить.",
    acc_find:"Найти что-то особенное", acc_saved_label:"сохранено",
    acc_journey:"тур", acc_journeys:"туров",
    acc_cancel:"Отменить", acc_view_itin:"Маршрут", acc_balance:"остаток до отъезда",
    acc_personal:"Личные данные", acc_name:"Полное имя", acc_email:"Email",
    acc_phone:"Телефон", acc_country:"Страна", acc_save:"Сохранить изменения",
    acc_prefs:"Предпочтения", acc_circle:"Участник Lumina Circle",
    acc_circle_text:"Получайте 2% кэшбэк на каждом бронировании и ранний доступ к новым турам.",
    auth_welcome:"С возвращением", auth_create:"Создайте аккаунт",
    auth_signin_h:"Войти", auth_signup_h:"Создать аккаунт",
    auth_signin_sub:"Войдите, чтобы управлять поездками.",
    auth_signup_sub:"Присоединяйтесь для бронирования и отслеживания приключений.",
    auth_name:"Полное имя", auth_email:"Email", auth_password:"Пароль", auth_pass:"Пароль",
    auth_confirm:"Подтвердите пароль", auth_forgot:"Забыли пароль?",
    auth_signin_btn:"Войти", auth_signup_btn:"Создать аккаунт", auth_or:"или",
    auth_signing_in:"Входим…",
    auth_no_account:"Нет аккаунта?", auth_have_account:"Уже есть аккаунт?",
    auth_guest:"Продолжить как гость", auth_new:"Новый пользователь?", auth_have:"Уже есть аккаунт?",
    auth_create_link:"Создать аккаунт", auth_signin_link:"Войти",
    book_of:"из",
    footer_tagline:"Кураторские путешествия по самым красивым местам мира — разработанные людьми, которые там побывали.",
    footer_copy:"© 2026 Lumina Voyages. Создано для любопытных.",
    footer_privacy:"Конфиденциальность", footer_terms:"Условия", footer_cookies:"Куки",
    footer_journeys:"Путешествия", footer_company:"Компания", footer_support:"Поддержка",
    theme_dark:"Тёмная", theme_light:"Светлая",
    anytime:"Любое время", summer:"Лето 2026", autumn:"Осень 2026", winter:"Зима 2026", spring:"Весна 2027",
    save_badge:"СКИДКА", save_msg:"Сохранено", unsave_msg:"Удалено из сохранённых",
  },
  uz: {
    nav_destinations:"Yo'nalishlar", nav_journeys:"Sayohatlar", nav_about:"Biz haqimizda", nav_sign_in:"Kirish",
    hero_badge:"60+ mamlakatga sayohatlar",
    hero_h1a:"Sayohat –", hero_h1b:"g'ayrioddiy",
    hero_sub:"Kikladalardagi yelkanli kemadan Sahara qumloqlarigacha — chiroyli turlarni toping va daqiqalar ichida band qiling.",
    hero_where:"Qayerga", hero_search_ph:"Yo'nalish qidirish", hero_journey_type:"Sayohat turi",
    hero_when:"Qachon", hero_search:"Qidirish",
    hero_reviews:"12 400+ sharh", hero_countries:"Mamlakatlar", hero_tailor:"Siz uchun", hero_support:"Qo'llab-quvvatlash",
    cat_all:"Barcha sayohatlar", cat_luxury:"Hashamat va xususiy", cat_adventure:"Sarguzasht",
    cat_group:"Guruh sayohati", cat_city:"Shahar sayohati", cat_cruise:"Kruizlar", cat_cultural:"Madaniy",
    featured_eyebrow:"Muharrir tanlovi", featured_h2a:"Orzulaydigan", featured_h2b:"sayohatlarimiz", featured_browse:"Barcha sayohatlar",
    dest_eyebrow:"Yo'nalish bo'yicha", dest_h2:"Qayerga borasiz?", dest_journeys:"sayohat",
    why_eyebrow:"Lumina farqi", why_h2a:"Mukammal rejalashtirilgan,", why_h2b:"sizniki",
    why_body:"Har bir tafsilotni o'ylaymiz — nonushtadagi manzaradan quyosh botishigacha. Natija — shaxsiy va haqiqatan siznikiday his etiladigan sayohat.",
    why_i1h:"Mutaxassislar yaratgan", why_i1x:"Har bir marshrut o'z mintaqasini yaxshi biladigan odamlar tomonidan yaratilgan.",
    why_i2h:"Himoyalangan va moslashuvchan", why_i2x:"Moliyaviy himoya, 60 kun oldin bepul o'zgartirishlar va 24/7 qo'llab-quvvatlash.",
    why_i3h:"Qaytarib beradigan sayohat", why_i3x:"Uglerod-neytral sayohatlar va mahalliy jamoatlar bilan hamkorlik.",
    why_i4h:"12 000+ sayoatchilar sevgisi", why_i4x:"O'n yildan ortiq davomida o'rtacha 4,9 reyting.",
    why_award:"Sayohatchilar tanlovi", why_award_years:"Mukofot 2024 · 2025 · 2026",
    cta_eyebrow:"Boshlaylik", cta_h2:"Keyingi ajoyib hikoyangiz shu yerdan boshlanadi",
    cta_body:"Qanday sayohat qilishni yoqtirishingizni ayting va mutaxassislarimiz siz uchun maxsus narsa yaratadi.",
    cta_explore:"Sayohatlarni ko'rish", cta_talk:"Mutaxassis bilan gaplashing",
    card_view:"Ko'rish", card_days:"kun", card_private:"Xususiy", card_max:"Maks.",
    card_from:"dan", card_person:"/ kishi", card_popular:"Mashhur",
    listing_all:"Barcha sayohatlarni ko'rish", listing_search_ph:"Yo'nalishlar, mintaqalar, tajribalar…",
    listing_searching:"Qidirilmoqda…", listing_journey:"sayohat", listing_journeys:"sayohat", listing_for:"uchun",
    listing_sort:"Saralash", listing_sort_popular:"Eng mashhur", listing_sort_rating:"Eng yuqori reyting",
    listing_sort_price_lo:"Narx: kamdan ko'pga", listing_sort_price_hi:"Narx: ko'pdan kamga", listing_sort_duration:"Avval qisqa",
    listing_no_h:"Sayohat topilmadi", listing_no_p:"Filtrlarni kengaytiring yoki qidiruvni tozalang.",
    listing_reset:"Filtrlarni tiklash", listing_filters:"Filtrlar", listing_clear:"Hammasini tozalash",
    listing_max_price:"Kishi boshiga max narx", listing_length:"Davomiyligi", listing_activity:"Faollik darajasi",
    listing_short:"6 kungacha", listing_mid:"7–8 kun", listing_long:"9+ kun",
    listing_help_h:"Yordam kerakmi?", listing_help_p:"Mutaxassislarimiz har bir sayohatni birinchi qo'ldan biladi.",
    listing_expert:"Mutaxassis bilan bog'lanish",
    detail_home:"Bosh sahifa", detail_journeys:"Sayohatlar", detail_overview:"Umumiy ko'rinish", detail_itinerary:"Marshrut",
    detail_included_tab:"Nima kiradi", detail_reviews_tab:"Sharhlar",
    detail_exp_h:"Tajriba", detail_highlights:"Asosiy voqealar",
    detail_day_h:"Kun badan", detail_day_sub:"kunlik marshrut · kengaytirish uchun bosing",
    detail_inc_h:"Nima kiradi", detail_inc_yes:"Kiradi", detail_inc_no:"Kirmaydi",
    detail_rev_h:"Sayohatchilar sharhlari", detail_write:"Sharh yozish",
    detail_exp_body:"Bu sizda qoladigan lahzalar atrofida yaratilgan sayohat — shoshilmagan tonglar, hali gapirib yuradigan ovqatlar, jimib qoladigan manzaralar.",
    detail_from:"dan", detail_person:"/ kishi", detail_depart:"Jo'nish sanasi",
    detail_travellers:"Sayohatchilar", detail_traveller:"sayohatchi", detail_taxes:"Soliqlar",
    detail_total:"Jami", detail_reserve:"O'rningizni band qiling", detail_cancel_note:"60 kun oldin bepul bekor qilish",
    detail_call:"Savollar? +1 (800) 555-0142", detail_also_love:"Sizga yoqishi mumkin",
    detail_exp_l:"Tajriba", detail_val_l:"Qiymat", detail_guides_l:"Gidlar", detail_acc_l:"Turar joy",
    detail_be_first:"Bu sayohat haqida birinchi sharh qoldiring.", detail_photos:"+18 rasm",
    detail_private_j:"Xususiy sayohat", detail_pace:"temp", detail_days_nights:"kun / ", detail_nights:" kecha", detail_days:"kun", detail_year_round:"Yil davomida",
    rev_share:"Tajribangizni ulashing", rev_name:"Ismingiz",
    rev_headline:"Sarlavha (masalan: Umrimning sayohati)", rev_text:"Bu narsani maxsus qilgan narsani ayting…",
    rev_post:"Sharh qoldirish", rev_cancel:"Bekor qilish",
    book_back:"Turga qaytish", book_back2:"Orqaga",
    book_s1:"Ma'lumotlaringiz", book_s2:"Sayohatni yaxshilang", book_s3:"To'lov", book_s4:"Tasdiqlandi",
    book_who:"Kim boradi?", book_who_sub:"Tasdiqlash va hujjatlarni shu yerga yuboramiz.",
    book_depart:"Jo'nish sanasi", book_travellers:"Sayohatchilar", book_lead:"Asosiy sayohatchi",
    book_first:"Ism", book_last:"Familiya", book_email:"Email", book_phone:"Telefon",
    book_country:"Yashash mamlakati", book_country_sel:"Tanlang…",
    book_quote:"Bepul taklif yuboring, mutaxassis 24 soat ichida bog'lanadi.",
    book_make:"Sayohatingizni shaxsiylashtiring", book_make_sub:"Ixtiyoriy qo'shimchalar. Qo'shing yoki o'tkazib yuboring.",
    book_pay_h:"Xavfsiz to'lov", book_pay_sub:"Bugun {deposit} depozit to'lang. Qolgan qism jo'nashdan 60 kun oldin.",
    book_card:"Karta", book_paypal:"PayPal", book_bank:"Bank o'tkazma",
    book_card_num:"Karta raqami", book_card_name:"Kartadagi ism", book_expiry:"Amal muddati", book_cvc:"CVC",
    book_redirect:"{method} orqali to'lovni yakunlash uchun yo'naltirilasiz.",
    book_encrypted:"To'lovingiz shifrlangan. Bu demo — haqiqiy karta debitlanmaydi.",
    book_continue:"Davom etish", book_confirm:"Tasdiqlash va to'lash",
    book_trip:"Tur", book_total:"Jami", book_due:"Bugun to'lash (20%)", book_taxes:"Soliqlar",
    book_recommended:"Tavsiya etiladi", book_on_request:"So'rov bo'yicha",
    conf_title:"Bron tasdiqlandi", conf_going:"Siz borasiz", conf_email_sent:"Tasdiqlash yuborildi",
    conf_ref:"Raqam", conf_departs:"Jo'nish", conf_travellers:"Sayohatchilar",
    conf_paid:"Bugun to'langan", conf_view:"Mening sayohatlarim", conf_browse:"Ko'proq sayohat",
    conf_check:"Emailni tekshiring", conf_call:"Rejalash uchun qo'ng'iroq qilamiz", conf_free:"60 kun bepul o'zgartirishlar",
    acc_welcome:"Qaytib keldingiz,", acc_signout:"Chiqish",
    acc_trips:"Mening sayohatlarim", acc_saved:"Saqlangan", acc_profile:"Profil",
    acc_no_trips_h:"Hali bron qilingan sayohat yo'q", acc_no_trips_p:"Sayohat band qilganingizda, u bu yerda paydo bo'ladi.",
    acc_explore:"Sayohatlarni ko'rish", acc_no_saved_h:"Hali saqlangan sayohat yo'q",
    acc_no_saved_p:"Istalgan sayohatdagi yurakni bosib uni shu yerga saqlang.",
    acc_find:"Yoqqan narsani toping", acc_saved_label:"saqlangan",
    acc_journey:"sayohat", acc_journeys:"sayohat",
    acc_cancel:"Bekor qilish", acc_view_itin:"Marshrutni ko'rish", acc_balance:"jo'nashdan oldin to'lash qoldi",
    acc_personal:"Shaxsiy ma'lumotlar", acc_name:"To'liq ism", acc_email:"Email",
    acc_phone:"Telefon", acc_country:"Mamlakat", acc_save:"O'zgarishlarni saqlash",
    acc_prefs:"Sayohat afzalliklari", acc_circle:"Lumina Circle a'zosi",
    acc_circle_text:"Har bir bronlashda 2% kredit oling va yangi sayohatlarga erta kirish imkoniyatiga ega bo'ling.",
    auth_welcome:"Qaytib keldingiz", auth_create:"Hisob yaratish",
    auth_signin_h:"Kirish", auth_signup_h:"Hisob yaratish",
    auth_signin_sub:"Sayohatlaringizni boshqarish uchun kiring.",
    auth_signup_sub:"Sarguzashtlaringizni band qilish uchun qo'shiling.",
    auth_name:"To'liq ism", auth_email:"Email", auth_password:"Parol", auth_pass:"Parol",
    auth_confirm:"Parolni tasdiqlang", auth_forgot:"Parolni unutdingizmi?",
    auth_signin_btn:"Kirish", auth_signup_btn:"Hisob yaratish", auth_or:"yoki",
    auth_signing_in:"Kirilmoqda…",
    auth_no_account:"Hisobingiz yo'qmi?", auth_have_account:"Hisobingiz bormi?",
    auth_guest:"Demo mehmon sifatida davom etish", auth_new:"Lumina'ga yangi?", auth_have:"Hisobingiz bormi?",
    auth_create_link:"Hisob yaratish", auth_signin_link:"Kirish",
    book_of:"dan",
    footer_tagline:"Dunyoning eng go'zal joylariga kuratorlik sayohatlari — u yerlarda bo'lgan odamlar tomonidan yaratilgan.",
    footer_copy:"© 2026 Lumina Voyages. Qiziquvchanlar uchun yaratilgan.",
    footer_privacy:"Maxfiylik", footer_terms:"Shartlar", footer_cookies:"Cookie",
    footer_journeys:"Sayohatlar", footer_company:"Kompaniya", footer_support:"Yordam",
    theme_dark:"Qora", theme_light:"Och",
    anytime:"Istalgan vaqt", summer:"Yoz 2026", autumn:"Kuz 2026", winter:"Qish 2026", spring:"Bahor 2027",
    save_badge:"TEJASH", save_msg:"Saqlandi", unsave_msg:"Saqlanganlardan o'chirildi",
  },
};

const I18nCtx = React.createContext({ t: (k) => k, lang: "en", setLang: () => {}, theme: "light", setTheme: () => {} });

function LangThemeProvider({ children }) {
  const [lang, setLangState] = React.useState(() => localStorage.getItem("lv_lang") || "en");
  const [theme, setThemeState] = React.useState(() => localStorage.getItem("lv_theme") || "light");

  const setLang = (l) => { setLangState(l); localStorage.setItem("lv_lang", l); };
  const setTheme = (th) => {
    setThemeState(th);
    localStorage.setItem("lv_theme", th);
    document.documentElement.setAttribute("data-theme", th);
  };

  React.useEffect(() => {
    document.documentElement.setAttribute("data-theme", theme);
  }, []);

  const dict = TRANSLATIONS[lang] || TRANSLATIONS.en;
  const t = (key) => dict[key] || TRANSLATIONS.en[key] || key;

  return (
    <I18nCtx.Provider value={{ t, lang, setLang, theme, setTheme }}>
      {children}
    </I18nCtx.Provider>
  );
}

function useI18n() { return React.useContext(I18nCtx); }

Object.assign(window, { LangThemeProvider, useI18n });
