// ────────────────────────────────────────────────────────────
// Nukus 89 — data: translations + menus + events
// Real data sourced from Yandex Maps listing
// ────────────────────────────────────────────────────────────

// Currency: UZS (сум). Prices stored as integers; formatted with thousand-separator.
const CURRENCY = { ru: 'сум', en: 'soum', uz: "so'm" };
function fmtPrice(n, lang) {
  return Number(n).toLocaleString('ru-RU').replace(/,/g, ' ') + ' ' + (CURRENCY[lang] || 'UZS');
}

const T = {
  ru: {
    closed: "ЗАКРЫТО",
    book: "БРОНЬ",
    kitchen: "КУХНЯ",
    bar: "БАР",
    dj: "DJ",
    events: "АФИША",
    my: "МОЁ",
    home: "ГЛАВНАЯ",
    back: "НАЗАД",
    next: "ДАЛЕЕ",
    confirm: "ПОДТВЕРДИТЬ",
    select_date: "ВЫБЕРИТЕ ДАТУ",
    select_time: "ВЫБЕРИТЕ ВРЕМЯ",
    guests: "ГОСТИ",
    select_table: "ВЫБЕРИТЕ СТОЛ",
    total: "ИТОГО",
    free: "СВОБ.",
    taken: "ЗАН.",
    selected: "ВЫБРАН",
    bar_zone: "У БАРА",
    window_zone: "У ОКНА",
    main_hall: "ОСН. ЗАЛ",
    vip: "VIP",
    table: "СТОЛ",
    persons: "чел.",
    cocktails: "КОКТЕЙЛИ",
    spirits: "КРЕПКИЙ",
    wine: "ВИНО",
    beer: "ПИВО",
    nonalc: "БЕЗАЛКОГОЛЬНОЕ",
    starters: "ЗАКУСКИ",
    salads: "САЛАТЫ",
    soups: "СУПЫ",
    mains: "ОСНОВНЫЕ",
    desserts: "ДЕСЕРТЫ",
    sides: "ГАРНИРЫ",
    sauces: "СОУСЫ",
    breakfast: "ЗАВТРАКИ",
    all: "ВСЁ",
    stopped: "СТОП",
    vol: "крепость",
    weight: "вес",
    composition: "состав",
    upcoming: "БЛИЖАЙШИЕ",
    booking_for: "БРОНЬ НА",
    your_booking: "ВАША БРОНЬ",
    booking_code: "КОД БРОНИ",
    paid: "ОПЛАЧЕНО",
    no_bookings: "БРОНЕЙ НЕТ",
    welcome: "ДОБРО ПОЖАЛОВАТЬ",
    address: "ТАШКЕНТ · УЛ. НУКУС, 89 · 4 ЭТАЖ",
    address_note: "ВХОД СО СТОРОНЫ ПАРКОВКИ",
    phone: "+998 91 181 89 89",
    sub_speakeasy: "РЕСТОРАН / БАР / ГАЛЕРЕЯ",
    register: "ЗАПИСАТЬСЯ",
    signed_up: "✓ НАПОМНИМ В ДЕНЬ СОБЫТИЯ",
    entry: "ВХОД",
    free_entry: "ВХОД СВОБОДНЫЙ",
    by_donation: "ПО ДОНАТУ",
    age: "21+",
    age_warning: "АЛКОГОЛЬ ПРОДАЁТСЯ ТОЛЬКО ЛИЦАМ СТАРШЕ 21 ГОДА. ПОДТВЕРДИТЕ СВОЙ ВОЗРАСТ.",
    age_confirm: "МНЕ ЕСТЬ 21",
    months: ["ЯНВ","ФЕВ","МАР","АПР","МАЙ","ИЮН","ИЮЛ","АВГ","СЕН","ОКТ","НОЯ","ДЕК"],
    weekdays: ["ВС","ПН","ВТ","СР","ЧТ","ПТ","СБ"],
    noshow_warning: "Если вы не придёте в течение 10 минут после назначенного времени — бронь будет автоматически отменена.",
    booking_pending_title: "ЗАЯВКА ПРИНЯТА",
    booking_pending_note: "ОЖИДАЙТЕ ПОДТВЕРЖДЕНИЯ — ПРИШЛЁМ СООБЩЕНИЕ В TELEGRAM",
    status: "СТАТУС",
    st_pending: "ОЖИДАЕТ ПОДТВЕРЖДЕНИЯ",
    st_confirmed: "ПОДТВЕРЖДЕНА",
    st_cancelled: "ОТМЕНЕНА",
    comment_label: "КОММЕНТАРИЙ · НЕОБЯЗАТЕЛЬНО",
    comment_placeholder: "Пожелание, повод, аллергии, вопрос…",
    fri_sat_late_note: "ПТ/СБ: после 21:00 — только живая посадка",
    open_till: "ОТКРЫТО ДО",
    closed_till: "ЗАКРЫТО ДО",
    today: "СЕГОДНЯ",
    tomorrow: "ЗАВТРА",
    contact: "КОНТАКТЫ",
    instagram: "INSTAGRAM",
    telegram: "TELEGRAM",
    route: "МАРШРУТ",
    call: "ПОЗВОНИТЬ",
    rating: "РЕЙТИНГ",
    club: "КЛУБ",
    loyalty_card: "КАРТА ЛОЯЛЬНОСТИ",
    loyalty_join: "ВСТУПИТЬ В КЛУБ",
    loyalty_join_note: "50 000 бонусов за регистрацию + кэшбэк с каждого визита",
    birthday_label: "ДАТА РОЖДЕНИЯ · НЕОБЯЗАТЕЛЬНО",
    joining: "ВСТУПАЕМ…",
    cashback: "КЭШБЭК",
    bonus_balance: "БОНУСНЫЙ СЧЁТ",
    level: "УРОВЕНЬ",
    max_level: "МАКСИМАЛЬНЫЙ УРОВЕНЬ",
    to_next_level: "ДО СЛЕД. УРОВНЯ",
    card_number: "НОМЕР КАРТЫ",
    show_to_staff: "ПОКАЖИТЕ ОФИЦИАНТУ",
    history: "ИСТОРИЯ",
    no_history: "ПОКА ПУСТО",
    total_spent_label: "СУММА ЗАКАЗОВ",
    tx_welcome: "ПРИВЕТСТВЕННЫЙ БОНУС",
    tx_accrue: "НАЧИСЛЕНО",
    tx_redeem: "СПИСАНО",
    tx_gift: "ПОДАРОК",
  },
  en: {
    closed: "CLOSED",
    book: "BOOK",
    kitchen: "KITCHEN",
    bar: "BAR",
    dj: "DJ",
    events: "EVENTS",
    my: "ME",
    home: "HOME",
    back: "BACK",
    next: "NEXT",
    confirm: "CONFIRM",
    select_date: "SELECT DATE",
    select_time: "SELECT TIME",
    guests: "GUESTS",
    select_table: "SELECT TABLE",
    total: "TOTAL",
    free: "FREE",
    taken: "TAKEN",
    selected: "SELECTED",
    bar_zone: "AT BAR",
    window_zone: "WINDOW",
    main_hall: "MAIN HALL",
    vip: "VIP",
    table: "TABLE",
    persons: "p.",
    cocktails: "COCKTAILS",
    spirits: "SPIRITS",
    wine: "WINE",
    beer: "BEER",
    nonalc: "NON-ALCOHOLIC",
    starters: "STARTERS",
    salads: "SALADS",
    soups: "SOUPS",
    mains: "MAINS",
    desserts: "DESSERTS",
    sides: "SIDES",
    sauces: "SAUCES",
    breakfast: "BREAKFAST",
    all: "ALL",
    stopped: "OUT",
    vol: "abv",
    weight: "weight",
    composition: "composition",
    upcoming: "UPCOMING",
    booking_for: "BOOKING FOR",
    your_booking: "YOUR BOOKING",
    booking_code: "BOOKING CODE",
    paid: "PAID",
    no_bookings: "NO BOOKINGS",
    welcome: "WELCOME",
    address: "TASHKENT · 89 NUKUS ST. · 4th FL",
    address_note: "ENTRANCE FROM THE PARKING",
    phone: "+998 91 181 89 89",
    sub_speakeasy: "RESTAURANT / BAR / GALLERY",
    register: "REGISTER",
    signed_up: "✓ WE'LL REMIND YOU",
    entry: "ENTRY",
    free_entry: "FREE ENTRY",
    by_donation: "BY DONATION",
    age: "21+",
    age_warning: "ALCOHOL IS SERVED TO GUESTS 21 AND OVER ONLY. PLEASE CONFIRM YOUR AGE.",
    age_confirm: "I AM 21+",
    months: ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"],
    weekdays: ["SUN","MON","TUE","WED","THU","FRI","SAT"],
    noshow_warning: "If you don't show up within 10 minutes of your booking time, the reservation will be automatically cancelled.",
    booking_pending_title: "REQUEST RECEIVED",
    booking_pending_note: "AWAIT CONFIRMATION — WE'LL MESSAGE YOU IN TELEGRAM",
    status: "STATUS",
    st_pending: "PENDING",
    st_confirmed: "CONFIRMED",
    st_cancelled: "CANCELLED",
    comment_label: "COMMENT · OPTIONAL",
    comment_placeholder: "Requests, occasion, allergies, questions…",
    fri_sat_late_note: "FRI/SAT: after 21:00 — walk-in seating only",
    open_till: "OPEN UNTIL",
    closed_till: "CLOSED UNTIL",
    today: "TODAY",
    tomorrow: "TOMORROW",
    contact: "CONTACT",
    instagram: "INSTAGRAM",
    telegram: "TELEGRAM",
    route: "DIRECTIONS",
    call: "CALL",
    rating: "RATING",
    club: "CLUB",
    loyalty_card: "LOYALTY CARD",
    loyalty_join: "JOIN THE CLUB",
    loyalty_join_note: "50,000 bonus on sign-up + cashback on every visit",
    birthday_label: "BIRTHDAY · OPTIONAL",
    joining: "JOINING…",
    cashback: "CASHBACK",
    bonus_balance: "BONUS BALANCE",
    level: "LEVEL",
    max_level: "MAX LEVEL",
    to_next_level: "TO NEXT LEVEL",
    card_number: "CARD NUMBER",
    show_to_staff: "SHOW TO STAFF",
    history: "HISTORY",
    no_history: "EMPTY FOR NOW",
    total_spent_label: "TOTAL SPENT",
    tx_welcome: "WELCOME BONUS",
    tx_accrue: "EARNED",
    tx_redeem: "REDEEMED",
    tx_gift: "GIFT",
  },
  uz: {
    closed: "YOPIQ",
    book: "BAND QILISH",
    kitchen: "OSHXONA",
    bar: "BAR",
    dj: "DJ",
    events: "TADBIRLAR",
    my: "MEN",
    home: "BOSH",
    back: "ORQAGA",
    next: "DAVOM",
    confirm: "TASDIQLASH",
    select_date: "SANANI TANLANG",
    select_time: "VAQTNI TANLANG",
    guests: "MEHMONLAR",
    select_table: "STOLNI TANLANG",
    total: "JAMI",
    free: "BO'SH",
    taken: "BAND",
    selected: "TANLANGAN",
    bar_zone: "BAR YONIDA",
    window_zone: "DERAZA",
    main_hall: "ASOSIY ZAL",
    vip: "VIP",
    table: "STOL",
    persons: "kishi",
    cocktails: "KOKTEYLLAR",
    spirits: "ALKOGOL",
    wine: "VINO",
    beer: "PIVO",
    nonalc: "ALKOGOLSIZ",
    starters: "GAZAKLAR",
    salads: "SALATLAR",
    soups: "SHO'RVALAR",
    mains: "ASOSIY",
    desserts: "SHIRINLIK",
    sides: "GARNIR",
    sauces: "SOUSLAR",
    breakfast: "NONUSHTA",
    all: "HAMMASI",
    stopped: "OUT",
    vol: "kuch",
    weight: "vazn",
    composition: "tarkibi",
    upcoming: "YAQIN",
    booking_for: "BAND",
    your_booking: "SIZNING BANDLOVINGIZ",
    booking_code: "BANDLOV KODI",
    paid: "TO'LANGAN",
    no_bookings: "BANDLOVLAR YO'Q",
    welcome: "XUSH KELIBSIZ",
    address: "TOSHKENT · NUKUS KO'CHASI, 89 · 4-QAVAT",
    address_note: "KIRISH PARKOVKA TOMONDAN",
    phone: "+998 91 181 89 89",
    sub_speakeasy: "RESTORAN / BAR / GALEREYA",
    register: "RO'YXATGA",
    signed_up: "✓ TADBIR KUNI ESLATAMIZ",
    entry: "KIRISH",
    free_entry: "KIRISH BEPUL",
    by_donation: "DONAT BO'YICHA",
    age: "21+",
    age_warning: "ALKOGOL FAQAT 21 YOSHDAN OSHGANLARGA SOTILADI. YOSHINGIZNI TASDIQLANG.",
    age_confirm: "MEN 21 YOSHDAMAN",
    months: ["YAN","FEV","MAR","APR","MAY","IYN","IYL","AVG","SEN","OKT","NOY","DEK"],
    weekdays: ["YAK","DSH","SSH","CHR","PAY","JUM","SHN"],
    noshow_warning: "Belgilangan vaqtdan 10 daqiqa ichida kelmagan bo'lsangiz, bandlov avtomatik bekor qilinadi.",
    booking_pending_title: "SO'ROV QABUL QILINDI",
    booking_pending_note: "TASDIQNI KUTING — TELEGRAM'GA XABAR YUBORAMIZ",
    status: "HOLAT",
    st_pending: "TASDIQ KUTILMOQDA",
    st_confirmed: "TASDIQLANDI",
    st_cancelled: "BEKOR QILINDI",
    comment_label: "IZOH · IXTIYORIY",
    comment_placeholder: "Istak, sabab, allergiya, savol…",
    fri_sat_late_note: "JUM/SHN: 21:00 dan keyin — faqat bronsiz joylashish",
    open_till: "OCHIQ",
    closed_till: "YOPIQ",
    today: "BUGUN",
    tomorrow: "ERTAGA",
    contact: "ALOQA",
    instagram: "INSTAGRAM",
    telegram: "TELEGRAM",
    route: "YO'L",
    call: "QO'NG'IROQ",
    rating: "REYTING",
    club: "KLUB",
    loyalty_card: "SODIQLIK KARTASI",
    loyalty_join: "KLUBGA QO'SHILISH",
    loyalty_join_note: "Ro'yxatdan o'tganda 50 000 bonus + har tashrifda keshbek",
    birthday_label: "TUG'ILGAN KUN · IXTIYORIY",
    joining: "QO'SHILMOQDA…",
    cashback: "KESHBEK",
    bonus_balance: "BONUS HISOBI",
    level: "DARAJA",
    max_level: "MAKSIMAL DARAJA",
    to_next_level: "KEYINGI DARAJAGACHA",
    card_number: "KARTA RAQAMI",
    show_to_staff: "OFITSIANTGA KO'RSATING",
    history: "TARIX",
    no_history: "HOZIRCHA BO'SH",
    total_spent_label: "BUYURTMALAR SUMMASI",
    tx_welcome: "XUSH KELIBSIZ BONUSI",
    tx_accrue: "HISOBLANDI",
    tx_redeem: "YECHILDI",
    tx_gift: "SOVG'A",
  },
};

// ─────────── Kitchen (real menu, prices in UZS) ───────────────
const KITCHEN = {
  breakfast: [
    { id:'bf1', n:{ru:'ЯЙЦА БЕНЕДИКТ С ЛОСОСЕМ',en:'EGGS BENEDICT W/ SALMON',uz:'BENEDIKT TUXUM, LOSOS'}, p:125000,
      d:{ru:'муффин, голландез, лосось',en:'muffin, hollandaise, salmon',uz:'maffin, gollandez, losos'} },
    { id:'bf2', n:{ru:'ЯЙЦА БЕНЕДИКТ С ПАСТРАМИ',en:'EGGS BENEDICT W/ PASTRAMI',uz:'BENEDIKT, PASTRAMI'}, p:120000,
      d:{ru:'муффин, голландез, пастрами',en:'muffin, hollandaise, pastrami',uz:'maffin, gollandez, pastrami'} },
    { id:'bf3', n:{ru:'ГРЕЧОТТО С ПЕСТО И СТРАЧАТЕЛЛОЙ',en:'BUCKWHEAT RISOTTO',uz:'GRECHOTTO PESTO'}, p:130000,
      d:{ru:'гречка, песто, страчателла',en:'buckwheat, pesto, stracciatella',uz:'grechka, pesto, strachatella'} },
    { id:'bf4', n:{ru:'КАБАЧКОВЫЙ БЛИН С ЛОСОСЕМ',en:'ZUCCHINI PANCAKE, SALMON',uz:'KABACHKA BLIN, LOSOS'}, p:115000,
      d:{ru:'блин, лосось, авокадо',en:'pancake, salmon, avocado',uz:'blin, losos, avokado'} },
    { id:'bf5', n:{ru:'ГРАНОЛА С ГРЕЧЕСКИМ ЙОГУРТОМ',en:'GRANOLA W/ GREEK YOGURT',uz:'GRANOLA, GREK YOGURT'}, p:110000,
      d:{ru:'овсянка, йогурт, мёд',en:'oats, yogurt, honey',uz:'sulu, yogurt, asal'} },
    { id:'bf6', n:{ru:'СЫРНИКИ С КЛУБНИКОЙ',en:'CURD PANCAKES, STRAWBERRY',uz:'SIRNIKI, QULUPNAY'}, p:95000,
      d:{ru:'творог, клубника, сметана',en:'curd, strawberry, sour cream',uz:'tvorog, qulupnay, qaymoq'} },
  ],
  starters: [
    { id:'st1', n:{ru:'ПРОФИТРОЛИ СО СМЕТАНОЙ И ИКРОЙ',en:'PROFITEROLES W/ CAVIAR',uz:'PROFITROLI, IKRA'}, p:95000,
      d:{ru:'копчёная сметана, лук, икра',en:'smoked cream, onion, caviar',uz:'tutunlangan qaymoq, piyoz'} },
    { id:'st2', n:{ru:'ТАР-ТАР ИЗ ВЫРЕЗКИ',en:'BEEF TARTARE',uz:'BIFSHTEKS TARTAR'}, p:120000,
      d:{ru:'говядина, датский хлеб',en:'beef, danish bread',uz:"go'sht, daniya noni"} },
    { id:'st3', n:{ru:'СЫРНАЯ ТАРЕЛКА',en:'CHEESE PLATE',uz:"PISHLOQ TAREL"}, p:245000,
      d:{ru:'ассорти / 5 видов',en:'assortment / 5 kinds',uz:"5 turdagi"} },
    { id:'st4', n:{ru:'ПАШТЕТ ИЗ КУРИНОЙ ПЕЧЕНИ',en:'CHICKEN LIVER PÂTÉ',uz:"TOVUQ JIGAR PASHTET"}, p:85000,
      d:{ru:'паштет, бриошь',en:'pâté, brioche',uz:'pashtet, briosh'} },
    { id:'st5', n:{ru:'БАТАТ-ФРИ С АЙОЛИ',en:'SWEET POTATO FRIES, AIOLI',uz:'SHIRIN KARTOSHKA FRI'}, p:65000,
      d:{ru:'батат, айоли',en:'sweet potato, aioli',uz:"shirin kartoshka"} },
    { id:'st6', n:{ru:'ОЛИВКИ С ЧЕСНОКОМ И ЛИМОНОМ',en:'OLIVES W/ GARLIC & LEMON',uz:"OLIV, SARIMSOQ, LIMON"}, p:95000,
      d:{ru:'оливки маринованные',en:'marinated olives',uz:"marinad olivlar"} },
    { id:'st7', n:{ru:'КАРТОФЕЛЬ ФРИ С ГОЛЛАНДЕЗ',en:'FRIES W/ HOLLANDAISE',uz:"KARTOSHKA FRI, GOLLANDEZ"}, p:45000,
      d:{ru:'картофель фри, соус',en:'fries, sauce',uz:"fri, sous"} },
    { id:'st8', n:{ru:'КАРТОФЕЛЬНЫЕ ПЫШКИ',en:'POTATO PUFFS',uz:"KARTOSHKA PISHIRMA"}, p:55000,
      d:{ru:'хрустящие, со сметаной',en:'crispy, sour cream',uz:"qaymoq bilan"} },
  ],
  salads: [
    { id:'sl1', n:{ru:'САЛАТ С ПАСТРАМИ',en:'PASTRAMI SALAD',uz:'PASTRAMI SALAT'}, p:190000,
      d:{ru:'пастрами, листья, соус',en:'pastrami, greens',uz:"pastrami, ko'k"} },
    { id:'sl2', n:{ru:'ЦЕЗАРЬ NUKUS89',en:'CAESAR NUKUS89',uz:"SEZAR NUKUS89"}, p:110000,
      d:{ru:'курица, романо, пармезан',en:'chicken, romaine, parmesan',uz:"tovuq, romano, parmezan"} },
    { id:'sl3', n:{ru:'ОВОЩНОЙ САЛАТ С ФЕТОЙ',en:'VEG SALAD W/ FETA',uz:"SABZAVOT, FETA"}, p:125000,
      d:{ru:'овощи, фета, оливковое масло',en:'veg, feta, olive oil',uz:"sabzavot, feta"} },
    { id:'sl4', n:{ru:'ЗЕЛЁНЫЙ САЛАТ',en:'GREEN SALAD',uz:"YASHIL SALAT"}, p:95000,
      d:{ru:'микс листьев',en:'mixed greens',uz:"yashilliklar"} },
  ],
  soups: [
    { id:'sp1', n:{ru:'СУП С ФРИКАДЕЛЬКАМИ',en:'MEATBALL SOUP',uz:"FRIKADEL SHO'RVA"}, p:115000,
      d:{ru:'бульон, фрикадельки',en:'broth, meatballs',uz:"sho'rva, frikadel"} },
    { id:'sp2', n:{ru:'ГОВЯЖИЙ БУЛЬОН НА КОСТЯХ',en:'BEEF BONE BROTH',uz:"GO'SHTLI SUYAK SHO'RVA"}, p:95000,
      d:{ru:'наваристый, с зеленью',en:'rich, with herbs',uz:"to'q sho'rva"} },
    { id:'sp3', n:{ru:'КУРИНЫЙ БУЛЬОН С ЧЕСНОЧНЫМ ХЛЕБОМ',en:'CHICKEN BROTH, GARLIC BREAD',uz:"TOVUQ SHO'RVA"}, p:75000,
      d:{ru:'бульон, чесночный хлеб',en:'broth, garlic bread',uz:"sho'rva, sarimsoqli non"} },
  ],
  mains: [
    { id:'m1', n:{ru:'СТЕЙК ИЗ ГОВЯЖЬЕЙ ВЫРЕЗКИ',en:'BEEF TENDERLOIN STEAK',uz:"GO'SHT STEYK"}, p:265000,
      d:{ru:'мраморная говядина',en:'marbled beef',uz:"marmar go'sht"} },
    { id:'m2', n:{ru:'СТЕЙК ИЗ ЛОСОСЯ',en:'SALMON STEAK',uz:"LOSOS STEYK"}, p:240000,
      d:{ru:'лосось, пюре из зелёного горошка',en:'salmon, pea purée',uz:"losos, no'xat puresi"} },
    { id:'m3', n:{ru:'ГОВЯЖЬИ ЩЁЧКИ',en:'BEEF CHEEKS',uz:"GO'SHT YONOQLARI"}, p:145000,
      d:{ru:'щёчки, картофельное пюре',en:'cheeks, mash',uz:"yonoq, kartoshka pure"} },
    { id:'m4', n:{ru:'БУРГЕР NEW ORLEAN',en:'BURGER NEW ORLEAN',uz:"NEW ORLEAN BURGER"}, p:220000,
      d:{ru:'мраморная говядина, бекон',en:'marbled beef, bacon',uz:"marmar go'sht, bekon"} },
    { id:'m5', n:{ru:'БУРГЕР OHIO',en:'BURGER OHIO',uz:"OHIO BURGER"}, p:200000,
      d:{ru:'эменталь, дюксель грибов',en:'emmental, mushroom duxelles',uz:"emental, qo'ziqorin"} },
    { id:'m6', n:{ru:'БУРГЕР NEW YORK',en:'BURGER NEW YORK',uz:"NEW YORK BURGER"}, p:180000,
      d:{ru:'классика, бри, трюфель',en:'classic, brie, truffle',uz:"klassik, bri"} },
    { id:'m7', n:{ru:'СЭНДВИЧ С ПАСТРАМИ NEW',en:'PASTRAMI SANDWICH NEW',uz:"PASTRAMI SENDVICH"}, p:160000,
      d:{ru:'пастрами, ржаной хлеб',en:'pastrami, rye',uz:"pastrami, javdar"} },
    { id:'m8', n:{ru:'BLT СЭНДВИЧ',en:'BLT SANDWICH',uz:"BLT SENDVICH"}, p:110000,
      d:{ru:'бекон, листья, томат',en:'bacon, lettuce, tomato',uz:"bekon, ko'k, pomidor"} },
    { id:'m9', n:{ru:'СЭНДВИЧ С ПАСТРАМИ NUKUS89',en:'PASTRAMI SANDWICH NUKUS89',uz:"NUKUS89 SENDVICH"}, p:180000,
      d:{ru:'фирменный сэндвич',en:'signature sandwich',uz:"firma sendvich"} },
    { id:'m10', n:{ru:'ПАСТА СО ШПИНАТОМ И КУРИЦЕЙ',en:'PASTA, SPINACH & CHICKEN',uz:"PASTA, ISMALOQ, TOVUQ"}, p:95000,
      d:{ru:'паста, шпинат, курица',en:'pasta, spinach, chicken',uz:"pasta, ismaloq"} },
    { id:'m11', n:{ru:'КУРИНЫЙ ШНИЦЕЛЬ',en:'CHICKEN SCHNITZEL',uz:"TOVUQ SHNITSEL"}, p:75000,
      d:{ru:'шницель, брюссельская капуста',en:'schnitzel, brussels sprouts',uz:"shnitsel, karam"} },
  ],
  sides: [
    { id:'g1', n:{ru:'ХЛЕБНАЯ КОРЗИНА',en:'BREAD BASKET',uz:"NON SAVATI"}, p:45000, d:{ru:'ассорти',en:'assortment',uz:"asorti"} },
    { id:'g2', n:{ru:'КАРТОФЕЛЬНОЕ ПЮРЕ',en:'MASHED POTATOES',uz:"KARTOSHKA PURE"}, p:30000, d:{ru:'сливочное',en:'creamy',uz:"qaymoqli"} },
    { id:'g3', n:{ru:'ОВОЩИ НА ГРИЛЕ',en:'GRILLED VEG',uz:"GRILDA SABZAVOT"}, p:30000, d:{ru:'сезонные',en:'seasonal',uz:"mavsumiy"} },
    { id:'g4', n:{ru:'ЗЕЛЁНАЯ ГРЕЧКА',en:'GREEN BUCKWHEAT',uz:"YASHIL GRECHKA"}, p:30000, d:{ru:'гарнир',en:'side',uz:"garnir"} },
  ],
  desserts: [
    { id:'d1', n:{ru:'ШОКОЛАДНЫЙ ФОНДАН',en:'CHOCOLATE FONDANT',uz:"SHOKOLAD FONDAN"}, p:95000, d:{ru:'тёплый, с мороженым',en:'warm, ice cream',uz:"issiq, muzqaymoq"} },
    { id:'d2', n:{ru:'БРИОШЬ-ТИРАМИСУ',en:'BRIOCHE TIRAMISU',uz:"BRIOSH-TIRAMISU"}, p:85000, d:{ru:'тирамису на бриоши',en:'tiramisu on brioche',uz:"brioshda"} },
    { id:'d3', n:{ru:'ПАННА-КОТТА С ЯГОДАМИ',en:'PANNA COTTA W/ BERRIES',uz:"PANNA-KOTTA"}, p:135000, d:{ru:'сливочный десерт',en:'creamy dessert',uz:"qaymoq desert"} },
    { id:'d4', n:{ru:'МОРКОВНЫЙ ТОРТ',en:'CARROT CAKE',uz:"SABZILI TORT"}, p:65000, d:{ru:'крем-чиз',en:'cream cheese',uz:"krem-chiz"} },
  ],
  sauces: [
    { id:'sc1', n:{ru:'СОУС ТАР-ТАР',en:'TARTARE SAUCE',uz:"TARTAR SOUS"}, p:35000, d:{ru:'',en:'',uz:''} },
    { id:'sc2', n:{ru:'СОУС ГОЛЛАНДЕЗ',en:'HOLLANDAISE',uz:"GOLLANDEZ"}, p:35000, d:{ru:'',en:'',uz:''} },
    { id:'sc3', n:{ru:'СОУС АЙОЛИ',en:'AIOLI',uz:"AYOLI"}, p:35000, d:{ru:'',en:'',uz:''} },
    { id:'sc4', n:{ru:'СОУС ТОМАТНЫЙ',en:'TOMATO SAUCE',uz:"POMIDOR SOUS"}, p:35000, d:{ru:'',en:'',uz:''} },
  ],
};

// ─────────── Bar card (prices in UZS — placeholder until real menu) ─────
const BAR = {
  cocktails: [
    { id:'c1', n:{ru:'СТЕПНОЙ НЕГРОНИ',en:'STEPPE NEGRONI',uz:'DASHT NEGRONI'}, p:85000, abv:24, ml:90,
      d:{ru:'джин, кампари, вермут, полынь',en:'gin, campari, vermouth, wormwood',uz:'jin, kampari, vermut, yovshan'} },
    { id:'c2', n:{ru:'89-Й МЕРИДИАН',en:'89th MERIDIAN',uz:'89-MERIDIAN'}, p:78000, abv:18, ml:120,
      d:{ru:'ром, лайм, мята, базилик',en:'rum, lime, mint, basil',uz:'rom, layma, yalpiz, rayhon'} },
    { id:'c3', n:{ru:'ЧЁРНЫЙ АЛЬТАИР',en:'BLACK ALTAIR',uz:'QORA ALTAIR'}, p:95000, abv:32, ml:80,
      d:{ru:'мескаль, кофе, чили, какао',en:'mezcal, coffee, chili, cocoa',uz:'meskal, qahva, qalampir, kakao'} },
    { id:'c4', n:{ru:'СЕВЕР 43',en:'NORTH 43',uz:'SHIMOL 43'}, p:72000, abv:20, ml:100,
      d:{ru:'водка, морошка, эстрагон',en:'vodka, cloudberry, tarragon',uz:'aroq, qoyamoy, tarxun'} },
    { id:'c5', n:{ru:'СТАРОЕ КИНО',en:'OLD CINEMA',uz:'ESKI KINO'}, p:92000, abv:28, ml:75,
      d:{ru:'бурбон, вермут, биттер, дым',en:'bourbon, vermouth, bitter, smoke',uz:'burbon, vermut, biter, tutun'} },
    { id:'c6', n:{ru:'ХЛОПОК 89',en:'COTTON 89',uz:'PAXTA 89'}, p:75000, abv:16, ml:140,
      d:{ru:'джин, огурец, тоник, кардамон',en:'gin, cucumber, tonic, cardamom',uz:'jin, bodring, tonik, kakuli'} },
  ],
  spirits: [
    { id:'s1', n:{ru:'ВИСКИ СИНГЛ МОЛТ 12Y',en:'SINGLE MALT 12Y',uz:'SINGL MOLT 12Y'}, p:120000, abv:43, ml:40, d:{ru:'Шотландия',en:'Scotland',uz:'Shotlandiya'} },
    { id:'s2', n:{ru:'РОМ ВЫДЕРЖАННЫЙ 7Y',en:'AGED RUM 7Y',uz:'7-YOSH ROM'}, p:75000, abv:40, ml:40, d:{ru:'Куба',en:'Cuba',uz:'Kuba'} },
    { id:'s3', n:{ru:'МЕСКАЛЬ ESPADIN',en:'MEZCAL ESPADIN',uz:'MESKAL ESPADIN'}, p:140000, abv:45, ml:40, d:{ru:'Оахака',en:'Oaxaca',uz:'Oaxaka'} },
    { id:'s4', n:{ru:'ДЖИН ДРАЙ',en:'DRY GIN',uz:'DRAY JIN'}, p:60000, abv:42, ml:40, d:{ru:'Лондон',en:'London',uz:'London'} },
  ],
  wine: [
    { id:'w1', n:{ru:'САПЕРАВИ КРАСНОЕ',en:'SAPERAVI RED',uz:'SAPERAVI QIZIL'}, p:90000, abv:13, ml:150, d:{ru:'Кахетия, сухое',en:'Kakheti, dry',uz:'Kaxeti, quruq'} },
    { id:'w2', n:{ru:'РКАЦИТЕЛИ БЕЛОЕ',en:'RKATSITELI WHITE',uz:'RKATSITELI OQ'}, p:85000, abv:12, ml:150, d:{ru:'Кахетия, сухое',en:'Kakheti, dry',uz:'Kaxeti, quruq'} },
    { id:'w3', n:{ru:'ИГРИСТОЕ БРЮТ',en:'SPARKLING BRUT',uz:'SHIPILDOQ BRUT'}, p:105000, abv:12, ml:150, d:{ru:'Брют',en:'Brut',uz:'Brut'} },
  ],
  beer: [
    { id:'b1', n:{ru:'IPA РЕМЕСЛО',en:'CRAFT IPA',uz:'KRAFT IPA'}, p:65000, abv:6.2, ml:500, d:{ru:'Хмель / цитрус',en:'Hops / citrus',uz:'Hmel / sitrus'} },
    { id:'b2', n:{ru:'СТАУТ ОВСЯНЫЙ',en:'OATMEAL STOUT',uz:'STAUT'}, p:55000, abv:5.5, ml:500, d:{ru:'Кофе, шоколад',en:'Coffee, chocolate',uz:'Qahva, shokolad'} },
    { id:'b3', n:{ru:'ЛАГЕР НЕФИЛЬТР.',en:'UNFILTERED LAGER',uz:'LAGER'}, p:45000, abv:4.8, ml:500, d:{ru:'Мягкий, солодовый',en:'Soft, malty',uz:'Yumshoq, soladli'} },
    { id:'b4', n:{ru:'РАЗЛИВНОЕ КЛАССИК',en:'DRAFT CLASSIC',uz:'PIVA KLASSIK'}, p:35000, abv:4.5, ml:500, d:{ru:'светлое',en:'lager',uz:'och rang'} },
  ],
  nonalc: [
    { id:'n1', n:{ru:'МАРОККАНСКИЙ ЧАЙ',en:'MOROCCAN TEA',uz:'MAROKKO CHOY'}, p:60000, abv:0, ml:400, d:{ru:'мята, зелёный чай',en:'mint, green tea',uz:"yalpiz, ko'k choy"} },
    { id:'n2', n:{ru:'ЛИМОНАД ДОМАШНИЙ',en:'HOUSE LEMONADE',uz:'UY LIMONAD'}, p:45000, abv:0, ml:300, d:{ru:'лимон, мята',en:'lemon, mint',uz:'limon, yalpiz'} },
    { id:'n3', n:{ru:'КОФЕ ЭСПРЕССО',en:'ESPRESSO',uz:'ESPRESSO'}, p:25000, abv:0, ml:30, d:{ru:'двойной',en:'double',uz:'qo\'sh'} },
    { id:'n4', n:{ru:'РАФ ЛАВАНДА',en:'LAVENDER RAF',uz:'LAVANDA RAF'}, p:42000, abv:0, ml:250, d:{ru:'кофе, сливки, лаванда',en:'coffee, cream, lavender',uz:'qahva, qaymoq'} },
  ],
};

// ─────────── Floor plan (реальная карта зала, нумерация клиента) ─────
// Координаты — центры круглых столов в viewBox 400×300 (TableStep).
// zone 'vip' = столы с короной на карте (14, 16, 19). Кол-во мест — оценка по схеме,
// поправить здесь, если клиент даст точные посадки.
const FLOOR = [
  // верхний ряд
  { id:'15', x:28,  y:68,  r:16, seats:8, zone:'main' },
  { id:'20', x:69,  y:68,  r:16, seats:8, zone:'main' },
  { id:'14', x:121, y:68,  r:16, seats:8, zone:'vip'  },
  { id:'13', x:180, y:77,  r:13, seats:6, zone:'main' },
  { id:'10', x:241, y:68,  r:11, seats:4, zone:'main' },
  { id:'9',  x:274, y:68,  r:11, seats:4, zone:'main' },
  { id:'8',  x:303, y:68,  r:11, seats:4, zone:'main' },
  { id:'7',  x:331, y:68,  r:11, seats:4, zone:'main' },
  { id:'6',  x:359, y:68,  r:11, seats:4, zone:'main' },
  // середина
  { id:'12', x:106, y:117, r:16, seats:8, zone:'main' },
  { id:'5',  x:221, y:115, r:13, seats:6, zone:'main' },
  { id:'4',  x:259, y:115, r:13, seats:6, zone:'main' },
  { id:'11', x:136, y:157, r:16, seats:8, zone:'main' },
  { id:'3',  x:276, y:157, r:13, seats:6, zone:'main' },
  // нижний ряд
  { id:'17', x:24,  y:204, r:11, seats:4, zone:'main' },
  { id:'16', x:57,  y:204, r:16, seats:8, zone:'vip'  },
  { id:'21', x:109, y:202, r:13, seats:6, zone:'main' },
  { id:'22', x:149, y:202, r:13, seats:6, zone:'main' },
  { id:'23', x:186, y:202, r:13, seats:6, zone:'main' },
  { id:'25', x:247, y:202, r:13, seats:6, zone:'main' },
  { id:'1',  x:296, y:218, r:11, seats:4, zone:'main' },
  { id:'2',  x:342, y:224, r:11, seats:4, zone:'main' },
  // у входа
  { id:'24', x:55,  y:261, r:11, seats:4, zone:'main' },
  { id:'19', x:269, y:262, r:16, seats:8, zone:'vip'  },
];

// NUKUS CLUB временно скрыт — вернуть: true (панели скрывают свои разделы отдельно, в panel-app.jsx)
const LOYALTY_ENABLED = false;

Object.assign(window, { T, BAR, KITCHEN, FLOOR, CURRENCY, fmtPrice, LOYALTY_ENABLED });
